Skip to content
This repository has been archived by the owner on Oct 17, 2022. It is now read-only.

Commit

Permalink
[crypto] Switch signature scheme to BLS + Add Networking key. (#857)
Browse files Browse the repository at this point in the history
* [crypto] switch to BLS
* [crypto] network changes
  • Loading branch information
punwai authored Sep 12, 2022
1 parent 2b77ef8 commit e40e37a
Show file tree
Hide file tree
Showing 65 changed files with 570 additions and 275 deletions.
24 changes: 13 additions & 11 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions Docker/entry.sh
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ fi
# Environment variables to use on the script
NODE_BIN="./bin/node"
PRIMARY_KEYS_PATH=${KEYS_PATH:="/validators/validator-$VALIDATOR_ID/primary-key.json"}
PRIMARY_NETWORK_KEYS_PATH=${KEYS_PATH:="/validators/validator-$VALIDATOR_ID/network-key.json"}
WORKER_KEYS_PATH=${KEYS_PATH:="/validators/validator-$VALIDATOR_ID/worker-key.json"}
COMMITTEE_PATH=${COMMITTEE_PATH:="/validators/committee.json"}
WORKERS_PATH=${WORKERS_PATH:="/validators/workers.json"}
Expand All @@ -38,6 +39,7 @@ if [[ "$NODE_TYPE" = "primary" ]]; then

$NODE_BIN $LOG_LEVEL run \
--primary-keys $PRIMARY_KEYS_PATH \
--primary-network-keys $PRIMARY_NETWORK_KEYS_PATH \
--worker-keys $WORKER_KEYS_PATH \
--committee $COMMITTEE_PATH \
--workers $WORKERS_PATH \
Expand All @@ -49,6 +51,7 @@ elif [[ "$NODE_TYPE" = "worker" ]]; then

$NODE_BIN $LOG_LEVEL run \
--primary-keys $PRIMARY_KEYS_PATH \
--primary-network-keys $PRIMARY_NETWORK_KEYS_PATH \
--worker-keys $WORKER_KEYS_PATH \
--committee $COMMITTEE_PATH \
--workers $WORKERS_PATH \
Expand Down
1 change: 1 addition & 0 deletions Docker/gen.validators.sh
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,7 @@ do
val=${target}/validator-${i}
mkdir -p ${val}/{db-primary,db-worker-0,logs}
${node} generate_keys --filename ${val}/key.json
${node} generate_network_keys --filename ${val}/network-key.json
done

cp validators/parameters.json ${target}/parameters.json
Expand Down
9 changes: 8 additions & 1 deletion Docker/scripts/gen.committee.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,16 @@ def main():
k = open("{}/validator-{:02d}/key.json".format(args.d, i)).read()
keys.append(json.loads(k))

network_keys = []
for i in range(args.n):
k = open("{}/validator-{:02d}/network-key.json".format(args.d, i)).read()
network_keys.append(json.loads(k))


temp = {}
for i, k in enumerate(keys):
for i, (k, nk) in enumerate(zip(keys, network_keys)):
temp[k['name']] = {
"network_key": nk['name'],
"primary": {
"primary_to_primary": "/dns/primary_{:02d}/tcp/3000/http".format(i),
"worker_to_primary": "/dns/primary_{:02d}/tcp/3001/http".format(i)
Expand Down
12 changes: 8 additions & 4 deletions Docker/validators/committee.json
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@
{
"authorities": {
"Zy82aSpF8QghKE4wWvyIoTWyLetCuUSfk2gxHEtwdbg=": {
"i9TwX9Z/CiFznIoO14nIUdJ9Wpo0o50o7tSGtmdhuB5hTK1h5WNvsmUOhc3pdgFaFfKhe1O1NNlTb+sraT0I+ZtOsJUrO5e5figU7XPj5tzRkTlJUoBPtjb1f3RbbXHj": {
"network_key": "TVvqbV9LvRfPslOSMFUNxm0w0PfH9ytSVkZuqKN0DtU=",
"primary": {
"primary_to_primary": "/dns/primary_0/tcp/3000/http",
"worker_to_primary": "/dns/primary_0/tcp/3001/http"
},
"stake": 1
},
"fbhvgLnet2HdE0NUITUpekQxdRRWKxbZczM6Qg55sP8=": {
"lEExVRsXRE2O5+Yhaunn0+yckZz249/OERxaTrCQZUIz7E4gmyGQWmKFEpBA2p8VCcAHvveCvupstx7Qp8/w1gpqo2kFRXqagO/IRDOfJiItmtVxzHWxlnSP/2XKSkZf": {
"network_key": "5EpwzXiTL8B2OuazfuHC9S9Hp0uRZFYElYj25ilVljM=",
"primary": {
"primary_to_primary": "/dns/primary_1/tcp/3000/http",
"worker_to_primary": "/dns/primary_1/tcp/3001/http"
},
"stake": 1
},
"noDjBFfXGqQioHTf6jEIPYthhUWCMsC12ZJ9DMh7Ujk=": {
"pF/T4zMSkvDcHkCuk4Q8jsjcS+vZb/yAj2d8/R7CLH10dP3UxQKjwIeTklXJk/nLDfUg3MN86jMPSO/+2JTqO46oE86XssCKK+SeQCjft+gL0EzdvNlBs5iEt1YGlsoK": {
"network_key": "Rd6StTmpiACXs/wN/pv5DtG9h+OImvplxD/xTU2sV0I=",
"primary": {
"primary_to_primary": "/dns/primary_2/tcp/3000/http",
"worker_to_primary": "/dns/primary_2/tcp/3001/http"
},
"stake": 1
},
"Z+K3OEI/eldyTTdp27mQFDdBPqjkss9wOkN6RceDTuM=": {
"ofwVakr2b+MoerCcQp+skTHfVVPOit575513sx443Cw7ESN6QxPcC6aWnhMUd/EwAI2mVImC4pKaE9G88vzA7B40X7SegLe1lFIJWE8Jyvds1yxWcnmESFF+L8ZLGI9i": {
"network_key": "6BHCB8duL285+IiyvcbLnozof/jElGmjYef5wHN9MXk=",
"primary": {
"primary_to_primary": "/dns/primary_3/tcp/3000/http",
"worker_to_primary": "/dns/primary_3/tcp/3001/http"
Expand Down
5 changes: 5 additions & 0 deletions Docker/validators/validator-0/network-key.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "TVvqbV9LvRfPslOSMFUNxm0w0PfH9ytSVkZuqKN0DtU=",
"secret": "2kRrHl/taJiAd+xzt0yykxexiqh0wOJ0NhpUYyZG280="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-0/primary-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "Zy82aSpF8QghKE4wWvyIoTWyLetCuUSfk2gxHEtwdbg=",
"secret": "mfxcM1O0t9GeCZges3sbHRQr63yRl9uDkIhlV66NxjM="
"type": "BLS12381KeyPair",
"name": "i9TwX9Z/CiFznIoO14nIUdJ9Wpo0o50o7tSGtmdhuB5hTK1h5WNvsmUOhc3pdgFaFfKhe1O1NNlTb+sraT0I+ZtOsJUrO5e5figU7XPj5tzRkTlJUoBPtjb1f3RbbXHj",
"secret": "VbmSNN5iStVTnN/Pq/P5EwjfeLhrrY5dILFR8A6l1xI="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-0/worker-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "hgeabM6XVJdIJQJjas05IiZAm2VFhtxwqIz0gDMYyjw=",
"secret": "odAwN+GmVs9BMtBDiWDGT5fcpMmMzzUMtE/szmVpEVk="
"type": "BLS12381KeyPair",
"name": "i9TwX9Z/CiFznIoO14nIUdJ9Wpo0o50o7tSGtmdhuB5hTK1h5WNvsmUOhc3pdgFaFfKhe1O1NNlTb+sraT0I+ZtOsJUrO5e5figU7XPj5tzRkTlJUoBPtjb1f3RbbXHj",
"secret": "VbmSNN5iStVTnN/Pq/P5EwjfeLhrrY5dILFR8A6l1xI="
}
5 changes: 5 additions & 0 deletions Docker/validators/validator-1/network-key.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "5EpwzXiTL8B2OuazfuHC9S9Hp0uRZFYElYj25ilVljM=",
"secret": "yP3ZZjwX0njXV5l4vgbXzErOizcVskF4xzrJZwfJRUQ="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-1/primary-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "fbhvgLnet2HdE0NUITUpekQxdRRWKxbZczM6Qg55sP8=",
"secret": "tLh0pgy0IQfDbsCn8DN2rkSKfWCHQxs1OKLdS0kpJds="
"type": "BLS12381KeyPair",
"name": "lEExVRsXRE2O5+Yhaunn0+yckZz249/OERxaTrCQZUIz7E4gmyGQWmKFEpBA2p8VCcAHvveCvupstx7Qp8/w1gpqo2kFRXqagO/IRDOfJiItmtVxzHWxlnSP/2XKSkZf",
"secret": "brYlYkS7Kl9Ew3xC7hl5Rv2hJU7xx1pTgvkThiNBIkU="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-1/worker-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "7o+0AxuS4muiCYxLOMT9pzdLug2LmrAzB7yLE7TrxwA=",
"secret": "a5IKgyaSAVRPtmzhvjGobSe5/gbFUi/2sF78DlLI/EE="
"type": "BLS12381KeyPair",
"name": "lEExVRsXRE2O5+Yhaunn0+yckZz249/OERxaTrCQZUIz7E4gmyGQWmKFEpBA2p8VCcAHvveCvupstx7Qp8/w1gpqo2kFRXqagO/IRDOfJiItmtVxzHWxlnSP/2XKSkZf",
"secret": "brYlYkS7Kl9Ew3xC7hl5Rv2hJU7xx1pTgvkThiNBIkU="
}
5 changes: 5 additions & 0 deletions Docker/validators/validator-2/network-key.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "Rd6StTmpiACXs/wN/pv5DtG9h+OImvplxD/xTU2sV0I=",
"secret": "KPigXDOul6tXan2pmfIk0J4wEYee+TQBB/siF6P5nTI="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-2/primary-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "noDjBFfXGqQioHTf6jEIPYthhUWCMsC12ZJ9DMh7Ujk=",
"secret": "p6NZvFtzHLViY16bPZQ/gvTXanwtMQ+iIVLzt0L3fBg="
"type": "BLS12381KeyPair",
"name": "pF/T4zMSkvDcHkCuk4Q8jsjcS+vZb/yAj2d8/R7CLH10dP3UxQKjwIeTklXJk/nLDfUg3MN86jMPSO/+2JTqO46oE86XssCKK+SeQCjft+gL0EzdvNlBs5iEt1YGlsoK",
"secret": "auDsbkQnuR4BzY076jZ8UQrUWk8Wk53+8FQ5yMNYqb4="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-2/worker-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "63HCaWWXpqB8fhrGgBSNy7XfbSpakrILoXA5DaaYx1o=",
"secret": "M6HIPZPJQbjLAY9BVCjKsGTWooW6a+HKgtmuFGDaJTo="
"type": "BLS12381KeyPair",
"name": "pF/T4zMSkvDcHkCuk4Q8jsjcS+vZb/yAj2d8/R7CLH10dP3UxQKjwIeTklXJk/nLDfUg3MN86jMPSO/+2JTqO46oE86XssCKK+SeQCjft+gL0EzdvNlBs5iEt1YGlsoK",
"secret": "auDsbkQnuR4BzY076jZ8UQrUWk8Wk53+8FQ5yMNYqb4="
}
5 changes: 5 additions & 0 deletions Docker/validators/validator-3/network-key.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "6BHCB8duL285+IiyvcbLnozof/jElGmjYef5wHN9MXk=",
"secret": "ifdVHBnI9J6bMbcbLZwzRb4T1fIzkGc2+LWitrGTwAM="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-3/primary-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "Z+K3OEI/eldyTTdp27mQFDdBPqjkss9wOkN6RceDTuM=",
"secret": "5txgo772aYLLWUmLi3zWaLDEM6Ey62wOik7mYyQbysw="
"type": "BLS12381KeyPair",
"name": "ofwVakr2b+MoerCcQp+skTHfVVPOit575513sx443Cw7ESN6QxPcC6aWnhMUd/EwAI2mVImC4pKaE9G88vzA7B40X7SegLe1lFIJWE8Jyvds1yxWcnmESFF+L8ZLGI9i",
"secret": "celbRnC5R3Ok8GHSvzFFlWt0TwBXFM2E27kha+/kCC4="
}
6 changes: 3 additions & 3 deletions Docker/validators/validator-3/worker-key.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"type": "Ed25519KeyPair",
"name": "cJbSCbB7f3l/Tmeix4Ts3Th8xS3TTh4ohnakHKhObmc=",
"secret": "X/l+9RaoDB7N8Efn1kQ02T6nvW9kQ1aP5SktR/4GZT4="
"type": "BLS12381KeyPair",
"name": "ofwVakr2b+MoerCcQp+skTHfVVPOit575513sx443Cw7ESN6QxPcC6aWnhMUd/EwAI2mVImC4pKaE9G88vzA7B40X7SegLe1lFIJWE8Jyvds1yxWcnmESFF+L8ZLGI9i",
"secret": "celbRnC5R3Ok8GHSvzFFlWt0TwBXFM2E27kha+/kCC4="
}
24 changes: 12 additions & 12 deletions Docker/validators/workers.json
Original file line number Diff line number Diff line change
@@ -1,35 +1,35 @@
{
"workers": {
"Zy82aSpF8QghKE4wWvyIoTWyLetCuUSfk2gxHEtwdbg=": {
"i9TwX9Z/CiFznIoO14nIUdJ9Wpo0o50o7tSGtmdhuB5hTK1h5WNvsmUOhc3pdgFaFfKhe1O1NNlTb+sraT0I+ZtOsJUrO5e5figU7XPj5tzRkTlJUoBPtjb1f3RbbXHj": {
"0": {
"name": "hgeabM6XVJdIJQJjas05IiZAm2VFhtxwqIz0gDMYyjw=",
"primary_to_worker": "/dns/worker_0/tcp/4000/http",
"transactions": "/dns/worker_0/tcp/4001/http",
"worker_to_worker": "/dns/worker_0/tcp/4002/http"
"worker_to_worker": "/dns/worker_0/tcp/4002/http",
"name": "i9TwX9Z/CiFznIoO14nIUdJ9Wpo0o50o7tSGtmdhuB5hTK1h5WNvsmUOhc3pdgFaFfKhe1O1NNlTb+sraT0I+ZtOsJUrO5e5figU7XPj5tzRkTlJUoBPtjb1f3RbbXHj"
}
},
"fbhvgLnet2HdE0NUITUpekQxdRRWKxbZczM6Qg55sP8=": {
"lEExVRsXRE2O5+Yhaunn0+yckZz249/OERxaTrCQZUIz7E4gmyGQWmKFEpBA2p8VCcAHvveCvupstx7Qp8/w1gpqo2kFRXqagO/IRDOfJiItmtVxzHWxlnSP/2XKSkZf": {
"0": {
"name": "7o+0AxuS4muiCYxLOMT9pzdLug2LmrAzB7yLE7TrxwA=",
"primary_to_worker": "/dns/worker_1/tcp/4000/http",
"transactions": "/dns/worker_1/tcp/4001/http",
"worker_to_worker": "/dns/worker_1/tcp/4002/http"
"worker_to_worker": "/dns/worker_1/tcp/4002/http",
"name": "lEExVRsXRE2O5+Yhaunn0+yckZz249/OERxaTrCQZUIz7E4gmyGQWmKFEpBA2p8VCcAHvveCvupstx7Qp8/w1gpqo2kFRXqagO/IRDOfJiItmtVxzHWxlnSP/2XKSkZf"
}
},
"noDjBFfXGqQioHTf6jEIPYthhUWCMsC12ZJ9DMh7Ujk=": {
"pF/T4zMSkvDcHkCuk4Q8jsjcS+vZb/yAj2d8/R7CLH10dP3UxQKjwIeTklXJk/nLDfUg3MN86jMPSO/+2JTqO46oE86XssCKK+SeQCjft+gL0EzdvNlBs5iEt1YGlsoK": {
"0": {
"name": "63HCaWWXpqB8fhrGgBSNy7XfbSpakrILoXA5DaaYx1o=",
"primary_to_worker": "/dns/worker_2/tcp/4000/http",
"transactions": "/dns/worker_2/tcp/4001/http",
"worker_to_worker": "/dns/worker_2/tcp/4002/http"
"worker_to_worker": "/dns/worker_2/tcp/4002/http",
"name": "pF/T4zMSkvDcHkCuk4Q8jsjcS+vZb/yAj2d8/R7CLH10dP3UxQKjwIeTklXJk/nLDfUg3MN86jMPSO/+2JTqO46oE86XssCKK+SeQCjft+gL0EzdvNlBs5iEt1YGlsoK"
}
},
"Z+K3OEI/eldyTTdp27mQFDdBPqjkss9wOkN6RceDTuM=": {
"ofwVakr2b+MoerCcQp+skTHfVVPOit575513sx443Cw7ESN6QxPcC6aWnhMUd/EwAI2mVImC4pKaE9G88vzA7B40X7SegLe1lFIJWE8Jyvds1yxWcnmESFF+L8ZLGI9i": {
"0": {
"name": "cJbSCbB7f3l/Tmeix4Ts3Th8xS3TTh4ohnakHKhObmc=",
"primary_to_worker": "/dns/worker_3/tcp/4000/http",
"transactions": "/dns/worker_3/tcp/4001/http",
"worker_to_worker": "/dns/worker_3/tcp/4002/http"
"worker_to_worker": "/dns/worker_3/tcp/4002/http",
"name": "ofwVakr2b+MoerCcQp+skTHfVVPOit575513sx443Cw7ESN6QxPcC6aWnhMUd/EwAI2mVImC4pKaE9G88vzA7B40X7SegLe1lFIJWE8Jyvds1yxWcnmESFF+L8ZLGI9i"
}
}
},
Expand Down
35 changes: 26 additions & 9 deletions benchmark/benchmark/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,42 +31,59 @@ def generate_key(filename):
return f'./node generate_keys --filename {filename}'

@staticmethod
def run_primary(primary_keys, worker_keys, committee, workers, store, parameters, debug=False):
def generate_network_key(filename):
assert isinstance(filename, str)
return f'./node generate_network_keys --filename {filename}'

@staticmethod
def run_primary(primary_keys, primary_network_keys, worker_keys, committee, workers, store, parameters, debug=False):
assert isinstance(primary_keys, str)
assert isinstance(primary_network_keys, str)
assert isinstance(worker_keys, str)
assert isinstance(committee, str)
assert isinstance(workers, str)
assert isinstance(parameters, str)
assert isinstance(debug, bool)
v = '-vvv' if debug else '-vv'
return (f'./node {v} run --primary-keys {primary_keys} --worker-keys {worker_keys} '
f'--committee {committee} --workers {workers} --store {store} '
return (f'./node {v} run --primary-keys {primary_keys} --primary-network-keys {primary_network_keys} '
f'--worker-keys {worker_keys} --committee {committee} --workers {workers} --store {store} '
f'--parameters {parameters} primary')

@staticmethod
def run_no_consensus_primary(primary_keys, worker_keys, committee, workers, store, parameters, debug=False):
def run_no_consensus_primary(
primary_keys,
primary_network_keys,
worker_keys,
committee,
workers,
store,
parameters,
debug=False
):
assert isinstance(primary_keys, str)
assert isinstance(primary_network_keys, str)
assert isinstance(worker_keys, str)
assert isinstance(committee, str)
assert isinstance(workers, str)
assert isinstance(parameters, str)
assert isinstance(debug, bool)
v = '-vvv' if debug else '-vv'
return (f'./node {v} run --primary-keys {primary_keys} --worker-keys {worker_keys} '
f'--committee {committee} --workers {workers} --store {store} '
return (f'./node {v} run --primary-keys {primary_keys} --primary-network-keys {primary_network_keys} '
f'--worker-keys {worker_keys} --committee {committee} --workers {workers} --store {store} '
f'--parameters {parameters} primary --consensus-disabled')

@staticmethod
def run_worker(primary_keys, worker_keys, committee, workers, store, parameters, id, debug=False):
def run_worker(primary_keys, primary_network_keys, worker_keys, committee, workers, store, parameters, id, debug=False):
assert isinstance(primary_keys, str)
assert isinstance(primary_network_keys, str)
assert isinstance(worker_keys, str)
assert isinstance(committee, str)
assert isinstance(workers, str)
assert isinstance(parameters, str)
assert isinstance(debug, bool)
v = '-vvv' if debug else '-vv'
return (f'./node {v} run --primary-keys {primary_keys} --worker-keys {worker_keys} '
f'--committee {committee} --workers {workers} --store {store} '
return (f'./node {v} run --primary-keys {primary_keys} --primary-network-keys {primary_network_keys} '
f'--worker-keys {worker_keys} --committee {committee} --workers {workers} --store {store} '
f'--parameters {parameters} worker --id {id}')

@staticmethod
Expand Down
Loading

1 comment on commit e40e37a

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bench results

�[92mStarting local benchmark�[0m
Setting up testbed...
About to run ['cargo', 'build', '--quiet', '--release', '--features', 'benchmark']...
Running benchmark (20 sec)...
Parsing logs...

�[1m�[91mERROR�[0m: Failed to run benchmark

Caused by:
0: <class 'benchmark.logs.ParseError'>
1: Failed to parse clients' logs: 'NoneType' object has no attribute 'group'

PR to merge e40e37a ->

Please sign in to comment.