介绍
0x.js 是一个建立在 0x 协议之上的 JavaScript 库,它提供了一个易于使用的接口,用于处理数字资产交易的生命周期,从订单创建到撮合和结算。它还提供了一组与 ERC20 兼容的代币转移方法,以及用于查询 ERC20 代币余额的方法。
在本教程中,我们将涵盖如何在您的前端项目中使用 0x.js 来处理数字资产交易。
安装
要安装 0x.js,请使用 npm:
npm install @0xproject/0x.js --save
使用
初始化
首先,让我们导入 0x.js 并创建一个 Web3 对象。Web3.js 是一个用于与以太坊区块链交互的 JavaScript 库。
-- -------------------- ---- ------- ------ - ------------ ------------- - ---- -------------------------- ------ - ------------------- --------- ---------------- - ---- ------------------------------- ------ - -------------------- --------------- -------------- - ---- -------- ------ - -- ---- ---- ------- ----- -------------- - --- ----------------- ------------------------------ ----------------------- ------------------------------ ----------------------------------------- ----------------------- ----- ----------- - --- ---------------------------- ----- -------- - --------------------- ----- ---------------- - --- -------------------------- - ---------- - ---
上面的代码中,我们创建了一个包含 MetamaskSubprovider 和 RPCSubprovider 的 providerEngine 对象。接着,我们使用 Web3Wrapper 和 getDefaultProvider 创建了一个 web3Wrapper 对象和一个 provider 对象。最后,我们使用这些对象来创建一个 contractWrappers 对象。
创建订单
现在,让我们创建一个 0x 生态系统中的订单。
-- -------------------- ---- ------- ----- ----------------- - ----- --------------------------------------------- ----- ------------ - --------------------------------------------- -- ----- ------- ---- ---- --- ------- ----- ------------ - --------------------------------------------- -- ---- ----- ---- --- ----- -- ---------- ---- --- --- -- ------ -- ------ ----- ---------------- - -------------------------------- ------------- ---- -- --- ------ -- --- --- ----- -- ------- ----- ---------------- - -------------------------------- --------------- ---- -- --- ------ -- ---- --- ----- -- ---------- -- -------- --- --- ----- --------------- - --------------------------- ----- --------------- - --------------------------- ----- ----------------- - ----------------------------- ----- -------------- - -------------------------------------------------------------------- ----------------- ----------------- --------------- ----- -------------- - -------------------------------------------------------------------- ------------------- ----------------- --------------- ----- ---- - --- ---------------------- ----- --------------------- - --- -------------------- - --------- ----- ----- - - ------------- ------------- ----------------- ----------------- --------------- --------------- ----- ---------------- -------------------- --------------------------------------------- ---------------------- --
上述代码中,我们使用合约地址,创建了买卖代币所需的各种信息。其中,makerAddress 是出售代币的卖家地址,takerAddress 是购买代币的买家地址,makerAssetAmount 是卖家要出售的代币数量,takerAssetAmount 是买家要购买的代币数量,exchangeAddress 是 0x 的智能合约地址,zrxTokenAddress 是出售的代币地址,etherTokenAddress 是购买的代币地址。
makerAssetData 和 takerAssetData 是用于将代币转移的数据。我们使用 Web3Wrapper 中的 toBaseUnitAmount 方法将代币数量从 10^18 转换成基本单位。我们还使用新的 BigNumber 实例生成一个唯一的 salt 值,以避免与其他订单冲突。
签署订单
接下来,我们将使用 Web3.js 和 0x.js 中的方法来生成数字签名,以验证订单的合法性。我们还将使用账户的私钥来签署订单。
const orderHashHex = contractWrappers.exchange.getOrderHashHex(order); const makerPrivateKey = '0x0123456789012345678901234567890123456789012345678901234567890123'; // Replace with your private key const makerWallet = new web3Wrapper.Account(makerPrivateKey); const signature = await web3Wrapper.signOrderHashAsync(orderHashHex, makerAddress); const signedOrder = { ...order, signature };
可以使用该代码的签名代码。签名后我们接着使用已签名的订单与 0x 合约进行交换。
发送交易
最后,我们将生成一个交易,以将订单发送到区块链。
const txHash = await contractWrappers.exchange.fillOrderAsync(signedOrder, takerAssetAmount, takerAddress); await web3Wrapper.awaitTransactionSuccessAsync(txHash);
在这个例子中,我们使用 fillOrderAsync 方法来执行交易。该方法需要三个参数:填充的订单,需要支付的代币数量和购买者的地址。
我们使用 awaitTransactionSuccessAsync 方法来等待交易完成,并返回交易哈希。
现在我们已经完成了使用 0x.js 创建数字资产交易的过程。这可以帮助您了解如何在前端中使用 0x.js 来执行类似的操作。
结论
在使用 0x.js 时,请确保谨慎处理数字资产。您也应该仔细阅读文档和相关资源,以确保您可以正确地使用该库。
0x 生态系统中的许多其他工具和库也可以帮助您更轻松地创建和执行数字资产交易。希望本篇文章对您有所帮助,如果有任何疑问,欢迎您随时向社区寻求帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/97990