Blowfish Scan transaction API
Endpoints related to scanning blockchain transactions
Endpoints related to scanning blockchain transactions
openapi: 3.1.0
info:
title: API reference Download blocklist Scan transaction API
version: '2022-06-01'
description: The Blowfish API reference specification
contact:
name: Blowfish API Support
email: contact@blowfish.xyz
url: https://blowfish.xyz
license:
name: MIT License
url: https://opensource.org/licenses/MIT
servers:
- url: https://free.api.blowfish.xyz
description: API server for clients on the free plan
- url: https://api.blowfish.xyz
description: API server for all other clients (e.g., Enterprise)
security:
- ApiKeyAuth: []
tags:
- name: Scan transaction
description: Endpoints related to scanning blockchain transactions
paths:
/ethereum/v0/mainnet/scan/transaction:
post:
tags:
- Scan transaction
summary: EVM
operationId: scan-transaction-evm
description: 'Scan a Ethereum/Polygon transaction in order to receive recommended actions, tailored warnings and human-readable simulation results explaining what the transaction will do.
### Supported networks
| Network | Base URL |
| --- | --- |
| Ethereum Mainnet | https://api.blowfish.xyz/ethereum/v0/mainnet/scan/transaction |
| Goerli Testnet | https://api.blowfish.xyz/ethereum/v0/goerli/scan/transaction |
| Polygon Mainnet | https://api.blowfish.xyz/polygon/v0/mainnet/scan/transaction |
Note: The Ethereum and Polygon endpoints are equivalent when it comes to functionality as well as request and response formats.
Note 2: If you are using a free, self-service API key from our Developer Portal, be sure to add the `free` subdomain (e.g., `https://free.api.blowfish.xyz`) to the above endpoints.
'
security:
- ApiKeyAuth: []
parameters:
- name: language
in: query
description: The language to use in the returned human-readable warnings and simulation results
schema:
$ref: '#/components/schemas/Languages'
- name: X-Api-Key
in: header
description: API Key
required: true
schema:
$ref: '#/components/schemas/ApiKeyHeader'
- name: X-Api-Version
in: header
description: Which version of the API to use
schema:
$ref: '#/components/schemas/ApiVersionHeader'
- name: Content-Type
in: header
description: The expected return content type
schema:
$ref: '#/components/schemas/ContentType'
requestBody:
content:
application/json:
schema:
type: object
properties:
txObject:
type: object
properties:
from:
type: string
description: Hex-representation address of transaction signer
example: '0xa725f1a12b69eb32a7aea885c826deffaad6e3f3'
to:
type: string
description: Hex-representation address of transaction recipient
example: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
data:
type: string
description: Hex-representation of ABI encoded call data
example: '0x095ea7b30000000000000000000000001d5071048370df50839c8879cdf5144ace4b3b3bffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
value:
type: string
description: String representation of Ether/Matic (in Wei) to send with the transaction
example: '0'
required:
- from
- to
- data
- value
metadata:
$ref: '#/components/schemas/RequestMetadata'
userAccount:
$ref: '#/components/schemas/EvmUserAccount'
required:
- txObject
- userAccount
- metadata
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
action:
$ref: '#/components/schemas/ActionEnum'
warnings:
$ref: '#/components/schemas/Warning'
simulationResults:
type: object
properties:
expectedStateChanges:
type: array
items:
type: object
properties:
humanReadableDiff:
type: string
example: Send 10000 USDT
description: Computed explanation of the state change that can be directly presented to the end-user. While the API is still in development, we suggest integrators expose this in their signing UI if they encounter a `rawInfo.kind` they don't recognize.
rawInfo:
description: A machine-parsable state change object describing the state change.
oneOf:
- $ref: '#/components/schemas/EvmStateChangeErc20Transfer'
- $ref: '#/components/schemas/EvmStateChangeErc20Approval'
- $ref: '#/components/schemas/EvmStateChangeNativeAssetTransfer'
- $ref: '#/components/schemas/EvmStateChangeErc721Transfer'
- $ref: '#/components/schemas/EvmStateChangeErc721Approval'
- $ref: '#/components/schemas/EvmStateChangeErc721ApprovalForAll'
- $ref: '#/components/schemas/EvmStateChangeErc1155Transfer'
- $ref: '#/components/schemas/EvmStateChangeErc1155ApprovalForAll'
discriminator:
propertyName: kind
mapping:
ERC20_TRANSFER: '#/components/schemas/EvmStateChangeErc20Transfer'
ERC20_APPROVAL: '#/components/schemas/EvmStateChangeErc20Approval'
NATIVE_ASSET_TRANSFER: '#/components/schemas/EvmStateChangeNativeAssetTransfer'
ERC721_TRANSFER: '#/components/schemas/EvmStateChangeErc721Transfer'
ERC721_APPROVAL: '#/components/schemas/EvmStateChangeErc721Approval'
ERC721_APPROVAL_FOR_ALL: '#/components/schemas/EvmStateChangeErc721ApprovalForAll'
ERC1155_TRANSFER: '#/components/schemas/EvmStateChangeErc1155Transfer'
ERC1155_APPROVAL_FOR_ALL: '#/components/schemas/EvmStateChangeErc1155ApprovalForAll'
error:
description: A nullable error object which includes the parsed simulation error encountered (if any)
oneOf:
- $ref: '#/components/schemas/EvmTransactionRevertedError'
- $ref: '#/components/schemas/EvmTransactionError'
- $ref: '#/components/schemas/EvmSimulationFailedError'
- $ref: '#/components/schemas/EvmUnknownError'
- type: 'null'
discriminator:
propertyName: kind
mapping:
TRANSACTION_REVERTED: '#/components/schemas/EvmTransactionRevertedError'
TRANSACTION_ERROR: '#/components/schemas/EvmTransactionError'
SIMULATION_FAILED: '#/components/schemas/EvmSimulationFailedError'
UNKNOWN_ERROR: '#/components/schemas/EvmUnknownError'
gas:
type: object
description: An object that contains nullable fields with information about the estimated gas consumption of the simulated transaction
properties:
gasLimit:
type: string
example: '46220'
description: A nullable field that if the simulation was successful contains the estimated upper limit of gas usage for this transaction. The gasLimit should be viewed as an upper bound of how much gas the transaction can use, not as an accurate estimate how much it will realistically consume when submitted on-chain.
nullable: true
examples:
erc20_swap:
summary: ERC20 Swap ETH for DAI
value:
action: NONE
simulationResults:
error: null
gas: {}
expectedStateChanges:
- humanReadableDiff: Receive 1530.81307 DAI
rawInfo:
data:
amount:
after: '557039306766411381864245'
before: '555508493698012633714742'
contract:
address: '0x6b175474e89094c44da98b954eedeac495271d0f'
kind: ACCOUNT
decimals: 18
name: Dai Stablecoin
symbol: DAI
asset:
address: '0x6b175474e89094c44da98b954eedeac495271d0f'
symbol: DAI
name: Dai Stablecoin
decimals: 18
verified: true
lists:
- COINGECKO
- ZERION
- ONE_INCH
- UNISWAP
- MY_CRYPTO_API
- KLEROS_TOKENS
imageUrl: https://d1ts37qlq4uz4s.cloudfront.net/evm__evm%3A%3Aethereum__evm%3A%3Aethereum%3A%3Amainnet__0x6b175474e89094c44da98b954eedeac495271d0f.png
kind: ERC20_TRANSFER
- humanReadableDiff: Send 1 ETH
rawInfo:
data:
amount:
after: '1182957389356504134754'
before: '1183957389356504134754'
contract:
address: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
kind: ACCOUNT
decimals: 18
name: Ether
symbol: ETH
kind: NATIVE_ASSET_TRANSFER
warnings: []
erc20_approval:
summary: ERC20 Approval
value:
action: NONE
simulationResults:
error: null
gas: {}
expectedStateChanges:
- humanReadableDiff: Approve to transfer up to 1000 USDT
rawInfo:
data:
amount:
after: '1000000000'
before: '0'
asset:
address: '0xdac17f958d2ee523a2206206994597c13d831ec7'
name: Tether USD
decimals: 6
lists:
- COINGECKO
- ZERION
- ONE_INCH
- UNISWAP
- MY_CRYPTO_API
- KLEROS_TOKENS
symbol: USDT
verified: true
imageUrl: https://d1ts37qlq4uz4s.cloudfront.net/evm__evm%3A%3Aethereum__evm%3A%3Aethereum%3A%3Amainnet__0xdac17f958d2ee523a2206206994597c13d831ec7.png
contract:
address: '0xdac17f958d2ee523a2206206994597c13d831ec7'
kind: ACCOUNT
decimals: 6
name: Tether USD
owner:
address: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
kind: ACCOUNT
spender:
address: '0x68b3465833fb72a70ecdf485e0e4c7bd8665fc45'
kind: ACCOUNT
symbol: USDT
kind: ERC20_APPROVAL
warnings: []
erc721_buy:
summary: Buy an ERC721 NFT with ETH
value:
action: NONE
simulationResults:
error: null
gas: {}
expectedStateChanges:
- humanReadableDiff: 'Receive PudgyPenguins #7238'
rawInfo:
data:
amount:
after: '1'
before: '0'
contract:
address: '0xbd3531da5cf5857e7cfaa92426877b022e612cf8'
kind: ACCOUNT
metadata:
rawImageUrl: https://ipfs.io/ipfs/QmNf1UsmdGaMbpatQ6toXSkzDpizaGmC9zfunCyoz1enD5/penguin/7238.png
name: PudgyPenguins
symbol: PPG
tokenId: '7238'
kind: ERC721_TRANSFER
- humanReadableDiff: Send 3.181 ETH
rawInfo:
data:
amount:
after: '998426264937289938488'
before: '1001607264937289938488'
contract:
address: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
kind: ACCOUNT
decimals: 18
name: Ether
symbol: ETH
kind: NATIVE_ASSET_TRANSFER
warnings: []
erc721_approve_for_all:
summary: ERC721 Approve For All
value:
action: WARN
simulationResults:
error: null
gas: {}
expectedStateChanges:
- humanReadableDiff: Approve to transfer all your BoredApeYachtClub
rawInfo:
data:
amount:
after: '115792089237316195423570985008687907853269984665640564039457584007913129639935'
before: '0'
contract:
address: '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d'
kind: ACCOUNT
name: BoredApeYachtClub
owner:
address: '0x38191ca1307ebf67ca1a7caf5346dbd91d882ca6'
kind: ACCOUNT
spender:
address: '0x1e0049783f008a0085193e00003d00cd54003c71'
kind: ACCOUNT
symbol: BAYC
kind: ERC721_APPROVAL_FOR_ALL
warnings:
- kind: UNLIMITED_ALLOWANCE_TO_NFTS
message: You are allowing this website to withdraw funds from your account in the future
severity: WARNING
erc721_approve:
summary: ERC721 Approve
value:
action: NONE
simulationResults:
error: null
gas: {}
expectedStateChanges:
- humanReadableDiff: Approve to transfer BoredApeYachtClub
rawInfo:
data:
amount:
after: '1'
before: '0'
contract:
address: '0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d'
kind: ACCOUNT
metadata:
rawImageUrl: ipfs://QmXFwVpxkRtfohxARE6f4gc5oRSVQ9iVU1fxzbj9AkJXx5
name: BoredApeYachtClub
owner:
address: '0xed2ab4948ba6a909a7751dec4f34f303eb8c7236'
kind: ACCOUNT
spender:
address: '0x1e0049783f008a0085193e00003d00cd54003c71'
kind: ACCOUNT
symbol: BAYC
tokenId: '6603'
kind: ERC721_APPROVAL
warnings: []
erc1155_buy:
summary: Buy an ERC1155 token with ETH
value:
action: NONE
simulationResults:
error: null
gas: {}
expectedStateChanges:
- humanReadableDiff: Send 0.033 ETH
rawInfo:
data:
amount:
after: '71057321770366572'
before: '104057321770366572'
contract:
address: '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee'
kind: ACCOUNT
decimals: 18
name: Ether
symbol: ETH
kind: NATIVE_ASSET_TRANSFER
- humanReadableDiff: Receive Corgi
rawInfo:
data:
amount:
after: '1'
before: '0'
contract:
address: '0x51e613727fdd2e0b91b51c3e5427e9440a7957e4'
kind: ACCOUNT
metadata:
rawImageUrl: https://img.cryptocorgis.co/corgi/13014975
tokenId: '13014975'
kind: ERC1155_TRANSFER
warnings: []
erc1155_approve_for_all:
summary: ERC1155 approve for all
value:
action: WARN
simulationResults:
error: null
gas: {}
expectedStateChanges:
- humanReadableDiff: Approve to transfer all your Sandbox's ASSETs
rawInfo:
data:
amount:
after: '115792089237316195423570985008687907853269984665640564039457584007913129639935'
before: '0'
contract:
address: '0xa342f5d851e866e18ff98f351f2c6637f4478db5'
kind: ACCOUNT
owner:
address: '0xed2ab4948ba6a909a7751dec4f34f303eb8c7236'
kind: ACCOUNT
spender:
address: '0x00000000006c3852cbef3e08e8df289169ede581'
kind: ACCOUNT
kind: ERC1155_APPROVAL_FOR_ALL
- warnings:
- kind: UNLIMITED_ALLOWANCE_TO_NFTS
message: You are allowing this website to withdraw funds from your account in the future
severity: WARNING
'400':
description: Bad request
content:
application/json:
schema:
$ref: '#/components/schemas/BadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/Unauthorized'
'500':
description: Internal server error
content:
application/json:
schema:
$ref: '#/components/schemas/InternalServerError'
/solana/v0/mainnet/scan/transactions:
post:
tags:
- Scan transaction
summary: Solana
operationId: scan-transactions-solana
description: 'Scan Solana transactions in order to receive recommended actions, tailored warnings and human-readable simulation results explaining what the transaction will do. The API will return a list of warnings and a list of human-readable simulation results.
### Supported networks
| Network | Base URL |
| --- | --- |
| Mainnet | https://api.blowfish.xyz/solana/v0/mainnet/scan/transactions |
| Testnet | https://api.blowfish.xyz/solana/v0/testnet/scan/transactions |
| Devnet | https://api.blowfish.xyz/solana/v0/devnet/scan/transactions |
Note: If you are using a free, self-service API key from our Developer Portal, be sure to add the `free` subdomain (e.g., `https://free.api.blowfish.xyz`) to the above endpoints.
'
security:
- ApiKeyAuth: []
parameters:
- name: language
in: query
description: The language to use in the returned human-readable warnings and simulation results
schema:
$ref: '#/components/schemas/Languages'
- name: X-Api-Key
in: header
description: API Key
required: true
schema:
$ref: '#/components/schemas/ApiKeyHeader'
- name: X-Api-Version
in: header
description: Which version of the API to use
schema:
$ref: '#/components/schemas/ApiVersionHeader'
- name: Content-Type
in: header
description: The expected return content type
schema:
$ref: '#/components/schemas/ContentType'
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
transactions:
type: array
items:
type: string
example: GfoPPvWL5eSJssAoemjqUpE9nMVt5kWTNznPz1F1CKi5kcBY8tDBgLzpbdBnTQjHJgyutdXEHmkkmE3iM3y94LE5s3zZ8wq2sjMkgjpddAnTwY1TrGSk6yZNykT2Un1PKqwo2XMXBa5FR3BpKStBV4krbiFzT9UySLSysTBzw31caBCuvcsetdE7yYWXGXEGbRiCf3BCWFkrooKAHrzW7bSHmGdUuB2sip9wEcb7r3SjhzkkAK2tySVkrbvVB5c11oF6zDYVys7wpaGbjn2DsVPYo9gbGVQXHi4qgCBXTzCT8v8pZV9gh4FeMRWw5yzfuWtxw44aQ6EKz55cTUhBAVMUCEZQUrfJbx1NzEYod41n7GFHzEXTZyPCo5CnGmX8u2UhuLhx2n8ZNg6Mj1dH6PGRQnKtxAzwicfPJ9KahGjoNLNcki9gfdxURy56DY3YH3DDviLrKKjiEoTmZs8UiaSBwRjsLA5dhJ6G6LyC9bjertH1cpcDWSQhRfwBXHAvHNirLX8927WcCHoTAUWXKqB34YJu4cLPwTn5kUr4FMQgQBhvyaMDDzrH76bwSFS4oRmMqXtscyWXbdXJC1k8iiRHftqmZhg3bP3UydcXKBUQJi15A64kjpkGY7ChxdcuwgLzKnVNJGG897nUPsVmsVfZNwiVqVZ6QKv1z7yv4EGvbkhWStx9NFvv8JkHjUhL4vNo8o7TPNib21WeFLgmiAu7nrn25kkJLZ3XE6ZVceUEbywJCMdwMomPx2maxauRehuxSorkE3ngcj7mC88HEgPTBQiP2JRJxcFvQp1CsfErCs3F3uG79kEKJLzNoFbCL58s6JsH3rE69wcb5e47JztFmrmGp4p3mb2jYoUfj6AfCctky9MnB6jWTdyg2o7zUcr5f35Qwahgcsce95RgH9mcWKFLqu49RxpFUgnHiNaDG67YEGdDgu2YABYxv6tv7PEtCJqZH4VVbpu9TRQCCXkQv4Xj7j6ALmhbNoJBEHJHqTGhiNQvV5aibesnGG62epoPz36uNJZrt6GV53AeLig22HVtBRr1NE2wB6h9Ax6VX7KKrekKBMzUxeAjWbGERkCWuXdRjTrpDG3bbDCDgep8k9ZnDDQtNqSKJbbxZ1VJvMKgcgty5P4n4YTXTSFNQ9kE8VCikb9tpN6iRnUwD9GFRQfiR76QNZs5hU2hn8asGYFnRcEgjZV9cSwC6foKrV47uq9X2dPWZg56TpNhPb85fzbkN13LdFHcua3MTvWmSD4LZAFMF8QWqpb7b2YZZpc1sQvYc5gN856JwehDybMsB2EFepiBFQXTxwB2c9xbHjEf3RcWwe3LZiD8vvWLfGF2t7PzwDKbEREpsX8piN76GkCGiRjgkdehiXaLzjQ5nW3Fi8F2HjALRRjHJxfNQq4vH4B6Nwp7rruzqdY1j6cm3QagrgeXCmfSmRV6kaCMRRQYbVW6Ju4rMbLTWa7FAWCmR2rvmevmi1PmV8zhApVFbV9VHd2hTazrddBWXRAmTRBZEjyRqSkr3y45ecph1ae87Pi3quaEEhjFP9oSWTUs3ufHCW2XjLj
description: Base58 or Base64 encoded Solana transactions to scan
userAccount:
type: string
example: 5ufzDEwP2jKrvx78inuWNPrXRmR9AcXySqc2B3CRqR3G
description: Base58-encoded account of signer of transactions
metadata:
$ref: '#/components/schemas/RequestMetadata'
required:
- transactions
- userAccount
- metadata
responses:
'200':
description: Successful response
content:
application/json:
schema:
type: object
properties:
action:
$ref: '#/components/schemas/ActionEnum'
warnings:
$ref: '#/components/schemas/Warning'
simulationResults:
type: object
properties:
isRecentBlockhashExpired:
type: boolean
example: false
description: Whether all of the transaction's recentBlockhashes have expired
expectedStateChanges:
type: array
description: An array of state changes one could expect if these transactions were submitted on-chain. Each state change represents a meaningful change to the end-user's assets or permissions on-chain. We reserve the right to add new state change types, so any handling logic custom to state change types should fallback gracefully to showing the end-user the `humanReadableDiff` of any unrecognized state change types.
items:
type: object
properties:
humanReadableDiff:
type: string
description: Computed explanation of the state change that can be directly presented to the end-user. While the API is still in development, we suggest integrators expose this in their signing UI since the list of state change kinds has not yet stabilized.
example: Receive 0.05657 SOL
suggestedColor:
type: string
description: Suggested text color when presenting the diff to end-users
enum:
- CREDIT
- DEBIT
example: CREDIT
rawInfo:
description: A machine-parsable state change object describing the state change.
oneOf:
- $ref: '#/components/schemas/SolanaStateChangeSolTransfer'
- $ref: '#/components/schemas/SolanaStageChangeSplTransfer'
- $ref: '#/components/schemas/SolanaStateChangeSplApproval'
- $ref: '#/components/schemas/SolanaStateChangeSolStakeAuthorityChange'
discriminator:
propertyName: kind
mapping:
SOL_TRANSFER: '#/components/schemas/SolanaStateChangeSolTransfer'
SPL_TRANSFER: '#/components/schemas/SolanaStageChangeSplTransfer'
SPL_APPROVAL: '#/components/schemas/SolanaStateChangeSplApproval'
SOL_STAKE_AUTHORITY_CHANGE: '#/components/schemas/SolanaStateChangeSolStakeAuthorityChange'
error:
type: object
properties:
kind:
type: string
description: A unique representation of the error kind. Currently maps to the screaming case of the SystemError enum values, TokenError and TransactionError enum values.
example: INSUFFICIENT_FUNDS
enum:
- AN_ACCOUNT_WITH_THE_SAME_ADDRESS_ALREADY_EXISTS
- ACCOUNT_DOES_NOT_HAVE_ENOUGH_SOL_TO_PERFORM_THE_OPERATION
- CANNOT_ASSIGN_ACCOUNT_TO_THIS_PROGRAM_ID
- CANNOT_ALLOCATE_ACCOUNT_DATA_OF_THIS_LENGTH
- LENGTH_OF_REQUESTED_SEED_IS_TOO_LONG
- PROVIDED_ADDRESS_DOES_NOT_MATCH_ADDRESSED_DERIVED_FROM_SEED
- ADVANCING_STORED_NONCE_REQUIRES_A_POPULATED_RECENTBLOCKHASHES_SYSVAR
- STORED_NONCE_IS_STILL_IN_RECENT_BLOCKHASHES
- SPECIFIED_NONCE_DOES_NOT_MATCH_STORED_NONCE
- LAMPORT_BALANCE_BELOW_RENT-EXEMPT_THRESHOLD
- INSUFFICIENT_FUNDS
- INVALID_MINT
- ACCOUNT_NOT_ASSOCIATED_WITH_THIS_MINT
- OWNER_DOES_NOT_MATCH
- FIXED_SUPPLY
- ALREADY_IN_USE
- INVALID_NUMBER_OF_PROVIDED_SIGNERS
- INVALID_NUMBER_OF_REQUIRED_SIGNERS
- STATE_IS_UNINITIALIZED
- INSTRUCTION_DOES_NOT_SUPPORT_NATIVE_TOKENS
- NON-NATIVE_ACCOUNT_CAN_ONLY_BE_CLOSED_IF_ITS_BALANCE_IS_ZERO
- INVALID_INSTRUCTION
- STATE_IS_INVALID_FOR_REQUESTED_OPERATION
- OPERATION_OVERFLOWED
- ACCOUNT_DOES_NOT_SUPPORT_SPECIFIED_AUTHORITY_TYPE
- THIS_TOKEN_MINT_CANNOT_FREEZE_ACCOUNTS
- ACCOUNT_IS_FROZEN
- THE_PROVIDED_DECIMALS_VALUE_DIFFERENT_FROM_THE_MINT_DECIMALS
- INSTRUCTION_DOES_NOT_SUPPORT_NON-NATIVE_TOKENS
- ACCOUNT_IN_USE
- ACCOUNT_LOADED_TWICE
- ATTEMPT_TO_DEBIT_AN_ACCOUNT_BUT_FOUND_NO_RECORD_OF_A_PRIOR_CREDIT.
- ATTEMPT_TO_LOAD_A_PROGRAM_THAT_DOES_NOT_EXIST
- INSUFFICIENT_FUNDS_FOR_FEE
- THIS_ACCOUNT_MAY_NOT_BE_USED_TO_PAY_TRANSACTION_FEES
- THIS_TRANSACTION_HAS_ALREADY_BEEN_PROCESSED
- BLOCKHASH_NOT_FOUND
- ERROR_PROCESSING_INSTRUCTION_{0}:_{1}
- LOADER_CALL_CHAIN_IS_TOO_DEEP
- TRANSACTION_REQUIRES_A_FEE_BUT_HAS_NO_SIGNATURE_PRESENT
- TRANSACTION_CONTAINS_AN_INVALID_ACCOUNT_REFERENCE
- TRANSACTION_DID_NOT_PASS_SIGNATURE_VERIFICATION
- THIS_PROGRAM_MAY_NOT_BE_USED_FOR_EXECUTING_INSTRUCTIONS
- TRANSACTION_FAILED_TO_SANITIZE_ACCOUNTS_OFFSETS_CORRECTLY
- TRANSACTIONS_ARE_CURRENTLY_DISABLED_DUE_TO_CLUSTER_MAINTENANCE
- TRANSACTION_PROCESSING_LEFT_AN_ACCOUNT_WITH_AN_OUTSTANDING_BORROWED_REFERENCE
- TRANSACTION_WOULD_EXCEED_MAX_BLOCK_COST_LIMIT
- TRANSACTION_VERSION_IS_UNSUPPORTED
- TRANSACTION_LOADS_A_WRITABLE_ACCOUNT_THAT_CANNO
# --- truncated at 32 KB (68 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/blowfish/refs/heads/main/openapi/blowfish-scan-transaction-api-openapi.yml