Select Git revision
functions.py 2.63 KiB
import json
from symbol import parameters
from urllib.request import urlopen
import base58
from substrateinterface import Keypair, KeypairType
def get_identities_bloc():
# Get Dex idty data
idty_data = load_json('dex_data/idty.json')
# Get identities names by pubkey
identity_names = {}
for l in idty_data:
pubkey = l['key']
for m in l['value']:
identity_names.update({pubkey: m['uid']})
# Get g1stats balances data
g1stats_data = load_json("https://g1-stats.axiom-team.fr/data/forbes.json", True)
idty_balance = {}
for k in g1stats_data:
pubkey = k['pubkey']
balance = k['balance'] * 100
if balance < 0: balance = 0
idty_balance.update({pubkey: int(balance)})
# Get Dex certs data
certs_data = load_json('dex_data/certs.json')
# Generate identities Ğ1v2 genesis json bloc
identities = {}
for i in certs_data:
pubkey = i['key']
if pubkey not in identity_names: continue
if pubkey not in idty_balance: continue
idty_name = identity_names[pubkey]
certs_received = []
for j in i['value']['received']:
r_username = identity_names[j]
if r_username == None: continue
certs_received.append(r_username)
identities.update({idty_name: {}})
identities[idty_name].update({'balance': idty_balance[pubkey]})
identities[idty_name].update({'certs': certs_received})
identities[idty_name].update({'pubkey': v1PubkeyToV2Address(pubkey)})
return identities
# Utility
def v1PubkeyToV2Address(pubkey):
pubkey_bytes = base58.b58decode(pubkey)
pubkey_lenght = len(pubkey_bytes)
# Add 0 head byte to pubkey so as to reach 32 bytes
if pubkey_lenght < 32:
pubkey_bytes = bytes([0]*(32-pubkey_lenght)) + pubkey_bytes
# get incomplete Substrate keypair (only public key) from public key bytes
keypair = Keypair(public_key=pubkey_bytes, ss58_format=42, crypto_type=KeypairType.ED25519)
# return V2 address
return keypair.ss58_address
def load_json(data, isUrl = False):
if isUrl:
get_data = urlopen(data)
else:
get_data = open(data)
return json.load(get_data)
# def progressbar(it, prefix="", size=60, out=sys.stdout):
# count = len(it)
# def show(j):
# x = int(size*j/count)
# print("{}[{}{}] {}/{}".format(prefix, "#"*x, "."*(size-x), j, count),
# end='\r', file=out, flush=True)
# show(0)
# for i, item in enumerate(it):
# yield item
# show(i+1)
# print("\n", flush=True, file=out)