介绍
@0x/web3-wrapper 是一个为 @0x/project 等以太坊的 dApp 提供的 Web3.js 接口封装包,可以用来在 JavaScript 项目中与以太坊区块链进行交互。该包提供了一些便捷的方法,可以使得以太坊智能合约开发变得更加容易。本教程将带您深入了解该包的基本使用方法,并提供一些示例代码以帮助您理解。
安装
在开始使用 @0x/web3-wrapper 之前,需要先通过 NPM 安装它。可以通过以下命令来安装:
npm install @0x/web3-wrapper --save
快速入门
为了开始使用 @0x/web3-wrapper 包,您需要:
- 首先引入该包:
const { Web3Wrapper } = require('@0x/web3-wrapper');
- 创建 Web3Wrapper 实例,接着传入一个 Web3.js 实例和一个可选的 HTTP Provider(例如 infura):
const web3ProviderURL = 'https://mainnet.infura.io/v3/your-infura-project-id'; const provider = new Web3.providers.HttpProvider(web3ProviderURL); const web3Wrapper = new Web3Wrapper(provider);
- 使用该实例与以太坊进行交互。例如,以下代码将获取以太坊最新区块的信息:
const blockNumber = await web3Wrapper.getBlockNumberAsync(); const block = await web3Wrapper.getBlockAsync(blockNumber, true);
即可完成 @0x/web3-wrapper 包的快速入门。
基本方法
@0x/web3-wrapper 包的基本方法如下:
getBlockNumberAsync()
获取当前区块链上的最新区块号(非常量方法)。
const blockNumber = await web3Wrapper.getBlockNumberAsync();
getBlockAsync(blockNumber: number, returnFullTxObjects: boolean = false)
根据区块号获取该区块的信息(非常量方法)。
const block = await web3Wrapper.getBlockAsync(blockNumber, returnFullTxObjects);
参数:
blockNumber: number
:要获取的区块号。returnFullTxObjects: boolean = false
:如果为真,则返回的区块对象包含完整的交易信息。如果为假,则只包含交易哈希。
getTransactionAsync(txHash: string)
根据交易哈希获取交易信息(非常量方法)。
const tx = await web3Wrapper.getTransactionAsync(txHash);
参数:
txHash: string
:要获取的交易哈希。
getEthereumNodeInfoAsync()
获取以太坊节点信息(非常量方法)。
const nodeInfo = await web3Wrapper.getEthereumNodeInfoAsync();
getGasPriceInWeiAsync()
获取以太坊区块链上当前的 Gas 价格(非常量方法)。
const gasPrice = await web3Wrapper.getGasPriceInWeiAsync();
getCurrentBlockTimestampAsync()
获取当前区块链上的时间戳(非常量方法)。
const timestamp = await web3Wrapper.getCurrentBlockTimestampAsync();
高级用法
@0x/web3-wrapper 包还有一些更高级的用法,包括交易签名、发送交易等。
signTransactionAsync(txData: EthereumTxData, opts: Partial<ethereumtxopts>): Promise<string>
对交易进行签名(非常量方法)。
-- -------------------- ---- ------- ----- ------ - - ------ ----- ---------------------------------------------------- ----- -------------- --- ----------------- ------ --- ----------------------------- --------- ------------------------- ---- --- ------------------ -- ----- -------- - ----- ---------------------------------------- - ----- -------------- --------- ------------------------ ---
txData: EthereumTxData
:要签名的交易数据。opts: Partial<EthereumTxOpts>
:交易额外的选项。
sendTransactionAsync(txData: EthereumTxData, opts: Partial<ethereumtxopts>): Promise<string>
发送交易到区块链上(非常量方法)。
-- -------------------- ---- ------- ----- ------ - - ------ ----- ---------------------------------------------------- ----- -------------- --- ----------------- ------ --- ----------------------------- --------- ------------------------- ---- --- ------------------ -- ----- ---- - ----- ---------------------------------------- - ----- -------------- --------- ------------------------ ---
txData: EthereumTxData
:要发送的交易数据。opts: Partial<EthereumTxOpts>
:交易额外的选项。
estimateGasAsync(txData: EthereumTxData): Promise<bignumber>
估算交易所需的 Gas 值(非常量方法)。
-- -------------------- ---- ------- ----- ------ - - ------ ----- ---------------------------------------------------- ----- -------------- --- ----------------- ------ --- ----------------------------- --------- ------------------------- ---- --- ------------------ -- ----- --- - ----- -------------------------------------
txData: EthereumTxData
:要估算的交易数据。
示例代码
下面是一个示例代码,演示如何使用 @0x/web3-wrapper 包与以太坊交互并估算 Gas 值:
-- -------------------- ---- ------- ----- - ----------- - - ---------------------------- ----- --------- - ------------------------ ----- --------------- - ------------------------------------------------------ ----- -------- - --- --------------------------------------------- ----- ----------- - --- ---------------------- ------ ---------- - ----- ------------- - --------------------------------------------- ----- ---------------- - --------------------------------------------- ----- ------------------------ - --- ------------- ----- ------ - - ------ ----- ---------------------------------------------------- ----- -------------- --- ----------------- ------ --- ----------------------------- --------- ------------------------- ---- --- ------------------ -- ----- --- - ----- ------------------------------------- ---------------- --------- --- --- --- ----------- -- -------------------- -----
总结
@0x/web3-wrapper 是一个非常有用的 Node.js 模块,用于在 JavaScript 项目中与以太坊区块链进行交互。包含了许多非常用的方法,例如获取区块信息、获取交易信息、交易签名、发送交易、估算 Gas 等。在本教程中,我们介绍了该包的基本使用方法和高级用法,并提供了一些示例代码。希望这个教程能够帮助您更好地理解 @0x/web3-wrapper 包,以便更好地进行以太坊智能合约开发。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/192184