sellPrice 和 buyPrice 可靠性
sellPrice and buyPrice Solidity
我在尝试将 sellPrice 设置为 0.01 并将 buyPrice 设置为 0.02 时遇到问题。
我的合同已部署,稍后我使用 setPrices 函数设置代币价格。我加上双引号“10000000000000000”和“20000000000000000”因为如果我不加引号就会抛出异常。
购买功能:
/// @notice Buy tokens from contract by sending ether
function buy() payable public {
uint amount = msg.value / buyPrice; // calculates the amount
_transfer(this, msg.sender, amount); // makes the transfers
}
在我的 web3 代码上:
$('#buy').click(function(){
Compra.buy({
gas: 300000,
from: web3.eth.coinbase,
value: 20000000000000000
},function(error,res){
console.log(res);
if(!error){
if(res.blockHash != $("#insTrans").html())
$("#loader").hide();
$("#insTrans").html("Block hash: " + res.blockHash)
}else{
$("#loader").hide();
console.log(error);
}
});
});
当 buy() 成功时,将 0.000000000000000001 个代币添加到我的钱包中,我想在我的钱包中添加 1 个代币。我的意思是 0.02 = 1 mytokens.
有人可以帮助我吗?我很困在这里。
谢谢。
这是因为您使用的是小数。如果您使用标准的 18 位小数格式,则需要将购买价格乘以 180(或 10** 小数),如上述评论所述。
如上@smarx所说,可以将代码改为
msg.value / buyPrice * 10**decimals
我在尝试将 sellPrice 设置为 0.01 并将 buyPrice 设置为 0.02 时遇到问题。 我的合同已部署,稍后我使用 setPrices 函数设置代币价格。我加上双引号“10000000000000000”和“20000000000000000”因为如果我不加引号就会抛出异常。
购买功能:
/// @notice Buy tokens from contract by sending ether
function buy() payable public {
uint amount = msg.value / buyPrice; // calculates the amount
_transfer(this, msg.sender, amount); // makes the transfers
}
在我的 web3 代码上:
$('#buy').click(function(){
Compra.buy({
gas: 300000,
from: web3.eth.coinbase,
value: 20000000000000000
},function(error,res){
console.log(res);
if(!error){
if(res.blockHash != $("#insTrans").html())
$("#loader").hide();
$("#insTrans").html("Block hash: " + res.blockHash)
}else{
$("#loader").hide();
console.log(error);
}
});
});
当 buy() 成功时,将 0.000000000000000001 个代币添加到我的钱包中,我想在我的钱包中添加 1 个代币。我的意思是 0.02 = 1 mytokens.
有人可以帮助我吗?我很困在这里。
谢谢。
这是因为您使用的是小数。如果您使用标准的 18 位小数格式,则需要将购买价格乘以 180(或 10** 小数),如上述评论所述。
如上@smarx所说,可以将代码改为
msg.value / buyPrice * 10**decimals