帖子
分享您的知识。
farshad122
Feb 13, 2025
专家问答
Why does sponsored transaction fail with JsonRpcError?
I've been working on creating a sponsored transaction. I first create and sign the transaction with the gas sponsor and then the sender. But when I send it to the blockchain, I get a JsonRpcError: Deserialization error. Oddly enough, if I sign it without a sponsor, it works fine. Can anyone help me figure out what's going wrong with the sponsored transaction setup?
- Move CLI
- Move
1
2
分享
评论
答案
2Xavier.eth110
Feb 13 2025, 11:09看来订单或签署交易的过程可能存在问题. 确保你正确地构建了交易,然后签署了序列化交易. 以下是可能会有所帮助的示例代码:
async function signSerializedTransaction({
signer,
serializedTransaction,
}: {
signer: Keypair;
serializedTransaction: string;
}) {
const txBytes = fromB64(serializedTransaction);
const signatureWithBytes = await signer.signTransaction(txBytes);
return signatureWithBytes.signature;
}
async function run() {
const client = new SuiClient({ url: FULLNODE_URL });
const tx = ...;
...
tx.setSender(USER_KEYPAIR.toSuiAddress());
tx.setGasOwner(SPONS_KEYPAIR.toSuiAddress());
const txBytes = await tx.build({ client });
const txSerialized = toB64(txBytes);
const userSignature = await signSerializedTransaction({
signer: USER_KEYPAIR,
serializedTransaction: txSerialized,
});
const sponsorSignature = await signSerializedTransaction({
signer: SPONS_KEYPAIR,
serializedTransaction: txSerialized,
});
const resp = await client.executeTransactionBlock({
transactionBlock: txBytes,
signature: [userSignature, sponsorSignature],
options: {
showObjectChanges: true,
showEffects: true,
showBalanceChanges: true,
},
});
console.log(resp);
}
1
评论
你知道答案吗?
请登录并分享。
Move is an executable bytecode language used to implement custom transactions and smart contracts.
98帖子158答案