`
阅读更多

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部署以太坊智能合约到区块链》

0
0
分享到:
评论

相关推荐

    以太坊智能合约开发环境及总结.pdf

    以太坊智能合约开发环境的搭建是开发基于区块链应用的基础步骤。本文主要针对Linux系统下,使用Truffle 3.0框架与TestRPC进行以太坊智能合约开发的环境配置进行了详细总结。以下是对这些知识点的详细解释: 首先,...

    使用truffle和infura部署以太坊合约中文pdf电子书教程

    本文主要讲述了使用truffle和infura部署以太坊智能合约的方法,这是一份由汇智网创作的电子书教程。内容包括了Infura的介绍、如何在Truffle项目中配置Infura和HDWalletProvider以及一些注意事项。下面,我将详细解读...

    区块链毕业设计 基于truffle+Solidity以太坊智能合约的宠物商店Dapp源码+项目资料齐全+部署文档.zip

    区块链毕业设计 基于truffle+Solidity以太坊智能合约的宠物商店Dapp源码+项目资料齐全+部署文档.zip区块链毕业设计 基于truffle+Solidity以太坊智能合约的宠物商店Dapp源码+项目资料齐全+部署文档.zip 【资源说明】 ...

    以太坊区块链积分系统truffle项目源代码

    2. **编译和部署合约**:使用Truffle的编译和部署功能将`Score.sol`部署到以太坊网络。 3. **合约交互**:调用合约的函数,例如`mint`来发放积分,`transfer`进行积分转移,`balanceOf`查询余额。 4. **事件监听**:...

    以太坊智能合约编程3.docx

    以太坊智能合约编程主要涉及的是区块链技术中的一个重要概念,即智能合约,它允许开发者在以太坊网络上编写去中心化应用(DApps)的逻辑。以太坊是一个开源的区块链平台,其核心功能之一就是支持智能合约的执行。在...

    以太坊智能合约编程2.docx

    以太坊智能合约编程主要涉及的是在以太坊区块链上创建和执行自动执行的协议,这些协议能够根据预设的规则和条件执行操作。本文主要介绍了以太坊智能合约的开发环境、工具、框架和工作流程,对于初学者来说是非常宝贵...

    开发和部署以太坊DApp(宠物商店)1

    Truffle是一个基于 Node.js 的开发框架,用于开发、测试和部署以太坊智能合约。Truffle提供了一个统一的开发环境,帮助开发者快速构建和部署DApp。在宠物商店DApp中,我们将使用Truffle框架来开发和部署智能合约。 ...

    以太坊truffle框架开发包

    以太坊Truffle框架是构建基于以太坊区块链应用(DApps)的首选工具,它为开发者提供了一整套便捷的开发、测试和部署智能合约的环境。Truffle以其强大的功能和易用性,深受以太坊开发者的喜爱。在这个"以太坊Truffle...

    Vue+NodeJs+Ganache 本地部署、调用 web3 智能合约区块链.zip

    在本项目中,我们探索了如何使用Vue.js前端框架、Node.js后端服务以及Ganache作为以太坊区块链模拟器来本地部署并调用基于web3的智能合约。这个项目涉及的技术栈广泛,涵盖了前端开发、后端开发以及区块链应用开发的...

    开发和部署以太坊DApp——投票系统1

    开发和部署以太坊DApp——投票系统1 以太坊(Ethereum)是一种基于区块链技术的去中心化平台,允许开发者创建去中心化应用程序(DApp)。在这个示例中,我们将开发和部署一个基于以太坊的投票系统DApp。 以太坊...

    以太坊区块链的虚拟令牌实现

    2. **部署合约**:使用Web3.js或Truffle等JavaScript库,与以太坊节点建立连接,编译并部署合约到以太坊网络。这一步通常需要以太坊的私钥,以便签署交易。 3. **合约交互**:在前端应用中,使用JavaScript调用智能...

    Truffle最受欢迎的区块链开发框架

    **标题解析:**Truffle是最受欢迎的区块链开发框架,它专为以太坊生态系统设计,致力于简化和优化智能合约及去中心化应用(DApps)的开发过程。 **描述详解:**Truffle作为以太坊的开发环境,提供了一整套工具集,...

    Truffle的官方文档中文版

    Truffle,作为一款强大的开发框架,是构建基于以太坊区块链应用的重要工具,尤其对于使用Solidity编程语言的开发者来说,它提供了一整套便捷的开发、测试、部署和服务于以太坊网络的解决方案。这个文档中文版旨在...

    以太坊java版本demo

    以太坊Java版本的Demo是基于以太坊的开源项目,它允许开发者使用Java语言来构建和交互以太坊上的智能合约以及进行区块链应用开发。本文将深入探讨以太坊Java版Demo的核心知识点,包括以太坊的基础概念、Java SDK的...

    区块链智能合约开发介绍.pptx

    5. 部署:将智能合约部署到区块链网络中。 6. 测试:对智能合约进行测试,确保其正确执行。 智能合约的开发工具: 智能合约的开发工具包括: 1. Solidity:Solidity是最流行的智能合约编程语言之一,用于开发以太...

    基于以太坊demo

    在完成智能合约编写后,需要将其编译并部署到以太坊网络上。Truffle 提供了 `truffle deploy` 命令来完成此操作。部署后,用户可以通过Truffle Console或者前端应用与合约进行交互,比如调用合约中的函数,执行转账...

    以太坊发布属于自己的数字货币

    创建代币后,需要部署到以太坊的主网上,可以使用 Truffle 等工具来部署智能合约。部署后,需要在交易所或钱包中添加代币信息,才能进行交易。 以太坊的智能合约可以轻松编写出属于自己的代币,代币可以代表任何...

    angular-truffle-starter-dapp:Angular CLI + Truffle Starter Dapp; 在以太坊区块链上编写,编译和部署智能合约

    为以太坊编写,编译和部署智能合约。 精选演示版创建一个具有初始供应量的硬币并将金额发送到您的以太坊钱包地址注意:此演示是在该项目使用Angular2时进行的。 此后,它已升级到Angular4,并且工作方式完全相同:)...

    智能合约投票系统Dapp(truffle + react + solidity)编程作业

    智能合约投票系统Dapp是一种基于区块链技术的分布式应用程序(Dapp),它利用了以太坊网络上的智能合约功能,结合前端开发框架React和开发工具Truffle来构建。在这个项目中,我们将深入探讨智能合约、Truffle开发...

    基于以太坊的drizzle 的demo

    Drizzle与Truffle集成良好,Truffle是一个以太坊开发框架,用于编译、部署和测试智能合约。在项目中,你将找到一个名为`contracts`的目录,其中包含智能合约的Solidity代码。使用Truffle命令行工具可以编译和部署...

Global site tag (gtag.js) - Google Analytics