Skip to Content
👋 嘿,欢迎使用uCNY电子现金! 了解详情
开发文档rootwallet-api.js原始交易方法

原始交易方法

signTransaction

通过扩展对交易请求进行签名。

请求

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

  • transaction: 需要签名的交易请求。
interface SignTransactionRequest { transaction: Transaction; }

Transaction 类型 定义在此

注意:

  • 如果交易字段 Account 未设置,将使用用户钱包的账户。
响应

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

  • type: "response" | "reject"
  • result:
    • signature: 签名后的交易。
type: "response"; result: { signature: string; }

type: "reject"; result: undefined;
错误处理

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

示例
import { signTransaction } from "@xhbmygod/rootwallet-api"; const transaction = { TransactionType: "Payment", Destination: "rhikRdkFw28csKw9z7fVoBjWncz1HSoQij", Amount: "100000", Memos: [ { Memo: { MemoData: "54657374206D656D6F", MemoType: "4465736372697074696F6E" } } ] }; signTransaction({ transaction }).then((response) => { console.log(response.result?.signature); }).catch((error) => { console.error("Transaction submission failed", error); });

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

import { signTransaction, isInstalled } from "@xhbmygod/rootwallet-api"; function App() { const handleSignTransaction = () => { isInstalled().then((response) => { if (response.result.isInstalled) { const transaction = { TransactionType: "Payment", Destination: "rhikRdkFw28csKw9z7fVoBjWncz1HSoQij", Amount: "100000", Memos: [ { Memo: { MemoData: "54657374206D656D6F", MemoType: "4465736372697074696F6E" } } ] }; signTransaction({ transaction }).then((response) => { console.log("Transaction hash: ", response.result?.signature); }).catch((error) => { console.error("Transaction submission failed", error); }); } }); }; return ( <div className="App"> <button onClick={handleSignTransaction}>Sign Transaction</button> </div> ); } export default App;

submitBulkTransactions

通过扩展批量提交一组交易请求。数组中的每个交易将自动填充、签名并提交。

请求

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

  • transactions: 要提交的交易请求数组(最多 50 个)。
  • waitForHashes:
    • 如果设置为 false,函数将不会等待 XRPL 返回交易哈希。
    • 如果设置为 false,将返回每个交易的 accepted 值,而不是 hash
    • 默认值:true
  • onError:
    • 如果设置为 continue,即使其中一个交易失败,剩余交易仍将继续提交。
    • 默认值:abort
interface SubmitBulkTransactionsRequest { transactions: TransactionWithID[]; waitForHashes?: boolean; // 默认值:true onError?: 'abort' | 'continue'; // 默认值:abort }
export type TransactionWithID = Transaction & { // 可选 ID,用于在提交后识别响应中的交易。 // 此 ID 仅作为响应中的指示符,不用于排序交易。 ID?: string; };

Transaction 类型 定义在此

注意:

  • 如果任何交易中的 Account 字段未设置,将使用用户钱包的账户。
响应

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

  • type: "response" | "reject"
  • result:
    • transactions: 数组中每个交易的状态。
      • id (可选): 交易的自定义 ID,如果在请求中设置了该 ID。
      • accepted (可选): 交易是否被 XRPL 网络接受(仅当 waitForHashes = false 时)。
      • hash (可选): 交易的哈希(仅当 waitForHashes = true 时)。
      • error (可选): 如果交易被拒绝,则为错误消息。
type: "response"; result: { transactions: TransactionBulkResponse[]; }
export type TransactionBulkResponse = { id?: string; accepted?: boolean; hash?: string; error?: string; };

type: "reject"; result: undefined;
错误处理

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

示例
import { submitBulkTransactions } from "@xhbmygod/rootwallet-api"; const transactions = [ { ID: '001', // 可选 ID,用于在提交后识别响应中的交易。 TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '002', TransactionType: 'TrustSet', LimitAmount: { currency: 'ETH', issuer: 'rnm76Qgz4G9G4gZBJVuXVvkbt7gVD7szey', value: '10000000' }, Fee: '199' }, { ID: '003', TransactionType: 'NFTokenMint', URI: '516D6654463665756E47726A57597642666A72614B486D765572354444566D525351424373513252564D71764A72', NFTokenTaxon: 0 }, { ID: '004', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '005', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '006', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '007', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '008', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '009', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '010', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', } ]; submitBulkTransactions({ transactions, onError: 'abort', waitForHashes: true }).then((response) => { console.log('Received response: ', response); }).catch((error) => { console.error("Transactions submission failed", error); });

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

import { submitBulkTransactions, isInstalled } from "@xhbmygod/rootwallet-api"; function App() { const handleTransactionsBulk = () => { isInstalled().then((response) => { if (response.result.isInstalled) { const transactions = [ { ID: '001', // 可选 ID,用于在提交后识别响应中的交易。 TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '002', TransactionType: 'TrustSet', LimitAmount: { currency: 'ETH', issuer: 'rnm76Qgz4G9G4gZBJVuXVvkbt7gVD7szey', value: '10000000' }, Fee: '199' }, { ID: '003', TransactionType: 'NFTokenMint', URI: '516D6654463665756E47726A57597642666A72614B486D765572354444566D525351424373513252564D71764A72', NFTokenTaxon: 0 }, { ID: '004', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '005', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '006', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '007', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '008', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '009', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', }, { ID: '010', TransactionType: 'Payment', Destination: 'rhikRdkFw28csKw9z7fVoBjWncz1HSoQij', Amount: '100000', } ]; submitBulkTransactions({ transactions }).then((response) => { console.log('Received response: ', response); }).catch((error) => { console.error("Transactions submission failed", error); }); } }); }; return ( <div className="App"> <button onClick={handleTransactionsBulk}>Submit Transactions (Bulk)</button> </div> ); } export default App;

submitTransaction

通过扩展提交一个交易请求。交易将自动填充、签名并提交。

请求

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

  • transaction: 要提交的交易请求。
interface SubmitTransactionRequest { transaction: Transaction; }

Transaction 类型 定义在此

注意:

  • 如果交易字段 Account 未设置,将使用用户钱包的账户。
响应

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

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

type: "reject"; result: undefined;
错误处理

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

示例
import { submitTransaction } from "@xhbmygod/rootwallet-api"; const transaction = { TransactionType: "Payment", Destination: "rhikRdkFw28csKw9z7fVoBjWncz1HSoQij", Amount: "100000", Memos: [ { Memo: { MemoData: "54657374206D656D6F", MemoType: "4465736372697074696F6E" } } ] }; submitTransaction({ transaction }).then((response) => { console.log(response.result?.hash); }).catch((error) => { console.error("Transaction submission failed", error); });

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

import { submitTransaction, isInstalled } from "@xhbmygod/rootwallet-api"; function App() { const handleTransaction = () => { isInstalled().then((response) => { if (response.result.isInstalled) { const transaction = { TransactionType: "Payment", Destination: "rhikRdkFw28csKw9z7fVoBjWncz1HSoQij", Amount: "100000", Memos: [ { Memo: { MemoData: "54657374206D656D6F", MemoType: "4465736372697074696F6E" } } ] }; submitTransaction({ transaction }).then((response) => { console.log("Transaction hash: ", response.result?.hash); }).catch((error) => { console.error("Transaction submission failed", error); }); } }); }; return ( <div className="App"> <button onClick={handleTransaction}>Submit Transaction</button> </div> ); } export default App;
最后更新于: