---
tags: game-of-chains
---
# Full chain validation
This document outlines the method used to verity that a validator signed on the last block of a consumer chain without having been jailed for downtime.
## 1. Check for downtime infractions
We scrape the `block_results` query for all the blocks in the provider chain that encompass the lifetime of the consumer chain.
We check the events in the `txs_results` field until we find an event of type `recv_packet`.
If the `recv_packet` includes a key called `infraction` in the `packet_data` field, we save the contents to a JSON file, including the destination port and channel to identify which consumer chain sent the infraction packet.
Example infraction message at block height 65063:
```bash=
curl -s http://provider-sentry-01.goc.earthball.xyz:27001/block_results\?height\=65063 | jq -r '.result.txs_results[0].events[7].attributes[0].value' | base64 --decode | jq '.'
{
"validator": {
"address": "53/ioNd4T5zlddNfCfuzO7Bcyes=",
"power": "18"
},
"valset_update_id": "65041",
"infraction": "INFRACTION_TYPE_DOWNTIME"
}
echo "53/ioNd4T5zlddNfCfuzO7Bcyes=" | base64 --decode | xxd -p
e77fe2a0d7784f9ce575d35f09fbb33bb05cc9eb
```
The address is base64 encoded hex.
The resulting JSON file would like this:
```
{
"last_height": 150000,
"validators": {
"cosmosvalcons1ual79gxh0p8eeet46d0sn7an8wc9ej0t2hav6n": {
"65063": {
"power": "18",
"valset_update_id": "65041",
"infraction": "INFRACTION_TYPE_DOWNTIME",
"packet_timeout_timestamp": "1670651466778617319",
"packet_src_port": "consumer",
"packet_src_channel": "channel-0",
"packet_dst_port": "provider",
"packet_dst_channel": "channel-0",
"packet_connection": "connection-0"
},
"67584": {
"power": "17",
"valset_update_id": "67578",
"infraction": "INFRACTION_TYPE_DOWNTIME",
"packet_timeout_timestamp": "1670664208951889777",
"packet_src_port": "consumer",
"packet_src_channel": "channel-0",
"packet_dst_port": "provider",
"packet_dst_channel": "channel-2",
"packet_connection": "connection-1"
}
},
"cosmosvalcons1yna32lcuhtjkq7f4nsnp9ln8wykwjepxhxsr5g": {
"62054": {
...
```
## 2. Collect the last block signatures
There are two options to collect the signatures of the last block.
### 2.1 Query the commit on the last block using RPC
The commit will include all the signatures, and we can look up the addresses in the provider chain to identify the validator by moniker or operator address.
```bash=
curl -s http://apollo-backup.goc.earthball.xyz:26657/commit\?height\=144970
{
"jsonrpc": "2.0",
"id": -1,
"result": {
"signed_header": {
"header": {
"version": {
"block": "11"
},
"chain_id": "apollo",
"height": "144970",
"time": "2022-11-20T02:23:13.093385376Z",
"last_block_id": {
"hash": "4F577EE8BF06F86DFEC00892F7B170090CFB381F4D59965F5E27F0A55C09C8B5",
"parts": {
"total": 1,
"hash": "21DCC3D683C62E9DD3E0EA950B1180446EFBD7D363DE2923F0D0673E3FD18079"
}
},
"last_commit_hash": "78DBC617C297FE3E3BB61564F9545BBC1F0935238F93A1FCF2118420206B4B8B",
"data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"validators_hash": "E9312E1DEAA9C30E2F3D9BFA1F7C3C73D099E12F40CEED8A46B2A845D03A9B66",
"next_validators_hash": "E9312E1DEAA9C30E2F3D9BFA1F7C3C73D099E12F40CEED8A46B2A845D03A9B66",
"consensus_hash": "048091BC7DDC283F77BFBF91D73C44DA58C3DF8A9CBC867405D8B7F3DAADA22F",
"app_hash": "86987749246EEC0351286F68312F2645B77E9BA75DF5C921D0CD0C45AB232DF6",
"last_results_hash": "EF34FE354180BDD1F78041CEA41262A6A92DE2DFBFD55540A6576F3C1395A4C8",
"evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"proposer_address": "6A3CACEAEA586C9AF3051249D6FF34942835DF10"
},
"commit": {
"height": "144970",
"round": 0,
"block_id": {
"hash": "4F9DE74B250ACED8DBF6F83D6845BA05E7A73ECF9443853863044271D098A124",
"parts": {
"total": 1,
"hash": "14F804805B3BA3D38524C3B7167829423BBA9004539F33C8546D5D2D0FD16E6B"
}
},
"signatures": [
{
"block_id_flag": 2,
"validator_address": "6A3CACEAEA586C9AF3051249D6FF34942835DF10",
"timestamp": "2022-11-20T02:23:18.173035456Z",
"signature": "odyFsI9MSTg19H8pgiPiT8e1zknj5+rQJlO75+9dE+59+ckuiapRzIWEyRSu5JolRFoYA4vvraOiR3e42PKaDw=="
},
{
"block_id_flag": 2,
"validator_address": "0DA35960AC73947F415949EDAF885E1A9A186370",
"timestamp": "2022-11-20T02:23:18.349468641Z",
"signature": "lt8hHXP1vFcfCWvet3jNghD3c1YBDGFSWsVhpwLafh4SuFMr3plXAeBSGE6gxGRcYXiyuJFsf0tucOroG6YKBg=="
},
```
A potential risk with using this option only is that if the consumer chain stops and the binary restarts, we will not be able to query the commit again because the RPC endpoint will no longer be available.
### 2.2 Save the last commit every time a new block event is sent
We can use a websocket subscription to an endpoint and save the signatures to a file every time the NewBlock event is received.
Websocket subscription:
```
< {
"jsonrpc": "2.0",
"id": 1,
"result": {
"query": "tm.event='NewBlock'",
"data": {
"type": "tendermint/event/NewBlock",
"value": {
"block": {
"header": {
"version": {
"block": "11"
},
"chain_id": "apollo",
"height": "150",
"time": "2022-11-17T20:50:09.213525618Z",
"last_block_id": {
"hash": "4B1CB438058C50373703765B2A7F935F2E357D0FF3EDF339F880BB8C03ED74C5",
"parts": {
"total": 1,
"hash": "61B3AC44A1A9DA7D0C272C752C564DC7084C48002C0EC24CCE00AB48FF6351EB"
}
},
"last_commit_hash": "1E3D5E2A79A1364E598EC9EB55E7DF79B9D4E08D1089E84AE9F45C608FF47CFF",
"data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"validators_hash": "37492F0C1D6BC4D52BD3EDFEA9C4B8DFAF94832063FA3869BDBDCD3CC12BD764",
"next_validators_hash": "37492F0C1D6BC4D52BD3EDFEA9C4B8DFAF94832063FA3869BDBDCD3CC12BD764",
"consensus_hash": "048091BC7DDC283F77BFBF91D73C44DA58C3DF8A9CBC867405D8B7F3DAADA22F",
"app_hash": "8D83E96742AA5B251E7D52B1D9CD95715D6973D9EEDB844AC8C2D6EE1155E38D",
"last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"proposer_address": "6A3CACEAEA586C9AF3051249D6FF34942835DF10"
},
"data": {
"txs": []
},
"evidence": {
"evidence": []
},
"last_commit": {
"height": "149",
"round": 0,
"block_id": {
"hash": "4B1CB438058C50373703765B2A7F935F2E357D0FF3EDF339F880BB8C03ED74C5",
"parts": {
"total": 1,
"hash": "61B3AC44A1A9DA7D0C272C752C564DC7084C48002C0EC24CCE00AB48FF6351EB"
}
},
"signatures": [
{
"block_id_flag": 2,
"validator_address": "6A3CACEAEA586C9AF3051249D6FF34942835DF10",
"timestamp": "2022-11-17T20:50:09.213525618Z",
"signature": "ojHrJCwF4ebFDTCZZF6xIm1tX3ciT4mHbidIXxItdaug7uif9g26m2AHcZIvHczLgeSsy/xllfiGKthpJ3dGAg=="
}
]
}
},
"result_begin_block": {
"events": []
},
"result_end_block": {
"validator_updates": [],
"consensus_param_updates": {
"block": {
"max_bytes": "22020096",
"max_gas": "-1"
},
"evidence": {
"max_age_num_blocks": "100000",
"max_age_duration": "172800000000000",
"max_bytes": "1048576"
},
"validator": {
"pub_key_types": [
"ed25519"
]
}
},
"events": [
{
"type": "coin_spent",
"attributes": [
{
"key": "c3BlbmRlcg==",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "",
"index": true
}
]
},
{
"type": "coin_received",
"attributes": [
{
"key": "cmVjZWl2ZXI=",
"value": "Y29zbW9zMXg2OWR6MGMwZW13OG0yYzZrcDV2NmMwOGtnanhtdTMwZDI1OTVu",
"index": true
},
{
"key": "YW1vdW50",
"value": "",
"index": true
}
]
},
{
"type": "transfer",
"attributes": [
{
"key": "cmVjaXBpZW50",
"value": "Y29zbW9zMXg2OWR6MGMwZW13OG0yYzZrcDV2NmMwOGtnanhtdTMwZDI1OTVu",
"index": true
},
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "",
"index": true
}
]
},
{
"type": "message",
"attributes": [
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
}
]
},
{
"type": "coin_spent",
"attributes": [
{
"key": "c3BlbmRlcg==",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "",
"index": true
}
]
},
{
"type": "coin_received",
"attributes": [
{
"key": "cmVjZWl2ZXI=",
"value": "Y29zbW9zMXl3dGFuc3k2c3MwanRxOGNrcmN2Nmp6a3BzOHloOG1mYzh4dWNx",
"index": true
},
{
"key": "YW1vdW50",
"value": "",
"index": true
}
]
},
{
"type": "transfer",
"attributes": [
{
"key": "cmVjaXBpZW50",
"value": "Y29zbW9zMXl3dGFuc3k2c3MwanRxOGNrcmN2Nmp6a3BzOHloOG1mYzh4dWNx",
"index": true
},
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "",
"index": true
}
]
},
{
"type": "message",
"attributes": [
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
}
]
}
]
}
}
},
"events": {
"coin_received.amount": [
"",
""
],
"transfer.sender": [
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta",
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta"
],
"transfer.amount": [
"",
""
],
"message.sender": [
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta",
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta"
],
"tm.event": [
"NewBlock"
],
"coin_spent.spender": [
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta",
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta"
],
"coin_spent.amount": [
"",
""
],
"coin_received.receiver": [
"cosmos1x69dz0c0emw8m2c6kp5v6c08kgjxmu30d2595n",
"cosmos1ywtansy6ss0jtq8ckrcv6jzkps8yh8mfc8xucq"
],
"transfer.recipient": [
"cosmos1x69dz0c0emw8m2c6kp5v6c08kgjxmu30d2595n",
"cosmos1ywtansy6ss0jtq8ckrcv6jzkps8yh8mfc8xucq"
]
}
}
}
< {
"jsonrpc": "2.0",
"id": 1,
"result": {
"query": "tm.event='NewBlock'",
"data": {
"type": "tendermint/event/NewBlock",
"value": {
"block": {
"header": {
"version": {
"block": "11"
},
"chain_id": "apollo",
"height": "151",
"time": "2022-11-17T20:50:14.240502893Z",
"last_block_id": {
"hash": "6177CA90A76C6295C845E36A52A034C10FA21B632BB6C8BE06D415739EA2AACC",
"parts": {
"total": 1,
"hash": "08547730AA0DDF01FBA408426DB512A7406189E23726AE53A4FEB3EB796DAE68"
}
},
"last_commit_hash": "6197442EE14305AA05291ACAD15AAB8CDC47A673957A906E8EF7FE3C526FC5BD",
"data_hash": "ED68C0914F07E4A3C6CFFA00F29B23414CE1591D9CCF349C0C3AB73DD9B91069",
"validators_hash": "37492F0C1D6BC4D52BD3EDFEA9C4B8DFAF94832063FA3869BDBDCD3CC12BD764",
"next_validators_hash": "37492F0C1D6BC4D52BD3EDFEA9C4B8DFAF94832063FA3869BDBDCD3CC12BD764",
"consensus_hash": "048091BC7DDC283F77BFBF91D73C44DA58C3DF8A9CBC867405D8B7F3DAADA22F",
"app_hash": "4C6708DD32D3B53E74D1BB91A68666815A28E30D499343592B4835F58DB84CEB",
"last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
"proposer_address": "6A3CACEAEA586C9AF3051249D6FF34942835DF10"
},
"data": {
"txs": [
"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"
]
},
"evidence": {
"evidence": []
},
"last_commit": {
"height": "150",
"round": 0,
"block_id": {
"hash": "6177CA90A76C6295C845E36A52A034C10FA21B632BB6C8BE06D415739EA2AACC",
"parts": {
"total": 1,
"hash": "08547730AA0DDF01FBA408426DB512A7406189E23726AE53A4FEB3EB796DAE68"
}
},
"signatures": [
{
"block_id_flag": 2,
"validator_address": "6A3CACEAEA586C9AF3051249D6FF34942835DF10",
"timestamp": "2022-11-17T20:50:14.240502893Z",
"signature": "Ag/U+cjKdDyZmxoTYBfo/iPsmNJ99Q8onkSUkafO4wCiVQh0YldrsbMN7UssT/ea7mVQm8ax4K506kZLoTbMAQ=="
}
]
}
},
"result_begin_block": {
"events": []
},
"result_end_block": {
"validator_updates": [],
"consensus_param_updates": {
"block": {
"max_bytes": "22020096",
"max_gas": "-1"
},
"evidence": {
"max_age_num_blocks": "100000",
"max_age_duration": "172800000000000",
"max_bytes": "1048576"
},
"validator": {
"pub_key_types": [
"ed25519"
]
}
},
"events": [
{
"type": "coin_spent",
"attributes": [
{
"key": "c3BlbmRlcg==",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "MTA3dXBvbA==",
"index": true
}
]
},
{
"type": "coin_received",
"attributes": [
{
"key": "cmVjZWl2ZXI=",
"value": "Y29zbW9zMXg2OWR6MGMwZW13OG0yYzZrcDV2NmMwOGtnanhtdTMwZDI1OTVu",
"index": true
},
{
"key": "YW1vdW50",
"value": "MTA3dXBvbA==",
"index": true
}
]
},
{
"type": "transfer",
"attributes": [
{
"key": "cmVjaXBpZW50",
"value": "Y29zbW9zMXg2OWR6MGMwZW13OG0yYzZrcDV2NmMwOGtnanhtdTMwZDI1OTVu",
"index": true
},
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "MTA3dXBvbA==",
"index": true
}
]
},
{
"type": "message",
"attributes": [
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
}
]
},
{
"type": "coin_spent",
"attributes": [
{
"key": "c3BlbmRlcg==",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "MzZ1cG9s",
"index": true
}
]
},
{
"type": "coin_received",
"attributes": [
{
"key": "cmVjZWl2ZXI=",
"value": "Y29zbW9zMXl3dGFuc3k2c3MwanRxOGNrcmN2Nmp6a3BzOHloOG1mYzh4dWNx",
"index": true
},
{
"key": "YW1vdW50",
"value": "MzZ1cG9s",
"index": true
}
]
},
{
"type": "transfer",
"attributes": [
{
"key": "cmVjaXBpZW50",
"value": "Y29zbW9zMXl3dGFuc3k2c3MwanRxOGNrcmN2Nmp6a3BzOHloOG1mYzh4dWNx",
"index": true
},
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
},
{
"key": "YW1vdW50",
"value": "MzZ1cG9s",
"index": true
}
]
},
{
"type": "message",
"attributes": [
{
"key": "c2VuZGVy",
"value": "Y29zbW9zMTd4cGZ2YWttMmFtZzk2MnlsczZmODR6M2tlbGw4YzVsc2VycXRh",
"index": true
}
]
}
]
}
}
},
"events": {
"coin_spent.spender": [
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta",
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta"
],
"coin_spent.amount": [
"107upol",
"36upol"
],
"coin_received.receiver": [
"cosmos1x69dz0c0emw8m2c6kp5v6c08kgjxmu30d2595n",
"cosmos1ywtansy6ss0jtq8ckrcv6jzkps8yh8mfc8xucq"
],
"coin_received.amount": [
"107upol",
"36upol"
],
"transfer.recipient": [
"cosmos1x69dz0c0emw8m2c6kp5v6c08kgjxmu30d2595n",
"cosmos1ywtansy6ss0jtq8ckrcv6jzkps8yh8mfc8xucq"
],
"transfer.sender": [
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta",
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta"
],
"message.sender": [
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta",
"cosmos17xpfvakm2amg962yls6f84z3kell8c5lserqta"
],
"tm.event": [
"NewBlock"
],
"transfer.amount": [
"107upol",
"36upol"
]
}
}
}
```