为什么stellar sdk在构建交易时添加memo时抛出[Object object]不是memo?

问题描述 投票:0回答:1

请帮帮我,我被困住了。我试图在恒星网络上生成钱包时添加备忘录,但 SDK 不断抛出此 XDR 写入错误。

错误堆栈跟踪:

TypeError: XDR Write Error: [object Object] is not a Memo
    at Function.write (webpack://WalletSDK/node_modules/@stellar/js-xdr/src/union.js:85:1)
    at Function.write (webpack://WalletSDK/node_modules/@stellar/js-xdr/src/struct.js:31:1)
    at Function.write (webpack://WalletSDK/node_modules/@stellar/js-xdr/src/union.js:88:1)
    at Function.write (webpack://WalletSDK/node_modules/@stellar/js-xdr/src/struct.js:31:1)
    at Function.toXDR (webpack://WalletSDK/node_modules/@stellar/js-xdr/src/xdr-type.js:57:1)
    at ChildStruct.toXDR (webpack://WalletSDK/node_modules/@stellar/js-xdr/src/xdr-type.js:12:1)
    at Transaction.signatureBase (webpack://WalletSDK/node_modules/@stellar/stellar-base/lib/transaction.js:293:1)
    at Transaction.hash (webpack://WalletSDK/node_modules/@stellar/stellar-base/lib/transaction_base.js:224:1)
    at Transaction.sign (webpack://WalletSDK/node_modules/@stellar/stellar-base/lib/transaction_base.js:88:1)
    at SigningKeypair.__webpack_modules__../src/walletSdk/Horizon/Account.ts.exports.SigningKeypair.SigningKeypair.sign (webpack://WalletSDK/src/walletSdk/Horizon/Account.ts:64:1)

代码:

    const createTxn = txBuilder
      .createAccount(createdAccountKeyPair)
      .setMemo(new Memo(MemoText, 'test-memo'))
      .build();

    const signed = sponsorSigningKeyPair.sign(createTxn);

这些是进口的

import { Memo, xdr, MemoText } from '@stellar/stellar-sdk';
import {
  StellarConfiguration,
  Wallet,
  Keypair,
  AccountKeypair,
  IssuedAssetId,
  PublicKeypair,
  SigningKeypair,
  NativeAssetId,
} from '@stellar/typescript-wallet-sdk';

版本:

    "@stellar/stellar-sdk": "^12.1.0",
    "@stellar/typescript-wallet-sdk": "^1.7.0",

这是我的输入

    const createTxn = txBuilder
      .createAccount(createdAccountKeyPair)
      .setMemo(new Memo(MemoText, 'test-memo'))
      .build();

    const signed = sponsorSigningKeyPair.sign(createTxn);
typescript transactions stellar
1个回答
0
投票

应该这样做:

setMemo(new Memo("text", "Memo string"))

您使用

MemoText
作为第一个参数,这是错误的。当构建错误消息时,似乎是这样
MemoText.toString

© www.soinside.com 2019 - 2024. All rights reserved.