前言
在前端开发中,有许多关于区块链的应用,其中一个重要的组件就是以太坊(Ethereum)网络。为了方便前端开发者使用以太坊网络,web3.js 库应运而生。而 web3-core-helpers 是 web3.js 库中辅助函数的一个部分,本文将详细介绍如何使用这个 npm 包。
准备工作
在学习 web3-core-helpers 之前,需要先安装 web3.js 库。可以在命令行中使用如下语句进行安装:
npm install web3
安装完成之后,还需要在代码中引入 web3.js 库:
const Web3 = require('web3'); const web3 = new Web3('https://mainnet.infura.io/');
这里我们使用 infura 的节点进行交互。
深入了解 web3-core-helpers
web3-core-helpers 是 web3.js 库的辅助函数,主要目的是简化和方便编写 dApp 在以太坊网络上的交互。
下面列举一些 web3-core-helpers 常用的 API:
sha3
字符串 sha3Hash:将字符串转换为 sha3 散列值。
const { sha3 } = require('web3-core-helpers'); console.log(sha3('abcedf')); // 0x3e2c8dc38d834b62c1f7a0caecb9e7e2285927171f14a7a82416f8c4dcf5c3e4
toHex
任意类型 value: 将 value 转为十六进制格式。
const { toHex } = require('web3-core-helpers'); console.log(toHex('hello world')); // 0x68656c6c6f20776f726c64 console.log(toHex(123456)); // 0x1e240 console.log(toHex('0x123456')); // 0x123456 console.log(toHex(true)); // 0x01
toBN
任意类型 value:将 value 转为 BigNumber 对象。BigNumber 对象是 web3.js 库中处理大数运算的工具类。
const { toBN } = require('web3-core-helpers'); const num = toBN(123456); console.log(num.toString()); // 123456
toWei
任意类型 value 和单位:将 value 转为以单位为粒度的数值。常用的单位有 ether、wei、gwei 等。
const { toWei } = require('web3-core-helpers'); console.log(toWei(1, 'ether')); // 1000000000000000000 console.log(toWei(1, 'wei')); // 1 console.log(toWei(1, 'gwei')); // 1000000000
fromWei
任意类型 value 和单位:将以单位为粒度的数值转为更大的单位。
const { fromWei } = require('web3-core-helpers'); console.log(fromWei(1, 'ether')); // 1 console.log(fromWei(1000000000, 'wei')); // 1 console.log(fromWei(10, 'gwei')); // 0.00000001
hexToNumberString
以十六进制表示的字符串 HEX:将 HEX 转为十进制表示的字符串。
const { hexToNumberString } = require('web3-core-helpers'); console.log(hexToNumberString('0x123456')); // 1193046
numberToHex
数字 number:将 number 转为十六进制表示的字符串。
const { numberToHex } = require('web3-core-helpers'); console.log(numberToHex(123456)); // 0x1e240
使用示例
假设我们需要将一个交易发送到以太坊网络上,使用 web3.js 库的 sendTransaction API 可以实现:
web3.eth.sendTransaction({ from: "0x0000000000000000000000000000000000000000", to: "0x0000000000000000000000000000000000000001", value: web3.utils.toWei('0.1', 'ether') })
但是在实际编码过程中,我们需要比上述代码更加灵活可靠的方式来构造交易。这时候,web3-core-helpers 提供了一个非常方便的函数 toTransactionObject:
const { toTransactionObject } = require('web3-core-helpers'); const txObject = toTransactionObject({ from: "0x0000000000000000000000000000000000000000", to: "0x0000000000000000000000000000000000000001", value: web3.utils.toWei('0.1', 'ether') }); web3.eth.sendTransaction(txObject);
使用 toTransactionObject 把交易参数构造成对象,比直接使用 sendTransaction 更加清晰易懂。
总结
web3-core-helpers 是 web3.js 库的辅助函数模块,旨在简化和方便编写 dApp 在以太坊网络上的交互。本文详细介绍了 web3-core-helpers 的几个常用 API,并通过实际案例演示了如何使用 toTransactionObject 函数来构造交易。
相信通过学习本文,读者已经对 web3-core-helpers 有了更加深入的了解,并能在 dApp 开发中更加娴熟地使用这个 npm 包。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/57631