Skip to content
Snippets Groups Projects
Select Git revision
  • fd02b1a8892465e7a03aab0cb6891f92323fa522
  • master default protected
  • hugo-add-cert-emission-block
  • duniter-v2s-issue-125-industrialize-releases
  • tuxmain/gdev
5 results

functions.py

Blame
  • 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)