forward revert message from low level solidity calldoes it comply with ERC20 if transfer() reverts instead returning false?This contract does not implement all functions and thus cannot be createdPadding parameter values in contract low-level callLower level implementation of solidity callGetting error message from require()Solidity: using low level call function on an EOAGet return data from delegatecallHow strings are stored in Solidity on a low level?Solidity: Info on How it works on the low levelremix ERC223: This contract does not implement all functions and thus cannot be created

Multi tool use
Multi tool use

How seriously should I take size and weight limits of hand luggage?

Ambiguity in the definition of entropy

A category-like structure without composition?

Should I tell management that I intend to leave due to bad software development practices?

Alternative to sending password over mail?

Is it acceptable for a professor to tell male students to not think that they are smarter than female students?

Should I cover my bicycle overnight while bikepacking?

How can I deal with my CEO asking me to hire someone with a higher salary than me, a co-founder?

Can my sorcerer use a spellbook only to collect spells and scribe scrolls, not cast?

Mathematica command that allows it to read my intentions

Venezuelan girlfriend wants to travel the USA to be with me. What is the process?

How can I determine if the org that I'm currently connected to is a scratch org?

What mechanic is there to disable a threat instead of killing it?

Why is consensus so controversial in Britain?

Expand and Contract

Examples of smooth manifolds admitting inbetween one and a continuum of complex structures

How to tell a function to use the default argument values?

Why would the Red Woman birth a shadow if she worshipped the Lord of the Light?

Can compressed videos be decoded back to their uncompresed original format?

What method can I use to design a dungeon difficult enough that the PCs can't make it through without killing them?

Are there any examples of a variable being normally distributed that is *not* due to the Central Limit Theorem?

Avoiding the "not like other girls" trope?

Size of subfigure fitting its content (tikzpicture)

ssTTsSTtRrriinInnnnNNNIiinngg



forward revert message from low level solidity call


does it comply with ERC20 if transfer() reverts instead returning false?This contract does not implement all functions and thus cannot be createdPadding parameter values in contract low-level callLower level implementation of solidity callGetting error message from require()Solidity: using low level call function on an EOAGet return data from delegatecallHow strings are stored in Solidity on a low level?Solidity: Info on How it works on the low levelremix ERC223: This contract does not implement all functions and thus cannot be created













1















I'm working on a proxy contract that will perform calls as follows:



bool success;
bytes memory returndata;
(success, returndata) = _to.call.value(_value)(_data);
require(success);


this works great, except that, if the call reverts with an error message, this function will simply reverts, hiding the reason string.



How can I retrieve the reason string (I assume in the returndata) and use if to revert properly










share|improve this question


























    1















    I'm working on a proxy contract that will perform calls as follows:



    bool success;
    bytes memory returndata;
    (success, returndata) = _to.call.value(_value)(_data);
    require(success);


    this works great, except that, if the call reverts with an error message, this function will simply reverts, hiding the reason string.



    How can I retrieve the reason string (I assume in the returndata) and use if to revert properly










    share|improve this question
























      1












      1








      1


      2






      I'm working on a proxy contract that will perform calls as follows:



      bool success;
      bytes memory returndata;
      (success, returndata) = _to.call.value(_value)(_data);
      require(success);


      this works great, except that, if the call reverts with an error message, this function will simply reverts, hiding the reason string.



      How can I retrieve the reason string (I assume in the returndata) and use if to revert properly










      share|improve this question














      I'm working on a proxy contract that will perform calls as follows:



      bool success;
      bytes memory returndata;
      (success, returndata) = _to.call.value(_value)(_data);
      require(success);


      this works great, except that, if the call reverts with an error message, this function will simply reverts, hiding the reason string.



      How can I retrieve the reason string (I assume in the returndata) and use if to revert properly







      solidity revert-opcode proxy-contracts






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 days ago









      AmxxAmxx

      1135




      1135




















          1 Answer
          1






          active

          oldest

          votes


















          3














          It is simpler than you think:



          require(success, string (returndata));


          See documentation for details. You may also forward raw bytes, but you will need to use assembly.






          share|improve this answer























          • I tryed require(success, returndata); and started looking into assembly when it failled to compile ... thanks for proving how stupid I am :P

            – Amxx
            2 days ago











          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "642"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f69133%2fforward-revert-message-from-low-level-solidity-call%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          3














          It is simpler than you think:



          require(success, string (returndata));


          See documentation for details. You may also forward raw bytes, but you will need to use assembly.






          share|improve this answer























          • I tryed require(success, returndata); and started looking into assembly when it failled to compile ... thanks for proving how stupid I am :P

            – Amxx
            2 days ago















          3














          It is simpler than you think:



          require(success, string (returndata));


          See documentation for details. You may also forward raw bytes, but you will need to use assembly.






          share|improve this answer























          • I tryed require(success, returndata); and started looking into assembly when it failled to compile ... thanks for proving how stupid I am :P

            – Amxx
            2 days ago













          3












          3








          3







          It is simpler than you think:



          require(success, string (returndata));


          See documentation for details. You may also forward raw bytes, but you will need to use assembly.






          share|improve this answer













          It is simpler than you think:



          require(success, string (returndata));


          See documentation for details. You may also forward raw bytes, but you will need to use assembly.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 2 days ago









          Mikhail VladimirovMikhail Vladimirov

          1,218315




          1,218315












          • I tryed require(success, returndata); and started looking into assembly when it failled to compile ... thanks for proving how stupid I am :P

            – Amxx
            2 days ago

















          • I tryed require(success, returndata); and started looking into assembly when it failled to compile ... thanks for proving how stupid I am :P

            – Amxx
            2 days ago
















          I tryed require(success, returndata); and started looking into assembly when it failled to compile ... thanks for proving how stupid I am :P

          – Amxx
          2 days ago





          I tryed require(success, returndata); and started looking into assembly when it failled to compile ... thanks for proving how stupid I am :P

          – Amxx
          2 days ago

















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Ethereum Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fethereum.stackexchange.com%2fquestions%2f69133%2fforward-revert-message-from-low-level-solidity-call%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          EIOvgk HT6 vRT0E,m3MhRTg2Z9e,WS 2,rV,E3aWsKJSiCAEhFGBFgrOu8oh,nKVyJ0V3h0v abiw,xX6S
          u655vJ3x,R7ZZpFq y9XxEDwHeXBhr8PJ0idaF

          Popular posts from this blog

          getting Checkpoint VPN SSL Network Extender working in the command lineHow to connect to CheckPoint VPN on Ubuntu 18.04LTS?Will the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayVPN SSL Network Extender in FirefoxLinux Checkpoint SNX tool configuration issuesCheck Point - Connect under Linux - snx + OTPSNX VPN Ububuntu 18.XXUsing Checkpoint VPN SSL Network Extender CLI with certificateVPN with network manager (nm-applet) is not workingWill the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayImport VPN config files to NetworkManager from command lineTrouble connecting to VPN using network-manager, while command line worksStart a VPN connection with PPTP protocol on command linestarting a docker service daemon breaks the vpn networkCan't connect to vpn with Network-managerVPN SSL Network Extender in FirefoxUsing Checkpoint VPN SSL Network Extender CLI with certificate

          NetworkManager fails with “Could not find source connection”Trouble connecting to VPN using network-manager, while command line worksHow can I be notified about state changes to a VPN adapterBacktrack 5 R3 - Refuses to connect to VPNFeed all traffic through OpenVPN for a specific network namespace onlyRun daemon on startup in Debian once openvpn connection establishedpfsense tcp connection between openvpn and lan is brokenInternet connection problem with web browsers onlyWhy does NetworkManager explicitly support tun/tap devices?Browser issues with VPNTwo IP addresses assigned to the same network card - OpenVPN issues?Cannot connect to WiFi with nmcli, although secrets are provided

          Marilyn Monroe Ny fiainany manokana | Jereo koa | Meny fitetezanafanitarana azy.