通过 Websocket 接收区块链网络上发生的事件。
API
GET /api/v1/networks/{network}/events/subscribe
Url Path 参数 | 描述 |
---|---|
network | 通道名称 |
access_token | 访问REST API所需的Access Token |
source | 订阅的事件类型 (“Tx”, “Config”, “Contract”, “Block”)。订阅多种类型时,使用逗号(,)分割多个订阅类型,”*“ 表示订阅所有类型的事件 |
消息内容
名称 | 类型 | 描述 |
---|---|---|
id | String | 事件ID,通道内唯一 |
name | String | 事件名称 |
type | EventType | 事件类型(“Tx”, “Config”, “Contract”, “Block”): Tx:发生了一笔交易; Config:区块链系统配置发生变更; Contract:交易中用户智能合约设置的事件; Block:产生了新的区块; |
network | String | 通道名称 |
instance_id | String | 订阅事件的实例ID,组织内唯一 |
content | Object | 当EventType为“Tx”或“Config” 时,该值为Transaction结构; 当EventType为“Contract”时,该值为String类型,内容为经过Base64编码的事件内容; 当EventType为“Block”时,该值为Block结构; |
Transaction
名称 | 类型 | 描述 |
---|---|---|
id | String | 交易ID,当交易类型是配置变更时,该值为空 |
state | String | 交易状态,”VALID” 表示合法交易,其它值表示非法交易 |
from | String | 交易的发起者,格式为 <组织MSP>.<用户名> |
to | String | 交易调用的目标链码名称,当交易类型是配置变更时,该值为空 |
input | String | 经过JSON编码的链码调用参数,配置变更时为JSON编码的common.ConfigUpdate |
events | List<Event> | 交易所产生的区块链事件列表 |
data | Object | 交易的详细内容,数据结构为交易中的common.Payload |
Block
名称 | 类型 | 描述 |
---|---|---|
number | Integer | 区块块高 |
hash | String | hex 编码后的当前区块hash值 |
previous_hash | String | hex 编码后的上一区块hash值 |
create_time | Integer | 当前区块创建时间,Unix秒级时间戳 |
transactions | List<String> | 当前区块中,包含的所有交易的交易ID列表 |
示例
请求示例
wscat -c "ws://your.gateway.endpoint/api/v1/networks/channel3/events/subscribe?access_token=<Your URL Encoded Access Token>&source=%2A"
正常推送消息示例
{
"type": "Block",
"platform": "Fabric",
"instance_id": "csi-e2ehmfqasth-bcw7tzao2dzeo",
"network": "channel3",
"id": "block-282",
"name": "282",
"content": {
"number": 282,
"hash": "f7b42d07509c463f8e8cde0fcc8325b42e8bf7fd6a7a24dd207eed297fcd6358",
"create_time": 1581589504,
"previous_hash": "b8de08d49217c1d8f4ea398c8c61fe2a5bc46ec7bb6c95f44dfd29eaf6c272ab",
"transactions": [
"dc90b701e27afa5120ee003ef9d51b86a2ff9e1a9d8537f65387bde6d92c5cba"
]
}
}
错误码
请参考错误码。