使用truffle部署以太坊智能合约到区块链

简介: truffle是以太坊(ethereum)开发智能合约(smart contract)过程中最受欢迎的框架,本教程来安装构建一个基本的Truffle项目并部署一个智能合约到区块链。

truffle是以太坊(ethereum)开发智能合约(smart contract)过程中最受欢迎的框架,本教程来安装构建一个基本的Truffle项目并部署一个智能合约到区块链。

开始本文之前希望你已经了解区块链、以太坊、智能合约等基本概念。

安装 Truffle

安装 Truffle 框架非常的简单,只需要一行命令:

npm install -g truffle

当然前提是你已经安装好了NodeJS并且版本要在5.0以上。

Tunffle还要求一个运行的以太坊客户端,以便支持标准的JSON RPC API,有很多的选择比如Ganache、geth。

构建一个Truffle项目

要使用大量的Tunffle命令,我们通过使用一个现成的Tunffle项目来学习。第一步是创建一个Truffle项目。

我们可以创建一个空的项目模板,不过刚开始构建项目,我们可以使用Tunffle Boxs,里面有很多的示例应用程序和项目模板。本文使用MetaCoin box,它创建一个可以在帐户之间传输代币的应用程序示例。

1.为构建Truffle项目创建新目录:

mkdir MetaCoin
cd MetaCoin

2.下载 MetaCoin box,使用truffle unbox <box-name>来下载各种示例,如果要建一个空的不包括智能合约的项目可以使用truffle init

truffle unbox metacoin

上述命令完成后,我们获得一个有以下目录结构的项目:

  • contracts/: Solidity编写的智能合约目录。
  • migrations/:脚本部署目录。
  • test/:用来测试应用程序和智能合约的测试目录。
  • truffle.js/:Truffle 配置文件。

浏览一下这个项目

  1. 打开contracts/MetaCoin.sol,这是一个用Solidity编写的智能合约文件,这个智能合约建了Metacoin代币,我们可以注意到它引用了同目录下的另外一个solidity编写的文件contracts/ConvertLib.sol

  2. 打开contracts/Migrations.sol,这是一个单独的Solidity文件,用来管理和更新部署的智能合同的状态。这个文件每个Tunffle项目都有,通常不用管。

  3. 打开migrations/1_initial_deployment.js文件,这个脚本是为了部署Migrations.sol文件中的Migrations合约。

  4. 打开migrations/2_deploy_contracts.js文件,这个脚本是为了部署MetaCoin合约,会按顺序执行完上一步的脚本后执行。

  5. 打开test/TestMetacoin.sol文件,这是一个Solidity编写的测试文件,确保你的合约正常工作。

  6. 打开test/metacoin.js文件,这个脚本与上面的测试文件类似。

  7. 打开truffle.js文件,用于设置网络信息和其他与项目相关的内容。文件是空白的,没关系,因为我们将使用一个内置有默认值的Truffle命令。

测试项目

1.打开终端,执行命令:

truffle test ./test/TestMetacoin.sol

输出结果是这样的:

TestMetacoin
    √ testInitialBalanceUsingDeployedContract (71ms)
    √ testInitialBalanceWithNewMetaCoin (59ms)

  2 passing (794ms)

2.运行JavaScript测试:

truffle test ./test/metacoin.js

输出结果是这样的:

  Contract: MetaCoin
    √ should put 10000 MetaCoin in the first account
    √ should call a function that depends on a linked library (40ms)
    √ should send coin correctly (129ms)

  3 passing (255ms)

编译智能合约

truffle compile

输出结果是这样的:

Compiling .\contracts\ConvertLib.sol...
Compiling .\contracts\MetaCoin.sol...
Compiling .\contracts\Migrations.sol...

Writing artifacts to .\build\contracts

使用 Ganache 部署项目

当使用Tuffle开发一个多功能的私有链和控制台时也可以使用ganache,它作为一个桌面应用程序来启动私有链。对于以太坊和区块链新手来说ganache是一个更容易理解的工具,因为它会显示更多的信息给我们。

除了运行Ganache之外,需要额外编辑一下Tunffle配置文件,以指向ganache实例。

1.下载和安装 Ganache

2.打开 truffle.js ,用下面的内容替换:

module.exports = {
  networks: {
    development: {
      host: "127.0.0.1",
      port: 7545,
      network_id: "*"
    }
  }
};

这样就可以使用Ganache的默认参数进行连接了。

3.保存一下这个文件。

4.启动 Ganache

truffle-quickstart

5.打开终端,用Ganache部署智能合约到区块链

truffle migrate

输出结果是这样的:

Using network 'development'.

Running migration: 1_initial_migration.js
  Replacing Migrations...
  ... 0x63b393bd50251ec5aa3e159070609ee7c61da55531ff5dea5b869e762263cb90
  Migrations: 0xd6d1ea53b3a7dae2424a0525d6b1754045a0df9f
Saving successful migration to network...
  ... 0xe463b4cb6a3bbba06ab36ac4d7ce04e2a220abd186c8d2bde092c3d5b2217ed6
Saving artifacts...
Running migration: 2_deploy_contracts.js
  Replacing ConvertLib...
  ... 0xa59221bc26a24f1a2ee7838c36abdf3231a2954b96d28dd7def7b98bbb8a7f35
  ConvertLib: 0x33b217190208f7b8d2b14d7a30ec3de7bd722ac6
  Replacing MetaCoin...
  ... 0x5d51f5dc05e5d926323d580559354ad39035f16db268b91b6db5c7baddef5de5
  MetaCoin: 0xcd2c65cc0b498cb7a3835cfb1e283ccd25862086
Saving successful migration to network...
  ... 0xeca6515f3fb47a477df99c3389d3452a48dfe507980bfd29a3c57837d6ef55c5
Saving artifacts...

内容显示的是交易id和你所部署的智能合约地址。

6.在Ganache中,点击Transactions 按钮可以看到被处理的交易。

7.要与合约进行交互,可以使用Truffle控制台。类似于Truffle Develop,唯一不同的是它连接到现有区块链(在这种情况下,由Ganache生成的)

truffle console

你会看到下面的提示:

truffle(development)>

与智能合约交互

使用控制台通过下面的方式进行交互:

  • 查看账户余额
MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[0]);}).then(function(value){return value.toNumber()});
  • 看看有多少以太合适(并注意合约定义1个metacoin价值2以太)
MetaCoin.deployed().then(function(instance){return instance.getBalanceInEth(web3.eth.accounts[0]);}).then(function(value){return value.toNumber()});
  • 从一个账号转账到另一个账号
MetaCoin.deployed().then(function(instance){return instance.sendCoin(web3.eth.accounts[1], 500);});
  • 检查是否收到metacoin
MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[1]);}).then(function(value){return value.toNumber()});
  • 检查给别人转账的账户
MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[0]);}).then(function(value){return value.toNumber()});

ok,Truffle快速入门的教程就到这里,如果还有疑问可以访问我们的在线互动课程:

  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。

原文转载:《使用truffle部署以太坊智能合约到区块链》

相关文章
|
25天前
|
存储 供应链 安全
智能合约与区块链技术的融合:重塑数字信任###
本文深入探讨了智能合约与区块链技术融合的现状、挑战与未来趋势。不同于传统摘要,本文以高度概括的形式,聚焦于两大核心要点:一是智能合约作为区块链上的自执行协议,如何通过代码自动化地促进信任最小化的交易;二是这种融合如何推动数字经济向更加透明、高效、安全的方向发展。全文围绕智能合约的工作原理、区块链提供的底层支持、以及两者结合所面临的技术与非技术挑战展开讨论,旨在为读者提供一个关于这一前沿技术领域的全面而深入的视角。 ###
|
1月前
|
供应链 区块链
探索区块链技术的未来:从数字货币到智能合约的演变
探索区块链技术的未来:从数字货币到智能合约的演变
|
1月前
|
供应链 区块链 数据安全/隐私保护
区块链技术基础:从去中心化到智能合约
区块链技术基础:从去中心化到智能合约
37 0
|
1月前
|
存储 开发框架 安全
揭秘区块链:以太坊智能合约开发的奥秘与挑战,你准备好迎接未来了吗?
【10月更文挑战第25天】本文介绍了区块链技术的基本概念及其核心特点,重点讲解了以太坊智能合约的开发流程和实际开发中的注意事项。通过安装 Truffle、Ganache 和 Remix 等工具,读者可以快速上手编写、编译、部署和测试智能合约。文章还对比了以太坊去中心化应用与传统集中式应用的优势和挑战,帮助读者全面了解以太坊智能合约开发。
38 0
|
3月前
|
供应链 物联网 区块链
|
4月前
|
供应链 物联网 分布式数据库
探索区块链技术与智能合约开发的边界
随着信息技术的发展,区块链作为一种分布式数据库技术正深刻影响社会。本文探讨区块链基本原理及其在金融、供应链等领域的应用,并聚焦智能合约——一种自动执行且不可篡改的代码,介绍其开发流程与丰富案例。同时,文章分析了技术与法律层面面临的挑战,展望未来发展趋势。
71 4
|
4月前
|
区块链 C# 存储
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
68 0
|
6月前
|
Java 区块链
使用Java实现区块链智能合约
使用Java实现区块链智能合约
|
5月前
|
Java API 区块链
如何在Java中实现智能合约与区块链集成
如何在Java中实现智能合约与区块链集成
|
存储 前端开发 安全
DAPP区块链商城系统开发(方案逻辑)丨区块链DAPP商城系统开发(案例设计)/开发项目/源码部署
 区块链(Blockchain)是一种由多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也称为分布式账本技术(Distributed Ledger Technology)。从本质上看,区块链是通过去中心化和去信任化,集体维护、分布式存储的可靠数据库。