以太坊智能合约开发框架Truffle
前言
部署智能合约有多种方式,命令行的浏览器的渠道都有,但往往跟我们程序员的风格不太相符,因为我们习惯了在IDE里写了代码然后打包运行看效果。
虽然现在IDE中已经存在了Solidity插件,可以编写智能合约,但是部署智能合约却要另走他路,没办法进行一个快捷的部署与测试。
如果团队管理的区块节点多、合约多,那得哭晕在厕所。
Truffle是一个世界级的智能合约开发框架,专门为智能合约而生。
安装
安装truffle
sudo cnpm install -g truffle
查看版本
truffle version
搭建项目
创建项目目录
mkdir dapp
cd dapp/
初始化空项目
truffle init
你也可以不创建空项目 而是创建一个带有模板的项目 如下
初始化模板项目
truffle unbox webpack
官方模板列表:https://www.trufflesuite.com/boxes
配置区块节点
truffle-config.js文件中networks代码段 用来配置区块链节点
示例中有这么一段
development: {
host: "127.0.0.1", // Localhost (default: none)
port: , // Standard Ethereum port (default: none)
network_id: "*", // Any network (default: none)
}
你可以根据你的实际情况修改,或者如我一样直接注释掉这段,我直接加了下面这段
line: {
host: "47.97.26.107",
network_id: ,
port: ,
from:'0xDFeDb94Ab496d6b68795dB890AcbbBdc2557860A'
},
不管是development还是line都是随意取的Key,如果你有多个区块链节点,你也可以多配几段即可。
代码段中的from为部署合约的账户,如果不配,则默认为以太坊客户端的第一个账户。
部署合约
编译
truffle compile
部署前
编译后要做的事情是确保部署合约的那个地址里有ETH,因为部署是要花钱的,并且地址必须解锁, 然后才能部署。
部署
truffle migrate --network line
(我自己配置的网络段是line,所以我的--network值是line,如果你只是 truffle migrate 不加任何参数 那么默认会部署development网络)
部署后
必须要设置挖矿地址,进行挖矿,否则交易不会广播。
查看合约
truffle networks
操作合约
进入控制台
truffle console --network line
获取合约实例
let instance = await MetaCoin.deployed()
调用合约方法
这里举例获取地址余额
let balance = await instance.getBalance('0x30f8c37E265FbfC8941c38f861a8d2FC994e4772')
balance.toNumber()
以太坊智能合约开发框架Truffle的更多相关文章
- Go语言打造以太坊智能合约测试框架(level3)
传送门: 柏链项目学院 第三课 智能合约自动化测试 之前课程回顾 我们之前介绍了go语言调用exec处理命令行,介绍了toml配置文件的处理,以及awk处理文本文件获得ABI信息.我们的代码算是完成了 ...
- Go语言打造以太坊智能合约测试框架(level1)
传送门: 柏链项目学院 Go语言打造以太坊智能合约测试框架 前言 这是什么? 这是一个基于go语言编写的,自动化测试以太坊智能合约的开发框架,使用此框架,可以自动化的部署合约,自动测试合约内的功能函数 ...
- 以太坊智能合约Hello World示例程序
简介 以太坊(Ethereum)是一提供个智能合约(smart contract)功能的公共区块链(BlockChain)平台. 本文介绍了一个简单的以太坊智能合约的开发过程. 开发环境 在以太坊上开 ...
- 如何通过以太坊智能合约来进行众筹(ICO)
前面我们有两遍文章写了如何发行代币,今天我们讲一下如何使用代币来公开募资,即编写一个募资合约. 写在前面 本文所讲的代币是使用以太坊智能合约创建,阅读本文前,你应该对以太坊.智能合约有所了解,如果你还 ...
- 深入以太坊智能合约 ABI
开发 DApp 时要调用在区块链上的以太坊智能合约,就需要智能合约的 ABI.本文希望更多了解 ABI,如为什么需要 ABI?如何解读 Ethereum 的智能合约 ABI?以及如何取得合约的 ABI ...
- 以太坊智能合约 Solidity 的常用数据类型介绍
目录 目录 1.数组 1.1.对数组的增删改查操作. 2.String.Bytes.Mapping的使用 3.Enums 和 Structs 的简单应用 4.Ether 单位和 Time 单位 5.A ...
- rpc接口调用以太坊智能合约
rpc接口调用以太坊智能合约 传送门: 柏链项目学院 在以太坊摸爬滚打有些日子了,也遇到了各种各样的问题.这几天主要研究了一下如何通过rpc接口编译.部署和调用合约.也遇到了一些困难和问题,下面将 ...
- 使用web3.js监听以太坊智能合约event
传送门: 柏链项目学院 使用web3.js监听以太坊智能合约event 当我们在前端页面调用合约时发现有些数据不会立即返回,这时还需要再调用更新数据的函数.那么这样的方法使用起来非常不便,监听ev ...
- 以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明
以太坊智能合约开发,Web3.js API 中文文档 ethereum web3.js入门说明 为了让你的Ðapp运行上以太坊,一种选择是使用web3.js library提供的web3.对象.底层实 ...
随机推荐
- Java——Java自动装箱和拆箱
一.什么是自动装箱和拆箱: 我们知道java为8种基本类型分别提供了对应的包装类型,在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integer i=new I ...
- Hadoop入门学习笔记-第二天 (HDFS:NodeName高可用集群配置)
说明:hdfs:nn单点故障,压力过大,内存受限,扩展受阻.hdfs ha :主备切换方式解决单点故障hdfs Federation联邦:解决鸭梨过大.支持水平扩展,每个nn分管一部分目录,所有nn共 ...
- 用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1)
用最基本的遍历来实现判断字符串 a 是否被包含在字符串 b 中,并返回第一次出现的位置(找不到返回 -1) 例子: a='12';b='1234567'; // 返回 0 a='47';b='1234 ...
- Vue + Element-ui实现后台管理系统(4)---封装一个ECharts组件的一点思路
封装一个ECharts组件的一点思路 有关后台管理系统之前写过三遍博客,看这篇之前最好先看下这三篇博客.另外这里只展示关键部分代码,项目代码放在github上: mall-manage-system ...
- Angular 从入坑到挖坑 - Router 路由使用入门指北
一.Overview Angular 入坑记录的笔记第五篇,因为一直在加班的缘故拖了有一个多月,主要是介绍在 Angular 中如何配置路由,完成重定向以及参数传递.至于路由守卫.路由懒加载等&quo ...
- 绝对一个月精通vue
马上从vue-cli4练手,要不然,学几年,你也不懂组件式开发,不懂VUEX,不懂路由, 也许你会说你懂, 麻烦你花一个月学vue-cli4以一个完整购物商城来练手, 一个月后,如果还觉得我错,我 ...
- 单向环形链表解决约瑟夫环(Josephus)问题
一.约瑟夫环问题 Josephu 问题为:设编号为1,2,- n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那 ...
- Power Query:非常规工资条
常规工资条为标题.内容.空行,每三行一循环,横向排版.打印.空行填充颜色,方便切割.其中用到函数嵌套,先把table以row转换为list,然后用List.TransformMany生成Table.C ...
- C++内存管理学习笔记(4)
/****************************************************************/ /* 学习是合作和分享式的! /* Auth ...
- css3盒子flex
一.定义在容器上的属性有6个: 1.flex-direction: 决定主轴的方向,即项目的排列方向. 属性值:row.row-reverse.column.column-reverse: 2.fle ...