Truffle套件是一個開發乙太坊(Ethereum)區塊鏈DApp(分散式應用程式)的開發環境,是開發DApp的一站式解決方案,
功能包括:
編譯合約、
部署合約、
開發DApp前端、
測試DApp等。
Truffle套件主要有3個模組:
Truffle 太坊(Ethereum)區塊鏈DApp開發環境。
Ganache Ganache可以創建本地區塊鏈網路,用於測試智合約,你可以在本地區塊鏈網路上部署合約、開發應用程式、運行測試和執行其他任務,不需要付任何費用。
Drizzle 前端庫的集合,使編寫dapp使用者介面更容易。
Truffle
Ethereum spec
內置智慧合約編譯、連結、部署和二進位管理功能。
用於快速開發的自動化合約測試功能。
腳本化、可擴展的合約部署和遷移框架。
強大的網路管理功能,可以部署到任意數量的公共和私有網路。
使用EthPM和NPM進行包管理,使用ERC190標準。
互動式控制台工具可以直接與合約通信。
可配置的構建管道,支援緊密集成。
強大的外部腳本運行器功能,支援在Truffle環境中執行外部腳本。
>>Truffle 安裝說明
安裝 Node 與 NPM
Truffle 框架依賴Node,需要使用npm安裝。
首先需要安裝node,npm會同時安裝,下載node,按提示安裝。
安裝完後,可以驗證一下node版本:
$ node -v
安裝 Truffle
使用npm安裝Truffle框架:
$ npm install -g truffle
驗證truffle安裝:
$ truffle
--version
Truffle v5.0.35 - a development framework for
Ethereum
...
>>Truffle 創建智能合約專案
可以使用truffle init命令可以創建原始的專案範本,但是對於初學者,使用Truffle
Box可能更簡單,
Truffle Box中包含了很多示例應用程式和專案範本。我們將使用MetaCoin
box,它將創建一個通證,可以在帳戶之間傳輸:
1. 創建專案目錄:
$mkdir MetaCoin
$cd MetaCoin
2. 下載(“unbox”) MetaCoin box 專案範本:
$truffle unbox metacoin
注意: 你可以使用truffle unbox命令下載任何其他 truffle box。
注意: 要創建一個不包含智慧合約的原始Truffle項目,可使用Truffle init。
注意: 你可以使用一個可選的--force參數來初始化目前的目錄中的專案,而不管它的狀態如何(例如,即使它包含其他檔或目錄),
這適用於init和unbox命令。注意,這可能會覆蓋目錄中的檔。
Kevin@QIKEGU g:\qikegu\ethereum\MetaCoin
> tree /f
專案路徑列表
G:.
│ LICENSE
│ truffle-config.js
│
├─contracts
│ .placeholder
│ ConvertLib.sol
│ MetaCoin.sol
│ Migrations.sol
│
├─migrations
│ 1_initial_migration.js
│ 2_deploy_contracts.js
│
└─test
.placeholder
metacoin.js
TestMetaCoin.sol
contracts 目錄 智慧合約原始檔案目錄。
migrations 目錄 遷移檔目錄,遷移檔都是javascript腳本,幫助我們把智慧合約部署到乙太坊。
test 目錄 測試代碼目錄。
truffle-config.js 檔 Truffle專案設定檔,例如,可以在裡面配置網路。
>>Truffle –編譯合約
目標文件
所有的合約原始檔案都位於專案的contracts/目錄中。由於合約是用Solidity語言編寫的,所以合約原始檔案的副檔名都是.sol。
相關的Solidity庫檔的副檔名也是.sol。
如果是原始的Truffle專案範本(通過truffle
init創建),裡面將包含一個Migrations.sol原始檔案,用於部署合約。
如果使用 Truffle
Box,裡面將包含多個檔。
$truffle compile xxx <== 編譯指定合約
$truffle compile all
<== 全部編譯
編譯構件(artifact)
編譯的構件將放在專案根目錄下的build/contract/目錄中, 如果此目錄不存在,則創建該目錄。
這些構件是Truffle內部工作不可或缺的,它們在應用程式的成功部署中扮演著重要的角色。你不應該編輯這些檔,在編譯和部署合約時,它們將被覆蓋。
依賴項
可以使用Solidity語言的import命令聲明合約依賴項。Truffle將按照正確的順序編譯,並確保所有依賴項都被編譯。依賴關係可以通過2種方式指定:
通過檔案名導入依賴項
要從其他檔導入合約,可以將以下代碼添加到Solidity原始檔案中:
import "./AnotherContract.sol";
這將導入另一個原始檔案AnotherContract.sol中的所有合約,導入檔的路徑是基於當前原始檔案的相對路徑。
注意,Solidity語言還允許其他導入語法。有關更多資訊,請參閱Solidity文檔。
從外部包導入合約
Truffle支持通過 EthPM 和 NPM 安裝依賴項。要從依賴項導入合約,可使用以下語法
import "somepackage/SomeContract.sol";
這裡,somepackage表示通過EthPM或NPM安裝的包。SomeContract.sol表示該包提供的Solidity原始檔案。
注意,在搜索NPM安裝的包之前,Truffle將首先搜索EthPM安裝的包,因此在命名衝突的罕見情況下,將使用EthPM安裝的包。
有關如何使用Truffle包管理特性的更多資訊,請參閱Truffle EthPM和NPM文檔。
沒有留言:
張貼留言