ABI(Application Binary Interface,應用程式二進制介面)是一種用於與以太坊智能合約進行互動的標準。它定義了如何編碼和解碼數據,以便在不同合約之間傳遞參數和調用函數。在 Solidity 中,有一些與 ABI 相關的函數,包括 abi.encode、abi.encodePacked、abi.encodeWithSignature、abi.encodeWithSelector,以及 abi.decode 用於解碼數據。
ABI 編碼是將函數參數和數據按照一定規則編碼成位元組碼的過程,以便與智能合約進行交互。以下是四種常見的 ABI 編碼方法:
按照 ABI 規則編碼參數,並在每個參數前添加 32 位元組的佔位符,適用於與合約進行交互。
根據參數的最低空間需求編碼,省略了填充的零,通常用於緊湊地編碼數據,例如計算雜湊值。
與 abi.encode 類似,但需要提供函數的簽名,用於調用其他合約的函數。
與 abi.encodeWithSignature 類似,但需要提供函數選擇器,它是函數簽名的 Keccak 哈希的前4 個位元組。
ABI 解碼是將 ABI 編碼的位元組碼還原為原始數據的過程,使用 abi.decode 函數進行解碼。
ABI 的使用場景包括與智能合約的互動、合約的底層調用、合約的導入和函數調用等。
WTF Solidity ABIEncode
ABI Encoder & Decoder
string to hex
ABI