区块链开发(六)truffle使用入门和testrpc安装

简介: 区块链开发(六)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的架构。

image.png

.
├── 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

1

这里的安装如果无法下载,请参考上一篇博客中安装truffle中使用淘宝镜像的方法。此步安装遇到很多问题,也尝试了各种方法,比如gcc依赖的安装升级,Python的安装,npm的升级,git的配置,还有node版本是否影响。虽然最终把问题给解决了,但修改的地方太多具体什么原因导致安装过程中出现那么多问题,还有待大家去尝试分析。


在执行以上命令之后,只是把ethereumjs-testrpc安装在nodejs的以下路径:


/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc

1

还行进行软连接的配置:


ln -s /home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/bin/testrpc /usr/local/bin/testrpc

1

执行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

1

(2)安装之后发现依然有异常出现,通过vi命令查看编辑中提示的文件:


/home/zhuzs/app/nodejs/node-v6.9.1/lib/node_modules/ethereumjs-testrpc/node_modules/scrypt/index.js

1

文件中有以下配置:


"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

1

然而在同级目录下却有scrypt程序。

于是将上面配置文件中的:


./build/Release/scrypt

1

改为:


scrypt

1

重新执行testrpc,执行成功,显示结果如下图。


image.png

目录
相关文章
|
3月前
|
机器学习/深度学习 自然语言处理 物联网
深度学习入门:从理论到实践新技术趋势与应用:探讨新兴技术如区块链、物联网、虚拟现实等的发展趋势和应用场景
【8月更文挑战第30天】本文将介绍深度学习的基本原理和实践应用。我们将从深度学习的定义、历史和发展开始,然后深入探讨其工作原理和关键技术。接着,我们将通过一个简单的代码示例来展示如何实现深度学习模型。最后,我们将讨论深度学习在现实世界中的应用和挑战。无论你是初学者还是有经验的开发者,这篇文章都将为你提供深度学习的全面理解。
|
3月前
|
物联网 区块链 vr&ar
未来已来:探索区块链、物联网与虚拟现实技术的融合与应用安卓与iOS开发中的跨平台框架选择
【8月更文挑战第30天】在科技的巨轮下,新技术不断涌现,引领着社会进步。本文将聚焦于当前最前沿的技术——区块链、物联网和虚拟现实,探讨它们各自的发展趋势及其在未来可能的应用场景。我们将从这些技术的基本定义出发,逐步深入到它们的相互作用和集成应用,最后展望它们如何共同塑造一个全新的数字生态系统。
|
11天前
|
存储 人工智能 安全
区块链技术入门与应用前景
区块链技术入门与应用前景
30 0
|
21天前
|
存储 开发框架 安全
揭秘区块链:以太坊智能合约开发的奥秘与挑战,你准备好迎接未来了吗?
【10月更文挑战第25天】本文介绍了区块链技术的基本概念及其核心特点,重点讲解了以太坊智能合约的开发流程和实际开发中的注意事项。通过安装 Truffle、Ganache 和 Remix 等工具,读者可以快速上手编写、编译、部署和测试智能合约。文章还对比了以太坊去中心化应用与传统集中式应用的优势和挑战,帮助读者全面了解以太坊智能合约开发。
29 0
|
6月前
|
供应链 安全 物联网
【专栏】区块链和智能合约的未来发展潜力巨大,期待更多创新应用
【4月更文挑战第27天】本文探讨了区块链技术与智能合约的边界及挑战。区块链,以其不可篡改和安全特性,广泛应用于金融、供应链和物联网等领域。智能合约作为区块链上的自动执行代码,实现无需第三方的可信交易。然而,技术上面临扩展性、性能和安全问题,法律与监管层面也需适应智能合约的自动执行特性及跨境法律协调。尽管挑战重重,区块链和智能合约的未来发展潜力巨大,期待更多创新应用。
157 1
|
2月前
|
存储 供应链 安全
掌握未来:区块链技术的简易入门指南
想象一下,有一种魔法可以安全地储存你的财富和信息,不受任何中心化机构的控制。听起来像是幻想?其实不是!这就是区块链技术的魅力所在。本文将带你走进区块链的世界,了解它如何工作,以及为什么它可能改变我们的未来。无论你是完全的新手,还是对这项技术略知一二,这篇文章都将为你提供有价值的见解。
|
2月前
|
供应链 物联网 区块链
|
3月前
|
供应链 物联网 分布式数据库
探索区块链技术与智能合约开发的边界
随着信息技术的发展,区块链作为一种分布式数据库技术正深刻影响社会。本文探讨区块链基本原理及其在金融、供应链等领域的应用,并聚焦智能合约——一种自动执行且不可篡改的代码,介绍其开发流程与丰富案例。同时,文章分析了技术与法律层面面临的挑战,展望未来发展趋势。
64 4
|
3月前
|
区块链 C# 存储
链动未来:WPF与区块链的创新融合——从智能合约到去中心化应用,全方位解析开发安全可靠DApp的最佳路径
【8月更文挑战第31天】本文以问答形式详细介绍了区块链技术的特点及其在Windows Presentation Foundation(WPF)中的集成方法。通过示例代码展示了如何选择合适的区块链平台、创建智能合约,并在WPF应用中与其交互,实现安全可靠的消息存储和检索功能。希望这能为WPF开发者提供区块链技术应用的参考与灵感。
62 0
|
5月前
|
安全 算法 定位技术
[Solidity][区块链安全入门]Solidity语言关于密码学知识的运用以及存在漏洞
密码学在区块链中扮演关键角色,确保机密性、完整性、身份认证和不可否认性。对称密钥加密用于快速加密,但不支持不可否认性。非对称加密(如RSA)解决了这一问题,每个用户拥有公钥和私钥。散列函数(如SHA-1、SHA-2)用于数字签名,保证信息来源和完整性。同态加密允许在不解密情况下处理加密数据,增强隐私保护。零知识证明则能验证信息正确性而不泄露额外信息,如ZCash使用该技术隐藏交易详情。环签名技术(如在门罗币中)隐藏签名者身份。区块链隐私保护措施包括混币技术,旨在混淆交易路径。网络和应用层面上也存在隐私挑战,需要综合策略来防御。
下一篇
无影云桌面