Truffle框架环境搭建
注意:本教程需要Truffle4.0或者是更高的版本
以太坊的智能合约只是代码,和我们的纸质代码不同,此合同需要非常精确的方式理解
如果合同编码不正确,我们的交易可能会失败,会导致gas的损失,更不用说浪费时间和精力
Truffle(从版本4开始)有一个内置的调试器,用于单步执行代码,所以当有错误出现的时候,可以准确的知道它是什么,在哪里发生错误,并且可以及时修复它
在本教程中,为我们将基本合同迁移到测试区块链中。
一个基本的智能合约
1.创建一个新的目录,在本地可以收集合同:
mkdir Truffle_pro
cd Truffle_pro
2.创建一个简单的truffle项目

这将创建诸如contracts/和之类的目录migrations/,并使用我们将合同部署到区块链时使用的文件填充它们。
3.使用编辑器atom打开当前的文件夹:atom ./

打开之后的atom的页面如下:
合同信息:contracts

配置信息:migrations,可以部署到区块链上面

4.在contracts/目录中,创建一个Store.sol使用以下内容调用的文件:
pragma solidity ^0.5.; //创建一个合同,名字是SimpleStoreage
contract SimpleStorage {
uint myVariable; /* function set(uint x) public {
myVariable = x;
} */ function set(uint x) public {
myVariable = x;
} function get() view public returns (uint) {
return myVariable;
}
}
这是我们将要调试的合同。虽然此文件的完整详细信息超出了本教程的范围,但请注意,有一个名为的合同SimpleStorage包含一个数字变量myVariable和两个函数:set()和get()。第一个函数在该变量中存储一个值,第二个函数在该变量中查询该值。
5.在migrations/目录中,创建一个名为的文件store.js,并使用以下内容填充它:
var SimpleStorage = artifacts.require("SimpleStorage");
module.exports = function(deployer) {
deployer.deploy(SimpleStorage);
};
该文件是允许我们将SimpleStorage合同部署到区块链的指令。
6.在终端上面,编译智能合约

7.打开第二个终端并运行truffle develop以启动直接构建到Truffle的开发区块链,我们可以使用它来测试我们的合同:控制台将显示提示
truffle(develop)>。从这里开始,除非另有说明,否则将在此提示符下键入所有命令。 8.随着开发控制台的启动和运行,我们现在可以通过运行迁移将我们的合同部署到区块链:好了,这个就是搭建truffle框架环境的流程了
下面是与基本智能合约的互动 测试合同:Truffle Develop控制台迁移更新的合同,无需退出并且重新启动控制台,由于migrate命令可以进一步的编译和迁移,我们可以一步充值区块链上面的合同
1.在truffle Develop控制台上,更新合同
migrate --reset
可以看到编译器输出和迁移输出 2.位了方便错误搜索,我们将打开第二个带日志记录的控制台,例如,这个将允许我们在事务失败的时候查看事务ID,在另一终端窗口中,运行一下命令
在包含日志的控制台中,将包含以下的信息:develop:testrpc Transaction: 0xe493340792ab92b95ac40e43dca6bc88fba7fd67191989d59ca30f79320e883f +2ms
3.调试问题
有了我们失败和我们交易的ID,我们现在可以调试交易,debug ID
Truffle包含一个内置调试器。启动它的命令debug <Transaction ID>来自Truffle Develop控制台或truffle debug <Transaction ID>终端。我们现在就开始吧
在Truffle Develop控制台中,从日志控制台复制事务ID并将其粘贴为debug命令中的参数:
debug 0xe493340792ab92b95ac40e43dca6bc88fba7fd67191989d59ca30f79320e883f
这是一个交互式控制台。您可以使用列出的命令以不同方式与代码交互:
与代码交互的最常见方式是“下一步”,它一次一步地执行代码。通过按Enter或执行此操作
请注意,这些步骤最终会重复。实际上,Enter反复按压将永远重复这些交易(或者至少在交易耗尽之前)。这告诉你问题出在哪里。
4.键入q以退出调试器。
Truffle框架环境搭建的更多相关文章
- eclipse中SSH三大框架环境搭建<三>
相关链接: eclipse中SSH三大框架环境搭建<一> eclipse中SSH三大框架环境搭建<二> 引言:通过上两篇文章我们已经可以掌握struts2和spring的环境的 ...
- eclipse中SSH三大框架环境搭建<二>
通过上一篇博客我们可以轻松搭建strtus2的环境,接下来由我来继续介绍spring的环境搭建以及spring注入的简单使用 相关链接:eclipse中SSH三大k框架环境搭建<一> ec ...
- eclipse中SSH三大框架环境搭建<一>
这里先简单介绍一下我用的三大框架版本以及下载地址 相关链接:eclipse中SSH三大框架环境搭建<二> eclipse中SSH三大框架环境搭建<三> struts-2.3.3 ...
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建
基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建 前言 最近做回后台开发,重新抓起以前学过的SSM(Spring+Sp ...
- SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)
1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee.com/niceyoo/jeenotes-ssm 2. 概述 在写代码之前我们先了解一下 ...
- 3/16 Django框架 环境搭建
3/16 Django框架 环境搭建 环境搭建 Python解释器 Python代码通过Python解释器去执行. 编程语言 机器语言---汇编语言(助记符)---高级语言 解释型语言:解释器将代码一 ...
- Go语言及Beego框架环境搭建
在开始环境搭建之前,我们先一起来看看: Go有什么优势: 不用虚拟机,它可直接编译成机器码,除了glibc外没有其他外部依赖,部署十分方便,就是扔一个文件就完成了. 天生支持并发,可以充分的利用多核, ...
- Spring框架环境搭建
环境要求:jdk 1.7 及以上.Spring版本:4.3.2 1.建立普通的java 工程 2.新建lib目录,并将一下5个核心jar包拷贝过来,并加入classpath中 下载地址: http: ...
- 初识Django框架——环境搭建前你需要了解的几点
Django是一个开放源代码的Web应用框架,由Python写成. 采用了MVC的框架模式,即模型M,视图V和控制器C. 它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是C ...
随机推荐
- impala系列: 字符串函数
--=======================常用字符串函数--=======================base64decode(string str) : base64 解码.base64 ...
- 几个js 拓扑图库
计划做一个元数据平台, 因为要包含血缘分析功能, 所以要调研一下js 拓扑图库, 候选对象主要参考知乎上的问答, javascript 有哪些适合做网络拓扑图形展示的包? https://www.zh ...
- Carbon - 在线生成精美的代码片段图片(含插件)
Carbon 是一个可以帮助你创建和分享源代码美丽图像的小工具.开始在文本区域输入或拖入代码文件以开始使用.你还在等什么? 让你的设计实力给阅读者留下深刻印象. 在线演示 免费下载 您可能感 ...
- CRLF Injection漏洞的利用与实例分析
CRLF Injection很少遇见,这次被我逮住了.我看zone中(http://zone.wooyun.org/content/13323)还有一些同学对于这个漏洞不甚了解,甚至分不清它与CSRF ...
- 使用PHP连接数据库实现留言板功能
PHP实现留言板功能: 1 首先是登录页面: <!DOCTYPE html><html> <head> <meta charset=&qu ...
- /*+ hint*/用法,该如何解决
/*+ use_hash(b, a)*/用法SELECT /*+ use_hash(b, a)*/ 1, NVL(b.AgentWorkGroup, ' '), ................ ...
- pyqt5-QWidget-窗口状态(最大化最小化等)
setWindowState(state) #设置窗口状态 Qt.WindowNoState 无状态-正常状态 Qt.WindowMinimized 最小化 Qt.Wind ...
- wordpress网站分类目录怎么排序
1.插件实现分类目录排序.安装插件My Category Order 启用插件,在控制面板的文章菜单下就出现如下图所示的目录调整选项,可以用鼠标随意拖曳调整目录排列顺序. 2.修改代码完成wordpr ...
- iTOP-6818开发板支持AXP228电源管理[官方推荐最佳匹配]_支持动态调频
iTOP-6818开发板与4418开发板共兼容同一底板: 核心板:::::: 尺寸 50mm*60mm 高度 核心板连接器组合高度1.5mm PCB层数 6层PCB沉金设计 4418 CPU ARM ...
- luogu P3721 [AH2017/HNOI2017]单旋
传送门 \(Spaly:\)??? 考虑在暴力模拟的基础上优化 如果要插入一个数,那么根据二叉查找树的性质,这个点一定插在他的前驱的右子树或者是后继的左子树,可以利用set维护当前树里面的数,方便查找 ...
控制台将显示提示
好了,这个就是搭建truffle框架环境的流程了