Transactions

ABI 編碼在數字簽名中起什麼作用?

  • January 26, 2022

我有兩個關於 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事務欄位中
  • 將所有其他值tovaluenonce
  • RLP 對這些欄位進行編碼
  • 簽署交易
  • 再次 RLP 對其進行編碼並發送

在穿過一些電線後…

接收器/節點

  • RLP 解碼接收到的交易
  • 通過檢查簽名驗證是否有效
  • RLP 解碼
  • 執行!(EVM 在內部處理 ABI 解碼和執行)

RLP 編碼是用於通過通道(即您的手機數據或乙太網等)進行通信的協議,它是用於在通過傳輸發送之前轉換數據的低級方法。除了乙太坊,您還可以將 RLP 編碼用於移動通信之類的東西。這只是另一個協議。

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