Skip to Content
👋 嘿,欢迎使用uCNY电子现金! 了解详情
开发文档rootwallet-api.js去中心化交易所

DEX 辅助方法

cancelOffer

通过扩展取消现有的 offer。

请求

必填 - 该函数接受一个类型为 CancelOfferRequest 的 payload 作为输入参数。

  • 包含 BaseTransactionRequest 的所有字段。
  • offerSequence: 之前 OfferCreate 交易的序列号(或 Ticket 号)。
    • 如果指定,将取消由该交易创建的任何 offer 对象。
    • 如果指定的 offer 不存在,不会被视为错误。
interface CancelOfferRequest extends BaseTransactionRequest { // 之前 `OfferCreate` 交易的序列号(或 Ticket 号)。如果指定,将取消由该交易创建的任何 offer 对象。 // 如果指定的 offer 不存在,不会被视为错误。 offerSequence: number; }

响应

响应是一个 Promise,解析为一个包含 typeresult 属性的对象。

  • type: "response" | "reject"
  • result:
    • hash: 交易的哈希值。
type: "response"; result: { hash: string; }

type: "reject"; result: undefined;

错误处理

如果发生错误,将抛出错误。

示例

import { cancelOffer } from "@xhbmygod/rootwallet-api"; const payload = { offerSequence: 0, // 替换为实际值! fee: "199", memos: [ { memo: { memoType: "4465736372697074696f6e", memoData: "54657374206d656d6f" } } ] }; cancelOffer(payload).then((response) => { console.log("交易哈希: ", response.result?.hash); });

以下是一个 React 应用的示例:

import { isInstalled, cancelOffer } from "@xhbmygod/rootwallet-api"; function App() { const handleCancelOffer = () => { isInstalled().then((response) => { if (response.result.isInstalled) { const payload = { offerSequence: 0, // 替换为实际值! fee: "199", memos: [ { memo: { memoType: "4465736372697074696f6e", memoData: "54657374206d656d6f" } } ] }; cancelOffer(payload).then((response) => { console.log("交易哈希: ", response.result?.hash); }); } }); }; return ( <div className="App"> <button onClick={handleCancelOffer}>取消 Offer</button> </div> ); } export default App;

createOffer

通过扩展创建一个新的 offer。

请求

必填 - 该函数接受一个类型为 CreateOfferRequest 的 payload 作为输入参数。

  • 包含 BaseTransactionRequest 的所有字段。
  • flags: 为交易设置的标志。
  • expiration: Offer 不再有效的时间,以 Ripple Epoch 以来的秒数表示。
  • offerSequence: 首先删除的 Offer,指定方式与 OfferCancel 相同。
  • takerGets: 出售的货币数量和类型,格式如下:
    • 表示要交付的 CNY 数量的 字符串,以 drops 为单位。
    • 一个 对象,其中 ‘value’ 是表示要交付的代币数量的字符串。
    • 更多关于金额格式的技术细节请参见 这里
  • takerPays: 购买的货币数量和类型,格式如下:
    • 表示要交付的 CNY 数量的 字符串,以 drops 为单位。
    • 一个 对象,其中 ‘value’ 是表示要交付的代币数量的字符串。
    • 更多关于金额格式的技术细节请参见 这里
interface CreateOfferRequest extends BaseTransactionRequest { flags?: CreateOfferFlags; // Offer 不再有效的时间,以 Ripple Epoch 以来的秒数表示。 expiration?: number; // 首先删除的 Offer,指定方式与 `OfferCancel` 相同。 offerSequence?: number; // 出售的货币数量和类型。 takerGets: Amount; // 购买的货币数量和类型。 takerPays: Amount; }
type OfferCreateFlagsInterface = { tfPassive?: boolean; tfImmediateOrCancel?: boolean; tfFillOrKill?: boolean; tfSell?: boolean; } | number;
type Amount = { currency: string; issuer: string; value: string; } | string;

更多关于金额格式的细节请参见 这里

响应

响应是一个 Promise,解析为一个包含 typeresult 属性的对象。

  • type: "response" | "reject"
  • result:
    • hash: 交易的哈希值。
type: "response"; result: { hash: string; }

type: "reject"; result: undefined;

错误处理

如果发生错误,将抛出错误。

示例

import { createOffer } from "@xhbmygod/rootwallet-api"; const payload = { takerGets: "10000000", // 10 CNY takerPays: { currency: "ETH", issuer: "rnm76Qgz4G9G4gZBJVuXVvkbt7gVD7szey", value: "0.1" }, flags: { tfPassive: true }, fee: "199", memos: [ { memo: { memoType: "4465736372697074696f6e", memoData: "54657374206d656d6f" } } ] }; createOffer(payload).then((response) => { console.log("交易哈希: ", response.result?.hash); });

以下是一个 React 应用的示例:

import { isInstalled, createOffer } from "@xhbmygod/rootwallet-api"; function App() { const handleCreateOffer = () => { isInstalled().then((response) => { if (response.result.isInstalled) { const payload = { takerGets: "10000000", // 10 CNY takerPays: { currency: "ETH", issuer: "rnm76Qgz4G9G4gZBJVuXVvkbt7gVD7szey", value: "0.1" }, flags: { tfPassive: true }, fee: "199", memos: [ { memo: { memoType: "4465736372697074696f6e", memoData: "54657374206d656d6f" } } ] }; createOffer(payload).then((response) => { console.log("交易哈希: ", response.result?.hash); }); } }); }; return ( <div className="App"> <button onClick={handleCreateOffer}>创建 Offer</button> </div> ); } export default App;
最后更新于: