设置令牌价格稳固性

时间:2017-07-17 20:52:50

标签: ethereum solidity

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

我试过

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个商品的价格为167美元 然后1 wei = 183.602令牌

如果我想将每个代币的价格更改为.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);
}

这不是将当前值添加到发件人钱包

1 个答案:

答案 0 :(得分:6)

我们知道1 Ether = 10 18 wei,如果我们采用1以太= $ 167

然后以0.02美元的价格获得$ 0.02 / $ 167 = 0.00011976047904191617 Ethers。

这相当于10 18 x 0.00011976047904191617 = 119760479041916.17 wei。

因此,如果你放1个以太,你将得到10个 18 / 119760479041916.17 = 8350个代币。

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

我定义了一个函数,这样你就可以设置一个以太的价格,并以两美分的价格得出一个令牌的价格。

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