SDK Troubleshooting
Use this page to quickly diagnose common integration failures.
Fast checks
- Node.js version is
>=20 - Project uses ESM (
"type": "module") - Correct
programIdfor target environment - Transaction built with fresh recent blockhash
Signature and message errors
invalid_transaction_base64
Meaning:
- Signed payload passed to validation is malformed.
Fix:
- Base64-encode raw bytes from
tx.serialize().
missing_fee_payer / missing_required_signature
Meaning:
- Required signer did not sign the transaction.
Fix:
- Ensure fee payer and required signer identities are aligned before serialization.
required_signer_mismatch
Meaning:
- Signed tx fee payer is different from expected signer.
Fix:
- Match signer wallet with protocol actor identity (claimant/delegate/oracle as appropriate).
intent_message_mismatch
Meaning:
- Signed tx message bytes no longer match prepared unsigned intent.
Fix:
- Do not mutate tx fields after creating unsigned claim intent.
Builder validation errors
poolId exceeds 32 UTF-8 bytes
Fix:
- Keep
poolIdat or below 32 UTF-8 bytes.
supported schema key hashes cannot exceed 16
Fix:
- Limit oracle schema hash lists to max 16 entries per call.
protocolFeeBps must be an integer between 0 and 10000
Fix:
- Use integer fee values in
[0, 10000].
poolAssetVault, poolVaultTokenAccount, and recipientTokenAccount must be provided together
Fix:
- Provide all SPL payout option accounts together, or omit all for non-SPL payout flow.
Reader decode failures
account discriminator mismatch for ...
Usually means:
- wrong account type or address
- wrong cluster/program pairing
- protocol/SDK version mismatch
Fix:
- Recompute PDA with SDK seed helpers and verify the target account type.
RPC simulation and broadcast failures
simulation_failed_insufficient_funds
Fix:
- Ensure pool and payer balances are sufficient for payout path.
simulation_failed_pool_paused
Fix:
- Confirm pool/protocol status allows target action.
simulation_failed_membership_invalid
Fix:
- Confirm member is enrolled and active for target pool.
rpc_timeout
Fix:
- Refresh blockhash and retry; evaluate RPC latency/availability.
rpc_rejected
Fix:
- Simulate first, inspect logs, then retry with corrected accounts/signatures.