anza-xyz / wallet-adapter

Modular TypeScript wallet adapters and components for Solana applications.
https://anza-xyz.github.io/wallet-adapter/
Apache License 2.0
1.44k stars 906 forks source link

TrustWallet - Cannot read properties of undefined (reading "serialize") #987

Open sineus opened 1 week ago

sineus commented 1 week ago

Describe the bug Hi everybody, we use Trust wallet adapter on our application and we have a problem when we send transaction, Trust wallet try to serialize message from Transaction entity, but with "legacy" Transaction, there is no message property, only in VersionedTransaction. For me, this adapter isn't fully functional with Solana, have you a solution to fix this?

To Reproduce Steps to reproduce the behavior: Create function to create Transaction and send it with the wallet adapter:


// This function does not works
async function createLegacyTransaction(from: PublicKey, to: PublicKey, amount: number) {
  const transaction = new Transaction()

  transaction.add(
    SystemProgram.transfer({
      fromPubkey: from,
      toPubkey: to,
      lamports: amount
    })
  )
  transaction.add(ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 100000 }))

  const { blockhash } = await connection.getLatestBlockhash()

  transaction.recentBlockhash = blockhash
  transaction.feePayer = from

  return transaction;
}

// Function works
async function createVersionedTransaction(from: PublicKey, to: PublicKey, amount: number) {
  const { blockhash } = await connection.getLatestBlockhash()

  const messageV0 = new TransactionMessage({
    payerKey: from,
    recentBlockhash: blockhash,
    instructions: [
      SystemProgram.transfer({
        fromPubkey: from,
        toPubkey: to,
        lamports: amount
      }),
     ComputeBudgetProgram.setComputeUnitPrice({ microLamports: 100000 })
    ],
  }).compileToV0Message();

  return new VersionedTransaction(messageV0)
}

Expected behavior This wallet should be compatible with Solana "legacy" Transaction.

glitch-txs commented 1 week ago

I think Trust supports the Wallet Standard, why using the adapter?