Contract-Invocation
USDT 的 eth_call 命令中的數據欄位是什麼?
我正在嘗試使用**eth_call**將USDT **(TetherToken)**從一個帳戶發送到另一個帳戶(儘管我知道這
eth_call
只是模擬此類交易)。在這方面一切都很清楚,只是數據參數有點模棱兩可。據我所知,它必須是合約的編碼值和其他一些參數。在檢查了許多網頁後,我發現這個值是 ABI-Encoded 並且是這個連結中提到的 Contract 的最後一個字節:000000000000000000000000000000000000000000000000000000174876e800000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a546574686572205553440000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553445400000000000000000000000000000000000000000000000000000000
現在,我的問題是:
- 使用此程式碼作為
data
值是否足以執行eth_call
?- 上面的值是一個十六進制值。但是文件中給出的範例使用較短的數據值,例如
0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675
HEX,但格式較短。應用什麼樣的編碼來準備這樣的最終數據值?- 除了契約簽名之外,還有哪些其他參數必須包含在數據價值創造中?
- 我找到了一個將契約 JSON 轉換為 ABI 編碼格式的網站。在本網站粘貼TetherToken合約 JSON 並按下解析後,出現了一些新欄位。其中之一是
_initialSupply
。其他欄位是明確的,並且它們的值是可用的。但我不明白_initialSupply
這裡到底是什麼,我在哪裡可以找到它?我希望你能幫助我找到我的問題的答案。抱歉問了太多問題…
我認為你混淆了不同的事情:
您粘貼的字元串
000000000000000000000000000000000000000000000000000000174876e80000...
是用於呼叫合約建構子的參數。
- 數據參數被傳遞給合約。契約可以以他想要的任何方式解釋它。但通常 Solidity 合約遵循ABI 規範。
- 你從哪裡得到這個值?我無法在 USDT 中找到它。
- 您通常傳遞函式選擇器和所有參數。
- “解析”按鈕下的第一個選擇允許選擇您要呼叫的函式,它顯示下面的參數。預設情況下,它選擇建構子,_initialSupply 是參數之一。
例如,如果您使用它呼叫
a9059cbb00000000000000000000000012345678123456781234567812345678123456780000000000000000000000000000000000000000000000000000000000000017
它會被解釋為:
a9059cbb
:傳輸選擇器(地址,uint256)0000000000000000000000001234567812345678123456781234567812345678
: 接受者0000000000000000000000000000000000000000000000000000000000000017
: 代幣數量