測試智能合約

以實際來說,用乙太坊測試智能合約需要消耗一定的GAS FEE(燃料費),只要當你要在區塊鏈網路發起一筆交易時,就要支付給礦工的一筆手續費。

Gas Fee = Gas Limit x Gas Price

礦工費總金額的計算方式是 Gas Limit 乘上 Gas Price。Gas Limit 和 Gas Price 兩個數字相乘,這裡假設GAS Limit 為 21000 ,換算成以太幣(1 ETH = 10^9 GWEI): 21000 x 10 / 10^9 ,就可以得到礦工費的總金額 0.00021 ETH。

Etherscan是一個很好的Gas Tracker ,這裡可以看到付多少的GAS PRICE你的交易會快被完成,而自己得計算大概一個智能合約的交易會消耗多少的GAS,必須設定一個GAS Limit,GAS Limit設太低容易造成交易所消耗的GAS無法完成該交易,並且GAS FEE也不會退還,因此GAS值需要設定高一點,可以避免交易失敗的損失,沒有用到的GAS也不會計算在費用內。

前言講完後,現在來思考一個問題,若你沒有實際的乙太幣該如何測試智能合約?

因此這裡介紹Ganache這個平台,Ganache 是由 Truffle 開發團隊打造的區塊鏈測試環境,有圖形化介面版本與 CLI 版本。 Ganache 可以讓開發者迅速建立一個虛擬的區塊鏈環境,以提供智能合約完善的測試環境,預設情況下會自動完成挖礦,交易處理速度可以說是立即完成,而一切在 Ganache 上所部署的合約、進行的交易都是存在記憶體中,關閉程式後就會清空。


安裝Truffle

接下來得安裝truffle的環境,一套針對 Solidity 語言的智能合約開發框架,可以讓開發者快速編譯、部署、測試智能合約,並且可以使用 JavaScript 來進行智能合約測試

一樣首先創建truffleTest的資料夾,在truffleTest資料夾內按右鍵使用終端機開啟。(安裝truffle需要一點時間)

建立一個Truffle Project

這裡跟之前創立node.js的專案雷同。 狀況如下圖

  • contracts/: 存放智慧合約目錄

  • migrations/存放部署合約用的檔案

  • test/存放測試合約用的檔案

  • truffle-config.js: 專案的設定檔


部署合約到Ganache

直接compile文件

更改truffle-config.js

開啟Ganache,Network ID 以及 RPC Server 打入 truffle-config.js裡面,這裡直接依照格式(可直接Ctrl+A再Ctrl+V )


Migrations.sol 是這個truffle專案的智能合約檔案


輸入指令執行部署(命令提示字元執行)

輸入指令後即可看到預設第一個錢包的ETH被扣款