前言
部署智能合約有多種方式,命令行的瀏覽器的渠道都有,但往往跟我們程序員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。
雖然現在IDE中已經存在了Solidity插件,可以編寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測試。
如果團隊管理的區塊節點多、合約多,那得哭暈在廁所。
Truffle是一個世界級的智能合約開發框架,專門為智能合約而生。
安裝
安裝truffle
sudo cnpm install -g truffle
查看版本
truffle version
搭建項目
創建項目目錄
mkdir dapp cd dapp/
初始化空項目
truffle init
你也可以不創建空項目 而是創建一個帶有模板的項目 如下
初始化模板項目
truffle unbox webpack
官方模板列表:https://www.trufflesuite.com/boxes
配置區塊節點
truffle-config.js文件中networks代碼段 用來配置區塊鏈節點
示例中有這么一段
development: { host: "127.0.0.1", // Localhost (default: none) port: 8545, // Standard Ethereum port (default: none) network_id: "*", // Any network (default: none) }
你可以根據你的實際情況修改,或者如我一樣直接注釋掉這段,我直接加了下面這段
line: { host: "47.97.26.107", network_id: 100, port: 8888, from:'0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A' },
不管是development還是line都是隨意取的Key,如果你有多個區塊鏈節點,你也可以多配幾段即可。
代碼段中的from為部署合約的賬戶,如果不配,則默認為以太坊客戶端的第一個賬戶。
部署合約
編譯
truffle compile
部署前
編譯后要做的事情是確保部署合約的那個地址里有ETH,因為部署是要花錢的,並且地址必須解鎖, 然后才能部署。
部署
truffle migrate --network line
(我自己配置的網絡段是line,所以我的--network值是line,如果你只是 truffle migrate 不加任何參數 那么默認會部署development網絡)
部署后
必須要設置挖礦地址,進行挖礦,否則交易不會廣播。
查看合約
truffle networks
操作合約
進入控制台
truffle console --network line
獲取合約實例
let instance = await MetaCoin.deployed()
調用合約方法
這里舉例獲取地址余額
let balance = await instance.getBalance('0x30f8c37E265FbfC8941c38f861a8d2FC994e4772') balance.toNumber()