博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
web.j3概念介绍
阅读量:5874 次
发布时间:2019-06-19

本文共 2776 字,大约阅读时间需要 9 分钟。

想知道更多区块链技术知识,请百度【链客区块链技术问答社区】链客,有问必答!!概念

1、什么是web3.js呢?

答: 
      Web3.js是以太坊提供的一个JavaScript库,它封装了以太坊的RPC通信API,提供了一系列与区块链交互方法,使JavaScript与以太坊交互变得简单。
      以太坊节点通过JSON-RPC提供外部访问接口,Web3.js是基于JavaScript和Node.js的JSON-RPC封装
      JSON-RPC是一个无状态、轻量级的远程过程调用协议(RPC),与传输协议无关,可使用socket、HTTP或者其它协议,它使用JSON(RFC4627)作为数据格式。
2、我们怎么用web3.js和以太坊的geth进行交互呢?
安装geth的时候有这样一段命令:
geth --testnet --fast --cache=512 --datadir "/data/ethereum/block_data" --rpc --rpcapi db,net,eth,web3,personal --rpcport 8545 --rpcaddr 127.0.0.1 --rpccorsdomain "*" console
1
这里我们指定了‘db,net,eth,web3,personal’等方式来操作geth。因此我们安装好之后,可以通过web3.js来操作以太坊相关函数。
web3.js不同版本的安装方式
1、web3.js的0.2.0版本
(1)安装
//新建一个文件夹,然后初始化
npm init -f //此处的-f会自动给你配好配置文件
npm install web3@^0.20.0
(2)大致用法
var Web3 = require('web3'); //这里可以直接引入web3
if (typeof web3 !== 'undefined') {
web3 = new Web3(web3.currentProvider);
} else {
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); //这一步是连接到以太坊节点
}
var version = web3.version.node;
//console.log(version);
var a = web3.eth.accounts[0]; //用web3获取第一个账户的地址,console.log(a);
2、web3.js的1.0版本
(1)安装

//新建一个文件夹,然后初始化

npm init -f //此处的-f会自动给你配好配置文件
npm install web3 --save
(2)大致用法
var Web3 = require('web3'); //引入web3
//console.log(Web3);
if (typeof web3 !== 'undefined') {
//console.log(1);
web3 = new Web3(web3.currentProvider);
} else {
//console.log(2);
// set the provider you want from Web3.providers
web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"));
}
//此处是获取所有的用户列表,在回调中直接打印出来
web3.eth.getAccounts().then(console.log);
var v = web3.version; //获取web3的版本
console.log(v);
      这里大家可以注意获取账号的部分。一个是直接取数组中的第一个用户地址。而1.0版本则是通过函数获取的,其他的API差距也很大。
两个版本的差异
1、v 0.2x.x
      v0.2x.x对于JSONRPC的封装不够完善,基于v0.2x.x开发我们不得不借助一些第三方的封装,比如: accounts,v0.2x.x官方文档中就推荐使用第三方的accounts封装。
      这里我们不是说第三方的封装就不能用或者比官方的封装差,而这从侧面反应了v0.2x.x的不完善,这并不利于我们的后续开发和维护,会提供我们的开发成本降低我们的开发效率。
2、v1.0-beta
      在我们的钱包开发选型时,综合各种因素,最终选择了Web3.js v1.0。即使在开发基于Web的以太坊应用时,有条件的情况下,我也建议大家选用1.0,我们可以基于express构建Node.js Webserver来给我们的Web应用提供服务。
      我开发的钱包服务共有三大服务,监听服务、交易服务和HTTP服务,其中HTTP服务就是基于express构建的,结合Spring Cloud / Nodejs client注册到交易网关上,提供了非常稳定的服务支撑。
      安全也是一个非常重要的因素,前段时间以太坊爆出一个非常严重的安全问题,某些应用开发者通过unlockAccount方式解锁账户以便于基于该解锁账户进行各类交易,但是交易完成后并没有lockAccount,那么这一波漏洞被有心的黑客发现并利用,不间断的盗取了unlockAccount上的大量以太坊,造成了巨大损失。
      Web3.js对象包含以太坊开发的一些基本单元,其中Eth和Utils为最常用的单元。Eth单元中则封装以太坊交易的核心模块,包括Subscribe、Contract、Accounts、Iban、Abi等。
Subscribe – 订阅接口,可以通过该模块的接口订阅/监听新区块、日志等,注意该模块为WebSocket模式独有;
Contract – 合约接口,与智能合约部署、调用相关,开发Token类应用(或者DAPP)的玩家多多关注;;
Accounts – 账户接口,用户新建账户、账户交易签名等等
3、两个版本在函数调用上也不同。
      1.0版本更多是异步调用,0.2用起来更顺手简单一些。大家可以根据自己的需求来选用不同的版本。不过1.0版本可能是未来的趋势,功能也更加强大。

      以上就是web3.js1.0版本和web3.js0.2.0的区别了。我也是在安装的时候发现两者的差别。可以根据自己的需求来选择哪个会更加的适合你,用法上也完全不同,希望能帮到大家。

以太坊web3.js的1.0版本和0.2.0版本的安装及区别,我也是在安装的时候发现的,现在来分享给大家。

转载地址:http://sxhnx.baihongyu.com/

你可能感兴趣的文章
BZOJ1257:[CQOI2007]余数之和(整除分块)
查看>>
[Android]HttpPost之post请求传递Json数据
查看>>
在View页面,使用@if(){ }输出判断正确的内容
查看>>
js或jquery如何获取父级、子级、兄弟元素(包括祖级、孙级等)
查看>>
软件测试为什么需要学习Linux的知识?Linux学到什么程度?-log5
查看>>
amazon中文文档
查看>>
CodeVs 1017 乘积最大(DP)
查看>>
智能运维基础设施
查看>>
01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)...
查看>>
[BZOJ] 3301: [USACO2011 Feb] Cow Line
查看>>
KNN K近邻算法
查看>>
android post(HTTP设置参数,仿html表单提交)
查看>>
BZOJ1061 [NOI2008]志愿者招募
查看>>
第一次作业:深入源码分析进程模型
查看>>
Pandas 基础(9) - 组合方法 merge
查看>>
初学shell,今天遇到由wget下载到本地的网页源代码的乱码问题,无聊的写了一个转码的脚本...
查看>>
磁盘管理常用命令
查看>>
Algs4-2.3.25切换到插入排序的试验
查看>>
Emgucv中快捷的显示图像直方图
查看>>
黑客和骇客
查看>>