使用truffle部署以太坊智慧合約到區塊鏈
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,裡面有很多的示例應用程式和專案模板。本文使用MetaCoin box,它建立一個可以在帳戶之間傳輸代幣的應用程式示例。
- 為構建Truffle專案建立新目錄:
mkdir MetaCoin cd MetaCoin
- 下載 MetaCoin box,使用
truffle unbox <box-name>
來下載各種示例,如果要建一個空的不包括智慧合約的專案可以使用truffle init
。
truffle unbox metacoin
上述命令完成後,我們獲得一個有以下目錄結構的專案:
- contracts/: Solidity編寫的智慧合約目錄。
- migrations/:指令碼部署目錄。
- test/:用來測試應用程式和智慧合約的測試目錄。
- truffle.js/:Truffle 配置檔案。
瀏覽一下這個專案
開啟
contracts/MetaCoin.sol
,這是一個用Solidity編寫的智慧合約檔案,這個智慧合約建了Metacoin代幣,我們可以注意到它引用了同目錄下的另外一個solidity編寫的檔案contracts/ConvertLib.sol
。開啟
contracts/Migrations.sol
,這是一個單獨的Solidity檔案,用來管理和更新部署的智慧合同的狀態。這個檔案每個Tunffle專案都有,通常不用管。開啟
migrations/1_initial_deployment.js
檔案,這個指令碼是為了部署Migrations.sol
檔案中的Migrations
合約。開啟
migrations/2_deploy_contracts.js
檔案,這個指令碼是為了部署MetaCoin
合約,會按順序執行完上一步的指令碼後執行。開啟
test/TestMetacoin.sol
檔案,這是一個Solidity編寫的測試檔案,確保你的合約正常工作。開啟
test/metacoin.js
檔案,這個指令碼與上面的測試檔案類似。開啟
truffle.js
檔案,用於設定網路資訊和其他與專案相關的內容。檔案是空白的,沒關係,因為我們將使用一個內建有預設值的Truffle命令。
測試專案
- 開啟終端,執行命令:
truffle test ./test/TestMetacoin.sol
輸出結果是這樣的:
TestMetacoin √ testInitialBalanceUsingDeployedContract (71ms) √ testInitialBalanceWithNewMetaCoin (59ms) 2 passing (794ms)
- 執行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例項。
下載和安裝 Ganache
開啟
truffle.js
,用下面的內容替換:
module.exports = { networks: { development: { host: "127.0.0.1", port: 7545, network_id: "*" } } };
這樣就可以使用Ganache的預設引數進行連線了。
儲存一下這個檔案。
啟動 Ganache
- 開啟終端,用Ganache部署智慧合約到區塊鏈
truffle migrate
輸出結果是這樣的:
Using network 'development'. Running migration: 1_initial_migration.js Replacing Migrations... ... 0x63b393bd50251ec5aa3e159070609ee7c61da55531ff5dea5b869e762263cb90 Migrations: 0xd6d1ea53b3a7dae2424a0525d6b1754045a0df9f Saving successful migration to network... ... 0xe463b4cb6a3bbba06ab36ac4d7ce04e2a220abd186c8d2bde092c3d5b2217ed6 Saving artifacts... Running migration: 2_deploy_contracts.js Replacing ConvertLib... ... 0xa59221bc26a24f1a2ee7838c36abdf3231a2954b96d28dd7def7b98bbb8a7f35 ConvertLib: 0x33b217190208f7b8d2b14d7a30ec3de7bd722ac6 Replacing MetaCoin... ... 0x5d51f5dc05e5d926323d580559354ad39035f16db268b91b6db5c7baddef5de5 MetaCoin: 0xcd2c65cc0b498cb7a3835cfb1e283ccd25862086 Saving successful migration to network... ... 0xeca6515f3fb47a477df99c3389d3452a48dfe507980bfd29a3c57837d6ef55c5 Saving artifacts...
內容顯示的是交易id和你所部署的智慧合約地址。
在Ganache中,點選
Transactions
按鈕可以看到被處理的交易。要與合約進行互動,可以使用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快速入門的教程就到這裡,如果還有疑問可以訪問我們的線上互動課程:
轉載自使用truffle部署以太坊智慧合約到區塊鏈
相關文章
- 區塊鏈——以太坊、智慧合約簡介區塊鏈
- 區塊鏈2.0以太坊智慧合約solidity之helloworld區塊鏈Solid
- 區塊鏈之--2小時構建以太坊智慧合約區塊鏈
- 【區塊鏈】實戰·以太坊智慧合約程式設計引導區塊鏈程式設計
- 區塊鏈100講:淺析以太坊網路智慧合約原理區塊鏈
- 使用Remix編譯和部署以太坊智慧合約REM編譯
- 以太坊智慧合約開發第六篇:truffle開發框架框架
- 區塊鏈 2.0 :以太坊(九)區塊鏈
- 區塊鏈之以太坊初探區塊鏈
- 以太坊蜜罐智慧合約分析
- 以太坊·將資料寫入到區塊鏈中區塊鏈
- 以太坊智慧合約升級策略
- 以太坊智慧合約-猜數字
- 以太坊中如何獲取另外一個智慧合約部署的合約地址?
- 區塊鏈智慧合約開發區塊鏈
- 區塊鏈2.0架構:以太坊區塊鏈的介紹區塊鏈架構
- 區塊鏈2.0以太坊漫談(1)區塊鏈
- 區塊鏈2.0以太坊漫談(2)區塊鏈
- 區塊鏈2.0以太坊漫談(3)區塊鏈
- 區塊鏈2.0以太坊漫談(4)區塊鏈
- 區塊鏈2.0以太坊環境搭建區塊鏈
- 以太坊智慧合約gas如何估計?
- 以太坊智慧合約call注入攻擊
- 如何打造安全的以太坊智慧合約
- 技術工坊|深度探索以太坊智慧合約(深圳)
- 區塊鏈智慧合約解決方案區塊鏈
- 區塊鏈智慧合約是什麼?區塊鏈
- ATourofEthereum——區塊鏈與智慧合約之旅區塊鏈
- 區塊鏈安全 - 以太坊短地址攻擊區塊鏈
- 區塊鏈安全————以太坊短地址攻擊區塊鏈
- 以太坊及區塊鏈 程式資源整合區塊鏈
- 以太坊智慧合約 Hexagon 存在溢位漏洞Go
- 區塊鏈BSC智慧合約DAPP開發區塊鏈APP
- 以太坊智慧合約開發第二篇:理解以太坊相關概念
- 區塊鏈合同智慧合約上鍊聯盟鏈區塊鏈
- 以太坊入門-Truffle框架搭建框架
- Polygon馬蹄鏈在以太坊上的智慧合約開發應用Go
- Conflux與以太坊合約開發工具區別UX