交易錯誤。合約程式碼中拋出異常。將 ETH 發送到眾籌時還原操作碼
我想按照教程 - https://blog.zeppelin.solutions/how-to-create-token-and-initial-coin-offering-contracts-using-truffle-openzeppelin-1b7a5dae99b6 - 但有一個新版本 - https://github.com/OpenZeppelin/zeppelin-solidity/releases/tag/v1.7.0 - 所以我試圖弄清楚……
實際程式碼在 Etherscan 上進行驗證。
眾籌: https ://ropsten.etherscan.io/address/0x018ea8f3fef7bd14c7bff98e898842925f05e6ea#code
硬幣:https ://ropsten.etherscan.io/address/0x37ca578d3d847d27741b2ffc033419a7d11b7bef#code
我的賬戶發送 ETH 到眾籌:https ://ropsten.etherscan.io/address/0x85a363699c6864248a6ffca66e4a1a5ccf9f5567
交易雜湊:https ://ropsten.etherscan.io/tx/0x7f99bca20b767073eb48ed2e6d01186c55bcc97ee8316523977e15c4286f6c5a
這是我解釋我在做什麼的簡短影片:https ://youtu.be/oKP9ea5PNho
function Crowdsale(uint256 _rate, address _wallet, ERC20 _token) public
我通過以下方式實例化代幣和眾籌:
contract MailHustleCrowdsale is Crowdsale { uint256 _rate = 1000; address _wallet = 0x315f80c7caacbe7fb1c14e65a634db89a33a9637; ERC20 _token = new MailHustleCoin(); function MailHustleCrowdsale() Crowdsale(_rate, _wallet, _token) { } }
我的猜測是錯誤在這裡的某個地方,但無法弄清楚工作語法……
替代方法:
如果包含原始原始碼不切實際,一個簡單的解決方法是在您自己的合約之上創建一個存根合約,其中包含您要呼叫的函式的函式簽名。
為簡單起見,我決定將所有內容都包含在一個文件中。
歸功於 Vidor:
也許您可以贏得一些 Stack Overflow 聲譽並將這些指針放入原始問題中?
太麻煩太少樂趣
我明白了,我會這樣做的
我意識到我知道的太少了,我不應該接觸程式碼。
一
function mint(address _to, uint256 _amount) onlyOwner canMint public returns (bool)
只有所有者才能鑄幣。硬幣創造應該在眾籌合約中。
二
function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal { require(MintableToken(token).mint(_beneficiary, _tokenAmount)); }
代替
function _deliverTokens(address _beneficiary, uint256 _tokenAmount) internal { token.transfer(_beneficiary, _tokenAmount); }
目前,您正在從具有 0 的發件人地址轉移代幣。您想採用更好的鑄幣策略
這是有效的 TX:https ://ropsten.etherscan.io/tx/0x1b4c11eee16e06bc53a273a9a805ea11def461c9f81847edb2d8f95daa273ae5
(您可以導航到契約以查看工作源)