当前位置: 首页 > 工具软件 > Web3.js > 使用案例 >

什么是web3.js以及应用

公羊安怡
2023-12-01

想知道关于更多的区块链技术问题,请搜索【链客区块链技术问答社区】

概念

什么是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

这里我们指定了‘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版本的安装及区别,我也是在安装的时候发现的,现在来分享给大家。

 类似资料: