以太坊系列 - Web3.js

Posted 搬砖魁首

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊系列 - Web3.js相关的知识,希望对你有一定的参考价值。

Web3.js

web3.js是一组用来和本地或远程以太坊节点进行交互的js库,它可以使用HTTP或IPC建立与以太坊节点旳连接。
底层实现上,它通过RPC 调用与本地或远程节点通信。web3.js可以与任何暴露了RPC接口的以太坊节点连接。

Installation

npm install web3

Usage

// In Node.js
const Web3 = require('web3');

let web3 = new Web3('ws://localhost:8546');
console.log(web3);
> {
    eth: ... ,
    shh: ... ,
    utils: ...,
    ...
}

0.20.X 与 1.X 版本的区别

这是 web3.js主要的两类版本

  • truffle migratetruffle test 时会用操作系统安装的web3js版本,可以用truffle verson查看
  • nodejs会使用package.json中指定的web3js版本号

1.x 版本的变动

  • if ('utils' in web3) 可用此判断web3j的版本
  • web3.sha3web3.utils.sha3 取代
    • 要哈希的数据在调用web3.utils.sha3 前需要先判空: if (!input || !input.length) { return; }
  • web3.eth.accounts is deprecated. Use web3.eth.getAccounts() instead
  • web3.fromWeiweb3.utils.fromWei 取代
  • web3.toWeiweb3.utils.toWei 取代
  • watch不再支持.
    • myContract.EventName([params]).watch([callback])myContract.EventName([params],[callback]) 取代
  • The HTTP provider is deprecated, as it won’t work for subscriptions.得改用websocket
    • truffle-config.js中 websockets: true
    • HttpProvider 被 WebsocketProvider 取代, 端口号不用变
    • network_local.json 中的 rpcUrl 配置成 ws://127.0.0.1:9545

老的项目想通过编译

# package.json中配置
"web3": "^0.20.0",

# npm时
npm install --force

往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
比特币系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列

以上是关于以太坊系列 - Web3.js的主要内容,如果未能解决你的问题,请参考以下文章

使用 web3.js 将新合约部署到以太坊网络

以太坊 web3.js 文档翻译及说明

Web3.js的基本使用(与以太坊智能合约的交互)

Web3.js

如何通过web3.js通过余额获得前N个以太坊账户?

以太坊 Web3.js 返回“找不到模块‘web3-requestManager’”