以太坊網絡 ABI
應用程序接口 (API)是一種軟件中介,它允許兩個應用程序使用一組特定的協議和定義相互通信。發送請求的應用程序是客戶端,而發送響應的應用程序稱為服務器。這些服務器充當中心化信息源,根據請求將數據提供給應用程序。然而,在區塊鏈網絡中,數據中心化并不存在。區塊鏈之外的應用程序需要一種與區塊鏈網絡上的 DApp 和智能合約進行通信的方式。本文旨在打破通過使用 ABI 完成的任務。
什么是節點提供商?
2Ethers.js 和 Web3.js 的區別
為了全面了解 ABI 及其功能,用戶需要對 EVM 和智能合約有基本的了解。
以太坊虛擬機 (EVM)充當具有數百萬個可執行項目的去中心化計算機。EVM 是允許開發人員用來創建去中心化應用程序 (dApp)?以及所有以太坊賬戶和智能合約所在的平臺。
智能合約以字節碼(二進制數據)的形式存儲在區塊鏈中的特定地址(稱為合約地址)下。智能合約的目的是在滿足合約中定義的某些條件時執行交易。這些條件可以是鏈上或鏈下的事件。
應用程序二進制接口 (ABI)與其特定區塊鏈之外的合約交互,并允許合約到合約交互。它連接兩個程序模塊,例如操作系統和用戶程序。
需要 ABI 來訪問存儲為的字節碼智能合約。ABI 定義了你可以調用哪些函數,同時確保函數以預期格式返回數據。應用程序需要 ABI 和合約地址才能與區塊鏈網絡上的智能合約進行交互。
各種函數和事件描述給出了合約 ABI 的JSON 格式。以下是函數的 ABI 描述中存在的元素:
在Ethereum REMIX IDE中,你可以在編譯智能合約后使用 compile 標簽下的 ABI 按鈕復制 ABI。你也可以使用終端手動創建 ABI。以下是手動安裝選項:
由于 ABI 作為網站 EVM 字節碼和 Javascript 之間的解釋器運行,因此當你想要執行智能合約的任何功能時都需要它。除了 ABI,還需要區塊鏈上的合約地址。如果你有興趣查找已部署合約的 ABI,你可以通過使用合約地址在 Etherscan 上搜索來找到它。
智能合約通過字節碼進行通信,使區塊鏈開發人員難以對消息進行編碼。但是,創建了編碼設計標準來解決這個問題。ABI 編碼旨在具有以下屬性:
像 Remix 這樣的流行編譯器也可以為你處理編碼。這些編碼遵循特定的模式,因此可以通過查看ABI 規范更好地了解正在發生的事情。
前四個字節是函數簽名,指示智能合約正在執行的函數類型。一個流行的函數標識符是 a9059cbb,它表明這是一個 ERC20 傳輸。這里有一個函數簽名的數據庫目錄,你可以在其中探索更多信息。
ABI 在智能合約的可用性中起著至關重要的作用。如果你想深入了解 ABI 的技術方面,我建議你閱讀Contract ABI Specification?for?Solidity。?記住,朋友,做或不做;沒有嘗試??鞓穼W習