2017-07-17 44 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); 
}