想知道关于更多的区块链技术问题,请搜索【链客区块链技术问答社区】node
概念web
什么是web3.js呢?express
答:
Web3.js是以太坊提供的一个JavaScript库,它封装了以太坊的RPC通讯API,提供了一系列与区块链交互方法,使JavaScript与以太坊交互变得简单。
以太坊节点经过JSON-RPC提供外部访问接口,Web3.js是基于JavaScript和Node.js的JSON-RPC封装
JSON-RPC是一个无状态、轻量级的远程过程调用协议(RPC),与传输协议无关,可以使用socket、HTTP或者其它协议,它使用JSON(RFC4627)做为数据格式。
二、咱们怎么用web3.js和以太坊的geth进行交互呢?npm
安装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 "*" consoleapi
这里咱们指定了‘db,net,eth,web3,personal’等方式来操做geth。所以咱们安装好以后,能够经过web3.js来操做以太坊相关函数。数组
web3.js不一样版本的安装方式安全
一、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);
二、web3.js的1.0版本
(1)安装cors
//新建一个文件夹,而后初始化
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差距也很大。
两个版本的差别dom
一、v 0.2x.x
v0.2x.x对于JSONRPC的封装不够完善,基于v0.2x.x开发咱们不得不借助一些第三方的封装,好比: accounts,v0.2x.x官方文档中就推荐使用第三方的accounts封装。
这里咱们不是说第三方的封装就不能用或者比官方的封装差,而这从侧面反应了v0.2x.x的不完善,这并不利于咱们的后续开发和维护,会提供咱们的开发成本下降咱们的开发效率。
二、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 – 帐户接口,用户新建帐户、帐户交易签名等等
三、两个版本在函数调用上也不一样。
1.0版本更可能是异步调用,0.2用起来更顺手简单一些。你们能够根据本身的需求来选用不一样的版本。不过1.0版本多是将来的趋势,功能也更增强大。异步
以上就是web3.js1.0版本和web3.js0.2.0的区别了。我也是在安装的时候发现二者的差异。能够根据本身的需求来选择哪一个会更加的适合你,用法上也彻底不一样,但愿能帮到你们。
以太坊web3.js的1.0版本和0.2.0版本的安装及区别,我也是在安装的时候发现的,如今来分享给你们。