如何使用Truffle部署智能合约

人工智能
Truffle是一个开发环境(提供用于编译,部署,测试和构建的命令行工具),框架(提供各种程序包以使其易于编写测试,部署代码,构建客户端等)和资产管道(发布软件包并使用其他人发布的软件包来构建基于以太坊的DApp。

[[397532]]

本文转载自微信公众号「区块链研究实验室」,作者链三丰。转载本文请联系区块链研究实验室公众号。

Truffle是一个开发环境(提供用于编译,部署,测试和构建的命令行工具),框架(提供各种程序包以使其易于编写测试,部署代码,构建客户端等)和资产管道(发布软件包并使用其他人发布的软件包来构建基于以太坊的DApp。

使用Truffle,您可以获得:

  • 内置的智能合约编译,链接,部署和二进制管理。
  • 与Mocha和Chai进行自动化合同测试。
  • 可配置的构建管道,支持自定义构建过程。
  • 可编写脚本的部署和迁移框架。
  • 网络管理,用于部署到许多公共和专用网络。
  • 用于直接合同通信的交互式控制台。
  • 在开发过程中立即重建资产。
  • 外部脚本运行程序,在Truffle环境中执行脚本。

要使用大多数Truffle命令,您需要在现有的Truffle项目上运行它们。因此,第一步是创建一个Truffle项目,让我们从安装Truffle开始:

$ npm install -g truffle 
  • 1.

确保已安装:

$ truffle  
Truffle v3.2.1 - a development framework for Ethereum  
Usage: truffle  [options]  
Commands:   
init   Initialize new Ethereum project with example contracts and tests  
... 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

然后创建项目:

$ mkdir storage_smart_contract_example  
$ cd storage_smart_contract_example  
$ truffle init 
  • 1.
  • 2.
  • 3.

在这里,您可以运行Truffle编译,Truffle迁移和Truffle测试来编译您的合同,将这些合同部署到网络中,并运行其关联的单元测试。

Truffle与本地开发区块链服务器捆绑在一起,当您调用上述命令时,该服务器会自动启动。如果您想配置更高级的开发环境,我们建议您通过在命令行上运行npm install -g ganache-cli来单独安装区块链服务器。

ganache-cli:Truffle的区块链服务器的命令行版本。

ganache:服务器的GUI,显示您的交易历史记录和链状态。

Truffle项目的结构

您创建的Truffle文件夹如下所示:

1.合同

  • ConvertLib.sol
  • MetaCoin.sol
  • Migrations.so

2.迁移

  • 1_initial_migration.js
  • 2_deploy_contracts.js

3.测试

  • TestMetacoin.sol
  • metacoin.js

4. truffle-config.js

5. truffle.js

现在进一步编写代码,您将看到Truffle为我们创建了文件结构。转到合同文件夹并创建Storage.sol文件,然后在其中写入智能合同的代码。

pragma solidity ^0.4.8;  
contract Storage {   
   uint256 storedData;  
function set(uint256 data) {   
   storedData = data;   
}  
function get() constant returns (uint256) {   
   return storedData;   
}  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.

现在转到migrations / 2_deploy_contracts.js并将其修改为如下所示:

var Storage = artifacts.require("./Storage.sol");  
module.exports = function(deployer) {   
  deployer.deploy(Storage);  
}; 
  • 1.
  • 2.
  • 3.
  • 4.

现在我们已经有了基本的设置,我们需要将其部署到区块链上,让我们使用testrpc可以很好地完成测试开发目的,在一个单独的选项卡上,键入以下命令:

$ npm install -g ethereumjs-testrpc  
$ testrpc 
EthereumJS TestRPC v3.0.3  
Available Accounts  
==================  
… 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

然后返回运行Truffle项目的选项卡:

$ truffle compile  
$ truffle migrate 
  • 1.
  • 2.

这样我们就完成了合同的部署,让我们检查一下我们是否能够调用合同功能。

$ truffle console  
truffle(development)>  
Storage.deployed().then(instance => instance.get.call()).then(result => storeData = result)  
{ [String: '0'] s: 1, e: 0, c: [ 0 ] }  
truffle(development)> storeData.toString()  
'0' 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

现在让我们看看是否可以将storeData设置为值99。

truffle(development)>  
Storage.deployed().then(instance => instance.set.sendTransaction(99)).then(result => newStorageData = result) '0xc5e2f9c9da4cf9f563c8e59073d5b6ca9458f112a6dcfc14aaea7c16a99422d4' 
truffle(development)> Storage.deployed().then(instance => instance.get.call()).then(result => storeData = result)  
{ [String: '99'] s: 1, e: 1, c: [ 99 ] }  
truffle(development)> storeData.toString() '99' 
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

目前为止,我们已经成功的部署和测试了Truffle项目合同,如有任何疑问请在留言区进行留言。

 

责任编辑:武晓燕 来源: 区块链研究实验室
相关推荐

2023-02-24 08:00:00

2021-04-20 12:53:34

Polkadot部署合约

2021-03-25 16:34:10

区块链加密资产技术

2021-03-11 19:13:04

NFT合约智能

2021-03-18 23:04:41

Solidity开发智能

2022-04-20 10:11:45

PythonBrownie编程语言

2022-07-14 09:00:00

区块链数据智能合约

2020-12-17 08:00:00

区块链数据以太坊

2023-07-04 20:15:00

2022-11-03 08:35:35

2023-08-23 09:00:00

区块链以太坊

2023-05-05 08:00:00

2021-11-02 10:25:19

区块链智能合约

2020-04-22 13:23:46

智能合约区块链比特币

2023-02-20 08:00:00

2022-07-04 18:58:43

智能合约区块链

2023-04-21 15:29:30

区块链去中心化自动化合约

2023-05-12 09:14:34

2021-04-23 10:59:07

区块链货币私钥

2020-04-29 12:50:29

Solidity智能合约区块链
点赞
收藏

51CTO技术栈公众号