DEX 辅助方法
cancelOffer
通过扩展取消现有的 offer。
请求
必填 - 该函数接受一个类型为 CancelOfferRequest
的 payload 作为输入参数。
- 包含
BaseTransactionRequest
的所有字段。- 详情请参见 BaseTransactionRequest。
offerSequence
: 之前OfferCreate
交易的序列号(或 Ticket 号)。- 如果指定,将取消由该交易创建的任何 offer 对象。
- 如果指定的 offer 不存在,不会被视为错误。
interface CancelOfferRequest extends BaseTransactionRequest {
// 之前 `OfferCreate` 交易的序列号(或 Ticket 号)。如果指定,将取消由该交易创建的任何 offer 对象。
// 如果指定的 offer 不存在,不会被视为错误。
offerSequence: number;
}
响应
响应是一个 Promise,解析为一个包含 type
和 result
属性的对象。
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
的所有字段。- 详情请参见 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,解析为一个包含 type
和 result
属性的对象。
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;
最后更新于: