welcom ! Handel home

2022年9月15日 星期四

Truffle 工具說明

 


Truffle套件是一個開發乙太坊(Ethereum)區塊鏈DApp(分散式應用程式)的開發環境,是開發DApp的一站式解決方案,

功能包括:

     編譯合約、

    部署合約、

    開發DApp前端、

    測試DApp等。

 

Truffle套件主要有3個模組:

Truffle 太坊(Ethereum)區塊鏈DApp開發環境。

Ganache Ganache可以創建本地區塊鏈網路,用於測試智合約,你可以在本地區塊鏈網路上部署合約、開發應用程式、運行測試和執行其他任務,不需要付任何費用。

Drizzle 前端庫的集合,使編寫dapp使用者介面更容易。

 

 

Truffle Ethereum spec

內置智慧合約編譯、連結、部署和二進位管理功能。

用於快速開發的自動化合約測試功能。

腳本化、可擴展的合約部署和遷移框架。

強大的網路管理功能,可以部署到任意數量的公共和私有網路。

使用EthPMNPM進行包管理,使用ERC190標準。

互動式控制台工具可以直接與合約通信。

可配置的構建管道,支援緊密集成。

強大的外部腳本運行器功能,支援在Truffle環境中執行外部腳本。

 

 

 

>>Truffle 安裝說明

安裝 Node NPM

Truffle 框架依賴Node,需要使用npm安裝。

首先需要安裝nodenpm會同時安裝,下載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參數來初始化目前的目錄中的專案,而不管它的狀態如何(例如,即使它包含其他檔或目錄)

          這適用於initunbox命令。注意,這可能會覆蓋目錄中的檔。

 

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表示通過EthPMNPM安裝的包。SomeContract.sol表示該包提供的Solidity原始檔案。

注意,在搜索NPM安裝的包之前,Truffle將首先搜索EthPM安裝的包,因此在命名衝突的罕見情況下,將使用EthPM安裝的包。

有關如何使用Truffle包管理特性的更多資訊,請參閱Truffle EthPMNPM文檔。


 

 

沒有留言: