micro-sol-signer
micro-sol-signer copied to clipboard
Unable to decode TX
When attempting to decode the following base64 tx
https://solscan.io/tx/4B6k1MDc2pgXBKETAby1cf2xGCVrdKqAqwLWWG5xBJw2EcDmYG36LMWSoVL5euMn28yHVoDkcxSztWwY5CQxa6ME
AZ7CjilocXMOQd8IMpAI/h5Iifa2gpjJ03+rrOHwKOjBaO1GeoOhWfhjJhwUA3PuYavn63Job7W6N6NzKB0jCwGAAQACBCKefwv0o9t3gbujrSAP5yRlM8oBjH/Lnvvcr71IJPZDe0NZzCm5inWRgr2yML23blLc1CjPfT3wq7egPDszMVADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkNujieDtAcWdXAfN998RlmjjgbgqsxBuDTtWGsY4YIIDAgAFAugDAAACAAkDQA0DAAAAAAADAgABDAIAAACwjuERAAAAAAA=
using
import { base64 } from '@scure/base';
import * as sol from 'micro-sol-signer';
const tx = 'AZ7CjilocXMOQd8IMpAI/h5Iifa2gpjJ03+rrOHwKOjBaO1GeoOhWfhjJhwUA3PuYavn63Job7W6N6NzKB0jCwGAAQACBCKefwv0o9t3gbujrSAP5yRlM8oBjH/Lnvvcr71IJPZDe0NZzCm5inWRgr2yML23blLc1CjPfT3wq7egPDszMVADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkNujieDtAcWdXAfN998RlmjjgbgqsxBuDTtWGsY4YIIDAgAFAugDAAACAAkDQA0DAAAAAAADAgABDAIAAACwjuERAAAAAAA=';
const decodedTx = sol.Transaction.decode(base64.decode(tx));
console.log(decodedTx);
console.log(
decodedTx.msg.instructions.map((i) => {
return sol.parseInstruction(i, {
...sol.COMMON_TOKENS,
// You can add custom tokens here if needed
});
})
);
This exception is thrown
Error: SOL.tx: wrong signatures length. signatures.length = 1 and msg.requiredSignatures = 128
Yet if I decode via CLI I see the expected account keys
root@67ceb588273a:/# /usr/local/bin/solana-release/bin/solana decode-transaction AZ7CjilocXMOQd8IMpAI/h5Iifa2gpjJ03+rrOHwKOjBaO1GeoOhWfhjJhwUA3PuYavn63Job7W6N6NzKB0jCwGAAQACBCKefwv0o9t3gbujrSAP5yRlM8oBjH/Lnvvcr71IJPZDe0NZzCm5inWRgr2yML23blLc1CjPfT3wq7egPDszMVADBkZv5SEXMv/srbpyw5vnvIzlu8X3EmssQ5s6QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkNujieDtAcWdXAfN998RlmjjgbgqsxBuDTtWGsY4YIIDAgAFAugDAAACAAkDQA0DAAAAAAADAgABDAIAAACwjuERAAAAAAA= base64
Version: 0
Recent Blockhash: AkTxaGe6YaXcWajghCQHkwPKZjAJbQNkMShDVrdLF1Zb
Signature 0: 4B6k1MDc2pgXBKETAby1cf2xGCVrdKqAqwLWWG5xBJw2EcDmYG36LMWSoVL5euMn28yHVoDkcxSztWwY5CQxa6ME (pass)
Account 0: srw- 3L938EjezPiMxHecj17B4JMRdHa8vrMstRChdZJsiZML (fee payer)
Account 1: -rw- 9JAiJoWCGWP8WiYdC2fm1KxFnU59bUS2usVXNiZeQN8X
Account 2: -r-x ComputeBudget111111111111111111111111111111
Account 3: -r-x 11111111111111111111111111111111
Instruction 0
Program: ComputeBudget111111111111111111111111111111 (2)
Data: [2, 232, 3, 0, 0]
Instruction 1
Program: ComputeBudget111111111111111111111111111111 (2)
Data: [3, 64, 13, 3, 0, 0, 0, 0, 0]
Instruction 2
Program: 11111111111111111111111111111111 (3)
Account 0: 3L938EjezPiMxHecj17B4JMRdHa8vrMstRChdZJsiZML (0)
Account 1: 9JAiJoWCGWP8WiYdC2fm1KxFnU59bUS2usVXNiZeQN8X (1)
Transfer { lamports: 299994800 }
Status: Unavailable
I think it's just a matter of handling the versioned messages.
https://github.com/solana-labs/solana-web3.js/blob/de8dbf3e1adca40a4abab29092200fc9c8a0cfb2/packages/library-legacy/src/message/v0.ts#L430