-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate_finality_signatures.py
36 lines (30 loc) · 1.29 KB
/
generate_finality_signatures.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import config
from jsonrpcclient import request
def get_block(block_hash: str) -> str:
result = request(config.RPC_SERVER_URL,
"chain_get_block",
{"Hash": block_hash})
return result.data.result
def generate_finality_signatures_for_block(block_hash):
""" returns array of FinalitySignature event messages for a block """
result = get_block(block_hash)
block = result["block"]
era_id = int(block["header"]["era_id"])
hash = block["hash"]
# When hash is bad, chain_get_block returns last block
assert block_hash == hash
proofs = block["proofs"]
finality_signatures = []
for proof in proofs:
public_key = proof["public_key"]
signature = proof["signature"]
finality_signatures.append({"FinalitySignature":
{"block_hash": block_hash,
"era_id": era_id,
"signature": signature,
"public_key": public_key}
})
return finality_signatures
if __name__ == '__main__':
for fs in generate_finality_signatures_for_block('16c3d7acbe10c417687b574ef20f48352fb2b5842c434a66edd5dda894c7f26e'):
print(fs)