Solidity

在編譯期間查找合約的字節碼

  • January 28, 2022

是否有解決方案可以恢復以solidity 導入的合約的完整字節碼(init + runtime)。例如“bytes code = getBytecode (Escrow.sol)”,這會在編譯期間被字節碼替換嗎?非常感謝你的幫助

使用 Remix 肯定是立竿見影的。只需點擊“詳細資訊”,然後點擊“字節碼”

這在建構時是可能的,但您需要為此定制工具。

假設您想在 contract 中使用合約的字節AB

首先將合約編譯A成字節碼。所以你會有文件A.bin。讓我們假設這個文件的內容是0x6060604052604080519081....

然後你需要編寫一個程式碼,將這個字節碼轉換成如下所示的 Solidity 文件A_bin.sol

pragma solidity 0.5.7;

contract A_bin {
 bytes internal constant A_bytecode = abi.encodePacked(
   uint8 (0x60), uint8 (0x60), uint8 (0x60), uint8 (0x40),
   uint8 (0x52), uint8 (0x60), uint8 (0x40), uint8 (0x80),
   uint8 (0x51), uint8 (0x90), uint8 (0x81), ...);
}

您可以使用 Python 的 Javascript 或您喜歡的任何語言編寫此類程式碼。

現在在契約中B,您可以包含A_bin.sol、繼承契約並在需要B的地方使用。A_bin``A_bytecode

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