简介
@0x/contracts-exchange-libs
是一个开源的 JavaScript 库,它提供了访问以太坊网络上 0x 协议的中间件。该库可以与0x协议的 DEX 合约集成,为交易提供更好的 User Experience (UX)。
这篇文章将详细介绍如何使用@0x/contracts-exchange-libs
。
安装
使用 npm 安装 @0x/contracts-exchange-libs
:
npm install @0x/contracts-exchange-libs
步骤
接下来,让我们来实现一个交易操作:
- 初始化合约实例
- 获取交易信号(orderHash)
- 使用
ExchangeWrapper
来向交易所提交订单
初始化合约实例
在使用@0x/contracts-exchange-libs
前,需要初始化一个合约实例。以下代码示例展示如何初始化一个合约实例:
-- -------------------- ---- ------- ------ - ---------------- - ---- ------------------------- ------ - ---------- - ---- -------------- ------ - ------------- - ---- ------------ -- -- -------- -- ----- -------- - -------------------------------------------------------------- -- ----- ----------------------- ----- ---------- - --- ---------------------------------------- -- --- -------- ---- ----- ---------------- - --- --------------------------------- ----------- - ----------- ----- ----------------------- ---- ---
其中,web3.currentProvider
表示使用当前页面的 web3 提供程序,exchangeAddress
代表使用该地址的 ExchangeContract 合约。
获取交易信号
获取订单编码 order
,订单编码包括交易的数量、价格、地址等。
import { orderUtils, signatureUtils } from '@0x/order-utils'; async function createSignedOrderAsync(order) { const orderHash = orderUtils.getOrderHash(order); const signature = await signatureUtils.ecSignHashAsync(web3.currentProvider, orderHash, makerAddress); const signedOrder = { ...order, signature }; return signedOrder; }
通过提供提供商、订单哈希以及创建订单的私钥,创建签名。典型的订单包括像下面展示的一些属性:
-- -------------------- ---- ------- - ------------- --- ------------- --- -------------- --- -------------------- --- ---------------------- --- ----- --- ----------------- --- ----------------- --- --------------- --- --------------- --- --------- --- --------- --- --
提交订单
使用 ExchangeWrapper 向交易所提交订单:
-- -------------------- ---- ------- ------ - --------------- - ---- ------------------------ ----- --------------- - --- ---------------- --------- - ---------------- -------- -- - --------- --------- -- -- ----- -------- ----------------------------- - ----- ---------------- - ----- ----------------------------------------------- ----------------------------- -------------- ------ ----------------- -
其中exchangeOrderAsync
将填充交易所所需的未完成订单。成功完成此操作后,交易现在已被提交,并且应该在以太坊网络上进行。在收到响应后,您可以根据需要处理返回值。
到此,您已经了解了如何使用 @0x/contracts-exchange-libs
进行交易操作。
示例代码
-- -------------------- ---- ------- ------ - ---------------- - ---- ------------------------- ------ - ---------- - ---- -------------- ------ - ------------- - ---- ------------ ------ - ----------- -------------- - ---- ------------------ ------ - --------------- - ---- ------------------------ ----- -------- ------ - ----- ------------ - ---------------------------- ----- --------------- - --------------------------------------------- ----- ------------ - --------------------------------------------- ----- ---------- - --------------------------------------------------------------------- ----- ------------ - --------------------------------------------- ----- ------- - -- ----- -------- - ------------ ----- -------- - -------- ----- -------- - ------------------------------------------- ------------------------------------------- ----- ---------- - --- ---------------------------------------- ----- ---------------- - --- --------------------------------- ----------- - ----------- ----- ----------------------- ----- --- ----- ----- - - ------------- ------------- --------------------------------------------- -------------- --------------------------------------------- -------------------- --------------------------------------------- ---------------------- ------------- ----- -------------------------------------------------------------------------------- ----------------- ---------------------- ----------------- ---------------------- --------------- ---------------------------------------------------------------------------- --------------- ----------------------------------------------------------------------------- --------- ---- --------- ---- -- ----- --------- - ------------------------------- ----- --------- - ----- ---------------------------------------- ---------- ------------ ----- ----------- - - --------- --------- -- ----- --------------- - --- ---------------- --------- - ---------------- -------- -- - --------- --------- -- -- ----- -------- - ----- ----------------------------------- ------------ ----------------------------- ------------- -- ---------------------- -
总结
@0x/contracts-exchange-libs
提供了一个兼容0x协议的 DEX 合约实现,使得用户可以更快速、更便捷地进行交易操作。通过使用这个库,我们可以很容易地部署自己的 DEX,并提供一个高效的交易体验。感谢您阅读本文,希望能帮助您更好地理解和使用 @0x/contracts-exchange-libs
。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5f507e348250f93ef8900362