授权
消息
gRPC API 支持多种订阅类型,可以在单个请求中组合:object
订阅账户更新。当指定账户被修改时返回数据。
隐藏 属性
隐藏 属性
array
要监控的账户公钥数组。
array
要监控的所有者公钥数组(这些程序拥有的所有账户)。
object
boolean
如果
true,仅包括由交易引起的更新。如果 false,仅包括不是由交易引起的更新。如果 undefined,包括所有更新。object
object
订阅交易更新。
隐藏 properties
隐藏 properties
boolean
包含投票交易。
boolean
包含失败的交易。
string
监控特定交易签名。
array
仅包含影响这些账户的交易。
array
排除影响这些账户的交易。
array
交易必须影响所有这些账户。
enum
可选的关联令牌账户 (ATA) 扩展(字段标签 30,
TokenAccountExpansionControlFlag)。设置后,account_include 钱包也匹配其持有SPL 代币余额的交易——例如涉及钱包的代币账户而不是其公钥的传入代币转账。两个变体:ALL(0) — 匹配引用钱包持有的代币余额的任何交易,即使未改变。较高的交易量。BALANCE_CHANGED(1) — 当钱包持有的代币余额发生变化(或代币账户在交易中被关闭)时匹配。
None)—没有“关闭”枚举值。超出范围的整数将在配置构建时被拒绝:Invalid token_accounts value, expected ALL (0) or BALANCE_CHANGED (1)。ALL 是零值。如果客户端将枚举设为 0,并期望表示“默认/关闭”,实际会得到 ALL——范围最广、数据量最大的模式。要表示“不扩展”,唯一的方法是完全省略该字段。object
object
object
enum
integer
接收更新的起始槽位。此值之前槽位的更新将被排除。打开订阅前,请使用
SubscribeReplayInfo
查询最早可用的重放槽位。
{
"slots": {
"slots": {}
},
"accounts": {
"user-defined-label": {
"account": [
"DjUF9ASpyMbVpGJmTvzfSbCgUWj6JowwLh8dGAJzSPmu",
"5U3bH5b6XtG99aVCE9ycvDgBKQx3fVT8WwTNbMToFuEr"
],
"owner": [
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
],
"filter": {
"memcmp": {
"offset": 0,
"bytes": "0102030405"
},
"datasize": 165,
"token_account_state": true,
"lamports": {
"gt": 100000000
}
},
"nonempty_txn_signature": true
}
},
"transactions": {},
"blocks": {},
"blocks_meta": {},
"accounts_data_slice": [],
"commitment": 1
}
{
"slots": {
"incoming_slots": {}
},
"commitment": 1
}
{
"transactions": {
"vote": false,
"failed": true,
"signature": "4RPMxKBhCBubFmZ1r9BC52ztjG3qBTW9Gp1PXfufUSATQaLKTW3Dj6vQBYyVrhfjgJ4PjZLzwYs4Z92KDCPw8Qym",
"account_include": ["DjUF9ASpyMbVpGJmTvzfSbCgUWj6JowwLh8dGAJzSPmu"],
"account_exclude": ["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"],
"account_required": ["11111111111111111111111111111111"]
},
"commitment": 2
}
{
"transactions": {
"wallet": {
"vote": false,
"failed": false,
"account_include": ["DjUF9ASpyMbVpGJmTvzfSbCgUWj6JowwLh8dGAJzSPmu"],
"account_exclude": [],
"account_required": [],
"token_accounts": 1
}
},
"commitment": 1
}
{
"transactions": {
"usdc": {
"vote": false,
"failed": false,
"account_include": ["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"],
"account_exclude": [],
"account_required": [],
"match_mints": true
}
},
"commitment": 1
}
{
"transactions_status": {
"vote": false,
"failed": true,
"account_include": ["DjUF9ASpyMbVpGJmTvzfSbCgUWj6JowwLh8dGAJzSPmu"],
"account_exclude": ["TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"],
"account_required": ["11111111111111111111111111111111"]
},
"commitment": 2
}
{
"blocks": {
"account_include": ["DjUF9ASpyMbVpGJmTvzfSbCgUWj6JowwLh8dGAJzSPmu"],
"include_transactions": 1,
"include_accounts": 1,
"include_entries": 0
},
"commitment": 2
}
{
"blocks_meta": {},
"commitment": 2,
"from_slot": 139000000
}
{
"entry": {},
"commitment": 1
}
{
"accounts": {
"account": ["DjUF9ASpyMbVpGJmTvzfSbCgUWj6JowwLh8dGAJzSPmu"]
},
"accounts_data_slice": [
{
"offset": 0,
"length": 64
},
{
"offset": 128,
"length": 32
}
],
"commitment": 2
}
{
"ping": {
"id": 1
}
}
{
"accounts": {
"account": ["DjUF9ASpyMbVpGJmTvzfSbCgUWj6JowwLh8dGAJzSPmu"],
"nonempty_txn_signature": true
},
"slots": {
"filter_by_commitment": 1,
"interslot_updates": 1
},
"commitment": 2,
"from_slot": 139000000,
"ping": {
"id": 123
}
}
确认级别
所有订阅都支持以下确认级别:PROCESSED:由当前节点处理 (0)CONFIRMED:Alpenglow 下“最终确认”的兼容性别名 (1)FINALIZED:由集群永久确认;新代码建议使用此值 (2)
响应结构
订阅响应包括:filters:与此更新匹配的过滤器名称- 以下更新类型之一:
account:账户数据、所有者、lamports、可执行状态等slot:时隙信息和状态更新transaction:完整的交易详情、签名和元数据transaction_status:交易执行状态(成功/错误)block:包含交易、账户、奖励等信息的完整区块数据block_meta:不含完整交易详情的轻量级区块元数据entry:区块内的条目详情ping/pong:连接健康检查消息
created_at:创建更新时的时间戳
{
"filters": ["accounts"],
"account": {
"account": {
"pubkey": "BASE58_ENCODED_PUBKEY",
"lamports": 12345678,
"owner": "BASE58_ENCODED_OWNER",
"executable": false,
"rent_epoch": 361,
"data": "BASE64_ENCODED_DATA",
"write_version": 123,
"txn_signature": "BASE58_ENCODED_SIGNATURE"
},
"slot": 189554321,
"is_startup": false
},
"created_at": "2023-04-28T12:34:56.789Z"
}
{
"filters": ["slots"],
"slot": {
"slot": 189554321,
"parent": 189554320,
"status": 2,
"dead_error": null
},
"created_at": "2023-04-28T12:34:56.789Z"
}
{
"filters": ["transactions"],
"transaction": {
"transaction": {
"signature": "BASE58_ENCODED_SIGNATURE",
"is_vote": false,
"transaction": {
"signatures": ["BASE58_ENCODED_SIGNATURE"],
"message": {
"header": {
"num_required_signatures": 1,
"num_readonly_signed_accounts": 0,
"num_readonly_unsigned_accounts": 1
},
"account_keys": ["BASE58_ENCODED_PUBKEY1", "BASE58_ENCODED_PUBKEY2"],
"recent_blockhash": "BASE58_ENCODED_BLOCKHASH",
"instructions": [
{
"program_id_index": 1,
"accounts": [0],
"data": "BASE64_ENCODED_INSTRUCTION_DATA"
}
]
}
},
"meta": {
"err": null,
"fee": 5000,
"pre_balances": [10000000, 1],
"post_balances": [9995000, 1],
"pre_token_balances": [],
"post_token_balances": [],
"log_messages": ["Program log: Instruction executed"],
"rewards": []
},
"index": 2
},
"slot": 189554321
},
"created_at": "2023-04-28T12:34:56.789Z"
}
{
"filters": ["blocks_meta"],
"block_meta": {
"slot": 189554321,
"blockhash": "BASE58_ENCODED_BLOCKHASH",
"rewards": [
{
"pubkey": "BASE58_ENCODED_PUBKEY",
"lamports": 1785000,
"post_balance": 48589432109,
"reward_type": 0,
"commission": 10
}
],
"block_time": 1682684096,
"block_height": 185432109,
"parent_slot": 189554320,
"parent_blockhash": "BASE58_ENCODED_PARENT_BLOCKHASH",
"executed_transaction_count": 2576,
"entries_count": 16
},
"created_at": "2023-04-28T12:34:56.789Z"
}
{
"filters": ["entry"],
"entry": {
"slot": 189554321,
"index": 5,
"num_hashes": 8765432,
"hash": "BASE58_ENCODED_HASH",
"executed_transaction_count": 128,
"starting_transaction_index": 1024
},
"created_at": "2023-04-28T12:34:56.789Z"
}
{
"filters": [],
"pong": {
"id": 1
},
"created_at": "2023-04-28T12:34:56.789Z"
}