2017-07-17 30 views
2

如何设置每个令牌的价格稳定?设置令牌价格稳固

我已经试过

contract OToken { 

using SafeMath for uint256; 

uint public _totalSupply = 0; 
uint public constant _cap = 100000000; 
string public constant symbol = "OXN"; 
string public constant name = "OToken"; 
uint public constant decimals = 18; 

uint public oneTokenInWei = 183.602; 

如果我想令牌价格是每个$ 0.02,1个ETH为$ 167 是交易则1卫= 183.602令牌

,如果我我可以调用这个函数希望每个令牌价格更改为0.03

function setOneTokenInWei(uint w) onlyOwner { 
    oneTokenInWei = w; 
    changed(msg.sender); 
} 

那么这个函数来创建令牌

function createTokens() payable{ 

    require(
     msg.value > 0 
     && _totalSupply < _cap 
     && CROWDSALE_PAUSED <1 
     ); 

     uint multiplier = 10 ** decimals; 
     uint256 tokens = msg.value.mul(multiplier)/oneTokenInWei; 

     balances[msg.sender] = balances[msg.sender].add(tokens); 
     _totalSupply = _totalSupply.add(tokens); 
     owner.transfer(msg.value); 
} 

这不是将当前值寄件人钱包

回答

6

我们知道,1醚= 10 卫,如果我们采取的是1甲醚= $ 167

然后为$ 0.02,我们应该得到$ 0.02/$ 167 = 0.00011976047904191617醚。

这等于10 x 0.00011976047904191617 = 119760479041916.17 wei。

所以,如果你把1乙醚,你会得到10/119760479041916.17 = 8350令牌。

以167美元的价格,根据需要,每个标记值为167/8350 = 0.02。

我会定义一个函数,以便您可以设置一个以太的价格,并且它以一美分的价格获得一个令牌的价格。

function setEthPrice(uint _etherPrice) onlyOwner { 
    oneTokenInWei = 1 ether * 2/_etherPrice/100; 
    changed(msg.sender); 
}