ABI | 以太坊開發A2Z

快速瞭解以太坊開發,快速 get 複雜的技術概念!
Second State 推出以太坊開發A2Z 系列,結合區塊鏈開發的實際情況,帶你瞭解以太坊開發的點點面面。

這篇文章是該系列的第一篇,爲大家講述智能合約ABI。
在這裏插入圖片描述

簡短版:區塊鏈智能合約ABI是智能合約與區塊鏈應用程序之間的接口。智能合約被像BUIDL這樣的編譯器編譯成二進制文件後,會自動生成ABI。ABI是JSON文本文件,記錄了智能合約的function 和參數。在用戶使用區塊鏈應用程序時,需要通過ABI 來調用智能合約。

什麼是ABI

ABI是Application Binary Interface的縮寫,是其他應用程序調用二進制應用程序文件的接口。ABI 是一種約定俗成的規範。

舉例來說,夏天打開空調降溫,通常需要一個遙控器。我們通過調節遙控器的按鈕,來讓空調執行製冷,降低/調高溫度等操作。遙控器就相當於一個ABI,上面記錄了與之相匹配的空調能夠實現的功能與參數:制熱/制熱,空調能夠達到的最高與最低溫度是多少。隨着空調本身功能的增多,比如增加了睡眠模式,通風等,遙控器(ABI)上的按鈕也會隨之豐富起來。

ABI 實現了用戶與程序的互動。

以太坊開發中的ABI

在以太坊/區塊鏈開發中,智能合約ABI 非常常見。智能合約編譯後,編譯器自動生成ABI 來記錄智能合約的function與參數。當區塊鏈應用被使用時,人們通過ABI 來調用智能合約,實現相關功能。

以區塊鏈基礎軟件技術公司Second State 開發的 BUIDL IDE 內置的默認代碼爲例,合約代碼如下:
在這裏插入圖片描述

經過BUIDL 編譯後,我們獲得瞭如下的ABI。智能合約生成的ABI是JSON 格式的數組,包含兩組參數,一個是參數名稱,一個是參數值。在調用智能合約時,通過ABI 瞭解該智能合約實現了哪些功能,參數又是什麼。

[{"constant": false,"inputs": [{"name": "x","type": "uint256"}],"name": "set","outputs": [],"payable": false,"stateMutability": "nonpayable","type": "function"},{"constant": true,"inputs": [],"name": "get","outputs": [{"name": "","type": "uint256"}],"payable": false,"stateMutability": "view","type": "function"}]

注意:ABI 並不是唯一的。如果智能合約實現的功能一樣,那麼編譯出的ABI 也是一樣的。

當我們使用BUIDL 進行下一步DApp 開發工作時,會發現JavaScript 版塊記錄了當前智能合約的ABI,使應用程序能夠調用智能合約,與之互動。

[Image: image.png]

標題*關於BUIDL IDE —— 一站式區塊鏈開發工具*

BUIDL IDE是完全基於瀏覽器的集成開發工具,開發者可以用BUIDL輕鬆地創建和部署區塊鏈應用(DApp),無需安裝任何軟件和區塊鏈錢包,從而節省大量時間。

BUIDL 功能介紹:

  • 內置賬戶管理系統,不需錢包軟件;
  • 編寫,編譯和部署智能合約;
  • 開發包含HTML5 和 JavaScript 的DApp;
  • 一鍵把DApp發佈到 Github Pages
  • 可以部署在以太坊和任何與以太坊兼容的區塊鏈;
  • 訪問內置Web3庫;
  • 支持基於規則的智能合約;
  • 內置基於ElasticSearch 的實時智能合約搜索引擎;

更多資料:

  • BUIDL 介紹頁
    https://www.secondstate.io/buidl/
  • BUIDL IDE
    https://buidl.secondstate.io/
  • BUIDL 文檔
    https://docs.secondstate.io/buidl-developer-tool/getting-started
  • BUIDL GitHub 代碼
    https://github.com/second-state
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章