web3通过testrpc访问以太坊数据入门
一、安装truffle+testrpc开发和测试环境。truffle是开发环境,testrpc是测试环境。
工作在64位Linux,版本16.04上进行。
以下命令如果权限不够则使用sudo运行。
1、安装环境时需要Git,如果没有可以用如下命令安装
add-apt-repository ppa:git-core/ppa
apt-get update
apt-get install git
2、需要在nodejs环境,通过如下命令安装
apt-get install nodejs
apt-get install npm
其中npm是nodejs的包管理器,之后truffle和testrpc都是nodejs的包,需要使用npm进行安装。
如果nodejs版本过低,可以使用n进行升级
npm install -g n
n stable
n是nodejs的一个版本管理器,n stable命令让nodejs升级到最新的稳定版
3、安装truffle
npm install -g truffle
如果安装成功,执行
truffle version
可以看到版本号。
4、安装web3的testrpc
npm install -g ethereumjs-testrpc
安装后,执行testrpc
如果看到上述内容,说明安装成功。testrpc提供了一个最简单的区块链环境,里面有10个默认用户(给出了他们的地址和私钥)
如果没有出现,则说明还需要安装其他依赖,请根据提示信息安装相关nodejs包,使用命令一般为:
npm install -g [依赖包名]
二、环境测试
truffle工程创建
参考:https://github.com/trufflesuite/truffle-init-webpack
1、开启testrpc测试环境,看到testrpc提供的10个默认用户。
2、另起一个终端(testrpc那个不要关),建立一个truffle工程文件夹并进入。
mkdir project
cd project
3、下载truffle范例工程
truffle init webpack
注意:truffle init也能下载一个范例工程,但是当前版本这个范例有bug无法运行
4、编译并运行:
truffle compile
truffle migrate
npm run dev
此时范例工程已经搭建完毕搭载在:8080。用浏览器访问可以看到范例里的metacoin应用
备注:
修改工程文件夹里的文件后dev会自动重新编译并挂载,非常智能
想要清除区块链里的全部数据,需要关闭testrpc
三、开发
参考web3的API:https://github.com/ethereum/wiki/wiki/JavaScript-API
常用函数有:
数据上链:
web3.eth.sendTransaction(object)
发送内容为一个object,里面需要填写发送相关信息。返回值为一个hex的Transaction地址。
Object内必填内容有:
from : String //发送方地址
to : String //接收方地址
数据下链:
web3.eth.getTransaction(hash)
输入内容为Transaction的hash地址,返回值为Transaction的Object。
Transaction内的Data为Hex形式,建议传输数据前先转一下。如果直接字符串格式的Data直接发送到Transaction中,自动转的Hex会带0x前缀
web3.ToHex(String or Number)
相应的,接收后用
web3.toAscii(hexString)
解出原始地址。
一个简单的例子:
//jsonIO.js 发送和查找Transaction
function jsonIO(){
var O_jsonIO=new Object;
O_jsonIO.write_json=function write_json(fromAddr,toAddr,jsonData){
var jsonstr=JSON.stringify(jsonData);
var jsonHex=web3.fromAscii(jsonstr);
var trans={"from":fromAddr,
"to":toAddr,
"data":jsonHex
};
return web3.eth.sendTransaction(trans);
}
O_jsonIO.read_json_from_address=function read_json_from_address(fromAddr,startBlock,endBlock){
var jsonArr=new Array();
if (startBlock==null) {
console.log("default start from block 0");
startBlock=0;
}
if (endBlock==null) {
console.log("default end to block "+web3.eth.blockNumber);
endBlock=web3.eth.blockNumber;
}
if (startBlock<0 || startBlock>endBlock || endBlock>web3.eth.blockNumber) {
console.error("no such blocks")
return null;
}
for (var i=0;i<=web3.eth.blockNumber;i++)
{
var Block=web3.eth.getBlock(i);
if (Block.transactions!=null && Block!=null)
{
Block.transactions.forEach(function (e)
{
var getT=web3.eth.getTransaction(e);
var Tdata=web3.toAscii(getT.input);
if (Tdata.charAt(0)=="{" && (getT.from==fromAddr || getT.to==fromAddr))
{
//console.log("find");
//console.log(Tdata);
var Obj=JSON.parse(Tdata);
jsonArr.push(Obj);
}
});
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/server/fwq/8513.shtml
相关文章
热门TAG
win10 ecshop 主机 阿里云 解决 配置 C# C++ 解析 SQL语句 命令 Go语言 方法 CSS3 HTML5 CSS win7 MSSQL 服务器配置 IIS7.5 IIS7 IIS6 IIS CentOS 7 Linux oracle数据库 oracle phpcms discuz discuz教程最新文章
-
使用Cockpit方便地管理容器
时间:2020-12-29
-
linux系统上如何快速安装
时间:2020-12-29
-
如何在Linux VPS上定制自己
时间:2020-12-29
-
开启nginx和php-fpm的status状
时间:2020-12-29
-
采用DNSPOD解析API快速验证
时间:2020-12-29
-
如何在CentOS 7上安装Elast
时间:2020-12-29
-
.Net Core在Linux服务器上部署
时间:2020-12-29
-
如何用树莓派控制GOIO引脚
时间:2020-12-25
热门文章
-
利用可道云KodExplorer软件部署私有云盘和
时间:2020-12-22
-
Linux VPS/服务器一键检测硬件配置、节点下
时间:2020-12-22
-
采用DNSPOD解析API快速验证域名快速安装免
时间:2020-12-29
-
Linux系统下用iperf诊断网络端口是否有被过
时间:2020-12-22
-
在CentOS系统上安装GitLab并自定义域名访问
时间:2020-12-23
-
web3通过testrpc访问以太坊数据入门
时间:2020-12-24
-
容器环境中的代理模型
时间:2020-12-22
-
在linux下启动tomcat,并实时查看tomcat的控
时间:2020-12-23
-
使用Linux定时脚本更新服务器的git代码
时间:2020-12-24
-
.Net Core在Linux服务器上部署.NET框架教程
时间:2020-12-29
