Merge branch 'master' into bitshares
Accepted changes from master
This commit is contained in:
commit
d083c5c9de
9 changed files with 284 additions and 9 deletions
|
|
@ -48,7 +48,7 @@
|
|||
#define GRAPHENE_DEFAULT_MAINTENANCE_SKIP_SLOTS 3 // number of slots to skip for maintenance interval
|
||||
|
||||
#define GRAPHENE_MIN_UNDO_HISTORY 10
|
||||
#define GRAPHENE_MAX_UNDO_HISTORY 1000
|
||||
#define GRAPHENE_MAX_UNDO_HISTORY 10000
|
||||
|
||||
#define GRAPHENE_MIN_BLOCK_SIZE_LIMIT (GRAPHENE_MIN_TRANSACTION_SIZE_LIMIT*5) // 5 transactions per block
|
||||
#define GRAPHENE_MIN_TRANSACTION_EXPIRATION_LIMIT (GRAPHENE_MAX_BLOCK_INTERVAL * 5) // 5 transactions per block
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ def dump_json(obj, out, pretty):
|
|||
return
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Remove entities from snapshot")
|
||||
parser = argparse.ArgumentParser(description="Apply a patch file to a JSON object")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-i", "--input", metavar="IN", default="-", help="input filename (default: stdin)")
|
||||
parser.add_argument("-d", "--delta", metavar="DELTA", nargs="+", help="list of delta file(s) to apply")
|
||||
|
|
@ -32,10 +32,10 @@ def main():
|
|||
patch = json.load(f)
|
||||
for k, v in patch.get("append", {}).items():
|
||||
genesis[k].extend(v)
|
||||
print("appended {n} items to {k}".format(n=len(v), k=k))
|
||||
sys.stderr.write("appended {n} items to {k}\n".format(n=len(v), k=k))
|
||||
for k, v in patch.get("replace", {}).items():
|
||||
genesis[k] = v
|
||||
print("replaced item {k}".format(k=k))
|
||||
sys.stderr.write("replaced item {k}\n".format(k=k))
|
||||
|
||||
if opts.output == "-":
|
||||
dump_json( genesis, sys.stdout, opts.pretty )
|
||||
|
|
|
|||
40
programs/genesis_util/change_bitasset_owners.py
Executable file
40
programs/genesis_util/change_bitasset_owners.py
Executable file
|
|
@ -0,0 +1,40 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
|
||||
def dump_json(obj, out, pretty):
|
||||
if pretty:
|
||||
json.dump(obj, out, indent=2, sort_keys=True)
|
||||
else:
|
||||
json.dump(obj, out, separators=(",", ":"), sort_keys=True)
|
||||
return
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Change initial_assets owned by the witness-account to the committee-account")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-i", "--input", metavar="IN", default="-", help="input filename (default: stdin)")
|
||||
parser.add_argument("-p", "--pretty", action="store_true", default=False, help="pretty print output")
|
||||
opts = parser.parse_args()
|
||||
|
||||
if opts.input == "-":
|
||||
genesis = json.load(sys.stdin)
|
||||
else:
|
||||
with open(opts.input, "r") as f:
|
||||
genesis = json.load(f)
|
||||
|
||||
for asset in genesis["initial_assets"]:
|
||||
if asset["issuer_name"] == "witness-account":
|
||||
asset["issuer_name"] = "committee-account"
|
||||
|
||||
if opts.output == "-":
|
||||
dump_json( genesis, sys.stdout, opts.pretty )
|
||||
sys.stdout.flush()
|
||||
else:
|
||||
with open(opts.output, "w") as f:
|
||||
dump_json( genesis, f, opts.pretty )
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -13,7 +13,7 @@ def dump_json(obj, out, pretty):
|
|||
return
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Remove entities from snapshot")
|
||||
parser = argparse.ArgumentParser(description="Generate a patch file that adds init accounts")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-n", "--num", metavar="N", default=11, type=int, help="number of init witnesses")
|
||||
parser.add_argument("-p", "--pretty", action="store_true", default=False, help="pretty print output")
|
||||
|
|
@ -27,6 +27,7 @@ def main():
|
|||
|
||||
wit_accounts = []
|
||||
wit_wits = []
|
||||
committee = []
|
||||
|
||||
for i in range(opts.num):
|
||||
owner_str = subprocess.check_output(["programs/genesis_util/get_dev_key", opts.secret, "wit-owner-"+str(i)]).decode("utf-8")
|
||||
|
|
@ -45,13 +46,15 @@ def main():
|
|||
"owner_name" : "init"+str(i),
|
||||
"block_signing_key" : prod[0]["public_key"],
|
||||
})
|
||||
|
||||
committee.append({"owner_name" : "init"+str(i)})
|
||||
result = {
|
||||
"append" : {
|
||||
"initial_accounts" : wit_accounts },
|
||||
"replace" : {
|
||||
"initial_workers" : [],
|
||||
"initial_witnesses" : wit_wits,
|
||||
"initial_active_witnesses" : opts.num,
|
||||
"initial_worker_candidates" : [],
|
||||
"initial_witness_candidates" : wit_wits,
|
||||
"initial_committee_candidates" : committee,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
87
programs/genesis_util/prefix_accounts.py
Executable file
87
programs/genesis_util/prefix_accounts.py
Executable file
|
|
@ -0,0 +1,87 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
|
||||
def dump_json(obj, out, pretty):
|
||||
if pretty:
|
||||
json.dump(obj, out, indent=2, sort_keys=True)
|
||||
else:
|
||||
json.dump(obj, out, separators=(",", ":"), sort_keys=True)
|
||||
return
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Add a prefix to selected account names")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-i", "--input", metavar="IN", default="-", help="input filename (default: stdin)")
|
||||
parser.add_argument("-b", "--begin", metavar="PREFIX", default="", help="prefix to add")
|
||||
parser.add_argument("-p", "--pretty", action="store_true", default=False, help="pretty print output")
|
||||
opts = parser.parse_args()
|
||||
|
||||
if opts.input == "-":
|
||||
genesis = json.load(sys.stdin)
|
||||
else:
|
||||
with open(opts.input, "r") as f:
|
||||
genesis = json.load(f)
|
||||
|
||||
taken_names = set()
|
||||
unsettled_names = []
|
||||
name_map = {}
|
||||
prefix = opts.begin
|
||||
|
||||
for account in genesis["initial_accounts"]:
|
||||
is_prefixed = account["is_prefixed"]
|
||||
name = account["name"]
|
||||
if is_prefixed:
|
||||
unsettled_names.append(name)
|
||||
name_map[name] = name
|
||||
else:
|
||||
taken_names.add(name)
|
||||
|
||||
pass_num = 0
|
||||
while len(unsettled_names) > 0:
|
||||
num_resolved = 0
|
||||
pass_num += 1
|
||||
sys.stderr.write("attempting to resolve {n} names\n".format(n=len(unsettled_names)))
|
||||
if pass_num > 1:
|
||||
sys.stderr.write("names: {}\n".format("\n".join(unsettled_names)))
|
||||
new_unsettled_names = []
|
||||
for name in unsettled_names:
|
||||
new_name = prefix+name_map[name]
|
||||
name_map[name] = new_name
|
||||
if new_name in taken_names:
|
||||
new_unsettled_names.append(name)
|
||||
else:
|
||||
taken_names.add(name)
|
||||
num_resolved += 1
|
||||
sys.stderr.write("resolved {n} names\n".format(n=num_resolved))
|
||||
unsettled_names = new_unsettled_names
|
||||
|
||||
for account in genesis["initial_accounts"]:
|
||||
name = account["name"]
|
||||
account["name"] = name_map.get(name, name)
|
||||
del account["is_prefixed"]
|
||||
for asset in genesis["initial_assets"]:
|
||||
issuer_name = asset["issuer_name"]
|
||||
asset["issuer_name"] = name_map.get(issuer_name, issuer_name)
|
||||
for witness in genesis["initial_witness_candidates"]:
|
||||
owner_name = witness["owner_name"]
|
||||
witness["owner_name"] = name_map.get(owner_name, owner_name)
|
||||
for committee in genesis["initial_committee_candidates"]:
|
||||
owner_name = member["owner_name"]
|
||||
member["owner_name"] = name_map.get(owner_name, owner_name)
|
||||
for worker in genesis["initial_worker_candidates"]:
|
||||
owner_name = worker["owner_name"]
|
||||
worker["owner_name"] = name_map.get(owner_name, owner_name)
|
||||
|
||||
if opts.output == "-":
|
||||
dump_json( genesis, sys.stdout, opts.pretty )
|
||||
sys.stdout.flush()
|
||||
else:
|
||||
with open(opts.output, "w") as f:
|
||||
dump_json( genesis, f, opts.pretty )
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
44
programs/genesis_util/sort_objects.py
Executable file
44
programs/genesis_util/sort_objects.py
Executable file
|
|
@ -0,0 +1,44 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
|
||||
def dump_json(obj, out, pretty):
|
||||
if pretty:
|
||||
json.dump(obj, out, indent=2, sort_keys=True)
|
||||
else:
|
||||
json.dump(obj, out, separators=(",", ":"), sort_keys=True)
|
||||
return
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Sort initial_accounts and initial_assets by \"id\" member, then remove \"id\" member")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-i", "--input", metavar="IN", default="-", help="input filename (default: stdin)")
|
||||
parser.add_argument("-p", "--pretty", action="store_true", default=False, help="pretty print output")
|
||||
opts = parser.parse_args()
|
||||
|
||||
if opts.input == "-":
|
||||
genesis = json.load(sys.stdin)
|
||||
else:
|
||||
with open(opts.input, "r") as f:
|
||||
genesis = json.load(f)
|
||||
|
||||
genesis["initial_assets"].sort( key=lambda e : e["id"] )
|
||||
genesis["initial_accounts"].sort( key=lambda e : e["id"] )
|
||||
|
||||
for e in genesis["initial_assets"]:
|
||||
del e["id"]
|
||||
for e in genesis["initial_accounts"]:
|
||||
del e["id"]
|
||||
|
||||
if opts.output == "-":
|
||||
dump_json( genesis, sys.stdout, opts.pretty )
|
||||
sys.stdout.flush()
|
||||
else:
|
||||
with open(opts.output, "w") as f:
|
||||
dump_json( genesis, f, opts.pretty )
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
43
programs/genesis_util/unprefix_asset_owners.py
Executable file
43
programs/genesis_util/unprefix_asset_owners.py
Executable file
|
|
@ -0,0 +1,43 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
|
||||
def dump_json(obj, out, pretty):
|
||||
if pretty:
|
||||
json.dump(obj, out, indent=2, sort_keys=True)
|
||||
else:
|
||||
json.dump(obj, out, separators=(",", ":"), sort_keys=True)
|
||||
return
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Set is_prefixed=false for all asset owners")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-i", "--input", metavar="IN", default="-", help="input filename (default: stdin)")
|
||||
parser.add_argument("-p", "--pretty", action="store_true", default=False, help="pretty print output")
|
||||
opts = parser.parse_args()
|
||||
|
||||
if opts.input == "-":
|
||||
genesis = json.load(sys.stdin)
|
||||
else:
|
||||
with open(opts.input, "r") as f:
|
||||
genesis = json.load(f)
|
||||
|
||||
asset_owners = set()
|
||||
for asset in genesis["initial_assets"]:
|
||||
asset_owners.add(asset["issuer_name"])
|
||||
for account in genesis["initial_accounts"]:
|
||||
if account["name"] in asset_owners:
|
||||
account["is_prefixed"] = False
|
||||
|
||||
if opts.output == "-":
|
||||
dump_json( genesis, sys.stdout, opts.pretty )
|
||||
sys.stdout.flush()
|
||||
else:
|
||||
with open(opts.output, "w") as f:
|
||||
dump_json( genesis, f, opts.pretty )
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
58
programs/genesis_util/unprefix_names.py
Executable file
58
programs/genesis_util/unprefix_names.py
Executable file
|
|
@ -0,0 +1,58 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import sys
|
||||
|
||||
def dump_json(obj, out, pretty):
|
||||
if pretty:
|
||||
json.dump(obj, out, indent=2, sort_keys=True)
|
||||
else:
|
||||
json.dump(obj, out, separators=(",", ":"), sort_keys=True)
|
||||
return
|
||||
|
||||
def load_names(infile):
|
||||
names = set()
|
||||
for line in infile:
|
||||
if '#' in line:
|
||||
line = line[:line.index('#')]
|
||||
line = line.strip()
|
||||
if line == "":
|
||||
continue
|
||||
names.add(line)
|
||||
return names
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Set is_prefixed=False for a list of names")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-i", "--input", metavar="IN", default="-", help="input filename (default: stdin)")
|
||||
parser.add_argument("-n", "--names", metavar="NAMES", help="list of names to unprefix")
|
||||
parser.add_argument("-p", "--pretty", action="store_true", default=False, help="pretty print output")
|
||||
opts = parser.parse_args()
|
||||
|
||||
if opts.input == "-":
|
||||
genesis = json.load(sys.stdin)
|
||||
else:
|
||||
with open(opts.input, "r") as f:
|
||||
genesis = json.load(f)
|
||||
|
||||
if opts.names == "-":
|
||||
names = load_names(sys.stdin)
|
||||
else:
|
||||
with open(opts.names, "r") as f:
|
||||
names = load_names(f)
|
||||
|
||||
for account in genesis["initial_accounts"]:
|
||||
if account["name"] in names:
|
||||
account["is_prefixed"] = False
|
||||
|
||||
if opts.output == "-":
|
||||
dump_json( genesis, sys.stdout, opts.pretty )
|
||||
sys.stdout.flush()
|
||||
else:
|
||||
with open(opts.output, "w") as f:
|
||||
dump_json( genesis, f, opts.pretty )
|
||||
return
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
|
@ -26,7 +26,7 @@ def load_names(infile):
|
|||
return names
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Remove entities from snapshot")
|
||||
parser = argparse.ArgumentParser(description="Upgrade a list of members")
|
||||
parser.add_argument("-o", "--output", metavar="OUT", default="-", help="output filename (default: stdout)")
|
||||
parser.add_argument("-i", "--input", metavar="IN", default="-", help="input filename (default: stdin)")
|
||||
parser.add_argument("-n", "--names", metavar="NAMES", default="", help="file containing names to upgrade")
|
||||
|
|
|
|||
Loading…
Reference in a new issue