Transactions
ABI 編碼在數字簽名中起什麼作用?
我有兩個關於 ABI 的問題。
1. 什麼時候發生?
數字簽名是通過創建交易資料結構、對數據進行 RLP 編碼序列化、通過 keccak-256 對其進行散列處理,並使用私鑰使用 ECDSA 對其進行簽名來實現的。ABI 編碼在什麼時候發生?
2. 它編碼什麼?
ABI 編碼是否僅發生在呼叫數據的合約方法或諸如值、隨機數等之類的事情上?如果是後者,這是否意味著交易參數得到 RLP 編碼和 ABI 編碼?
ABI 或應用程序二進制介面是與合約互動的標準。EVM 使用 ABI 編碼數據來了解要執行的字節碼的哪一部分。
什麼時候發生? 合約互動只是乙太坊上的另一筆交易。有效負載/待辦事項在
data
交易領域。ABI 編碼對使用者的參數和函式簽名進行編碼。然後你把它放在data
交易的領域。然後你簽署交易作為所有權證明。然後對整個交易數據進行 RLP 編碼。它編碼什麼? ABI 編碼僅用於合約互動。它用於計算
keccak256
目標函式選擇器的雜湊值,然後是您要提供的參數。該過程返回原始bytes
數據,然後將其放入data
事務的欄位中。整個流程:
發件人:
- 決定在合約地址執行哪個函式
- ABI 編碼函式選擇器和參數
- 將 ABI 編碼器的輸出原始字節放在
data
事務欄位中- 將所有其他值
to
、value
和nonce
- RLP 對這些欄位進行編碼
- 簽署交易
- 再次 RLP 對其進行編碼並發送
在穿過一些電線後…
接收器/節點:
- RLP 解碼接收到的交易
- 通過檢查簽名驗證是否有效
- RLP 解碼
- 執行!(EVM 在內部處理 ABI 解碼和執行)
RLP 編碼是用於通過通道(即您的手機數據或乙太網等)進行通信的協議,它是用於在通過傳輸發送之前轉換數據的低級方法。除了乙太坊,您還可以將 RLP 編碼用於移動通信之類的東西。這只是另一個協議。