介绍
@0x/fill-scenarios 是一个将多个 0x 交易合并成一个交易以提高交易的效率的 npm 库。它基于 0x.js,提供了一种简单的方式来构建包含多个 0x 交易的交易。
安装
npm install @0x/fill-scenarios
使用步骤
第一步:初始化
首先,我们需要创建一个 0x.js 的 provider。在这个例子中,我们使用了 Infura 这个以太坊的 provider:
import { Web3ProviderEngine } from '0x.js'; const providerEngine = new Web3ProviderEngine(); providerEngine.addProvider(new RPCSubprovider({ rpcUrl: 'https://mainnet.infura.io/v3/<infura-project-id>' })); providerEngine.start();
第二步:创建交易对象
- 创建 Order
-- -------------------- ---- ------- ------ - ----- - ---- ------------------ ----- ----- - - ------------- --------------------------------------------- ------------- --------------------------------------------- ---------------------- ------------- ---------------- --------------------------------------------- -------------------- --------------------------------------------- --------------- ---------------------------------------------------------------------------- ----------------- ---------------------- --------- ---- ----- ------------- -------------- --------------------------------------------- --------------- ---------------------------------------------------------------------------- ----------------- --------------------- --------- ---- -- ----- -------- - --- -------------
- 创建 0x.js 的 FillScenarios 对象
-- -------------------- ---- ------- ------ - ----------------- - ---- ------------------------- ------ - ------------------------------------ ---------------------- --------------------- ----------- ------------------- - ---- -------- ------ - ------------- - ---- --------------------- ----- ----------------- - --------------------------------------- ----- ------------- - --- ----------------------------- ------------------- ----- ---------------- -------------------- - - --------- -------- -------------------- --------------------------- ------------------ ------ ------------------ ------ ----------- ------ --
- 用 FillScenarios 对象构建要发送的交易
-- -------------------- ---- ------- ----- ------------ - ---------------------------------------------- ----------- --------------------- --- ------------- -------------------- ---------------------------------------------- ---------------- ------------------ --
第三步:发送交易
// 用你的钱包连接的 provider 来调用这个交易 await providerEngine.sendAsync({ method: 'eth_sendRawTransaction', params: [fillScenario.txHash], jsonrpc: '2.0', id: 42, });
这将会发送一个交易到以太坊网络中。这个交易包含了多个 0x 的交易(订单)。
建议的使用方法
- 订单数量
尽管这个库可以用来一次性发送多个订单,建议每次使用不超过 10 个订单。这是因为在发送大量的订单时,交易的 gas 费用数量会增加,并且可能导致交易失败。
- 订单类型
除非您知道自己在做什么,建议您只发送 marketSellOrdersFillOrKillAsync 和 marketBuyOrdersFillOrKillAsync。这两种类型的订单是当前最流行的 0x 订单类型。
示例代码
这段代码演示了如何创建一个可以在以太坊网络中执行的交易。
-- -------------------- ---- ------- ------ - ------------------ - ---- -------- ------ - -------------- - ---- ------------------- ------ - ----- - ---- ------------------ ------ - ----------------- - ---- ------------------------- ------ - ------------------------------------ ---------------------- --------------------- ----------- ------------------- - ---- -------- ------ - ------------- - ---- --------------------- -- --- ----- -------------- - --- --------------------- ------------------------------ ---------------- ------- -------------------------------------------------- ---- ----------------------- -- -- -- ----- ----- ----- - - ------------- --------------------------------------------- ------------- --------------------------------------------- ---------------------- ------------- ---------------- --------------------------------------------- -------------------- --------------------------------------------- --------------- ---------------------------------------------------------------------------- ----------------- ---------------------- --------- ---- ----- ------------- -------------- --------------------------------------------- --------------- ---------------------------------------------------------------------------- ----------------- --------------------- --------- ---- -- ----- -------- - --- ------------- -- -- -- ------------- -- ----- ----------------- - --------------------------------------- ----- ------------- - --- ----------------------------- ------------------- ----- ---------------- -------------------- - - --------- -------- -------------------- --------------------------- ------------------ ------ ------------------ ------ ----------- ------ -- -- -- -------- ----- ------------ - ---------------------------------------------- ----------- --------------------- --- ------------- -------------------- ---------------------------------------------- ---------------- ------------------ -- -- ---- ----- -------------------------- ------- ------------------------- ------- ---------------------- -------- ------ --- --- ---
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/125302