Logs

如何查看異常日誌?

  • April 26, 2018

我正在使用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?)。

原因字元串是revertrequire(大約一周前)的一個非常新的補充。我相信 Geth 的 DebugTrace 公開了原因字元串,但否則我不確定是否有工具支持。

我想很快 Etherscan 就會將它們浮出水面,但目前,最終使用者還不能特別訪問原因字元串。

引用自:https://ethereum.stackexchange.com/questions/46770