var transaction = new web3.Transaction({ feePayer: new web3.PublicKey( '2joML3MhVLPmASMDBYuaMzsFiCtdm3aityWu1pJZ1wg8', ), }).add( splToken.Token.createTransferInstruction( programId, user1TokenAccount.address, user2TokenAccount.address, user1Wallet.publicKey, [], 1, ), ); let blockhashObj = await connection.getRecentBlockhash(); transaction.recentBlockhash = await blockhashObj.blockhash; let endocdeTransction = transaction.serialize({ requireAllSignatures: false, verifySignatures: false, });let newconnectionTransction = web3.Transaction.from(newEncodedBuffer);
estaba obteniendo la cantidad en los datos del búfer: <Buffer 03 01 00 00 00 00 00 00 00> que no pude decodificar
Esta habilidad no está expuesta por ahora en el lado de JS. Para hacer esto correctamente, necesitaríamos exponer esta definición de estructura: https://github.com/solana-labs/solana-program-library/blob/e8b7009cc4d8cdd87232ccfc9ce93ab203ada496/token/js/client/token.js#L1519
Por su parte, para realizar pruebas, puede copiar el diseño de la estructura y luego llamar a decode en los datos de la transacción para deserializarlos. En código (no probado), esto se vería así:
const decodedTransaction = Transaction.from(encodedTransaction); const TransferInstructionLayout = BufferLayout.struct([ BufferLayout.u8('instruction'), Layout.uint64('amount'), ]); const instructionData = TransferInstructionLayout.decode(decodedTransaction.instructions[0].data); console.log(instructionData.amount);Es posible que falten algunos pasos, ¡pero esto te llevará la mayor parte del camino! Y si desea agregar un PR para exponerlos, todos los demás pueden usarlos.