このトピックでは、WebSocket を使用してブロックチェーンネットワークで発生したイベントを受信する方法について説明します。
API
GET /api/v1/networks/{network}/events/subscribe
| URL パス パラメーター | 説明 |
|---|---|
| network | チャンネルの名前。 |
| access_token | REST API へのアクセスに使用されるアクセストークン。 |
| 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 構造です。 |
トランザクション
| パラメーター | タイプ | 説明 |
|---|---|---|
| id | String | トランザクションの ID。EventType が Config に設定されている場合、値は空です。 |
| state | String | トランザクションの状態。“VALID” は、トランザクションが正当であることを示します。その他の値は、トランザクションが不正であることを示します。 |
| from | String | トランザクションの開始者。<Organization MSP>. <Username.> の形式です。 |
| to | String | トランザクションによって呼び出されるターゲット チェーンコード。EventType が Config に設定されている場合、値は空です。 |
| input | String | JSON エンコード後のチェーンコード呼び出しパラメーター。EventType が Config に設定されている場合、値は JSON エンコードされた common.ConfigUpdate です。 |
| events | List<Event> | トランザクションによって生成されたブロックチェーンイベントリスト。 |
| data | Object | トランザクションの詳細な内容。データ構造は common.Payload です。 |
ブロック
| パラメーター | タイプ | 説明 |
|---|---|---|
| number | Integer | ブロックの高さ。 |
| hash | String | 現在のブロックのハッシュ値 (16 進エンコード後)。 |
| previous_hash | String | 最後のブロックのハッシュ値 (16 進エンコード後)。 |
| create_time | Integer | 現在のブロックの作成時刻。エポックタイム 1970 年 1 月 1 日 00:00:00 UTC から経過したミリ秒数を表す UNIX タイムスタンプです。 |
| transactions | List<String> | 現在のブロックのトランザクション ID リスト。 |
例
リクエストの例
wscat -c "ws://your.gateway.endpoint/api/v1/networks/channel3/events/subscribe?access_token=<URL エンコードされたアクセストークン>&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"
]
}
}エラーコード
詳細については、「エラーコード」をご参照ください。