Solidity

獲取低級呼叫的返回值

  • June 16, 2020

我想獲得低級呼叫的返回值。

(bool success, ) = address(0x1234...7890).call{value:0}(callData);

這篇文章討論了一個聽起來應該可以工作的解決方案,但它沒有復選標記,我無法讓原始碼工作,因為 toBytes 函式中的最後一個複制命令不存在。我嘗試使用 mload 和 mstore 在solidity 組裝中進行試驗以製作該複製命令,但我做不到。

copy(_addr, btsptr, _len);

有沒有人有一個真正適用於此的完整解決方案?或者任何人都可以幫我完成上面連結的文章中發布的虛擬碼嗎?

從 solc 0.5 開始,call返回兩個值:

  1. bool success, 表示函式是否成功完成
  2. bytes memory data,這是函式返回的實際數據

逗號(bool success, ) = ...表示您已經在使用 solc 0.5 或更高版本。

所以只需將其更改為(bool success, bytes memory data) = ..., 並data根據需要使用。

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