Solidity
如何向代幣合約添加要求:1)所有者有足夠的代幣和 2)更新余額前接收者的 ETH 最小總和
您能否檢查這些行是否正確並且有效?在這段程式碼中,我有兩個要求:我想在更新余額之前檢查所有者是否有足夠的代幣(1000 萬代幣),並且只將代幣發送到至少 2 ETH 餘額的地址。
function getEthBalance(address _addr) constant returns(uint) { return _addr.balance; } function distributeToken(address[] addresses, uint256 _value) onlyOwner { for (uint i = 0; i < addresses.length; i++) { require(balanceOf[owner] >= 10000000); // FIRST REQUIREMENT if (getEthBalance(addresses[i]) <= 200000000000000)) { continue; }; // SECOND REQUIREMENT balances[owner] -= _value; balances[addresses[i]] += _value; Transfer(owner, addresses[i], _value); } }
謝謝你的幫助!
一些建議:
不要寫
200000000000000
。它使數字不可讀。相反,您可以只寫
2 ether
:if (getEthBalance(addresses[i]) <= 2 ether) {
如果一切都是如此,為什麼你有一個
getEthBalance
功能.balance
?您可以.balance
代替呼叫該函式:if (addresses[i].balance <= 2 ether) {
你說’至少2個乙太’。如果你願意,你應該使用
<
而不是<=
:if (addresses[i].balance < 2 ether) {
對我來說,它似乎會起作用,但我不能保證。如果您想知道某些東西是否可行,您應該始終在本地開發鍊或乙太坊測試網路上對其進行測試。