如何找到建構子參數的輸入創建字節碼?
我想在 Etherscan.io 上驗證並發布我的 Solidity 原始碼。我的智能合約的建構子中有一個參數,我需要在表單中填寫一個欄位,該欄位採用ABI 編碼格式的建構子參數。
如何將我的論點轉換為 ABI 編碼格式?
查找建構子參數的一種簡單方法是:
- 在 Etherscan 上瀏覽您的合約,然後點擊 tx 雜湊進行創建
- 在右上角,它顯示“工具和實用程序”,點擊箭頭以查看更多選項並選擇“奇偶校驗跟踪”
- 對於與契約創建有關的操作,點擊下面的“顯示更多”以查看輸入/輸出
- 在輸入文本區域中,向下滾動到末尾。該字元串的最後一部分是您的建構子參數。
- 搜尋“0029”,0029 之後的任何字元串都是您的建構子參數。
例如,這是我幾週前部署的合約:https ://etherscan.io/vmtrace?txhash=0x840a4c95de8287b39b4a104470c49ee1a78fee13ff790b85624e0f66d9d05be4&type=parity
輸入是(為了空間而縮短):
...0019909216919091179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061236557805160ff1916838001178555612392565b82800160010185558215612392579182015b82811115612392578251825591602001919060010190612377565b5061239e9291506123a2565b5090565b6123bc91905b8082111561239e57600081556001016123a8565b905600a165627a7a723058201c3fd67e0e5dae16f4d5818e4def156aa71b9a6925640af36a76c616a54e724c002900000000000000000000000006595656b93ce14834f0d22b7bbda4382d5ab51000000000000000000000000000000000000000000000000d8d726b7177a80000
我的建構子參數是 0029 之後的內容:
00000000000000000000000006595656b93ce14834f0d22b7bbda4382d5ab51000000000000000000000000000000000000000000000000d8d726b7177a80000
在本文件的末尾,https://etherscanio.freshdesk.com/support/solutions/articles/16000053599-contract-verification-constructor-arguments,您將找到如何獲取您的建構子參數:
找出建構子參數是什麼的另一種快速而骯髒的方法是比較瀏覽器的solidity / remix編譯的字節碼並將其與輸入創建字節碼進行比較。如果您仔細觀察,您會注意到附加在輸入的 END 處的附加十六進制程式碼創建了字節程式碼。這是您的“建構子參數”
這裡有一個建構子有參數的契約:https://etherscan.io/address/0x7da82c7ab4771ff031b66538d2fb9b0b047f6cf9#code