web3.js的使用,从连接metamask到回调事件

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

web3.js 库是一组包含以太坊生态系统功能的模块。

  • web3-eth :用于以太坊区块链和智能合约。
  • web3-shh:用于whisper 协议,用于p2p 和广播通信。
  • web3-bzz:用于swarm协议,去中心化文件存储。
  • web3-utils:包含对 Dapp 开发人员有用的帮助函数。

使用web3.js

1、首先,下载web3.js

分别有一下几种方法:

npm:npm install web3 yarn: yarn add web3 bower: bower install web3 meteor: meteor add ethereum:web3 pure js: link the dist/web3.min.js vanilla: link dist/web3.min.js

2、创建一个 web3 实例并设置一个provider.

<1>、大多数支持以太坊的浏览器(如 MetaMask钱包)都有一个符合EIP-1193的提供程序在 window.ethereum

<2>、检查Web3.givenProvider.如果此属性是null您应该连接到远程/本地节点。 一般使用if语句 const web3 = new Web3(Web3.givenProvider || "ws://localhost:8545"); 如果是node.js,则要引入模板: const Web3 = require('web3');

例如: 1、 if (typeof web3 !== 'undefined') { web3 = new Web3(web3.currentProvider); } else { // 设置你想要的web3.providers web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545")); } 2、

js // 检查是否是新的 MetaMask 或 DApp 浏览器 var web3Provider; if (window.ethereum) { web3Provider = window.ethereum; try { // 请求用户授权 await window.ethereum.enable(); } catch (error) { // 用户不授权时 console.error("User denied account access") } } else if (window.web3) { // 老版 MetaMask Legacy dapp browsers... web3Provider = window.web3.currentProvider; } else { web3Provider = new Web3.providers.HttpProvider('http://localhost:8545'); } web3 = new Web3(web3Provider); 这样就可以开始使用了。。。

Callbacks Promises Events(回调承诺事件)

web3集成到具有不同标准的各种项目中,提供了多种方式来处理异步函数。大多数 web3.js 对象都允许回调作为最后一个参数,以及返回对链function的promises

web3.eth.sendTransaction为了满足这一要求,我们为类似或合约方法的函数返回一个“promiEvent”

PromiEvents 的工作方式与添加了on,onceoff功能的普通 Promise 类似。通过这种方式,开发人员可以监视其他事件

```js

web3.eth.sendTransaction({ from: '0x123...', data: '0x432...' }) .once('sending', function(payload){ ... }) .once('sent', function(payload){ ... }) .once('transactionHash', function(hash){ ... }) .once('receipt', function(receipt){ ... }) .on('confirmation', function(confNumber, receipt, latestBlockHash){ ... }) .on('error', function(error){ ... }) .then(function(receipt){ // will be fired once the receipt is mined });

```

你可能感兴趣的:(javascript,开发语言,ecmascript,前端)