Logs
如何查看異常日誌?
我正在使用solidity編譯器^0.4.23,我在異常點向函式添加了日誌,如下所示:
function firstSaleDelivery(address _beneficiary, uint256 rate) public onlyOwner{ require(!presaleOpen && !firstsaleOpen, "First Sale is NOT CLOSE"); if(preSaleTokens >= 0){ saleTokens = saleTokens.add(preSaleTokens); preSaleTokens = 0; } uint256 ethers = firstSaleFunds[_beneficiary]; uint256 tokens = ethers.mul(rate); // <u> require(saleTokens >= tokens, "NO Sale Tokens Available"); if(ethers >= 5 && ethers <= 9 ){ tokens.add((tokens.mul(10)).div(100)); // <u> } else if(ethers >= 10 && ethers <= 200 ){ tokens.add((tokens.mul(25)).div(100)); // <u> } token.transfer(_beneficiary,tokens); saleTokens = saleTokens.sub(tokens);
}
當我呼叫該函式時,如果我遇到任何異常,我看不到這些日誌,我在哪裡可以看到它們?
如果事務恢復,則不會生成日誌(請參閱此答案:Is it possible to retrieve an event log from a reverted transaction?)。
原因字元串是
revert
和require
(大約一周前)的一個非常新的補充。我相信 Geth 的 DebugTrace 公開了原因字元串,但否則我不確定是否有工具支持。我想很快 Etherscan 就會將它們浮出水面,但目前,最終使用者還不能特別訪問原因字元串。