全部产品

订阅事件

通过 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列表

示例

请求示例

  1. wscat -c "ws://your.gateway.endpoint/api/v1/networks/channel3/events/subscribe?access_token=<Your URL Encoded Access Token>&source=%2A"

正常推送消息示例

  1. {
  2. "type": "Block",
  3. "platform": "Fabric",
  4. "instance_id": "csi-e2ehmfqasth-bcw7tzao2dzeo",
  5. "network": "channel3",
  6. "id": "block-282",
  7. "name": "282",
  8. "content": {
  9. "number": 282,
  10. "hash": "f7b42d07509c463f8e8cde0fcc8325b42e8bf7fd6a7a24dd207eed297fcd6358",
  11. "create_time": 1581589504,
  12. "previous_hash": "b8de08d49217c1d8f4ea398c8c61fe2a5bc46ec7bb6c95f44dfd29eaf6c272ab",
  13. "transactions": [
  14. "dc90b701e27afa5120ee003ef9d51b86a2ff9e1a9d8537f65387bde6d92c5cba"
  15. ]
  16. }
  17. }

错误码

请参考错误码