区块链开发(六)truffle使用入门和testrpc安装
在上篇博文中我们已经成功安装了truffle及所需相关环境,此篇就简单介绍一些truffle的使用及目录结构等。
简介truffle和testrpc
truffle是本地的用来编译、部署智能合约的工具。testrpc不同于geth,geth是真正的以太坊环境,testrpc是在本地使用内存模拟的一个以太坊环境,对于开发调试来说,更为方便快捷,当合约在testrpc中测试通过后,再部署到geth中去。所以可以说truffle和testrpc就是两大杀器。
项目初始化
创建一个目录,并在目录下面新建项目:
$ mkdir truffleProject
$ cd truffleProject/
$ truffle init
执行以上命令之后,truffle会默认生成一个MetaCoin的demo。现在我们就来了解一下truffle的架构。
文件目录
每个目录的作用如下:
.
├── app
│ ├── images 前端界面用到的图片
│ ├── index.html 前端界面用到的页面
│ ├── javascripts 前端界面用到的javascript
│ │ └── app.js
│ └── stylesheets 前端界面用到的css文件
│ └── app.css
├── contracts 智能合约文件
│ ├── ConvertLib.sol
│ ├── MetaCoin.sol
│ └── Migrations.sol
├── migrations 部署用到的脚本
│ ├── 1_initial_migration.js
│ └── 2_deploy_contracts.js
├── test 编写的测试
│ └── metacoin.js
└── truffle.js
TestRPC安装
安装Ethereum客户端来支持JSON RPC API调用开发环境,推荐使用EthereumJS。
安装命令:
sudo npm install -g ethereumjs-testrpc
这里的安装如果无法下载,请参考上一篇博客中安装truffle中使用淘宝镜像的方法。此步安装遇到很多问题,也尝试了各种方法,比如gcc依赖的安装升级,Python的安装,npm的升级,git的配置,还有node版本是否影响。虽然最终把问题给解决了,但修改的地方太多具体什么原因导致安装过程中出现那么多问题,还有待大家去尝试分析。
在执行以上命令之后,只是把ethereumjs-testrpc安装在nodejs的以下路径:
/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc
还行进行软连接的配置:
ln -s /home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/bin/testrpc /usr/local/bin/testrpc
执行testrpc进行验证:
$ testrpc
Secp256k1 bindings are not compiled. Pure JS implementation will be used.
/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/node_modules/solc/soljson.js:1
(function (exports, require, module, __filename, __dirname) { var Module;if(!Module)Module=(typeof Module!=="undefined"?Module:null)||{};var moduleOverrides={};for(var key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var ENVIRONMENT_IS_WEB=typeof window==="object";var ENVIRONMENT_IS_WORKER=typeof importScripts==="function";var ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof require==="function"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){if(!Module["print"])Module["print"]=function print(x){process["stdout"].write(x+"\n")};if(!Module["printErr"])Module["printErr"]=function printErr(x){process["stderr"].write(x+"\n")};var nodeFS=require("fs");var nodePath=require("path");Module["read"]=function read(filename,binary){filename=nodePath["normalize"](filename);v
Error: Cannot find module './build/Release/scrypt'
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
at Object.<anonymous> (/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/node_modules/scrypt/index.js:3:20)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
从命令结果来看,testrpc已经安装成功,但是在执行的过程中有配置的问题,导致出现异常。
为了解决上面的异常尝试了多种方案,也安装了很多依赖,下面总结一下解决的基本方法。
(1)通过异常并检查依赖,发现缺少scrypt依赖。于是,先安装:
sudo apt install scrypt
(2)安装之后发现依然有异常出现,通过vi命令查看编辑中提示的文件:
/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/node_modules/scrypt/index.js
文件中有以下配置:
"use strict";
var scryptNative = require("./build/Release/scrypt")
, Crypto = require("crypto")
, Os = require("os");
然后根据配置,在testrpc的安装目录下并没有“./build/Releses/scrypt”目录:
/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/node_modules
然而在同级目录下却有scrypt程序。
于是将上面配置文件中的:
./build/Release/scrypt
改为:
scrypt
重新执行testrpc,执行成功,显示结果如下图。
区块链开发(六)truffle使用入门和testrpc安装的更多相关文章
- 区块链开发(七)truffle使用入门汇总
截止上篇博客,以太坊区块链开发的环境和框架基本上搭建完毕.这一篇博客重点梳理一下基本的流程和操作演示. 前奏 基于前面的安装配置,现在重新梳理一遍,以前博客讲到的就在这里一笔带过. (1)创建一个工作 ...
- HyperLedger Fabric 1.4 区块链开发平台(4.1)
目前区块链开发平台分“公有链平台”和“联盟链系统”两类,“公有链平台”主要以以太坊为主的平台,可以在该类平台上进行代币的发行和根据各种模块搭建应用:“联盟链系统”主要以超级账本为主的开源系统,该类开源 ...
- 微软Azure区块链开发工具包三大功能详解
2018年11月15日,微软宣布了Azure区块链开发工具包,它基于微软的无服务器技术构建,并且利用微软和第三方SaaS,完美集成了区块链.该工具包扩展了微软的区块链开发模板和Azure Blockc ...
- FISCO BCOS WorkShop | 区块链开发特训营,开课啦!
FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...
- 转:区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
区块链开发(一)搭建基于以太坊go-ethereum的私有链环境 wo541075754 · 2016-11-07 13:00:03 · 3730 次点击 · 预计阅读时间 3 分钟 · 约1小时前 ...
- golang区块链开发的视频教程推荐
目前网上关于golang区块链开发的资源很少,以太坊智能合约相关的课程倒是很多,可能是由于前者的难度比后者难度大,课程开发需要投入更多精力.搜了一圈之后没结果,我就直接去之前没覆盖的视频网站找资源,包 ...
- 区块链开发学习第七章:第一个Dapp-猜拳游戏
第一个简单的Dapp-猜拳游戏.本智能合约的功能很简单,就是用户与电脑猜拳,用户选择出手后,电脑随机一个选项,然后调用智能合约方法把两个选项值传过去,在智能合约上进行比较,并通过区块链合约事件广播结果 ...
- 区块链开发学习第三章:私有链上部署helloBlockchain简单合约
前面讲了部署私有链以及新增账户,现在进行到了部署合约了,此操作真是踩了无数无数无数的坑,到写文章为止确实是已经部署好了,但是还有些坑是还没有解决的! 一.Solidity编译器 开始的时候用的http ...
- 区块链开发(五)git、truffle安装
truffle是以太坊最受欢迎的一个开发框架,本篇博客介绍truffle的下载安装过程. git安装 在安装truffle之前需要核实一下本机是否安装git程序.后面的程序安装需要依赖git. 输入以 ...
随机推荐
- 关于百度Editor富文本编辑器 自定义上传位置
因为要在网站上编辑富文本数据,所以直接采用百度的富文本编辑器,但是这个编辑器有个缺点,默认情况下,文件只能上传到网站的根目录,不能自定义路径. 而且json配置文件只能和controller.jsp在 ...
- C#编译和运行原理
关于编译与内存的关系,以及执行时内存的划分 1.所谓在编译期间分配空间指的是静态分配空间(相对于用new动态申请空间),如全局变量或静态变量(包括一些复杂类型的 常量),它们所需要的空间大小可以明确计 ...
- hash function比较
http://blog.csdn.net/kingstar158/article/details/8028635 由于工作需要,针对千万级别的数据,使用stl::map着实存在着效率问题,最后使用bo ...
- 关于socket的疑问
一直感觉一端发送数据,另一端接受数据很不可思议的事情,如果不能即时地读走会导致什么后果呢? 其实socket读出来的数据,你自己看着办,里面的数据是什么格式你自己去解析,用户可以基于TCP去实现你自己 ...
- text-overflow使用文字超多div的宽度或超过在table中<td>
关键字:text-overflow:ellipsis 语法:text-overflow:clip | ellipsis 取值 clip:默认值.不显示省略标记(...),而是简单的裁切. ellips ...
- 【题解】WC2008游览计划
写的第一道斯坦纳树的题目.斯坦纳树在信息学中的应用一般为:在\(n\)个点之间给定\(k\)条边并相应的边权,求在保证给定\(m\)个点联通的条件下的最小边权和.解决此类问题的方法即为SPFA + 状 ...
- BZOJ3573 [Hnoi2014]米特运输 【贪心】
题目链接 BZOJ3573 题解 题目又臭又长系列 题意:修改尽量少的点权,使得: ①同个节点的所有儿子点权相同 ②任意非叶节点权值等于其儿子权值之和 容易发现一旦任意一个点权值确定,整棵树权值就确定 ...
- HDU 2639 01背包求第k大
Bone Collector II Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- [SDOI2016] 排列计数 (组合数学)
[SDOI2016]排列计数 题目描述 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i,则称 i 是稳定的.序列恰 ...
- Codeforces Round #524 (Div. 2) D. Olya and magical square
D. Olya and magical square 题目链接:https://codeforces.com/contest/1080/problem/D 题意: 给出一个边长为2n的正方形,每次可以 ...