如何使用 Truffle 部署智能合约

  • 时间:
  • 浏览:58
  • 来源:区块链技术网

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

使用Truffle,您可以获得:

●内置的智能合约编译,链接,部署和二进制管理。

●与Mocha和Chai进行自动化合同测试。

●可配置的构建管道,支持自定义构建过程。

●可编写脚本的部署和迁移框架。

●网络管理,用于部署到许多公共和专用网络。

●用于直接合同通信的交互式控制台。

●在开发过程中立即重建资产。

●外部脚本运行程序,在Truffle环境中执行脚本。

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

$ npm install -g truffle

确保已安装:

$ truffle Truffle v3.2.1 - a development framework for Ethereum Usage: truffle  [options] Commands:  init   Initialize new Ethereum project with example contracts and tests ...

然后创建项目:

$ mkdir storage_smart_contract_example $ cd storage_smart_contract_example $ truffle init

在这里,您可以运行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;  } }

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

var Storage = artifacts.require("./Storage.sol"); module.exports = function(deployer) {    deployer.deploy(Storage); };

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

$ npm install -g ethereumjs-testrpc $ testrpcEthereumJS TestRPC v3.0.3 Available Accounts ================== …

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

$ truffle compile $ truffle migrate

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

$ 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'

现在让我们看看是否可以将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'

目前为止,我们已经成功的部署和测试了Truffle项目合同。

猜你喜欢

区块链骗局曝光骗局,看看你上过当没有?

区块链骗局曝光骗局,看看你上过当没有? 随着这一波的下跌,很多人怕是过不好这个年了。 其实按道理说,从6万上方跌到5万,和从43000跌到35000跌幅差不多,但为什么大家的感受如此截然不同?

2022-01-24

从零开发区块链应用(一)-golang配置文件管理工具viper

理解 HTTP 构建的网络应用只要关注两个端--客户端(client)和服务端(server),两个端的交互来自 client 的 request,以及 server 端的 response。所谓的 http 服务器,主要在于如何接受 client 的 request,并向 client 返回 response

2022-01-20

从零开发区块链应用(二)--mysql安装及数据库表的安装创建

varchar 类型的长度是可变的,在创建表时指定了最大长度。定义时,其最大值可以取 0~~65525 之间的任意值。指定了 varchar 类型的最大值以后,其长度可以在 o 到最大长度之间。

2022-01-20

从零开发区块链应用(三)--mysql初始化及gorm框架使用

Gorm 是 golang 的一个 orm 框架,它提供了对数据库操作的封装,使用起来相当便利。所以如果对 mysql 使用操作不熟悉,建议也可以使用 gorm 框架操作 mysql 数据库。

2022-01-20

从零开发区块链应用(四)--自定义业务错误信息

在实际业务开发中,一个条错误信息需要包含两部分内容:直接展示给用户的 message 和用于开发人员 debug 的 error 。message 可能会直接展示给用户,error 是用于 debug 的错误信息,可能包含敏感/内部信息,不宜对外展示

2022-01-20