record_rep_weights to py3 (#2732)

This commit is contained in:
Russel Waters 2020-04-24 15:31:26 -04:00 committed by GitHub
commit cf6cf11abb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1,6 +1,5 @@
import requests
import argparse
import string
from binascii import unhexlify
from base64 import b32decode
from binascii import hexlify, unhexlify
@ -17,49 +16,49 @@ r = requests.post(args.rpc, data='{"action":"representatives"}')
p = r.json()
reps = [ ]
tbl = string.maketrans('13456789abcdefghijkmnopqrstuwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567')
tbl = bytes.maketrans(b'13456789abcdefghijkmnopqrstuwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567')
for acc in p["representatives"]:
reps.append({
'account': acc,
'weight': long(p["representatives"][acc])
'weight': int(p["representatives"][acc])
})
r = requests.post(args.rpc, data='{"action":"block_count"}')
p = r.json()
block_height = max(0, int(p["count"]) - args.cutoff)
print "cutoff block height is %d" % block_height
print("cutoff block height is %d" % block_height)
reps.sort(key=lambda x: x["weight"], reverse=True)
supplymax = long(0)
supplymax = int(0)
for rep in reps:
supplymax += rep["weight"]
supplymax /= long('1000000000000000000000000000000')
supplymax = long(supplymax * args.limit)
supplymax *= long('1000000000000000000000000000000')
supplymax /= int('1000000000000000000000000000000')
supplymax = int(supplymax * args.limit)
supplymax *= int('1000000000000000000000000000000')
with open(args.output, 'wb') as of:
of.write(unhexlify("%032X" % block_height))
total = long(0)
total = int(0)
count = 0
for rep in reps:
if rep["weight"] == 0:
break
acc_val = long(hexlify(b32decode(rep["account"].encode("utf-8").replace("nano_", "").translate(tbl) + "====")), 16)
acc_val = int(hexlify(b32decode(rep["account"].encode('utf-8').replace(b"nano_", b"").translate(tbl) + b"====")), 16)
acc_bytes = unhexlify("%064X" % (((acc_val >> 36) & ((1 << 256) - 1))))
weight_bytes = unhexlify("%032X" % rep["weight"])
of.write(acc_bytes)
of.write(weight_bytes)
total += rep["weight"]
count += 1
print rep["account"] + ": " + str(rep["weight"])
print(rep["account"] + ": " + str(rep["weight"]))
if total >= supplymax:
break
print "wrote %d rep weights" % count
print "max supply %d" % supplymax
print ("wrote %d rep weights" % count)
print ("max supply %d" % supplymax)
of.close()