Solana Transfers gRPC Stream
The transfers
gRPC Stream provides real-time token and SOL transfer data across the Solana blockchain.
Configuration​
To subscribe to transfers, configure your stream as follows:
stream:
type: "transfers"
Available Data​
The transfers stream provides comprehensive transfer information including:
- Transaction details: Slot, signature, status, fees
- Account information: Signers, token accounts, program IDs
- Token context: Mint addresses, decimals, owners, metadata
- Transfer specifics: Amounts, sender/receiver addresses, authority information
- Balance updates: Pre/post balances for accounts and token accounts
Sample Data Structure​
Here's an example of the data structure you'll receive:
{
"Block": {
"Slot": 370428239
},
"Transaction": {
"Index": 776,
"Signature": "2knhEScuNwtKYXw86X59iY1UDnETUGXpB4r54i26T9Th1k3zCZC9ZXeBfvXCfBHAxyG7PZg3GTdxQSzzXP8Rzyyo",
...
},
"Transfer": {
"InstructionIndex": 10,
"Amount": 45212952,
"Sender": {
"Address": "CjUfYX9UYiJAmvguVWXZusqQdPDSMPRfhmQRMnH6cYJC",
"IsSigner": false,
"IsWritable": true,
"Token": {
"Mint": "So11111111111111111111111111111111111111112",
"Owner": "B4YMuvqf5o5uSxBXLZozC4BQKrpo2aHk5DXSquyHZ2fb",
"Decimals": 9,
"ProgramId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
},
"Receiver": {
"Address": "866SWVmbZDQjQFwe8RS1zRrwQKo2RBS7WZfxSGc18Guo",
"IsSigner": false,
"IsWritable": true,
"Token": {
"Mint": "So11111111111111111111111111111111111111112",
"Owner": "CAVE3Fc6dH3zwEreMvXuBiEMjvPXeqkJfyT2VFHngxyQ",
"Decimals": 9,
"ProgramId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
}
},
"Authority": {
"Address": "B4YMuvqf5o5uSxBXLZozC4BQKrpo2aHk5DXSquyHZ2fb",
"IsSigner": true,
"IsWritable": true
},
"Currency": {
"Name": "Wrapped Solana",
"Decimals": 9,
"Symbol": "WSOL",
"MintAddress": "So11111111111111111111111111111111111111112"
},
"Instruction": {
"Index": 10,
"Program": {
"Address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"Name": "spl_token_2022",
"Method": "transferChecked"
},
"Arguments": [
{
"Name": "amount",
"Type": "u64",
"UInt": 45212952
},
{
"Name": "decimals",
"Type": "u8",
"UInt": 9
}
],
"AccountNames": [
"source",
"mint",
"destination",
"authority"
]
},
"BalanceUpdates": [
{
"PreBalance": 47252232,
"PostBalance": 2039280,
"AccountIndex": 1
},
{
"PreBalance": 148077284154,
"PostBalance": 148122497106,
"AccountIndex": 3
}
],
"TokenBalanceUpdates": [
{
"PreBalance": 148075244874,
"PostBalance": 148120457826,
"AccountIndex": 3
}
]
}
}
Filtering Options​
You can filter transfers by:
- Addresses:
program
,account
- Tokens: Specific mint addresses (e.g., WSOL, USDC)
- Transfer amounts: Minimum/maximum transfer values
- Accounts: Specific sender or receiver addresses
- Token programs: SPL Token, SPL Token 2022, or other token programs
Transfer Types​
The transfers stream captures various transfer-related events:
- SPL Token transfers: Standard token transfers using SPL Token program
- SPL Token 2022 transfers: Enhanced token transfers with additional features
- SOL transfers: Native Solana transfers
- Authority transfers: Transfers authorized by token authorities
Transfer Data Fields​
- Amount: The amount being transferred (in smallest unit)
- Sender: The source account/token account
- Receiver: The destination account/token account
- Authority: The account that authorized the transfer
- Currency: Token information including mint address and decimals
- InstructionIndex: The position of the transfer instruction in the transaction
Schema Reference​
- Protobuf Schema: dex_block_message.proto
- Sample Data: solana_transfer.json
Python Installation​
For Python development, install the protobuf package:
pip install bitquery-corecast-proto
NPM Package​
npm install bitquery-corecast-proto
This package includes all necessary protobuf definitions without requiring manual downloads.