Merge branch 'master' into bitshares

Accepted changes from master
This commit is contained in:
Daniel Larimer 2015-10-14 16:22:53 -04:00
commit d083c5c9de
9 changed files with 284 additions and 9 deletions

View file

@ -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

View file

@ -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 )

View 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()

View file

@ -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,
}
}

View 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()

View 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()

View 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()

View 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()

View file

@ -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")