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 配置文件。
浏览一下这个项目
-
打开
contracts/MetaCoin.sol
,这是一个用Solidity编写的智能合约文件,这个智能合约建了Metacoin代币,我们可以注意到它引用了同目录下的另外一个solidity编写的文件contracts/ConvertLib.sol
。 -
打开
contracts/Migrations.sol
,这是一个单独的Solidity文件,用来管理和更新部署的智能合同的状态。这个文件每个Tunffle项目都有,通常不用管。 -
打开
migrations/1_initial_deployment.js
文件,这个脚本是为了部署Migrations.sol
文件中的Migrations
合约。 -
打开
migrations/2_deploy_contracts.js
文件,这个脚本是为了部署MetaCoin
合约,会按顺序执行完上一步的脚本后执行。 -
打开
test/TestMetacoin.sol
文件,这是一个Solidity编写的测试文件,确保你的合约正常工作。 -
打开
test/metacoin.js
文件,这个脚本与上面的测试文件类似。 -
打开
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
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快速入门的教程就到这里,如果还有疑问可以访问我们的在线互动课程:
原文转载:《使用truffle部署以太坊智能合约到区块链》
相关推荐
这⾥在吸收了部分⽹络资源,及多次⾃我尝试后,较为详细总结了linux系统下利⽤ truffle3.0+testrpc完成以太坊智能合约+DApp开发⽤到的环境搭建过程,并归纳了开发过程中遇到的⼀些问题及解决⽅案,合约编程语 ⾔为...
区块链毕业设计 基于truffle+Solidity以太坊智能合约的宠物商店Dapp源码+项目资料齐全+部署文档.zip区块链毕业设计 基于truffle+Solidity以太坊智能合约的宠物商店Dapp源码+项目资料齐全+部署文档.zip 【资源说明】 ...
为以太坊编写,编译和部署智能合约。 精选演示版创建一个具有初始供应量的硬币并将金额发送到您的以太坊钱包地址注意:此演示是在该项目使用Angular2时进行的。 此后,它已升级到Angular4,并且工作方式完全相同:)...
migrate是一个js文件,用来把合约部署到Ethereum网络上,在当前是部署到TestRPC的模拟环境上,也可以使用命令 $ truffle deploy 来部署合约,其效果一致 migrate文件存放在migrations目录中, migrate文件的命名规则...
本文介绍了以太坊区块链的基本知识、开发和部署以太坊所需要的软件环境、使用高级语言编写以太坊合约、使用NODEJS编译、部署、使用Truffle框架开发分布式应用等内容。
具有区块链和以太坊智能合约的混合房地产应用程序的概念证明。 入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 有关如何在实时系统上部署项目的注释,请参阅部署。 先决条件 您...
网络和应用部署 原文连接 即使最小的dapp也会有两个区块,一个放在开发机器上,一个发布出去...因为在合约的编译文件运行时会自发现网络,所以你只需要部署一次合约,运行的Ethereum客户端会决定使用哪个合约的编译文
以太坊作为区块链2.0的产品,最独特是智能合约的设计,是超脱于技术的思维体系。 通过 Truffle 把这些不同的理念和思路进行整合,转换为开发人员能明白的一种编程方法。 目录 Truffle安装 初始化项目 启动测试节点 ...
完整的以太坊区块链开发教程(草案) 内容和链接 01 HelloWorld-> 02测试-> 03测试驱动开发 04用松露部署到rinkeby(testnet) 05松露部署到实时网络 06 ICO基本 07 ICO合约开发 08使用openzeppelin框架进行众筹 ...
Angular CLI + Truffle Starter Dapp;在以太坊区块链上编写,编译和部署智能合约
基于以太坊区块链上的永存的留言DAPP 使用solidity开发 基于truffle框架 使用 truffle unbox react 脚手架 部署在以太坊测试网络 Ropoetn Test Network 使用 浏览安装 matemask 钱包的扩展程序,创建钱包 切换至 ...
智能合约Solidity编程教程 以太坊编程之菜鸟教程 译注:⾸发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队。... 以太坊客户端,智能合约语⾔ 编写和部署智能合约并不要求你运⾏⼀个以太坊节点。下⾯有列
2. 支持多种以太坊应用程序的开发,包括智能合约和应用前端。 3. 提供了一个友好的用户界面,让开发者可以轻松地查看交易状态、账户余额等信息。 4. 支持多种以太坊开发工具,如Truffle、Web3.js等。
可编辑区块链 启动连锁店 ganache-cli -l 9007199254740991 --db ./RDBlockchain -s 1234 遵守合同并进行部署 truffle complie cd app python3 RDChain.py
Truffle:一个框架,它提供了一套工具,用于使用 Solidity 编程语言开发以太坊智能联系人 Metamask:让浏览器连接到区块链的 chrome 扩展 准备环境 1-安装依赖 npm install 2-将元掩码链接到甘纳许添加自定义 RPC ...
这意味着开发人员可以通过编译现有的以太坊合约并将其部署到NEAR区块链中来保留现有投资。 这可以通过两个NEAR库实现: :用于抽象JSON RPC调用JavaScript库。 :包含实用程序和以太坊路由(例如eth_call , eth_...
Deployer的使用 原文地址 此对象在migrations目录中的migrate中使用 Deployer包含了很多使用的方法,...3.如果不想重新部署已经部署的合约,可以在第二个参数使用 key=>value的方式 例如告诉deployer不要重新部署:
用法BlockFood代币销售智能合约将在预售日期之前部署在以太坊区块链上。 其地址将通过网站传达。开发人员智能合约已使用Truffle框架在测试驱动的开发中编写。先决条件Node.js 8以上松露4.0.1+npm i -g truffle启动...
区块链测试网络以太坊区块链测试网络可以尝试,实验和部署各种类型的智能合约。 查看Medium上的文章执行本自述包含区块链的所有基本术语,以及用于执行此项目的参考。 项目步骤的执行位于该项目的report.pdf文件中。...
以太坊智能合约管理松露项目去中心化的Web应用程序以与智能合约进行交互用Golang编写的用于与智能合约交互的后端先决条件安装了Node JS正在安装下载依赖项npm install编制智能合约truffle compile部署智能合约使用...