要開發EOS智能合約,會需要會用C++11。也還有一些非官方支援的開發方式,不過C++11可能會是最好的(並清楚之後會部會支援到C++14或C++17)。不過今天還不會進到開發階段,接續昨日運作架構,要來說說開發工具組件。不過要是全部都詳細說明會沒完沒了的,所以今天只會淺談。
區塊鏈最重要的莫過於網路上運行的節點了。nodeos(EOS Node)是EOS運行節點的工具。除了運行單節點,還能夠與設定鄰居(peers),形成區塊鏈網路。此外,亦負責處理或轉送交易請求(提供HTTP REST API/HTTP RPC)。
要開發EOS現在也已經有很多方式,比如js4eos。不過還是官方支援的EOSIO.CDT(Contract Development Toolkit)可能最好。EOSIO.CDT是一整個工具集,其中包含eoscpp
作為C++的智能合約編譯器,能句將以C++寫的智能合約編譯成區塊鏈上運行的格式--WASM(WebAssembly)。
This new toolchain is built around Clang 7, which means that EOSIO.CDT has the most current optimizations and analyses from LLVM.
在早期,編譯工具是包含在EOS軟體裡面,在好像1.4版本以後,被獨立出來。
※ 相比起乙太坊運行在EVM,使用EVM的中介碼。EOS直接使用WASM作為運行的格式。
要部署合約,必須要有帳號。EOS的帳號概念是非常複雜有趣的,其中對於部署合約最重是公私鑰。keosd
是官方提供保存管理私鑰使用的錢包工具,能夠搭配cleos
部署合約。
cleos
會是開發時最常接觸使用的工具。他串接nodeos
提供的HTTP RPC(HTTP REST API),使更容易處理區塊鏈相關事情,比如部署合約、查詢歷史紀錄等。同時,他也可以作為動態調整節點設定的工具。
cleos
使用到keosd
時,會自動啟動後者。當要部署合約時,會啟動錢包管理工具、要求解鎖錢包、簽署簽證,並最後廣播上傳部署合約。
在之前曾經提過目前大多數DApp還是以網頁形式與使用者互動,這之中包含區塊鏈底層、智能合約、錢包管理軟體、網頁。在EOS架構中,eos.js
是官方提供,用於與nodeos
溝通使用(有點類似cleos
,不同的是這是給DApp用,cleos
是給人用)。此外,為了更方便的使用,未來除了eos.js
以外,我們還得裝上相對應的錢包工具與相關js套件。
Scatter 類似MetaMask。他是非常澡在EOS生態出現的第三方錢包管理工具。此外,它也接受其他區庫鏈網路使用,像是乙太坊。