想知道更多区块链技术知识,请百度【链客区块链技术问答社区】链客,有问必答!!概念
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 "*" console1这里我们指定了‘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'); //这里可以直接引入web3if (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版本的安装及区别,我也是在安装的时候发现的,现在来分享给大家。