请帮帮我,我被困住了。我试图在恒星网络上生成钱包时添加备忘录,但 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);
应该这样做:
setMemo(new Memo("text", "Memo string"))
您使用
MemoText
作为第一个参数,这是错误的。当构建错误消息时,似乎是这样MemoText.toString