from http://truffleframework.com/docs/getting_started/project

1. 安装node.js 8.11.2 LTS

2. 安装Truffle

$ npm install -g truffle

3. 创建项目

您可以创建项目模板,但对于新手,更好的选择是使用Truffle Boxes—示例应用程序和项目模板。我们将使用MetaCoin box, 该例子创建可在帐户之间转移的token:

$ mkdir MetaCoin
$ cd MetaCoin

下载("unbox") Metacoin box:

$ truffle unbox metacoin

4. 测试,运行solidity测试文件

$ truffle test TestMetacoin.sol

报错,把warning按提示修改后,还有Error:

出错原因是没有切换到到test目录中,切换目录再执行测试命令:

5. 编译智能合约

$ truffle compile

6. 部署智能合约

要部署我们的智能合约,我们需要一个客户端来与区块链进行交互。推荐使用Ganache-cli(Ganache命令行版,原ethereumjs-testrpc), 是一个适用于开发时使用的客户端,是Tuffle套件中的一部分。

6.1 下载安装

$ sudo npm install -g ganache-cli

6.2 修改Tuffle.js文件为以下内容:(port不是7545,在6.3图中看出是8545,估计ganache的默认端口为7545,ganache-cli默认端口为8545)

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

6.3 启动Ganache-cli,创建区块链

$ ganache-cli

创建了与区块链交互时可以使用的10个帐户(及其私钥),默认发送账户为第一个

6.4 将合约迁移到由Ganache-cli创建的区块链

$ truffle migrate

显示了已部署合约的交易ID和地址

7. 与智能合约进行交互

可以用Truffle console来与智能合约进行交互

$ truffle console

通过以下方式使用Truffle控制台与合同进行交互:

  • 查看部署合约的账户metacoin余额:

    MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[]);}).then(function(value){return value.toNumber()});

  • 查看部署合约的账户以太币余额,合约中定义的一个metacoin值2个以太币:
    MetaCoin.deployed().then(function(instance){return instance.getBalanceInEth(web3.eth.accounts[]);}).then(function(value){return value.toNumber()});
  • metacoin转账:
    MetaCoin.deployed().then(function(instance){return instance.sendCoin(web3.eth.accounts[], );});

  • 查看接收方账户metacoin余额:

    MetaCoin.deployed().then(function(instance){return instance.getBalance(web3.eth.accounts[1]);}).then(function(value){return value.toNumber()});

  • 查看发送发账户metacoin余额:

以上就是用Truffle框架部署智能合约的基本过程。

以太坊开发框架Truffle学习笔记的更多相关文章

  1. windows 以太坊开发框架Truffle环境搭建

    https://www.jianshu.com/p/f7a4de0cba9d 一.安装DApp开发环境 1.1 安装Node.js 我们使用官方长期支持的8.10.0LTS版本,下载64位包装包. 下 ...

  2. 以太坊系列之一: 以太坊RLP用法-以太坊源码学习

    RLP (递归长度前缀)提供了一种适用于任意二进制数据数组的编码,RLP已经成为以太坊中对对象进行序列化的主要编码方式.RLP的唯一目标就是解决结构体的编码问题:对原子数据类型(比如,字符串,整数型, ...

  3. 以太坊的crypto模块--以太坊源码学习

    以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp2 ...

  4. 以太坊系列之六: p2p模块--以太坊源码学习

    p2p模块 p2p模块对外暴露了Server关键结构,帮助上层管理复杂的p2p网路,使其集中于Protocol的实现,只关注于数据的传输. Server使用discover模块,在指定的UDP端口管理 ...

  5. 以太坊系列之三: 以太坊的crypto模块--以太坊源码学习

    以太坊的crypto模块 该模块分为两个部分一个是实现sha3,一个是实现secp256k1(这也是比特币中使用的签名算法). 需要说明的是secp256k1有两种实现方式,一种是依赖libsecp2 ...

  6. 以太坊源码学习 – EVM

    学习文档链接:here 一.虚拟机外 主要功能: 执行前将Transaction类型转化成Message,创建虚拟机(EVM)对象,计算一些Gas消耗,以及执行交易完毕后创建收据(Receipt)对象 ...

  7. 以太坊系列之五: p2p的nat模块--以太坊源码学习

    p2p的nat模块 该模块相对比较简单,因为nat的真正实现并不在此模块,主要是使用了第三方的nat-upnp和nat-pmp来实现真正的穿透(端口映射). 对外公布的接口 ```go // An i ...

  8. 如何从零开始学习区块链技术——推荐从以太坊开发DApp开始

    很多人迷惑于区块链和以太坊,不知如何学习,本文简单说了一下学习的一些方法和资源. 一. 以太坊和区块链的关系 从区块链历史上来说,先诞生了比特币,当时并没有区块链这个技术和名词,然后业界从比特币中提取 ...

  9. 区块链入门到实战(27)之以太坊(Ethereum) – 智能合约开发

    智能合约的优点 与传统合同相比,智能合约有一些显著优点: 不需要中间人 费用低 代码就是规则 区块链网络中有多个备份,不用担心丢失 避免人工错误 无需信任,就可履行协议 匿名履行协议 以太坊(Ethe ...

随机推荐

  1. DLL中加载其它DLL使用LoadLibrary加载动态库失败的解决办法

    方式一 采用LoadLibraryEx 若DLL不在调用方的同一目录下,可以用LoadLibrary(L"DLL绝对路径")加载.但若调用的DLL内部又调用另外一个DLL,此时调用 ...

  2. grunt和seajs入门之--提取依赖、合并、压缩js文件

    一.安装grunt: npm install -g grunt-cli //安装 npm install grunt –save-dev //安装Grunt最新版本到项目目录中,并将其添加到devDe ...

  3. P4091 [HEOI2016/TJOI2016]求和(第二类斯特林数+NTT)

    传送门 首先,因为在\(j>i\)的时候有\(S(i,j)=0\),所以原式可以写成\[Ans=\sum_{i=0}^n\sum_{j=0}^nS(i,j)\times 2^j\times j! ...

  4. PJzhang:python基础入门的7个疗程-one

    猫宁!!! 参考链接:易灵微课-21天轻松掌握零基础python入门必修课-售价29元人民币 https://www.liaoxuefeng.com/wiki/1016959663602400 安全从 ...

  5. C 语言实例 - 字符串翻转

    C 语言实例 - 字符串翻转 C 语言实例 C 语言实例 使用递归来翻转字符串. 实例 - 字符串翻转 #include <stdio.h> void reverseSentence(); ...

  6. G - B-number

    #include<stdio.h> #include<string.h> using namespace std; typedef long long ll; ]; ][][] ...

  7. sql server 数据库维护

    select 'kill ',s.spid, sd.name, * from sys.sysprocesses sinner join sys.sysdatabases sd on s.dbid=sd ...

  8. 解决web项目无法部署到eclipse配置的本地tomcat

    一.发现问题 在eclipse中新建Dynamic Web Project,配置好本地的tomcat并写好代码后选择Run on Server,但运行后发现在tomcat的安装目录下的webapps并 ...

  9. java对mongodb数据库的简单操作

    准备工作: 下载好mongodriver.jar包(https://oss.sonatype.org/content/repositories/releases/org/mongodb/mongodb ...

  10. C# 面向对象之3个基本特征

    C#是面向对象的语言,每个面向对象语言都有3个基本特征: *封装----把客观的事物封装成类,并将类的内部实现隐藏,以保证数据的完整性. *继承----通过继承可以复用父类的代码. *多态----允许 ...