Move.

Beitrag

Teile dein Wissen.

farshad.
Feb 13, 2025
Experten Q&A

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
Teilen
Kommentare
.

Antworten

2
Xavier.eth.
Feb 13 2025, 11:09

Es scheint, dass es ein Problem mit der Bestellung oder dem Unterzeichnen der Transaktion gibt. Stellen Sie sicher, dass Sie die Transaktion korrekt erstellen und dann die serialisierte Transaktion signieren. Hier ist ein Beispielcode, der helfen könnte:

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
Kommentare
.
jogador_1.
Feb 13 2025, 11:08

Vergewissern Sie sich, dass die Signaturen beim Senden der Transaktion ordnungsgemäß und in der richtigen Reihenfolge behandelt werden. Die Fehlermeldung weist darauf hin, dass möglicherweise ein Problem mit der Datenformatierung oder eine Kommunikationslücke in der Art und Weise, wie die Transaktion serialisiert und signiert wird, vorliegt.

0
Kommentare
.

Weißt du die Antwort?

Bitte melde dich an und teile sie.

Wir verwenden Cookies, um sicherzustellen, dass Sie die beste Erfahrung auf unserer Website haben.
Mehr Infos