-
Notifications
You must be signed in to change notification settings - Fork 0
/
reformat.py
38 lines (33 loc) · 1.3 KB
/
reformat.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
37
38
import argparse
import json
import os
import re
def extract_conspub(bech32_out):
validator_conspub = re.search(r'Bech32 Validator Consensus: (.*)\n', bech32_out).group(1)
return validator_conspub
def base64_to_bech32(pubkey):
cmd = f"docker run --rm -it cosmos-gaiadebug:v2.0.1 pubkey {pubkey}"
bech32_out = os.popen(cmd).read()
return extract_conspub(bech32_out)
def main():
parser = argparse.ArgumentParser(description='Reformat validator keys')
parser.add_argument('pre_genesis')
args = parser.parse_args()
# Open the File
with open(args.pre_genesis, 'r') as input_file:
pre_data = json.load(input_file)
# Final Validators
validators = []
# Get the validators
pre_validators = pre_data['app_state']['staking']['validators']
for pre_validator in pre_validators:
pubkey_base64 = pre_validator['consensus_pubkey']['value']
valconspub = base64_to_bech32(pubkey_base64)
pre_validator['consensus_pubkey'] = valconspub
validators.append(pre_validator)
# Set it in data
pre_data['app_state']['staking']['validators'] = validators
with open('genesis.json', 'w') as output_file:
json.dump(pre_data, output_file)
if __name__ == "__main__":
main()