Solidity

追溯被絆倒的 require() 到原始碼行

  • November 27, 2017

將失敗的事務(require、throw 等)映射回它們發生的原始碼行的過程是什麼?

有這樣的例子嗎?

您正在尋找的東西在這裡How to map EVM trace to contract source? . 至於我出於開發目的,我requireDebugModifier從下面的程式碼中使用,對於生產,我更改requireDebugModifierrequireModifier.

contract DebugEvents
{
   event Debug(string message);

   modifier requireDebugModifier(bool arg, string message)
   {
       if (!arg)
       {
           Debug(message);
           return;
       }
       _;

   }

   modifier requireModifier(bool arg)
   {
       require(arg);
       _;
   }
}

contract Test is DebugEvents
{
   function Test() public payable
   {
   }

   function fooDevel(uint i)
   requireDebugModifier(i<10, "I must be less then 10")
   public
   returns (uint)
   {
       return i;
   }


   function fooProduction(uint i)
   requireModifier(i<10)
   public
   returns (uint)
   {
       return i;
   }

}

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