设置代币价格稳定性

set token price solidity

如何在 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 eth 的交易价格为 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 Ether = 1018 wei,如果我们取 1 Ether = $167

那么对于 0.02 美元,我们应该得到 0.02 美元/167 美元 = 0.00011976047904191617 以太币。

这等于 1018 x 0.00011976047904191617 = 119760479041916.17 wei.

因此,如果您投入 1 个以太币,您将获得 1018 / 119760479041916.17 = 8350 个代币。

在 167 美元的价格下,每个代币价值为 167 / 8350 = 0.02,如您所愿。

我会定义一个函数,这样你就可以设置一个以太币的价格,它可以得出一个代币的价格为两美分。

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