這篇寫於我第一次嘗試部署智能合約之時。首先配置好了geth環境、搭建了一條私鏈。然後瞭解了一下智能合約的開發工具。感謝本篇引用到的網絡教程們,是這些教程讓開發對新手友好。也希望我的文章能有那麼一點點作用。
操作系統:macOS Mojave 10.14
1. 環境準備:geth客戶端和以太坊賬戶
先拋開truffle、solidity這類合約相關的內容不談,我們首先要做的是:(1)安裝並啓動geth客戶端,(2)搭建測試鏈並設置好賬戶。
1.1| geth安裝
brew tap ethereum/ethereum
brew install ethereum
運行 brew tap ethereum/ethereum 報錯:
remote: Repository not found.
fatal: repository 'https://github.com/ethereum/homebrew-thereum/' not found
Error: Failure while executing; `git clone https://github.com/ethereum/homebrew-thereum /usr/local/Homebrew/Library/Taps/ethereum/homebrew-thereum --depth=1` exited with 128.
根據網上文章判斷是在terminal手動輸入的用戶名密碼與之前本地保存過的不一致。嘗試:
1. 刪除掉“鑰匙串訪問”中所有與Github有關的條目。未果。
2. 刪除掉~/.ssh下的github_rsa和github_rsa.pub。成功。看來是本地不知什麼時候保存的ssh與手動輸入的賬戶不匹配導致報錯。
1.2| 啓動geth客戶端
geth --datadir testNet --dev console 2>> test.log
--datadir testNet表示將區塊數據及密鑰存放在testNet文件夾(在當前目錄新建的文件夾)中;
--dev表示啓動的是開發者網絡,啓動後會自動分配一個賬戶給當前區塊鏈;
console表示進入控制檯模式;
2>> test.log表示將控制檯日誌輸出到test.log中。test.log與啓動節點後生成的testNet文件夾在同一目錄下,是平級而不是包含關係。
* 新開一個終端窗口,跳至test.log所在的文件夾下,輸入以下語句可以看到log信息。
tail -f test.log
1.3| 新建一個能夠部署智能合約的賬戶
詳見智能合約開發環境搭建及Hello World合約,參考“準備賬戶-》創建賬戶+給新賬戶轉賬+解鎖賬戶”這部分即可。寫得很清晰。
以上所部署的賬戶信息在退出geth後仍舊會保留。
至此準備工作完成,可以準備寫智能合約啦。
2. 工具介紹:truffle
介紹合約開發工具們。
2.1| 什麼是Solidity?
使用最多的以太坊智能合約語言。可選的還有Serpent(類Python),III(類Fortran)。Solidity類似Java。
2.2| 什麼是Truffle?
Truffle是一套開發框架,針對基於以太坊Solidity語言的開發。Truffle本身基於Javascript。
方便智能合約的開發、測試、部署,高度集成。
2.3| 什麼是Ganache?
Ganache(戳這裏下載dmg安裝包)是一個應用程序,與truffle配套使用。其因有圖形界面而被建議取代之前的testrpc。安裝好後要以開發者模式打開,即:進入finder-》應用程序,找到Ganache.app右鍵,然後按住shift後點擊“打開”。
打開後點擊“Quick Start”程序會自動建立10個賬號,每個賬號擁有100個以太幣。這些賬號和以太幣都是假的(僅運行在內存),每次重新打開會重新生成。
2.4| 什麼是Browser-Solidity/Remix?
Remix是Solidity官方推薦的編譯器,有網頁版和本地編譯版(安裝方法)。
網頁版Remix無需本地安裝Solidity便可使用,適合新手。