使用truffle部署以太坊智能合約到區塊鏈
來源:互聯網
上載者:User
truffle是以太坊(ethereum)開發智能合約(smart contract)過程中最受歡迎的架構,本教程來安裝構建一個基本的Truffle項目並部署一個智能合約到區塊鏈。開始本文之前希望你已經瞭解區塊鏈、以太坊、智能合約等基本概念。# 安裝 Truffle安裝 Truffle 架構非常的簡單,只需要一行命令:```npm install -g truffle```當然前提是你已經安裝好了NodeJS並且版本要在5.0以上。Tunffle還要求一個啟動並執行以太坊用戶端,以便支援標準的JSON RPC API,有很多的選擇比如Ganache、geth。# 構建一個Truffle項目要使用大量的Tunffle命令,我們通過使用一個現成的Tunffle項目來學習。第一步是建立一個Truffle項目。我們可以建立一個空的項目模板,不過剛開始構建項目,我們可以使用[Tunffle Boxs](http://truffleframework.com/boxes),裡面有很多的應用程式範例和項目模板。本文使用[MetaCoin box](http://truffleframework.com/boxes/metacoin),它建立一個可以在帳戶之間傳輸代幣的應用程式樣本。1.為構建Truffle項目建立新目錄:```mkdir MetaCoincd MetaCoin```2.下載 MetaCoin box,使用`truffle unbox <box-name>`來下載各種樣本,如果要建一個空的不包括智能合約的項目可以使用`truffle init`。```truffle unbox metacoin```上述命令完成後,我們獲得一個有以下目錄結構的項目:* contracts/: Solidity編寫的智能合約目錄。* migrations/:指令碼部署目錄。* test/:用來測試應用程式和智能合約的測試目錄。* truffle.js/:Truffle 設定檔。# 瀏覽一下這個項目1. 開啟`contracts/MetaCoin.sol`,這是一個用Solidity編寫的智能合約檔案,這個智能合約建了Metacoin代幣,我們可以注意到它引用了同目錄下的另外一個solidity編寫的檔案`contracts/ConvertLib.sol`。2. 開啟`contracts/Migrations.sol`,這是一個單獨的Solidity檔案,用來管理和更新部署的智能合約的狀態。這個檔案每個Tunffle項目都有,通常不用管。3. 開啟`migrations/1_initial_deployment.js`檔案,這個指令碼是為了部署`Migrations.sol`檔案中的`Migrations`合約。4. 開啟`migrations/2_deploy_contracts.js`檔案,這個指令碼是為了部署`MetaCoin`合約,會按順序執行完上一步的指令碼後執行。5. 開啟`test/TestMetacoin.sol`檔案,這是一個Solidity編寫的測試檔案,確保你的合約正常工作。6. 開啟`test/metacoin.js`檔案,這個指令碼與上面的測試檔案類似。7. 開啟`truffle.js`檔案,用於設定網路資訊和其他與項目相關的內容。檔案是空白的,沒關係,因為我們將使用一個內建有預設值的Truffle命令。# 測試專案1.開啟終端,執行命令:```truffle test ./test/TestMetacoin.sol```輸出結果是這樣的:```TestMetacoin √ testInitialBalanceUsingDeployedContract (71ms) √ testInitialBalanceWithNewMetaCoin (59ms) 2 passing (794ms)```2.運行JavaScript測試:```truffle test ./test/metacoin.js```輸出結果是這樣的:``` Contract: MetaCoin √ should put 10000 MetaCoin in the first account √ should call a function that depends on a linked library (40ms) √ should send coin correctly (129ms) 3 passing (255ms)```# 編譯智能合約```truffle compile```輸出結果是這樣的:```Compiling .\contracts\ConvertLib.sol...Compiling .\contracts\MetaCoin.sol...Compiling .\contracts\Migrations.sol...Writing artifacts to .\build\contracts```# 使用 Ganache 部署項目當使用Tuffle開發一個多功能的私人鏈和控制台時也可以使用ganache,它作為一個傳統型應用程式來啟動私人鏈。對於以太坊和區塊鏈新手來說ganache是一個更容易理解的工具,因為它會顯示更多的資訊給我們。除了運行Ganache之外,需要額外編輯一下Tunffle設定檔,以指向ganache執行個體。1.下載和安裝 [Ganache](http://truffleframework.com/ganache)2.開啟 `truffle.js` ,用下面的內容替換:```module.exports = { networks: { development: { host: "127.0.0.1", port: 7545, network_id: "*" } }};```這樣就可以使用Ganache的預設參數進行串連了。3.儲存一下這個檔案。4.啟動 Ganache![truffle-quickstart](http://blog.hubwiz.com/2018/06/15/truffle-quickstart/accounts.png)5.開啟終端,用Ganache部署智能合約到區塊鏈```truffle migrate```輸出結果是這樣的:```Using network 'development'.Running migration: 1_initial_migration.js Replacing Migrations... ... 0x63b393bd50251ec5aa3e159070609ee7c61da55531ff5dea5b869e762263cb90 Migrations: 0xd6d1ea53b3a7dae2424a0525d6b1754045a0df9fSaving successful migration to network... ... 0xe463b4cb6a3bbba06ab36ac4d7ce04e2a220abd186c8d2bde092c3d5b2217ed6Saving artifacts...Running migration: 2_deploy_contracts.js Replacing ConvertLib... ... 0xa59221bc26a24f1a2ee7838c36abdf3231a2954b96d28dd7def7b98bbb8a7f35 ConvertLib: 0x33b217190208f7b8d2b14d7a30ec3de7bd722ac6 Replacing MetaCoin... ... 0x5d51f5dc05e5d926323d580559354ad39035f16db268b91b6db5c7baddef5de5 MetaCoin: 0xcd2c65cc0b498cb7a3835cfb1e283ccd25862086Saving successful migration to network... ... 0xeca6515f3fb47a477df99c3389d3452a48dfe507980bfd29a3c57837d6ef55c5Saving artifacts...```內容顯示的是交易id和你所部署的智能合約地址。6.在Ganache中,點擊`Transactions` 按鈕可以看到被處理的交易。7.要與合約進行互動,可以使用Truffle控制台。類似於Truffle Develop,唯一不同的是它串連到現有區塊鏈(在這種情況下,由Ganache產生的)```truffle console```你會看到下面的提示:```truffle(development)>```# 與智能合約互動使用控制台通過下面的方式進行互動:* 查看賬戶餘額```MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[0]);}).then(function(value){return value.toNumber()});```* 看看有多少以太合適(並注意合約定義1個metacoin價值2以太)```MetaCoin.deployed().then(function(instance){return instance.getBalanceInEth(web3.eth.accounts[0]);}).then(function(value){return value.toNumber()});```* 從一個帳號轉賬到另一個帳號```MetaCoin.deployed().then(function(instance){return instance.sendCoin(web3.eth.accounts[1], 500);});```* 檢查是否收到metacoin```MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[1]);}).then(function(value){return value.toNumber()});```* 檢查給別人轉賬的賬戶```MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[0]);}).then(function(value){return value.toNumber()});```ok,Truffle快速入門的教程就到這裡,如果還有疑問可以訪問我們的線上互動課程:> - [以太坊教程](http://xc.hubwiz.com/course/5a952991adb3847553d205d1?affid=studygolang615),主要介紹智能合約與dapp應用開發,適合入門。> - [以太坊開發](http://xc.hubwiz.com/course/5abbb7acc02e6b6a59171dd6?affid=studygolang615),主要是介紹使用node.js、mongodb、區塊鏈、ipfs實現去中心化電商DApp實戰,適合進階。原文轉載:《使用[truffle](http://blog.hubwiz.com/2018/06/15/truffle-quickstart/)部署以太坊智能合約到區塊鏈》162 次點擊