├── .gitignore ├── experiments ├── pompe │ ├── log │ │ └── README.md │ ├── conf-local │ │ ├── client.hosts │ │ ├── server.hosts │ │ ├── hotstuff.gen.conf │ │ ├── hotstuff.gen-sec0.conf │ │ ├── hotstuff.gen-sec1.conf │ │ ├── hotstuff.gen-sec2.conf │ │ └── hotstuff.gen-sec3.conf │ ├── data │ │ └── README.md │ ├── conf-distributed │ │ ├── client.hosts │ │ ├── server.hosts │ │ ├── hotstuff.gen.conf │ │ ├── hotstuff.gen-sec0.conf │ │ ├── hotstuff.gen-sec1.conf │ │ ├── hotstuff.gen-sec2.conf │ │ └── hotstuff.gen-sec3.conf │ ├── data.sh │ ├── single_server.sh │ ├── run_server.sh │ ├── kill.sh │ ├── single_client.sh │ └── run_client.sh ├── hotstuff │ ├── log │ │ └── README.md │ ├── conf-distributed │ │ ├── server.hosts │ │ ├── client.hosts │ │ ├── hotstuff.gen.conf │ │ ├── hotstuff.gen-sec0.conf │ │ ├── hotstuff.gen-sec2.conf │ │ ├── hotstuff.gen-sec1.conf │ │ └── hotstuff.gen-sec3.conf │ ├── conf-local │ │ ├── client.hosts │ │ ├── server.hosts │ │ ├── hotstuff.gen.conf │ │ ├── hotstuff.gen-sec0.conf │ │ ├── hotstuff.gen-sec1.conf │ │ ├── hotstuff.gen-sec2.conf │ │ └── hotstuff.gen-sec3.conf │ ├── data │ │ └── README.md │ ├── data.sh │ ├── single_server.sh │ ├── run_server.sh │ ├── kill.sh │ ├── single_client.sh │ └── run_client.sh └── process.py ├── .gitmodules ├── install_deps.sh ├── all.hosts ├── deploy.sh ├── Evaluation.md └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.log 2 | -------------------------------------------------------------------------------- /experiments/pompe/log/README.md: -------------------------------------------------------------------------------- 1 | this directory holds the client/server log 2 | -------------------------------------------------------------------------------- /experiments/hotstuff/log/README.md: -------------------------------------------------------------------------------- 1 | this directory holds the client/server log 2 | -------------------------------------------------------------------------------- /experiments/pompe/conf-local/client.hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 2 | 127.0.0.1 3 | 127.0.0.1 4 | 127.0.0.1 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-local/server.hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 2 | 127.0.0.1 3 | 127.0.0.1 4 | 127.0.0.1 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-distributed/server.hosts: -------------------------------------------------------------------------------- 1 | 10.0.2.7 2 | 10.0.2.8 3 | 10.0.2.9 4 | 10.0.2.10 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-local/client.hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 2 | 127.0.0.1 3 | 127.0.0.1 4 | 127.0.0.1 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-local/server.hosts: -------------------------------------------------------------------------------- 1 | 127.0.0.1 2 | 127.0.0.1 3 | 127.0.0.1 4 | 127.0.0.1 5 | -------------------------------------------------------------------------------- /experiments/pompe/data/README.md: -------------------------------------------------------------------------------- 1 | this directory holds the client/server log collected from all machines 2 | -------------------------------------------------------------------------------- /experiments/hotstuff/data/README.md: -------------------------------------------------------------------------------- 1 | this directory holds the client/server log collected from all machines 2 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "libhotstuff"] 2 | path = libhotstuff 3 | url = git@github.com:Pompe-org/libhotstuff.git 4 | branch = pompe 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-distributed/client.hosts: -------------------------------------------------------------------------------- 1 | 10.0.2.11 2 | 10.0.2.12 3 | 10.0.2.13 4 | 10.0.2.14 5 | 10.0.2.15 6 | 10.0.2.16 7 | 10.0.2.17 8 | 10.0.2.18 9 | -------------------------------------------------------------------------------- /experiments/pompe/conf-distributed/client.hosts: -------------------------------------------------------------------------------- 1 | us-east-1-1.hotstuff.morty-pg0.utah.cloudlab.us 2 | eu-west-1-1.hotstuff.morty-pg0.utah.cloudlab.us 3 | ap-northeast-1-1.hotstuff.morty-pg0.utah.cloudlab.us 4 | us-west-1-1.hotstuff.morty-pg0.utah.cloudlab.us 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-distributed/server.hosts: -------------------------------------------------------------------------------- 1 | us-east-1-0.hotstuff.morty-pg0.utah.cloudlab.us 2 | eu-west-1-0.hotstuff.morty-pg0.utah.cloudlab.us 3 | ap-northeast-1-0.hotstuff.morty-pg0.utah.cloudlab.us 4 | us-west-1-0.hotstuff.morty-pg0.utah.cloudlab.us 5 | -------------------------------------------------------------------------------- /install_deps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | sudo apt-get install libssl-dev libuv1-dev dh-autoreconf cmake make 3 | 4 | mkdir $POMPE_HOME/experiments/pompe/log 5 | mkdir $POMPE_HOME/experiments/pompe/data 6 | 7 | mkdir $POMPE_HOME/experiments/hotstuff/log 8 | mkdir $POMPE_HOME/experiments/hotstuff/data 9 | -------------------------------------------------------------------------------- /all.hosts: -------------------------------------------------------------------------------- 1 | us-east-1-0.hotstuff.morty-pg0.utah.cloudlab.us 2 | eu-west-1-0.hotstuff.morty-pg0.utah.cloudlab.us 3 | ap-northeast-1-0.hotstuff.morty-pg0.utah.cloudlab.us 4 | us-west-1-0.hotstuff.morty-pg0.utah.cloudlab.us 5 | us-east-1-1.hotstuff.morty-pg0.utah.cloudlab.us 6 | eu-west-1-1.hotstuff.morty-pg0.utah.cloudlab.us 7 | ap-northeast-1-1.hotstuff.morty-pg0.utah.cloudlab.us 8 | us-west-1-1.hotstuff.morty-pg0.utah.cloudlab.us 9 | -------------------------------------------------------------------------------- /experiments/hotstuff/data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/hotstuff/" 3 | 4 | if [ "$#" -le 1 ] 5 | then 6 | 7 | echo "Usage: collect_data.sh {username} {local or distributed}" 8 | 9 | else 10 | 11 | 12 | rm -f $base_dir/data/* 2> /dev/null 13 | 14 | cat $base_dir/conf-$2/client.hosts | while read machine 15 | do 16 | 17 | scp $1@${machine}:$base_dir/log/client* $base_dir/data/; 18 | 19 | done 20 | 21 | fi 22 | -------------------------------------------------------------------------------- /experiments/pompe/data.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/pompe/" 3 | 4 | if [ "$#" -le 1 ] 5 | then 6 | 7 | echo "Usage: collect_data.sh {username} {local or distributed}" 8 | 9 | else 10 | 11 | 12 | rm -f $base_dir/data/*.log 2> /dev/null 13 | 14 | cat $base_dir/conf-$2/client.hosts | while read machine 15 | do 16 | 17 | scp $1@${machine}:$base_dir/log/client* $base_dir/data/; 18 | 19 | done 20 | 21 | fi 22 | -------------------------------------------------------------------------------- /experiments/pompe/single_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | base_dir="${POMPE_HOME}/experiments/pompe/" 4 | 5 | if [ "$#" -le 1 ] 6 | then 7 | 8 | echo "Usage: single_client.sh {client ID} {local or distributed}" 9 | 10 | else 11 | 12 | echo " starting archipelago replica $1" 13 | 14 | ${POMPE_HOME}/libhotstuff/examples/pompe-app $base_dir/conf-$2/hotstuff.gen.conf $base_dir/log/server$1.log --conf $base_dir/conf-$2/hotstuff.gen-sec$1.conf> /dev/null 2>&1 & 15 | 16 | fi 17 | -------------------------------------------------------------------------------- /experiments/hotstuff/single_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/hotstuff/" 3 | 4 | 5 | if [ "$#" -le 1 ] 6 | then 7 | 8 | echo "Usage: single_server.sh {replica ID} {local or distributed}" 9 | 10 | else 11 | 12 | # original hotstuff only one instance 13 | echo " starting baseline replica $1" 14 | 15 | ${POMPE_HOME}/libhotstuff/examples/hotstuff-app $base_dir/conf-$2/hotstuff.gen.conf --conf $base_dir/conf-$2/hotstuff.gen-sec$1.conf > /dev/null 2>&1 & 16 | 17 | fi 18 | -------------------------------------------------------------------------------- /experiments/pompe/run_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/pompe/" 3 | 4 | if [ "$#" -le 1 ] 5 | then 6 | 7 | echo "Usage: run_server.sh {username} {local or distributed}" 8 | 9 | else 10 | 11 | replica_id=0 12 | cat $base_dir/conf-$2/server.hosts | while read machine 13 | do 14 | echo "#### deploy replica ${replica_id} on machine ${machine}" 15 | 16 | ssh $1@${machine} "export POMPE_HOME=${POMPE_HOME}; ${base_dir}/single_server.sh ${replica_id} $2 &" & 17 | 18 | replica_id=$((replica_id+1)) 19 | done 20 | 21 | fi 22 | -------------------------------------------------------------------------------- /experiments/hotstuff/run_server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/hotstuff/" 3 | 4 | if [ "$#" -le 1 ] 5 | then 6 | 7 | echo "Usage: run_server.sh {username} {local or distributed}" 8 | 9 | else 10 | 11 | replica_id=0 12 | cat $base_dir/conf-$2/server.hosts | while read machine 13 | do 14 | echo "#### deploy replica ${replica_id} on machine ${machine}" 15 | 16 | ssh $1@${machine} "export POMPE_HOME=${POMPE_HOME}; ${base_dir}/single_server.sh ${replica_id} $2 &" & 17 | 18 | replica_id=$((replica_id+1)) 19 | done 20 | 21 | fi 22 | -------------------------------------------------------------------------------- /experiments/pompe/kill.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/pompe/" 3 | 4 | if [ "$#" -le 1 ] 5 | then 6 | 7 | echo "Usage: kill.sh {username} {local or distributed}" 8 | 9 | else 10 | 11 | # kill the clients first 12 | cat $base_dir/conf-$2/client.hosts | while read machine 13 | do 14 | echo "kill clients on machine ${machine}" 15 | ssh $1@${machine} "killall pompe-client 2> /dev/null" & 16 | done 17 | 18 | # then kill the servers 19 | cat $base_dir/conf-$2/server.hosts | while read machine 20 | do 21 | echo "kill servers on machine ${machine}" 22 | ssh $1@${machine} "killall pompe-app 2> /dev/null" & 23 | done 24 | 25 | fi 26 | -------------------------------------------------------------------------------- /experiments/hotstuff/kill.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/hotstuff/" 3 | 4 | if [ "$#" -le 1 ] 5 | then 6 | 7 | echo "Usage: kill.sh {username} {local or distributed}" 8 | 9 | else 10 | 11 | # kill the clients first 12 | cat $base_dir/conf-$2/client.hosts | while read machine 13 | do 14 | echo "kill clients on machine ${machine}" 15 | ssh $1@${machine} "killall hotstuff-client 2> /dev/null" & 16 | done 17 | 18 | # then kill the servers 19 | cat $base_dir/conf-$2/server.hosts | while read machine 20 | do 21 | echo "kill servers on machine ${machine}" 22 | ssh $1@${machine} "killall hotstuff-app 2> /dev/null" & 23 | done 24 | 25 | fi 26 | -------------------------------------------------------------------------------- /deploy.sh: -------------------------------------------------------------------------------- 1 | if [ "$#" -le 0 ] 2 | then 3 | 4 | echo "Usage: deploy.sh {username}" 5 | 6 | else 7 | # remove old log and data 8 | rm ./experiments/*/log/*.log 9 | rm ./experiments/*/data/*.log 10 | 11 | cat all.hosts | while read machine 12 | do 13 | echo "deploy code on machine ${machine} at ${POMPE_HOME}" 14 | 15 | # Pompe configuration files 16 | rsync -rtuv ./experiments $1@${machine}:${POMPE_HOME}/ 17 | # Pompe binary executable 18 | rsync -rtuv ./libhotstuff/examples $1@${machine}:${POMPE_HOME}/libhotstuff/ --exclude CMakeFiles 19 | # Pompe dependency installation 20 | rsync -rtuv ./install_deps.sh $1@${machine}:${POMPE_HOME}/ 21 | 22 | done 23 | 24 | fi 25 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-local/hotstuff.gen.conf: -------------------------------------------------------------------------------- 1 | block-size = 1 2 | pace-maker = rr 3 | replica = 127.0.0.1:10000;20000, 039f89215177475ac408d079b45acef4591fc477dd690f2467df052cf0c7baba23, 542865a568784c4e77c172b82e99cb8a1a53b7bee5f86843b04960ea4157f420 4 | replica = 127.0.0.1:10001;20001, 0278740a5bec75e333b3c93965b1609163b15d2e3c2fdef141d4859ec70c238e7a, c261250345ebcd676a0edeea173526608604f626b2e8bc4fd2142d3bde1d44d5 5 | replica = 127.0.0.1:10002;20002, 0269eb606576a315a630c2483deed35cc4bd845abae1c693f97c440c89503fa92e, 065b010aed5629edfb5289e8b22fc6cc6b33c4013bfdd128caba80c3c02d6d78 6 | replica = 127.0.0.1:10003;20003, 03e6911bf17e632eecdfa0dc9fc6efc9ddca60c0e3100db469a3d3d62008044a53, 6540a0fea67efcb08f53ec3a952df4c3f0e2e07c2778fd92320807717e29a651 7 | -------------------------------------------------------------------------------- /experiments/hotstuff/single_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Try to run the replicas as in run_demo.sh first and then run_demo_client.sh. 3 | # Use Ctrl-C to terminate the proposing replica (e.g. replica 0). Leader 4 | # rotation will be scheduled. Try to kill and run run_demo_client.sh again, new 5 | # commands should still get through (be replicated) once the new leader becomes 6 | # stable. 7 | base_dir="${POMPE_HOME}/experiments/hotstuff/" 8 | 9 | if [ "$#" -le 1 ] 10 | then 11 | 12 | echo "Usage: single_client.sh {client ID} {local or distributed}" 13 | 14 | else 15 | 16 | ${POMPE_HOME}/libhotstuff/examples/hotstuff-client $base_dir/conf-$2/hotstuff.gen.conf $base_dir/log/client$1.log --cid $1 --iter -1 --max-async 4 2> /dev/null 17 | 18 | fi 19 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-distributed/hotstuff.gen.conf: -------------------------------------------------------------------------------- 1 | block-size = 1 2 | stable-period = 50 3 | pace-maker = rr 4 | replica = 10.0.2.7:30000;40000, 02c6ad0bd2ab0d3458ed7627ed63cf29b471942672a7fd4cac987d2d23a08e83b0, ddb817aabc3320809d0b16299088cff052f2dbbc19d88028ad294e758c71d1cf 5 | replica = 10.0.2.8:30000;40000, 032edcaf1f3197d1f39cf39408c4a1061e127e8094d3432d9f35c8f3ddf30eb22b, 429800dacaf260c6e387bff60996cce5df88b6f3f1f5905efee45330adbb37b1 6 | replica = 10.0.2.9:30000;40000, 024402a8b7a157530a861ba2205d1892d0cc0d7b621b7f3fcd90738fa4a2c2bd63, 8a9c1ede9e98260faad4ce480ebae834c11f05b0bc129b9de750b47f1e1c5aed 7 | replica = 10.0.2.10:30000;40000, 03c6fa9535a0c389ffef0a65dc1a610a1753f21347c7d5ce429f154b68b73995e9, f2cadd6b27f70920538083c4470152da58e3e95ffd95b1355b4ec531dd21242a 8 | -------------------------------------------------------------------------------- /experiments/pompe/single_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Try to run the replicas as in run_demo.sh first and then run_demo_client.sh. 3 | # Use Ctrl-C to terminate the proposing replica (e.g. replica 0). Leader 4 | # rotation will be scheduled. Try to kill and run run_demo_client.sh again, new 5 | # commands should still get through (be replicated) once the new leader becomes 6 | # stable. 7 | 8 | base_dir="${POMPE_HOME}/experiments/pompe/" 9 | 10 | if [ "$#" -le 1 ] 11 | then 12 | 13 | echo "Usage: single_client.sh {client ID} {local or distributed}" 14 | 15 | else 16 | 17 | ${POMPE_HOME}/libhotstuff/examples/pompe-client $base_dir/conf-$2/hotstuff.gen.conf $base_dir/log/client$1.order.log $base_dir/log/client$1.exec.log --cid $1 --iter -1 --max-async 4 18 | 19 | fi 20 | -------------------------------------------------------------------------------- /experiments/pompe/conf-local/hotstuff.gen.conf: -------------------------------------------------------------------------------- 1 | block-size = 1 2 | stable-period = 50 3 | liveness-delta = 10 4 | pace-maker = rr 5 | replica = 127.0.0.1:10000;20000, 039f89215177475ac408d079b45acef4591fc477dd690f2467df052cf0c7baba23, 542865a568784c4e77c172b82e99cb8a1a53b7bee5f86843b04960ea4157f420 6 | replica = 127.0.0.1:10001;20001, 0278740a5bec75e333b3c93965b1609163b15d2e3c2fdef141d4859ec70c238e7a, c261250345ebcd676a0edeea173526608604f626b2e8bc4fd2142d3bde1d44d5 7 | replica = 127.0.0.1:10002;20002, 0269eb606576a315a630c2483deed35cc4bd845abae1c693f97c440c89503fa92e, 065b010aed5629edfb5289e8b22fc6cc6b33c4013bfdd128caba80c3c02d6d78 8 | replica = 127.0.0.1:10003;20003, 03e6911bf17e632eecdfa0dc9fc6efc9ddca60c0e3100db469a3d3d62008044a53, 6540a0fea67efcb08f53ec3a952df4c3f0e2e07c2778fd92320807717e29a651 9 | -------------------------------------------------------------------------------- /experiments/pompe/conf-distributed/hotstuff.gen.conf: -------------------------------------------------------------------------------- 1 | block-size = 1 2 | stable-period = 50 3 | liveness-delta = 10 4 | pace-maker = rr 5 | replica = us-east-1-0:30000;40000, 03d63533772de0506c20eba2ba1b3ca8bbf04f14ab232bbdbad5874e55d30745b5, 3deac00503de26aeb6947eaf7c9e48c73a7293719d27bddfa95778acec8fe482 6 | replica = eu-west-1-0:30000;40000, 02f30a82081f4e69bc3d6342377dc1b667899ec8d106eee33b61f8cb9554b3c8c4, 5d90199bef89b08e3a8ff68ee7dfce78a950459f86a2958ff69d468fc32646ad 7 | replica = ap-northeast-1-0:30000;40000, 03269bd1ac222218f56ed0d87aa2104ebc8c98a261c806251a7da457fa814672c9, 73b18d2d5051e50083c1a690749a2f396c0e2b6c929f0d93ec7c3fbfdd2f7eee 8 | replica = us-west-1-0:30000;40000, 02217d68762d765297d2b6cb64e2cb0f0350627173ed0ce18793027be517230df3, 8935213110461cbb1aa758a34fec6665e630cc21603c304598d0651152b15db1 9 | -------------------------------------------------------------------------------- /Evaluation.md: -------------------------------------------------------------------------------- 1 | # Pompe-Hotstuff Evaluation 2 | 3 | This document describes how to validate the evaluation claims in our [OSDI'20 paper](https://www.usenix.org/conference/osdi20/presentation/zhang-yunhao). Please contact Yunhao Zhang (yz2327@cornell.edu) for questions. 4 | 5 | ## Validate the Claims 6 | 7 | We made 3 claims as shown in Figure3 of our paper. 8 | 9 | - **claim1**: Pompe incurs higher latency than its baselines, but by batching in both phases, Pompe achieves higher throughput at competative latencies. 10 | 11 | - **claim2**: Pompe's throughput degrades when *n* increases, but Pompe can scale-up each node for higher throughput. 12 | 13 | - **claim3**: Pompe incurs modest network overheads over its baselines. 14 | 15 | 16 | 17 | > :warning: **[WARNING]** Revision in progress, expected to finish soon. The old version for artifact evaluation is [here](https://github.com/yhzhang0128/archipelago-hotstuff) 18 | -------------------------------------------------------------------------------- /experiments/process.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from os import listdir 3 | from os.path import isfile, join 4 | 5 | if (len(sys.argv) != 3): 6 | print "Usage: process.py {client for HotStuff | order or exec for Pompe} {result dir}" 7 | exit() 8 | 9 | files = [f for f in listdir("./" + sys.argv[2]) if isfile(join("./" + sys.argv[2], f))] 10 | #print onlyfiles 11 | 12 | count = 0 13 | latencies = [] 14 | average = 0.0 15 | for file in files: 16 | if sys.argv[1] in file: 17 | f = open("./" + sys.argv[2] + "/" + file, "r") 18 | for line in f.readlines(): 19 | count = count + 1 20 | latencies.append(float(line.split()[-1])) 21 | average = average + float(line.split()[-1]) 22 | 23 | latencies.sort() 24 | 25 | latency50 = latencies[int(count * 0.5)] 26 | latency90 = latencies[int(count * 0.9)] 27 | latency99 = latencies[int(count * 0.99)] 28 | average = average / count 29 | 30 | #print latencies 31 | print "Total:", count, " transactions" 32 | print "50%: ", latency50 * 1000 33 | print "90%: ", latency90 * 1000 34 | print "99%: ", latency99 * 1000 35 | print "Average: ", average * 1000 36 | 37 | -------------------------------------------------------------------------------- /experiments/pompe/run_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/pompe/" 3 | 4 | 5 | if [ "$#" -le 3 ] 6 | then 7 | 8 | echo "Usage: run_client.sh {username} {client number} {duration} {local or distributed}" 9 | 10 | else 11 | 12 | nmachines=$((`wc -l $base_dir/conf-$4/client.hosts | cut -f1 -d' '`)) 13 | process_total=$(($2)) 14 | # each process simulates 4 clients by default 15 | process_per_machine=$(($2 / $nmachines / 4)) 16 | if [ $process_per_machine -le 0 ] 17 | then 18 | process_per_machine=1 19 | fi 20 | 21 | 22 | cat $base_dir/conf-$4/client.hosts | while read machine 23 | do 24 | echo "#### delete old log on machine ${machine}" 25 | ssh $1@${machine} "rm -f ${base_dir}/log/client* 2> /dev/null;" & 26 | done 27 | sleep 2 28 | 29 | 30 | client_id=0 31 | cat $base_dir/conf-$4/client.hosts | while read machine 32 | do 33 | 34 | for ((i=0; i<$process_per_machine; i++)); do 35 | 36 | echo "#### deploy client${client_id} on machine ${machine}" 37 | ssh $1@${machine} "export POMPE_HOME=${POMPE_HOME}; sleep 5; 38 | ${base_dir}/single_client.sh ${client_id} $4" & 39 | 40 | # 4 server machines in this test 41 | process_total=$((process_total - 4)) 42 | client_id=$((client_id+1)) 43 | done 44 | 45 | if [ $process_total -le 0 ] 46 | then 47 | break 48 | fi 49 | 50 | done 51 | 52 | # wait for duration 53 | # remote client will sleep for 5 seconds 54 | sleep $(($3 + 5)) 55 | 56 | # kill the clients and servers 57 | $base_dir/kill.sh $1 $4 58 | 59 | fi 60 | -------------------------------------------------------------------------------- /experiments/hotstuff/run_client.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | base_dir="${POMPE_HOME}/experiments/hotstuff/" 3 | 4 | 5 | if [ "$#" -le 3 ] 6 | then 7 | 8 | echo "Usage: run_client.sh {username} {client number} {duration} {local or distributed}" 9 | 10 | else 11 | 12 | nmachines=$((`wc -l $base_dir/conf-$4/client.hosts | cut -f1 -d' '`)) 13 | process_total=$(($2)) 14 | # each process simulates 4 clients by default 15 | process_per_machine=$(($2 / $nmachines / 4)) 16 | if [ $process_per_machine -le 0 ] 17 | then 18 | process_per_machine=1 19 | fi 20 | 21 | 22 | cat $base_dir/conf-$4/client.hosts | while read machine 23 | do 24 | echo "#### delete old log on machine ${machine}" 25 | ssh $1@${machine} "rm -f ${base_dir}/log/client* 2> /dev/null;" & 26 | done 27 | sleep 2 28 | 29 | 30 | client_id=0 31 | cat $base_dir/conf-$4/client.hosts | while read machine 32 | do 33 | 34 | for ((i=0; i<$process_per_machine; i++)); do 35 | 36 | echo "#### deploy client${client_id} on machine ${machine}" 37 | ssh $1@${machine} "export POMPE_HOME=${POMPE_HOME}; sleep 5; 38 | ${base_dir}/single_client.sh ${client_id} $4" & 39 | 40 | # 4 server machines in this test 41 | process_total=$((process_total - 4)) 42 | client_id=$((client_id+1)) 43 | done 44 | 45 | if [ $process_total -le 0 ] 46 | then 47 | break 48 | fi 49 | 50 | done 51 | 52 | # wait for duration 53 | # remote client will sleep for 5 seconds 54 | sleep $(($3 + 5)) 55 | 56 | # kill the clients and servers 57 | $base_dir/kill.sh $1 $4 58 | 59 | fi 60 | -------------------------------------------------------------------------------- /experiments/pompe/conf-local/hotstuff.gen-sec0.conf: -------------------------------------------------------------------------------- 1 | privkey = 445fa01dbbb9d0510ab6d6f630c94ab43ba21ad91f31d47da92f7b679ba2f582 2 | tls-privkey = 308204a10201000282010100c5a358cee61ca7592dbe62cd28225426dc3fc65b33432043efb5e8fcfaf334720b2000d10c422172e6f94f82746928a6d51193342a1555684eedb141321170cb02cc7b189f5506cc30cb5c26d9b84123328ed6df61fc1a6582b046def7a662bb15d84e29ffa279f1d853c25ca79fbe3fab0200f8c85566a5eedb98df4a958e8512a647258e55a7a56c1ca8b05607b38b01b6a2669af9a70efa59141f6079341c6044f615687be756d4830ea359139ea35e23f34ce226215a1a2fb8271cc60a037841e44c460e149a71d3e2fa907a48677ad18af2e7348343932f5f29ac5241cd20ce64e6798ada684164cd1109c3a969662d9aaf9897fedc5a4e256eb92bf7bd02011102820100516160cdaa0bcc7003c6dd6388ff139787de0661c9d0589471c35fefb2a060e3aa3a5ab06e75954d6e2a6c088a496b1784e91e7ee426e6eeb7169448058eb5f93d6341bed83211db9b9f07d3c30fa259c9861c3ddd0d7447ea84d1e356ea28a7635911205a33d7dc0dc822dadb9c2129466a3ca2acd7def9080011c55af249bd98e3f84a5475a43cc0369cf7fa5e4ecdd1c09ac0b0a41bd19d8af70cad8f1b6aec66a22179e5dbf9c446c645e9daa9080b455fca64365d8e02a686fbd707198302db43cd37629033574561c025d89d29c393746ce12fa01bbe60feb3fab292928ead3f8f6def6b9a7dffcd2139f6e8d1f79844d216b28dfae29dc6ba8c11063102818100f770f6dea12236dd39cb46ba96c171f3cfa92c961a12bfb62108e82e0bac280554a9ad4b99c4faee9287467573eaf6cfcba360753668c40ab1b015fbbb95f6a2d3c2402966971fa54540befdc39b58962f7d0cfaa96ff268df02efab32238544ed75fd6586bd93e38934c9d59b037f3cd7f727b38c854e1061de1f68bf43a26d02818100cc7963002015bd593af15276f185cb5a34a76bb36633c85bc86c6640419612a5a8eb2cc1a6ad43e51c2b545f88a7e8c0096a6110b85de7d1f458eca33267f9fde6b4489e346304787d33c8e1033e96b502a53ea6ad2c55299cae973719587d24468f164930f58a56aac2c7eabd68870a1056f06b8bcec5b3d2156c8a1375d89102818048c6df326ba0a6b9897805be68933fa20fe676868023a1cc27d57176f45fcf8918e69c61879449cdb2a041e64f451b6a4af3d1136a5b0c7b9dac42b3736857994d57400c2d3b81c7327c7468c10f9286867012e04ff3bfc47dd3afe70ebf273263f586c381fb85d982b52c4de24c52996cb21abc56818f6e3ae6fa2ddde6b74d028180180e47e1e5a83464d9c209b3a3f19f740631d06f756f80fbbd39ede97120b6e6501baae99b2371663f8ca083b5b966ad2e48c02015b0b1dc77198540604877c3848dae30bade78ff1dc9db65c4257b245aaa075ee732645f3f9c11ca3f37964080c58a26ba773d739b9e71df6193d3a6d4beef1bb618537e912fb26a98e0b01102818100950d7d5ec366f8bca918011359590c6e7d6fe4d3e8922d68468c3e24277f27621db17cb41d0dcddf1f77e289e49dc92101d8544e84281ec7732fbfd4e9194924a2adac4e22ef79c2ad61428f1fa03e6affa3b0de07f857de87a2e758953122b0d693cf49e54ede4eba44dcdc2c5cbd6751af5117fd107fc0e4ffb18f8774d79e 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100c5a358cee61ca7592dbe62cd28225426dc3fc65b33432043efb5e8fcfaf334720b2000d10c422172e6f94f82746928a6d51193342a1555684eedb141321170cb02cc7b189f5506cc30cb5c26d9b84123328ed6df61fc1a6582b046def7a662bb15d84e29ffa279f1d853c25ca79fbe3fab0200f8c85566a5eedb98df4a958e8512a647258e55a7a56c1ca8b05607b38b01b6a2669af9a70efa59141f6079341c6044f615687be756d4830ea359139ea35e23f34ce226215a1a2fb8271cc60a037841e44c460e149a71d3e2fa907a48677ad18af2e7348343932f5f29ac5241cd20ce64e6798ada684164cd1109c3a969662d9aaf9897fedc5a4e256eb92bf7bd020111300d06092a864886f70d0101050500038201010009fc34f2835e4c14de1e03202c0f0884acb51e7568b286a9b3a374e8b69f304600a2787303cd382e52923db352cf91587ea7a33da5116c886c67775b5f96357971dddb568948fbb12987523a8be0e2e537284f8ee591af17c6d58410e41d32fc634f99289089915fb4273feaaca45d3442820155f5014fbd5d19fef7954729e4439218cad6a83b9dcd21834aaec379a276f163599cdac6b9513d0c07310852bb4104a58141a158d302908c23761899a4c68c3bf81115f302d41f42ff38150c0b7dc798fd7319abec6bd9365e00bf0a0998c3b97fe4834f0688e95d1eea4df4031274c781c6661cab085d629cb924c5c65b865ae98aa2349875fafe62b7eacbc5 4 | idx = 0 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-local/hotstuff.gen-sec0.conf: -------------------------------------------------------------------------------- 1 | privkey = 445fa01dbbb9d0510ab6d6f630c94ab43ba21ad91f31d47da92f7b679ba2f582 2 | tls-privkey = 308204a10201000282010100c5a358cee61ca7592dbe62cd28225426dc3fc65b33432043efb5e8fcfaf334720b2000d10c422172e6f94f82746928a6d51193342a1555684eedb141321170cb02cc7b189f5506cc30cb5c26d9b84123328ed6df61fc1a6582b046def7a662bb15d84e29ffa279f1d853c25ca79fbe3fab0200f8c85566a5eedb98df4a958e8512a647258e55a7a56c1ca8b05607b38b01b6a2669af9a70efa59141f6079341c6044f615687be756d4830ea359139ea35e23f34ce226215a1a2fb8271cc60a037841e44c460e149a71d3e2fa907a48677ad18af2e7348343932f5f29ac5241cd20ce64e6798ada684164cd1109c3a969662d9aaf9897fedc5a4e256eb92bf7bd02011102820100516160cdaa0bcc7003c6dd6388ff139787de0661c9d0589471c35fefb2a060e3aa3a5ab06e75954d6e2a6c088a496b1784e91e7ee426e6eeb7169448058eb5f93d6341bed83211db9b9f07d3c30fa259c9861c3ddd0d7447ea84d1e356ea28a7635911205a33d7dc0dc822dadb9c2129466a3ca2acd7def9080011c55af249bd98e3f84a5475a43cc0369cf7fa5e4ecdd1c09ac0b0a41bd19d8af70cad8f1b6aec66a22179e5dbf9c446c645e9daa9080b455fca64365d8e02a686fbd707198302db43cd37629033574561c025d89d29c393746ce12fa01bbe60feb3fab292928ead3f8f6def6b9a7dffcd2139f6e8d1f79844d216b28dfae29dc6ba8c11063102818100f770f6dea12236dd39cb46ba96c171f3cfa92c961a12bfb62108e82e0bac280554a9ad4b99c4faee9287467573eaf6cfcba360753668c40ab1b015fbbb95f6a2d3c2402966971fa54540befdc39b58962f7d0cfaa96ff268df02efab32238544ed75fd6586bd93e38934c9d59b037f3cd7f727b38c854e1061de1f68bf43a26d02818100cc7963002015bd593af15276f185cb5a34a76bb36633c85bc86c6640419612a5a8eb2cc1a6ad43e51c2b545f88a7e8c0096a6110b85de7d1f458eca33267f9fde6b4489e346304787d33c8e1033e96b502a53ea6ad2c55299cae973719587d24468f164930f58a56aac2c7eabd68870a1056f06b8bcec5b3d2156c8a1375d89102818048c6df326ba0a6b9897805be68933fa20fe676868023a1cc27d57176f45fcf8918e69c61879449cdb2a041e64f451b6a4af3d1136a5b0c7b9dac42b3736857994d57400c2d3b81c7327c7468c10f9286867012e04ff3bfc47dd3afe70ebf273263f586c381fb85d982b52c4de24c52996cb21abc56818f6e3ae6fa2ddde6b74d028180180e47e1e5a83464d9c209b3a3f19f740631d06f756f80fbbd39ede97120b6e6501baae99b2371663f8ca083b5b966ad2e48c02015b0b1dc77198540604877c3848dae30bade78ff1dc9db65c4257b245aaa075ee732645f3f9c11ca3f37964080c58a26ba773d739b9e71df6193d3a6d4beef1bb618537e912fb26a98e0b01102818100950d7d5ec366f8bca918011359590c6e7d6fe4d3e8922d68468c3e24277f27621db17cb41d0dcddf1f77e289e49dc92101d8544e84281ec7732fbfd4e9194924a2adac4e22ef79c2ad61428f1fa03e6affa3b0de07f857de87a2e758953122b0d693cf49e54ede4eba44dcdc2c5cbd6751af5117fd107fc0e4ffb18f8774d79e 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100c5a358cee61ca7592dbe62cd28225426dc3fc65b33432043efb5e8fcfaf334720b2000d10c422172e6f94f82746928a6d51193342a1555684eedb141321170cb02cc7b189f5506cc30cb5c26d9b84123328ed6df61fc1a6582b046def7a662bb15d84e29ffa279f1d853c25ca79fbe3fab0200f8c85566a5eedb98df4a958e8512a647258e55a7a56c1ca8b05607b38b01b6a2669af9a70efa59141f6079341c6044f615687be756d4830ea359139ea35e23f34ce226215a1a2fb8271cc60a037841e44c460e149a71d3e2fa907a48677ad18af2e7348343932f5f29ac5241cd20ce64e6798ada684164cd1109c3a969662d9aaf9897fedc5a4e256eb92bf7bd020111300d06092a864886f70d0101050500038201010009fc34f2835e4c14de1e03202c0f0884acb51e7568b286a9b3a374e8b69f304600a2787303cd382e52923db352cf91587ea7a33da5116c886c67775b5f96357971dddb568948fbb12987523a8be0e2e537284f8ee591af17c6d58410e41d32fc634f99289089915fb4273feaaca45d3442820155f5014fbd5d19fef7954729e4439218cad6a83b9dcd21834aaec379a276f163599cdac6b9513d0c07310852bb4104a58141a158d302908c23761899a4c68c3bf81115f302d41f42ff38150c0b7dc798fd7319abec6bd9365e00bf0a0998c3b97fe4834f0688e95d1eea4df4031274c781c6661cab085d629cb924c5c65b865ae98aa2349875fafe62b7eacbc5 4 | idx = 0 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-local/hotstuff.gen-sec1.conf: -------------------------------------------------------------------------------- 1 | privkey = 71f2f7aa5fb0f6d8fcdebe6c6c249aa7de068eb5d617dffa0dcfbc2f1dd73177 2 | tls-privkey = 308204a20201000282010100abfe4a55f831720dd46e2bca05e767aef9838d2069f893f3213bf5a31f5be249c2b356476e01d3fc221581bf4ffa93a6ec41898fbed6119b7981065d07fe476fa12b7da4a22f37d4cfc8a667ff163c05d17762f789df64995a1e80c50ed0d1f7ab8e733fb543d962818ce3ba7b38bf4fe0ca39926b6e99e3fa32eff48f503cf7f66824573e9fb34cb9c4e952f0f584d30c5b7312172facb0439ed5af6d0c6f7382db15315dce8f2fe1704f11bd76e5e3fbffd6f44b240036492187a13e23c0cc8769a52f5bbc90400867093d031483b84fe5c40a7ce66d7dab7a474689de080cc2b6670359f08d5bff53cfa92bf49fc306cccfe0b6fed8c6e4edef86d81638610201110282010100a1e045f68f3d98857ca3ecfa5fe8da0e180357a609626d2110386eb7a50b2f547b032406fe1fd692f2e710b40f09f460de5bccc3866f1fa1634c423970ef524af20ad09af2ff439b1dea060786ab83c93d9d8a5263a5136327a43cf5b3975c34653ac6d28c7c17e43db1c746199ed22d0fcd635ca159094f09995a4f95f12a513ebec6fe1af47c260090fcf8908e04192bb8b9a9c75608d221110d183a80380193b076354b2cb396500c94c8ca33e45559eeadefe217ef04898a2350390fadcf3e4ccb4d1783c619168c9fe7e29701f15476e980408975050d0a8e5df4e4ea35dc6fe3e3f71964952cf600c45d88688b5e92cf5144d869448290e7cefc8f793102818100d5c267d9f5b82ce47e3b7e3fa80fa599b73406b21d240c863bfc4c20d858c729d96e89adc0e51aa6248112fb351bcf5102dada449b5226842d9e7482e65391b8e89a8a0982a1f1b0e75922d416e45f28a06842d4ef00d9c7c8fa43d47487e79121e69d25f5dbbdf49ea85dc7035cb7a92fa79cad5666a2bd4bcd29be9ec31fff02818100cdfb090f4c43c27fdaef5e4b2f4efade96b3271b964036cac4806ba4d68b6cc7fc810deafd09f5ba07e1de013183f3f8499763e0cf986bbd49604d991b2f86676c9d8323f01e9c1479187c828b6fb27f45bf291d4953876084a4cc2e4122e7a26698e7bb2d89d488e0e611118536f905c2a936ed07724630ce66cf7c4cfaa79f0281810096e39499daa01fb0591aefb476a1a21226f78c417dfb542284b2179eb6d5414ab79952204bed03c0923cfe56f84fdda2989a7bf431672a3f2f42ac98a29557cdd15e0715c59f7d6dd07b27a4c4dd7058e9b301ffb7c45d7df7473ef05241d0a2ae84ab29dab93acaca58baaa98f6274a3fc19bc5a66690fe1763a4ff06a7da59028180792a41908736eae1cc145595a35ba2a10d5a533d6771112bfb1e5d7005bb6d2a584bea11c205dbd6d775cde29598e9dd58772bb16b0e5d7e6765d34b00eec78821c610e7f6a8980c0aff584cca7df08719f7fa113a31227502bb4aee0832a65f87a53d04b16022aadea57373b7c5fbe545547aa98be8ddfe9787c5582d48265d02818006385a17426489bc3393300bfec08c440cbfd894d991b1c1e1b672f17809ff150703496fde8df3bfa9d67553f0d6d4bb1bf73706454470479fc4aec0250b0613bd028cc111f61edfeb6ad40e6801fc22afcb67788a7a514c5b3f04a3986dbf063f4277bcf5182763242781f8ba6b2cb3a8cb909332f9b1966601675297a601cf 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100abfe4a55f831720dd46e2bca05e767aef9838d2069f893f3213bf5a31f5be249c2b356476e01d3fc221581bf4ffa93a6ec41898fbed6119b7981065d07fe476fa12b7da4a22f37d4cfc8a667ff163c05d17762f789df64995a1e80c50ed0d1f7ab8e733fb543d962818ce3ba7b38bf4fe0ca39926b6e99e3fa32eff48f503cf7f66824573e9fb34cb9c4e952f0f584d30c5b7312172facb0439ed5af6d0c6f7382db15315dce8f2fe1704f11bd76e5e3fbffd6f44b240036492187a13e23c0cc8769a52f5bbc90400867093d031483b84fe5c40a7ce66d7dab7a474689de080cc2b6670359f08d5bff53cfa92bf49fc306cccfe0b6fed8c6e4edef86d8163861020111300d06092a864886f70d0101050500038201010069f87140cc279dfc03b89cd6de3833aa7bb824f522b46943d8ea32c0bf24b2a7d7b77da04a359fe4fa840770552794836dc6cdbf80396ab87edfe5df187915cb94ef4b142b8b20c438b54608059fca91f5792a39bfaea547c6a56fac3ae165ce89d29e7af5f914304da4aabe02961f5dab7dc94124837539958015d89a22eedfd42981819004d1af6342498aa43f58cf84c391e0427835407089d0e95b5fdfe350974cb507dffeca15e55851e03b68ce4ac640ca898ea6a75a7f5469f677f74a14d05ce4bbd44e8a2a70366edb94f6e8706246dd904847e37abe3116320dc1688a4788a8600bf7ae05932541be665efb5b564c3c964504555f09175494517469 4 | idx = 1 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-local/hotstuff.gen-sec2.conf: -------------------------------------------------------------------------------- 1 | privkey = f09707974bd60c68734e45172928eb600710675fc45822b6db5a8c75eec0f5a1 2 | tls-privkey = 308204a20201000282010100c1460bf8018ceec075d67405e96e056e2e3acf9c7c2d7d28ee6edfe9ee8fbeef0e978ac874ceff3ee770dafde1d019d9920b2ff334a3ac115bcf95e2bdc0b70faf46b8f13c46335c4815c72d75b488de46b96f8582446e886c6b7fdfb479bc40a0da03b7c4e414fde9ab44b1957e39c5e5c167ba88a233854f29404a1f35aa29994bcd7a62b57fc2000850c37569a8a1bfa75e6e06c54c40633e0fee1672c1f97689aabee650285a41fd6df24f20cd94733aeccdae68debba30a3588b71625f9ec7669d3f4c51317192f5acdee9b968d1a6db4a98a9c0eeef63a969c2ecaba95a9ddfd5841d996977696e41a541393ba40ae44b71c00129a25b30f6c44e89d8d0201110282010071b0bbbf0ff88c713641e9e55c2299c8576de38939fca3f9f5aaa1d4e6aee8c8db683384f96ab4431ebadb2bee3e2d52ce60ef07886047194510b285608f7abdeea2126fc91a3c5466a3661abdb57dafed5e055d97ec04c8b83f3c293cfc509e7cbc7aa855b357a46b55afeffd958b6559f94c135f6e78a8c52752fe6cb627db36195ca7e30537e3a1a2cfd2dfe23c2f6c9c91a45119e8b6c128dce763157d4f21350c7293f4cc7c96201e3b63484e22b6308c2d9351e1c5b833bcc301c68f9111c10c9e79ee6f590ce7cff86e1c8e6bf970d8d0e2d0bc32a6c06997e3cdcad17657cfa6d0300966fd1c0a4ad5e9817ab4d41b5ff0010ce93c08eae7ad053ef102818100e8b87e8ca3a329afedda121b2f005533749b067a3f9b38f43252f760ed18a9cdea42bd14a3b0ac599dc6c00fb873303713e030507fda557ab3de70864de60cba13dde108eedfe57df0a5fcbe3062b0cfce80aab3739e7f83b5534215c01830234bd439afdd02fd0755da8eb9c56466c762fb3c8cec5fa4229c8e94092db7b24102818100d49b649d2389770f18ffdd5b6368b9ea78cef9f60a17a148b558d43700e8c3250706588113e5b9f9a50014173ab2b2225cd50162e750230a693a37507fc4f1fc6d9d268a69cfd6b4f8ff494fcfd526d28a46cc92fbcde915256d076a9ea17e74ae747c4002eb56610c0caa47bca2373bdd7da66d7e050bb7d64885a60aa8004d02818100b1f67ee404a9f2b3b5e2fec97e4b8c72a4768c7b9a0d49abae0335a47912dc340d7e545b13c3569ee21074c0ba39f7b1a5c98e5bad105f7bf2f5651b68befaac698b8df7c5ba46150351c14625002cdb2571737a2b3cf8196c8af64cde309d482aed95867bd51bd86ed44f0687e35da787ed4c6bc3d0aab10e4ee9acaa7d6a31028181008991b992dac25c18d3f0da866d7fffd3f3d13853e869a4987557985fd3696f36139ab1bceec1d2b097f0fdf0e9beebbbe1b700e5a4bb61f7ad8005ac8ee8d8d08329734a80b3a90bb02cb6f7685cbec477973913d01bd30daece13db93d1e8699e0f23387a5c0ab7440831f22ec350ea80423e83154e8f1c99b674989d7bc3f5028180267c5167cd1f8dce4b15611b8ea0220e6be74efbf55e3bf4a775b1edf0e49b377c12f49fbf683f24e1850c455b8b7a96d0c7eff9f47661ec75004a2a435dd741e7d7bb6423fa576053a0677b2a0b714e7fadcc37c03dc9da053069477c1ce0afac316c1c63ffb510d30e11adc0865e94177f3545c0594860c10baa51bc074e4c 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100c1460bf8018ceec075d67405e96e056e2e3acf9c7c2d7d28ee6edfe9ee8fbeef0e978ac874ceff3ee770dafde1d019d9920b2ff334a3ac115bcf95e2bdc0b70faf46b8f13c46335c4815c72d75b488de46b96f8582446e886c6b7fdfb479bc40a0da03b7c4e414fde9ab44b1957e39c5e5c167ba88a233854f29404a1f35aa29994bcd7a62b57fc2000850c37569a8a1bfa75e6e06c54c40633e0fee1672c1f97689aabee650285a41fd6df24f20cd94733aeccdae68debba30a3588b71625f9ec7669d3f4c51317192f5acdee9b968d1a6db4a98a9c0eeef63a969c2ecaba95a9ddfd5841d996977696e41a541393ba40ae44b71c00129a25b30f6c44e89d8d020111300d06092a864886f70d01010505000382010100706c7eb29939c38cfcbab592c62a3572e05dcaa4d54e24cce74a244972e74ac8ed6e0b3eb1add0d4de6007d392ac75a7fb9836a9a1d937d0b2c3f01a6b1994ac317328527c763eae26a6ca647752badcd09e73364ac7828d375b4966e510de1cdbd01a5be047e45533f5a3d81df00ffe9d13fe5d54e18584691abb3a9a3d423d348d7714382317547338a8e83d14f404348db41c10a05e57221eda1e220b265ae4237e59ab2db1facbe8cc8d2198ca5fe2ad074bb8c7c4dd675cbe3d60b9e29f6b12ab4c587c6576e1ce2d2512be035e4692100c6c3e47d4d84dbbc865804af1bd0240fb804ef99c7038191dae2fab73a1a1ffa09f536a0fbf49fa1a3234b62a 4 | idx = 2 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-local/hotstuff.gen-sec3.conf: -------------------------------------------------------------------------------- 1 | privkey = 3d0cdf598a2514649a5dedf626467716d04e22d2b6a83dc0f5ca810701f728f3 2 | tls-privkey = 308204a20201000282010100de01b461213afa37d4aa68bdc7e1a6de12307440f1de6588e5362450694cbb4ba63b1f992a7dc88b999c7dec9088d17253ac278c33018ea8caa1f96c7d90bcb5a6a3f8568825bafa9a696699a4eaf0c6fcdd8ed7bc91a688ead564fb882a1c25c7f72bbe44eb44fda1d11d6ca090503e36de532f2fededff03da30f8f95f11b6472e9588fd6be69cad285915c68edaa7754c6524017bf08c3c336f04d0246d8e967a4de2824a3ac7486aaf9160540c63f75d36ecba9261ff6b859a7684b023ecfbc5408dc7c59942c76464040770c6097833dd770a7dffc6ed6a8716b1f683379843969f937d859d8f69a21362eda9dabd64dd6fb7131ee46b2654d3aa8dc9df02011102820100414bcba418d51c6ac61400b049d8f4d7e73b6d7c835f8746618865089770ebcaf4a7fa3c1b8e68290f0fe8cd1b7388e563e756ecfff16631a5027689521b82cc03d5dfa0faddebb31e5b3c4b4e9f73fe4a5f48215594400a26f3780dbea2f93849df4919d808f62c7ae326c598a2ea6ca6b9dc3b0e18cd873d5e4aa394a37dad88a49b91b7446343d03d4ea067b72c62ba622d68f7fb97c031a7f9259401318905e092b0aec27e643fb3efd9bf392050941d43fe06a87630412bf765a4800f57561a9fc339ff92a9b33e748efe5c6ddafe4069e99cf039794b4641ab4f199703860b4f8ee3669a04ad664379012650e68debe0ccc4c41a39e6bf8a3de15003f902818100f56482abd14db0f327311b376dc4cfac86cc3379036b6672713d296a0665797de7b115350d77a27193de1f5abd9e2b44eff6c5a323b1209c4aac68c86e3488abab89139a7cbb98a4f0c1e930c2bc276bbcf0efd47cf4dc6614b9c16c332a5f7ef339d5c746780884a66e087236ec784361fda7e72c21528c0427d7abbc9751f502818100e79a68542368e4295b8d3289c4f4da780e6597461952b9592221901b05bae53ece00df87ef7084340f28c71f188d400d0fcfbd504d0ae2bf101082214d9500b1f8480dc1ec3ea7900ece21b9e3e0c2b5279b1f21de585ff7a58eb330d841ef13107ce58c14a8a4a29b6cb438f4e551baac120603878a3ff9f00cda5589800403028181009ec890c9876e818e46892fba74340de81afc99c6c5fa333afdfa66176d8cf44268bde08bbd6b873a6ebce71c98cfc1a513bdcb2d53547e833f60800938401c32d867c163f65b44a6f6231e6ad85ba1097a418c20149e707e49a55f09c6c1109d70347b44b5207dfb7abfab1cba208a0d7ba4215958ca4478b7651314c552daad02818100cc5b10c2b5d5058de75e77e2f914484bd077c1b652944930878706ae6e77bb376a793db42d9f83b576c9a0a2f78bb0fc775cf255e9a0317b68870968adddd36fdb12667dee91a2e88588b458ba028daee6b60c692d99459e46c934b2a0b2a5c58704ca8aa8d109bca741cc32417f0be0f22e054e68890b45f1ed391e4c25a92f02818016d4c0a1d4cc7fadb7033ae8506221a7dde9c2437fe5989175e8de47791b4ff957fb485d6d04c85b9fd1d7734950dc4d032dd3fdf9c14193b04ea179839fb4560282d106b684b5712a9b140afbe4d92ff30c745a7bdca71de9808f6d2a88340e116cc4475e908993c27a27847601ec378d4357dc5e99a147c60d7258e282453e 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100de01b461213afa37d4aa68bdc7e1a6de12307440f1de6588e5362450694cbb4ba63b1f992a7dc88b999c7dec9088d17253ac278c33018ea8caa1f96c7d90bcb5a6a3f8568825bafa9a696699a4eaf0c6fcdd8ed7bc91a688ead564fb882a1c25c7f72bbe44eb44fda1d11d6ca090503e36de532f2fededff03da30f8f95f11b6472e9588fd6be69cad285915c68edaa7754c6524017bf08c3c336f04d0246d8e967a4de2824a3ac7486aaf9160540c63f75d36ecba9261ff6b859a7684b023ecfbc5408dc7c59942c76464040770c6097833dd770a7dffc6ed6a8716b1f683379843969f937d859d8f69a21362eda9dabd64dd6fb7131ee46b2654d3aa8dc9df020111300d06092a864886f70d010105050003820101007f9d4f2848059831e5ea7d727d9b09f826027c78fdc86d27ea83d32d727ac4a0484e55ed34851adcc8903a3ef39c1b0c447c28cd84cbc513cdcd607da3fa903495a70b7772e71873e3c8a734d3e8b9f82c7380604ccb8416bd92822e703a3b8839aff411f967d2bcc1cd96d158e7839a2bff6110ffd005808f7047fd57a7150c1e14ddcfd2e1a24a5878f99409b7ede1d5f4a385077b6f55f4818c854c6e64adb4789433667e672b9a615b680301a05852255cef958ff1031a489dd95327d045be0315359644ec51f2fd3cb724382ba2425da519dbf1d89098e10a1091f44c7a8e12733b7d0b1fce7c6d19adfee3cdac89f95ed1ae979093cb2793892724d7d9 4 | idx = 3 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-local/hotstuff.gen-sec1.conf: -------------------------------------------------------------------------------- 1 | privkey = 71f2f7aa5fb0f6d8fcdebe6c6c249aa7de068eb5d617dffa0dcfbc2f1dd73177 2 | tls-privkey = 308204a20201000282010100abfe4a55f831720dd46e2bca05e767aef9838d2069f893f3213bf5a31f5be249c2b356476e01d3fc221581bf4ffa93a6ec41898fbed6119b7981065d07fe476fa12b7da4a22f37d4cfc8a667ff163c05d17762f789df64995a1e80c50ed0d1f7ab8e733fb543d962818ce3ba7b38bf4fe0ca39926b6e99e3fa32eff48f503cf7f66824573e9fb34cb9c4e952f0f584d30c5b7312172facb0439ed5af6d0c6f7382db15315dce8f2fe1704f11bd76e5e3fbffd6f44b240036492187a13e23c0cc8769a52f5bbc90400867093d031483b84fe5c40a7ce66d7dab7a474689de080cc2b6670359f08d5bff53cfa92bf49fc306cccfe0b6fed8c6e4edef86d81638610201110282010100a1e045f68f3d98857ca3ecfa5fe8da0e180357a609626d2110386eb7a50b2f547b032406fe1fd692f2e710b40f09f460de5bccc3866f1fa1634c423970ef524af20ad09af2ff439b1dea060786ab83c93d9d8a5263a5136327a43cf5b3975c34653ac6d28c7c17e43db1c746199ed22d0fcd635ca159094f09995a4f95f12a513ebec6fe1af47c260090fcf8908e04192bb8b9a9c75608d221110d183a80380193b076354b2cb396500c94c8ca33e45559eeadefe217ef04898a2350390fadcf3e4ccb4d1783c619168c9fe7e29701f15476e980408975050d0a8e5df4e4ea35dc6fe3e3f71964952cf600c45d88688b5e92cf5144d869448290e7cefc8f793102818100d5c267d9f5b82ce47e3b7e3fa80fa599b73406b21d240c863bfc4c20d858c729d96e89adc0e51aa6248112fb351bcf5102dada449b5226842d9e7482e65391b8e89a8a0982a1f1b0e75922d416e45f28a06842d4ef00d9c7c8fa43d47487e79121e69d25f5dbbdf49ea85dc7035cb7a92fa79cad5666a2bd4bcd29be9ec31fff02818100cdfb090f4c43c27fdaef5e4b2f4efade96b3271b964036cac4806ba4d68b6cc7fc810deafd09f5ba07e1de013183f3f8499763e0cf986bbd49604d991b2f86676c9d8323f01e9c1479187c828b6fb27f45bf291d4953876084a4cc2e4122e7a26698e7bb2d89d488e0e611118536f905c2a936ed07724630ce66cf7c4cfaa79f0281810096e39499daa01fb0591aefb476a1a21226f78c417dfb542284b2179eb6d5414ab79952204bed03c0923cfe56f84fdda2989a7bf431672a3f2f42ac98a29557cdd15e0715c59f7d6dd07b27a4c4dd7058e9b301ffb7c45d7df7473ef05241d0a2ae84ab29dab93acaca58baaa98f6274a3fc19bc5a66690fe1763a4ff06a7da59028180792a41908736eae1cc145595a35ba2a10d5a533d6771112bfb1e5d7005bb6d2a584bea11c205dbd6d775cde29598e9dd58772bb16b0e5d7e6765d34b00eec78821c610e7f6a8980c0aff584cca7df08719f7fa113a31227502bb4aee0832a65f87a53d04b16022aadea57373b7c5fbe545547aa98be8ddfe9787c5582d48265d02818006385a17426489bc3393300bfec08c440cbfd894d991b1c1e1b672f17809ff150703496fde8df3bfa9d67553f0d6d4bb1bf73706454470479fc4aec0250b0613bd028cc111f61edfeb6ad40e6801fc22afcb67788a7a514c5b3f04a3986dbf063f4277bcf5182763242781f8ba6b2cb3a8cb909332f9b1966601675297a601cf 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100abfe4a55f831720dd46e2bca05e767aef9838d2069f893f3213bf5a31f5be249c2b356476e01d3fc221581bf4ffa93a6ec41898fbed6119b7981065d07fe476fa12b7da4a22f37d4cfc8a667ff163c05d17762f789df64995a1e80c50ed0d1f7ab8e733fb543d962818ce3ba7b38bf4fe0ca39926b6e99e3fa32eff48f503cf7f66824573e9fb34cb9c4e952f0f584d30c5b7312172facb0439ed5af6d0c6f7382db15315dce8f2fe1704f11bd76e5e3fbffd6f44b240036492187a13e23c0cc8769a52f5bbc90400867093d031483b84fe5c40a7ce66d7dab7a474689de080cc2b6670359f08d5bff53cfa92bf49fc306cccfe0b6fed8c6e4edef86d8163861020111300d06092a864886f70d0101050500038201010069f87140cc279dfc03b89cd6de3833aa7bb824f522b46943d8ea32c0bf24b2a7d7b77da04a359fe4fa840770552794836dc6cdbf80396ab87edfe5df187915cb94ef4b142b8b20c438b54608059fca91f5792a39bfaea547c6a56fac3ae165ce89d29e7af5f914304da4aabe02961f5dab7dc94124837539958015d89a22eedfd42981819004d1af6342498aa43f58cf84c391e0427835407089d0e95b5fdfe350974cb507dffeca15e55851e03b68ce4ac640ca898ea6a75a7f5469f677f74a14d05ce4bbd44e8a2a70366edb94f6e8706246dd904847e37abe3116320dc1688a4788a8600bf7ae05932541be665efb5b564c3c964504555f09175494517469 4 | idx = 1 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-local/hotstuff.gen-sec2.conf: -------------------------------------------------------------------------------- 1 | privkey = f09707974bd60c68734e45172928eb600710675fc45822b6db5a8c75eec0f5a1 2 | tls-privkey = 308204a20201000282010100c1460bf8018ceec075d67405e96e056e2e3acf9c7c2d7d28ee6edfe9ee8fbeef0e978ac874ceff3ee770dafde1d019d9920b2ff334a3ac115bcf95e2bdc0b70faf46b8f13c46335c4815c72d75b488de46b96f8582446e886c6b7fdfb479bc40a0da03b7c4e414fde9ab44b1957e39c5e5c167ba88a233854f29404a1f35aa29994bcd7a62b57fc2000850c37569a8a1bfa75e6e06c54c40633e0fee1672c1f97689aabee650285a41fd6df24f20cd94733aeccdae68debba30a3588b71625f9ec7669d3f4c51317192f5acdee9b968d1a6db4a98a9c0eeef63a969c2ecaba95a9ddfd5841d996977696e41a541393ba40ae44b71c00129a25b30f6c44e89d8d0201110282010071b0bbbf0ff88c713641e9e55c2299c8576de38939fca3f9f5aaa1d4e6aee8c8db683384f96ab4431ebadb2bee3e2d52ce60ef07886047194510b285608f7abdeea2126fc91a3c5466a3661abdb57dafed5e055d97ec04c8b83f3c293cfc509e7cbc7aa855b357a46b55afeffd958b6559f94c135f6e78a8c52752fe6cb627db36195ca7e30537e3a1a2cfd2dfe23c2f6c9c91a45119e8b6c128dce763157d4f21350c7293f4cc7c96201e3b63484e22b6308c2d9351e1c5b833bcc301c68f9111c10c9e79ee6f590ce7cff86e1c8e6bf970d8d0e2d0bc32a6c06997e3cdcad17657cfa6d0300966fd1c0a4ad5e9817ab4d41b5ff0010ce93c08eae7ad053ef102818100e8b87e8ca3a329afedda121b2f005533749b067a3f9b38f43252f760ed18a9cdea42bd14a3b0ac599dc6c00fb873303713e030507fda557ab3de70864de60cba13dde108eedfe57df0a5fcbe3062b0cfce80aab3739e7f83b5534215c01830234bd439afdd02fd0755da8eb9c56466c762fb3c8cec5fa4229c8e94092db7b24102818100d49b649d2389770f18ffdd5b6368b9ea78cef9f60a17a148b558d43700e8c3250706588113e5b9f9a50014173ab2b2225cd50162e750230a693a37507fc4f1fc6d9d268a69cfd6b4f8ff494fcfd526d28a46cc92fbcde915256d076a9ea17e74ae747c4002eb56610c0caa47bca2373bdd7da66d7e050bb7d64885a60aa8004d02818100b1f67ee404a9f2b3b5e2fec97e4b8c72a4768c7b9a0d49abae0335a47912dc340d7e545b13c3569ee21074c0ba39f7b1a5c98e5bad105f7bf2f5651b68befaac698b8df7c5ba46150351c14625002cdb2571737a2b3cf8196c8af64cde309d482aed95867bd51bd86ed44f0687e35da787ed4c6bc3d0aab10e4ee9acaa7d6a31028181008991b992dac25c18d3f0da866d7fffd3f3d13853e869a4987557985fd3696f36139ab1bceec1d2b097f0fdf0e9beebbbe1b700e5a4bb61f7ad8005ac8ee8d8d08329734a80b3a90bb02cb6f7685cbec477973913d01bd30daece13db93d1e8699e0f23387a5c0ab7440831f22ec350ea80423e83154e8f1c99b674989d7bc3f5028180267c5167cd1f8dce4b15611b8ea0220e6be74efbf55e3bf4a775b1edf0e49b377c12f49fbf683f24e1850c455b8b7a96d0c7eff9f47661ec75004a2a435dd741e7d7bb6423fa576053a0677b2a0b714e7fadcc37c03dc9da053069477c1ce0afac316c1c63ffb510d30e11adc0865e94177f3545c0594860c10baa51bc074e4c 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100c1460bf8018ceec075d67405e96e056e2e3acf9c7c2d7d28ee6edfe9ee8fbeef0e978ac874ceff3ee770dafde1d019d9920b2ff334a3ac115bcf95e2bdc0b70faf46b8f13c46335c4815c72d75b488de46b96f8582446e886c6b7fdfb479bc40a0da03b7c4e414fde9ab44b1957e39c5e5c167ba88a233854f29404a1f35aa29994bcd7a62b57fc2000850c37569a8a1bfa75e6e06c54c40633e0fee1672c1f97689aabee650285a41fd6df24f20cd94733aeccdae68debba30a3588b71625f9ec7669d3f4c51317192f5acdee9b968d1a6db4a98a9c0eeef63a969c2ecaba95a9ddfd5841d996977696e41a541393ba40ae44b71c00129a25b30f6c44e89d8d020111300d06092a864886f70d01010505000382010100706c7eb29939c38cfcbab592c62a3572e05dcaa4d54e24cce74a244972e74ac8ed6e0b3eb1add0d4de6007d392ac75a7fb9836a9a1d937d0b2c3f01a6b1994ac317328527c763eae26a6ca647752badcd09e73364ac7828d375b4966e510de1cdbd01a5be047e45533f5a3d81df00ffe9d13fe5d54e18584691abb3a9a3d423d348d7714382317547338a8e83d14f404348db41c10a05e57221eda1e220b265ae4237e59ab2db1facbe8cc8d2198ca5fe2ad074bb8c7c4dd675cbe3d60b9e29f6b12ab4c587c6576e1ce2d2512be035e4692100c6c3e47d4d84dbbc865804af1bd0240fb804ef99c7038191dae2fab73a1a1ffa09f536a0fbf49fa1a3234b62a 4 | idx = 2 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-local/hotstuff.gen-sec3.conf: -------------------------------------------------------------------------------- 1 | privkey = 3d0cdf598a2514649a5dedf626467716d04e22d2b6a83dc0f5ca810701f728f3 2 | tls-privkey = 308204a20201000282010100de01b461213afa37d4aa68bdc7e1a6de12307440f1de6588e5362450694cbb4ba63b1f992a7dc88b999c7dec9088d17253ac278c33018ea8caa1f96c7d90bcb5a6a3f8568825bafa9a696699a4eaf0c6fcdd8ed7bc91a688ead564fb882a1c25c7f72bbe44eb44fda1d11d6ca090503e36de532f2fededff03da30f8f95f11b6472e9588fd6be69cad285915c68edaa7754c6524017bf08c3c336f04d0246d8e967a4de2824a3ac7486aaf9160540c63f75d36ecba9261ff6b859a7684b023ecfbc5408dc7c59942c76464040770c6097833dd770a7dffc6ed6a8716b1f683379843969f937d859d8f69a21362eda9dabd64dd6fb7131ee46b2654d3aa8dc9df02011102820100414bcba418d51c6ac61400b049d8f4d7e73b6d7c835f8746618865089770ebcaf4a7fa3c1b8e68290f0fe8cd1b7388e563e756ecfff16631a5027689521b82cc03d5dfa0faddebb31e5b3c4b4e9f73fe4a5f48215594400a26f3780dbea2f93849df4919d808f62c7ae326c598a2ea6ca6b9dc3b0e18cd873d5e4aa394a37dad88a49b91b7446343d03d4ea067b72c62ba622d68f7fb97c031a7f9259401318905e092b0aec27e643fb3efd9bf392050941d43fe06a87630412bf765a4800f57561a9fc339ff92a9b33e748efe5c6ddafe4069e99cf039794b4641ab4f199703860b4f8ee3669a04ad664379012650e68debe0ccc4c41a39e6bf8a3de15003f902818100f56482abd14db0f327311b376dc4cfac86cc3379036b6672713d296a0665797de7b115350d77a27193de1f5abd9e2b44eff6c5a323b1209c4aac68c86e3488abab89139a7cbb98a4f0c1e930c2bc276bbcf0efd47cf4dc6614b9c16c332a5f7ef339d5c746780884a66e087236ec784361fda7e72c21528c0427d7abbc9751f502818100e79a68542368e4295b8d3289c4f4da780e6597461952b9592221901b05bae53ece00df87ef7084340f28c71f188d400d0fcfbd504d0ae2bf101082214d9500b1f8480dc1ec3ea7900ece21b9e3e0c2b5279b1f21de585ff7a58eb330d841ef13107ce58c14a8a4a29b6cb438f4e551baac120603878a3ff9f00cda5589800403028181009ec890c9876e818e46892fba74340de81afc99c6c5fa333afdfa66176d8cf44268bde08bbd6b873a6ebce71c98cfc1a513bdcb2d53547e833f60800938401c32d867c163f65b44a6f6231e6ad85ba1097a418c20149e707e49a55f09c6c1109d70347b44b5207dfb7abfab1cba208a0d7ba4215958ca4478b7651314c552daad02818100cc5b10c2b5d5058de75e77e2f914484bd077c1b652944930878706ae6e77bb376a793db42d9f83b576c9a0a2f78bb0fc775cf255e9a0317b68870968adddd36fdb12667dee91a2e88588b458ba028daee6b60c692d99459e46c934b2a0b2a5c58704ca8aa8d109bca741cc32417f0be0f22e054e68890b45f1ed391e4c25a92f02818016d4c0a1d4cc7fadb7033ae8506221a7dde9c2437fe5989175e8de47791b4ff957fb485d6d04c85b9fd1d7734950dc4d032dd3fdf9c14193b04ea179839fb4560282d106b684b5712a9b140afbe4d92ff30c745a7bdca71de9808f6d2a88340e116cc4475e908993c27a27847601ec378d4357dc5e99a147c60d7258e282453e 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3139303730323036353535365a170d3139303730323036353535365a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100de01b461213afa37d4aa68bdc7e1a6de12307440f1de6588e5362450694cbb4ba63b1f992a7dc88b999c7dec9088d17253ac278c33018ea8caa1f96c7d90bcb5a6a3f8568825bafa9a696699a4eaf0c6fcdd8ed7bc91a688ead564fb882a1c25c7f72bbe44eb44fda1d11d6ca090503e36de532f2fededff03da30f8f95f11b6472e9588fd6be69cad285915c68edaa7754c6524017bf08c3c336f04d0246d8e967a4de2824a3ac7486aaf9160540c63f75d36ecba9261ff6b859a7684b023ecfbc5408dc7c59942c76464040770c6097833dd770a7dffc6ed6a8716b1f683379843969f937d859d8f69a21362eda9dabd64dd6fb7131ee46b2654d3aa8dc9df020111300d06092a864886f70d010105050003820101007f9d4f2848059831e5ea7d727d9b09f826027c78fdc86d27ea83d32d727ac4a0484e55ed34851adcc8903a3ef39c1b0c447c28cd84cbc513cdcd607da3fa903495a70b7772e71873e3c8a734d3e8b9f82c7380604ccb8416bd92822e703a3b8839aff411f967d2bcc1cd96d158e7839a2bff6110ffd005808f7047fd57a7150c1e14ddcfd2e1a24a5878f99409b7ede1d5f4a385077b6f55f4818c854c6e64adb4789433667e672b9a615b680301a05852255cef958ff1031a489dd95327d045be0315359644ec51f2fd3cb724382ba2425da519dbf1d89098e10a1091f44c7a8e12733b7d0b1fce7c6d19adfee3cdac89f95ed1ae979093cb2793892724d7d9 4 | idx = 3 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-distributed/hotstuff.gen-sec0.conf: -------------------------------------------------------------------------------- 1 | privkey = 7a3e5d783e533bab314bb4e394af40c1218236832a2d588a08a085125d4a87bc 2 | tls-privkey = 308204a10201000282010100c41ca3b4b6b1e06ad3f520fee6d5e1a93264947cee7de5bb4306a46f38e5059b2b13cb1ef0c8ddc2b4741fdd65ebbe08eecc611e71d9e9a7545b1d6d42bd7c8295d2c44502d386f65f9dc7a5f3718cb2dfec29b3f0358500616585b70a49c4a63d0d06f6d4c52ab69a8a0ce8035a433ed375a82bf73d47c8e40365af00988f47a9d167a9e2f991588309cd0febde560b346943aec45e066f198098f8014c4e1f3b48fc2913d262ab763f195d1aa982a4d1dec66d96d83fd3e4f59265343dcc86ceb31f8ca29cb73a17ee02b46d5fecd348354563774047f4a5eb4603c1058872bd87ccabfd52964461b59e19aab6546b27e0d9e2d065b1609fad3500d073b5fb020111028201005c49b67328cc2d5f72cdb52ca8dd1ee635d4fa9524eff3a36ad5f30729d52fd08cbe053bbc9ac2b5fa90ffefb77dff1343330086cc2a4fd645d0865188d1a40137723e3e97eb1255d2a49a2ffa1751451e14c854ad465cb4e28a20ce9b6e02301cbad619cd89f5fb9404bac7891b6af06382a97e19feb85e896b02acb4fc7fa86dcab298b38a2f74301561eab90a1f631795c6a11a9011c72cd227cf151b531b5aa5166769c7ac289ccd1de725b7516ec2a914210f4a76937357cab513a6cda6d0578e0fcf9adfe80046e9c94fd6381356f50e954a43aaef8e903b60aa5c8dc5b3081a2f7bb62cf87aa53d48f17d790c7e688e7857a3a7c4595fc114f7f2c87102818100e9841fa4d5831be0a2c8e863e04c19026df8aeea70959c2d6bb62398f1c23b3f5e0aabf10cdc4c7f7b5197d444c77dc56d565ad2763299d5691a0d141d801a6de55e82ca3e726abef90ba59af09cbaca48ec1668f7a4604e8892f6e88b4c83eab69bc07186e3bd460ac3fe6447bf5088107477fd9a73e957edf36cd87d5979d302818100d6fe8c808ff0d0a0fa137499425cba5634524eadfb56447a6e8be0c702b00245bc9f809c462dc855adb9a1fda5bc77d406e120d4e0276a0526c0f6904cfb3d166e9a8ee0cb0130ae1e4bac4db31bfadfe6806ffd41cc1c690e65d0edcbb45743ea7ad4958f8bb96e52527d7a61cc62a88ace33257bb6038773ce4ddbc436523902818100895cc751e701d429c92ae30d92ff963daa19d04daba34ccf6c89421dbb6331e90a24652461eaffd284c6958bec391cce7c8d265daef096b9c55a9e48115a69e64ab010b333cad5614734070fd8d4aa1ca35db2d4556fc02e3238550142e1b7028988cb8e131c8d747ecda4b3757f98c8822664b34bcbb66ff56203caa41683e50281804be15ec3f6913a932b15eceacc20ba3c8aefdf88b30f6376815e8b91887a5b27abfc0f4636e2fb69889bded1fe4284a52f9ac04b21efcb10e0805705c0d1249e8163b9f4fc5ac5e319c05aee3f370d3ff70027868fb173705f6f3aae47e54bf9da497834c9405f90594a4a676dcfaa599a66e4e00d8b88c6651ba302454059410281800f70e86cf110c8a070f936b52c762b90ead2d0c350f302f8022b3544b950793ede69bb340f5dde551a82100a7d78642fc9395c51a06923380f073d3405865536820deda2832b7f741dd0b73b441498587bcf7c269f4d5687c077f1276b1d691ce8b8189468f11beeec39f1df3919206a28ecbe71e09143d3dacd2a2f735b7119 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3230313030333230333930355a170d3230313030333230333930355a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100c41ca3b4b6b1e06ad3f520fee6d5e1a93264947cee7de5bb4306a46f38e5059b2b13cb1ef0c8ddc2b4741fdd65ebbe08eecc611e71d9e9a7545b1d6d42bd7c8295d2c44502d386f65f9dc7a5f3718cb2dfec29b3f0358500616585b70a49c4a63d0d06f6d4c52ab69a8a0ce8035a433ed375a82bf73d47c8e40365af00988f47a9d167a9e2f991588309cd0febde560b346943aec45e066f198098f8014c4e1f3b48fc2913d262ab763f195d1aa982a4d1dec66d96d83fd3e4f59265343dcc86ceb31f8ca29cb73a17ee02b46d5fecd348354563774047f4a5eb4603c1058872bd87ccabfd52964461b59e19aab6546b27e0d9e2d065b1609fad3500d073b5fb020111300d06092a864886f70d010105050003820101001f7b18fdb97fec16d6dd904dec67d1310a1b642291995e95a19752c41981623a7fb1fc4ce14415a312f733ccc4e21cf0a386445b226aada3f9466c7c831ef90fe709ad7e9ea37cc11844dc82e3b9cd24b0787df32d51431bc693f937c7bf5c25f10df69fcd6742210552e60b3acb6d12ed66a7e4840a355dc084dd0701a2fbc12c84316d335bd711b5f137001b61e3923a6d16cc01409f622c1e897b8d6278a8ba05830f09ca62e48d76203836e37b46b89f8a77fea166a80eaefbfe1d227d2aa2a15921ef4afd30ced2c7fb5e781650c54d46dc4bad91110b2461316780789982d4179b790c7fe0276d84653332d6f4fba8d74a5b028405253fe3a1c1a7abfe 4 | idx = 0 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-distributed/hotstuff.gen-sec2.conf: -------------------------------------------------------------------------------- 1 | privkey = 3931fc358bceb295add64460f949632198b537d0739d7c2d3d672533e05559c6 2 | tls-privkey = 308204a10201000282010100e6bdc2888579a33c9159ae5d15bfa53fa151e15be2516ed4bb1d2350b0f89edca8050ae424cf603c1e92efb1bf685bbab6144505a8957d89dd061afa9e6f39bb3e37fab2d554a0bb969c7bdf68194e6bc6cd247d29b68b30d64f9ad6e46cb1b58700e40a456b287e924a7f8b8f784ffcf792b8fa82bafdebb6048100e14bfd9ca0e01ad048c94e7a3a4cfa3b87bc8c8e2800004e77d8a480eb9c7b5460a2cf2dfdafff85f4b555593d3dd6833be58621bb2fdf19bad48b8cfb7d2ee514c9846cd1faf94700eb1a74bfe826ed0ead9af1318c92a35d036c516477076cfd239ecef46c03a97ab555ccc0e4b105d7a4a9d1ab87926927f05b917f69d526eaa0da13020111028201006c9588b8b7484cd13557611cbef0c63c0fae0fb2c4db06fab268109e7165f067d698f61102437894c317f853a55e4948ce27a802a9afc29b3ad5b257d21639490e3875f9cdcd78d0bf58b2c37c4824e76c9cc5e08c19aae9ce439428e3f6ea374e9701e6b7417c77cc5f4b147fc025a438450bc12e761d23a0f30f87f18d2c0c9422eab9ada659d04292736bad34d582c71a0f71fbf04918c632ef5aa55d8b626a286e654b8bd9fc6a9c0a7b56812dfa949d7fb82d06d2ab1bc55e0fd898bb16b7bb322c16f1fe173c6c8fa016773a06611573943807040c4c9fb425ab2fdc3d249fc462478a9c05d149774e7946b68d25d961cdf3ff6c0b7aa308b1ddb77ff102818100f33b6b1bda50e4604a333c68b42dced2d84b9f8c060aade08446105d39bdfdb1a6b8ae1b2ec5be4980bd27bea26a594794c48ad80d087ec871ee89132cdee2563bc1605f6699c019aa90ac9ca6d18753434de141cc12df85b6ab383db39004a01013894508f09843761c7b5050945037f62db403d459d872b2ca18141e71b04302818100f2da7ce9dd76eb3f62a2888e037e7805689cfff03a6f5b4bc22a2e56877e094b356166d3856667d759f5187e81a8ab25aa9ca4da4e1d8d18ee8b3df03ba614864fcbce49e98f1e69b4f0c91c381eb8505ff11bc699e1a4318af8705f3dcde62cf684f91399be31fcee0c182ec55a15adc4ebee8fad17bd8668054a98d50939f1028181009d62aeb7ab6184b6c6999f8f0b2cb300e64f0ce22206e8faaff119a5bbf367eb6be0e920a5cb3ee4443e28c6a553df6a8d701d9adb41bb72a412d12a867219fb9013b6d451728b5be6d615564dd2df17c2235584ed759fb0df9bf736fbb78a85b00ca41d9c5f719510308c06caba520617c3383eb6947cfeec2869eee685cc6702818063ff9cd8c49a60dddd51fbfe3dac8bc5fde64b44ccc470e2f598e5e764f7a97952372a5718cfd067bba12834174573a6191352f07a84a382bc93b017a01735a0b77209a5f6c275ef4a8143c05357f18a81dbc02499b7439bededd3eafb54c830a1be48717b8a8d0dcb6e644f7e7063478d5216efdddc995576204be493f4bd810281802c61da85fac8862063ef71fea367b5330d59a110665101aea517c50b410ac4f002b6779de34cabd7dea6afe3232598b3c2b7a58d64d4aff07beed03a0ff0ce89a531fbce72ae9cb2e4fa6303ab9acda86e8b4b04c4b3ad33419fb72a5f305b21df0d09be84fb7faae5bb5cc2740efe46d3c4074b8595f16491c1454c6c9293d6 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3230313030333230333930355a170d3230313030333230333930355a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100e6bdc2888579a33c9159ae5d15bfa53fa151e15be2516ed4bb1d2350b0f89edca8050ae424cf603c1e92efb1bf685bbab6144505a8957d89dd061afa9e6f39bb3e37fab2d554a0bb969c7bdf68194e6bc6cd247d29b68b30d64f9ad6e46cb1b58700e40a456b287e924a7f8b8f784ffcf792b8fa82bafdebb6048100e14bfd9ca0e01ad048c94e7a3a4cfa3b87bc8c8e2800004e77d8a480eb9c7b5460a2cf2dfdafff85f4b555593d3dd6833be58621bb2fdf19bad48b8cfb7d2ee514c9846cd1faf94700eb1a74bfe826ed0ead9af1318c92a35d036c516477076cfd239ecef46c03a97ab555ccc0e4b105d7a4a9d1ab87926927f05b917f69d526eaa0da13020111300d06092a864886f70d01010505000382010100c2ac7e90aac6d2d2db1e9b0430c3de91d56800db71d8525ff044457052554fea53877edf80fc972f1d5343cff647d7d068fb72e5d9a74153c6b0adf4502d0eca325454b50779ff2930d176aa14a4537edf17b92e69af6d97fdcc733d62dd69f90c4b622b447bf196e0df1588fda915146db9b8c793ea8d68413fabce9e3bc321316fcc58e9d95892c6e7b98f0c2df79c1ecf0d340cecfca62e3b8a108197758fc0354e981a84cd31704af565171bc9c874eaf30ea5f3f859295c258365780d0c1f9806956ebf67ac1a597a045a6581d065e5e93f75d30d4f2c03cd611351f1a34fc8f48592038bda99fbeb61e13ee43c96379b07fe4db1fd113f8a0009d12659 4 | idx = 2 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-distributed/hotstuff.gen-sec0.conf: -------------------------------------------------------------------------------- 1 | privkey = 56da9094a17effd782a7f31f33b731047e210517883626566115f9cd27ddce31 2 | tls-privkey = 308204a10201000282010100c06ea12d6b7ea8daecbb416051e44e7ddd1a2ee34aff8a446e3f39c27af765ee5ab97629795e91ef4831c57d819c3f9772b7722685047f57e2dcda60ddf8414dffe114c68c282bfdac32012a01fff4c55e45b5eb7a89e945c568f83892a2ab9d2c44503249f108b2020cd33fefdc30c284426a444a32712e02ace8899fa22ffe1010fec05606df0ec85874800f43da53ad3381effb13b4033d884e2a6b8d15487332b7481b081b1e3359d9a01f08e3c838250367aed8a961f31e9a30eb7b8d077d8b51fd9b1ccf600717e1412347cd0e46fe18b6cf49942c54afbca95feb5432a2d34990de8f82874362e1605bc0a01a39571926de1764967c570b87312103fd0201110282010100b51cd3ee834a08559383105aa76d770d0c54e0d5ec3bcd6d94f0365caff7e776ebf9d89f8149f2c316c56e943dc03bd9d5615c607d3168cb2fdeeba6768f4c85a5888c06298f387647b697af10f0e65f67c923b073549f50b9cc34e9f36becd029a9b4e4095b537a5c484e5a4b29974da9a7eb8b91206a85a82a44454af2fffc8b2a49a7062d05f7976bbeec9f616760ae680c7dc57a20df42de89330b34d394e15f21179aa584f184fb884159cec3688a38543b4cf3fa1c58138b7aa830ceafd54edd263edf20439c55ded26123c6eb31ca4e7e00661283985a531f265d00cf9666c12a2e11b8555c1c867857e7f49a50ef19bd9444ae15da0e7b262f2050f102818100e642202c2386f089325a228d96fcf65cb1de8ddf73c0a87da7436a91b949c8c0b692e47930be0e22c88f4193b6c67124e3e7cb7e4aec5d6b039fd443004a7dc37a1d87311d2ad5a3711c997644031a669e68bdbe30744f7b3b601214f073c958835c2b1048e8ae183fe0c174dba8d467e16598125697a843dcff35210e2c9a8102818100d5f1f052bbf0182e851bd7170eef6620420666cae58148985f3871d2765b2bb98d2abfa5d5fa2fbacd7f5746f8d6c30441615e6a62291238d1ea01bb987d33a930c9ffd3db24e774bfe00b0b580eaf4dc3ae6792be68d105476fb24356b4b9fd8fa9f143c4b4009451a3d10ba2b157ce61f375bb19f6c35b67a8738d90e2137d02818028a241e9abeaa2eb08e2bacdb13bb3014c90af9fe7401dbbd23912ce6bfdf64020380a3381127af71455840b022304e8647432f82b56e34f1ec1da29f0fe16318e0535f99bbc43d18c6e756f392db95d673fa90371f668610a7a5d8b397dd83ccbe316a885563cd71a54d6d862ffad0345e4c07bb4ed962a17f0cd23f37148710281804b82910e24369f1f7a460fadc909331a71a7e80b600f83089a13ebefed8996f631d2da3a87c1b67e2a692ddcd04bcc5bdad71243aa2c9d04fecb0fab9f3b3f68e40b0eff7a857edde95e220400f61fc117e3339d3424fe7a5572b7630f8b14779c1ddcae81a8f12549fd95132a5cb5942292298d547535e40677b05015047f5902818013c848d77b7504ad141ad994b6b1089c738316c530c0f29fd49e47e2020a8b889dd583cce1395a3fcb1189c82a3a19b0f5b93a159f3dd05f0abfd9233b5d3fda7e03f41f7f84d091dcd20a73792f5adc84c778f99ab3d04a3027f1e3a532078b006cb2584756fad551becfbbdc2abccf20e820078bb0dd30b1b9587b2a0d1935 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3231303531373138353235335a170d3231303531373138353235335a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100c06ea12d6b7ea8daecbb416051e44e7ddd1a2ee34aff8a446e3f39c27af765ee5ab97629795e91ef4831c57d819c3f9772b7722685047f57e2dcda60ddf8414dffe114c68c282bfdac32012a01fff4c55e45b5eb7a89e945c568f83892a2ab9d2c44503249f108b2020cd33fefdc30c284426a444a32712e02ace8899fa22ffe1010fec05606df0ec85874800f43da53ad3381effb13b4033d884e2a6b8d15487332b7481b081b1e3359d9a01f08e3c838250367aed8a961f31e9a30eb7b8d077d8b51fd9b1ccf600717e1412347cd0e46fe18b6cf49942c54afbca95feb5432a2d34990de8f82874362e1605bc0a01a39571926de1764967c570b87312103fd020111300d06092a864886f70d01010505000382010100190d71c86c9dc32b164bf1feffa63bf6806185296425cc41732fdbc2302c431e9f13092a8bda3439525049f929beb3590322d652bf8bbed42e7ab196b2d944b5e379d82b572d5dd1198a4d83c4a29761c929aeee092641b698bf2ab7e68d14a5dda152d0951f95600cb421a9cc1dc711ea20ca4139dc007871ba620ef46e42094da77a5da1328bb3e79f0b04a551d3e891f67a4f57c612e86b12c342047430e5fe240c124e6ad99c3a96cfa2f66001c13f62d8675b13ab714318a8ccbe49315037cd50e516851cbfba3a49a146f14dfd0714abdaec1a96b07285b9a9adc6e9c03de6881895392eb97331ab0113b9395a6560102d2fda8b8a62a607eb3b8fba23 4 | idx = 0 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-distributed/hotstuff.gen-sec1.conf: -------------------------------------------------------------------------------- 1 | privkey = 536b7361c1295ceb2db3f7227812a0f231a500bcbc7f3468684e109ab419529c 2 | tls-privkey = 308204a20201000282010100ba56ff429aee9589116f5c26ec7dc5fe6470182259ed2a0296aad0b333df6f6333803f7212bf43482ad51eb26986d745fcd44b99389bc96ccb899788ee8b0a1367b7f0466b29e6216a4ebcfce72ce0d1477691d4f26c067216f60af8fbada83d7c143fdcbe258f0b3395daed30779118fa44c61aceb77e8063334a6477cd538aa5ffde447bdce162f7590ab7756d5339c248205759aa187c67d7e77a20cbf4e3c20244ae14792501e5cd4034fa443b3070a4dcdfb67353bcfb40a7a10996e4d7ff97fbda82c50d019530834861d1810e587f37885760a2cd09f17852038818d8ed11492706e7020e166ee37b104a0b0dcade064929594d0c4fee181100b3fec1020111028201000af60f03eafef9bcc4ca50b6feda38d2ba9d2e989be0c63c63373973f3fe159c6c70f4ac5b74a99ad557d4a115442ac7e1b222908adbfcca2a1727080e082dc4e7fbc2d6f73eb32f245efc0ee06c0d397cac9f2aa4d92d8e3d9600a53bfb28039de312d0bfe417792126eec2a87f8101782229c55774349e23f3f551343941262c4671b4bddcfe1f0f722ee4d5af2342b7d26324b73a5bd7b58377485a8898b2fd19c26b248556b4d34bbb21520f59b029307fa9de96cac21c2166691ba2b289c4f4823902c408079e7dc59be5fdb971710b00f058c91a2d5ed5eec2ff96411e390e452a21ab87708636ade8bb67f645a293207642b2300e7f7df73a05f83d0502818100e52076ee7e5bcf0db3d5bc41de9ecd419e7cc79cbda7a0501f6276bc217d135f7d7238d3d565492bb545a09f1886a44d1ba45a13407d8cf30427168b48bcf1c90aa328397b536906061768cd896c641888ae456835c437ab0e24d7bb7875e0e232dd382b1a96006706b52ef14d8d262388a7e645b98169d7da26da9617aa9e3302818100d031da5561d432453cee3143662d2e89eed2c34a71225ed93aba84effc3cbda175da22bcd23919d42880325f6eb8a23098c80884adf24fe618e1c41aeb0c17e8e0b82dd7d86d1b7a08befb20928bcc6d4e15e22a3c41ae1eaf97c5a39217e4f4f041792fafed032e2618281550d58a4a7670f8290202b23dfe69d2a0838d533b02818100ca2bb43bd8e798939ead87fde28c1e85317d28995c0c6046b247d22d86f5e3ead8197d6f9e2c3180eb3d6f9b6ffe54bc81cd406b57055e3fd67cd7a813011193459f055fe54998e7328d203ce2aaeee87899c4c55c9e130057c627c3886802a9782c9af8db390f69f6dc1a5c719aa92e69851679c1cc8a9148042a4832fff4ff0281806e3882a5ac4329ac2f50ece7725427b26f608581c36c8c911f17738e1c2028284d737bcd603c58f7d934cf5fb31673fb9c2daa281fdaa2c51c3b49b3e5d939d5a42545724566f06dc8651b89b6feb7852956e1256b31d4a6d56e77b0f2fd97547f31b8a0c68c89368ca36083c161fdeb2fa53815b5c5312fe10ad8eb90f0775b02818100a6d6a3293e8c888e6a2cead0bf0f07e08aab527439807c6ffe6d9a7178d5b4feaafb5297a0253acc7d7a3bf55bd361b57cc014a71b1842a4641bd006d816e252d49a6299dfe0b3d55be80fbcd075253e16a3c33ebfcfa688430c8a44002bdcdf01ca4468ca54f6bd2a45d2dc7218869cdf67de264fa99167532fcff09c892672 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3231303531373138353235335a170d3231303531373138353235335a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100ba56ff429aee9589116f5c26ec7dc5fe6470182259ed2a0296aad0b333df6f6333803f7212bf43482ad51eb26986d745fcd44b99389bc96ccb899788ee8b0a1367b7f0466b29e6216a4ebcfce72ce0d1477691d4f26c067216f60af8fbada83d7c143fdcbe258f0b3395daed30779118fa44c61aceb77e8063334a6477cd538aa5ffde447bdce162f7590ab7756d5339c248205759aa187c67d7e77a20cbf4e3c20244ae14792501e5cd4034fa443b3070a4dcdfb67353bcfb40a7a10996e4d7ff97fbda82c50d019530834861d1810e587f37885760a2cd09f17852038818d8ed11492706e7020e166ee37b104a0b0dcade064929594d0c4fee181100b3fec1020111300d06092a864886f70d0101050500038201010018b3b78c563fd36b067573d4738106cbaac78067e5654a9ef03dbf75d3c803ddbebc0a702df289871415d6da58437c191e1f11f69f2d4bb846e983d16c64c068f8eb33efc972bb7ea9ab110162e6a8d459722945e31bd21365df6d2c38e2deefbb646904eb6207d19c909c0596312fd7d68ded267c342803ad14c1247b8a0923880b13d5bd329dba48c40eb32d1e5aef8701ea2bd69e64ca916557f25da2fc6dd26d7be328e0ce55f9008721132b4370846299fdfbeda224e53be73970f2e4ef85ce03099853e29b634d83a22f1c3e5991e73d399f217508e87cb11bcaf63e10f0f1fe382f43fc1ac27931a44ee2198a9e795961916f43e22695942f455a62a6 4 | idx = 1 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-distributed/hotstuff.gen-sec2.conf: -------------------------------------------------------------------------------- 1 | privkey = b491ab223936fcb222332d8a9dac4c3cf3011eff3f76b3e25b417fde1129d065 2 | tls-privkey = 308204a10201000282010100c09ef5882384903d339afe840eec1ce9afa2bc589d962aefc36375389df99716a5062a871ed687998db9eb9cdcd0780c91efc957136e0b7dc2b540876ed2b23edea7b0351efd8fbd4d22203cacc968344c2993351f371cb6f3d9e3349486da2fff1e660be789d924fa923e1566244c816e9af59a529f4f3241c20e3c0e8023762b3516ec81a0d8c97fe090bdb4b098fee1ef2ff4d58580de6199d1d5b421e9f96770d2dbadc88bf4b4043f219e4d69bdc46c0840dbc9cab7abf993dfc4033f4006217c90ca9695f50d2b991a8efa077bc4c3c8c49711dc801434d4274461a6754bd9acbb8c61ea1d2e0354b4437c160deaec9d755f6661c811ec336e04a30e33020111028201000b54a5080216db4ee4eaffe9a6865c0dbf09929bcd08d55965d8ac8adc1dbd97eb96f3715c2abcaeadfbe0aedfd0070fcc5966324c6fe28eed55f4bcac2a82f4a3af82d5f2c39f0b22a7a78b1939062131a817b7d4a8e3924a9458a8bd715820f0e3aba658e9fdb6e19021c50602229e33aec32732095f02f4cf2e038861e3f7ca3dd139ccafc0d5f638fe4baca92ddee049858204d01b26d85d6e60e4f888af34144cb02913f8ebdd9086bdfcc3eb0c1b466e415a8afde871804e85de8aa2391f2451c88690e5bc9b1adc5a1fb29df09dc0e72af4e63ac366937bf7bfc63baba57084e0d77a26d9d4e068fc8277be7b2b8bca2e56d68d74b5310e9db19138b902818100ed516c5291ac9f6853ef81dfa29652e1c283cdf0904cbaad1a16001dba0bc1000dd29dae00905af2a61b068a04eb985544e25f07d471a2da5a5855fde28960d58232dc8cf6fdfdff7355b95418a659b3ce44a6d91f7894b75047ffe6f960906f274b87b93f3af02978419d787ee74512da3d554112bbe5fbea5e92d776c425fd02818100cfc8c5c358486b2bd2282bd79ade3a503a898461f366f89ce94f7d48c5951556e4451d7af2e4a958575045f9d05f359aafdc56e2041d4b6dc81c06fe1a45189f728531b2e3f9566f4d0d3dca5b7730cd7cafc811344f60cef42198cc8ed71fa028155213fe0a657c92dabe771aa12acd2c66db20886b170c1f4ba81dc33a23ef02818100998f09db12f739f8364fae63875235a1238276323f40b506986896a9d2bc4fb4bda666072d8a953398a8134a3f6b447368ceb5f601ef2d23e01b0a771a1ca811ae996188639549ffa4fb3baee2c5fdceb2a4e46e5fa8603a611f877756114e660a5e0c86ecadaa752fb1fc7b24efff84ab54dccfc0d3ef2a88978c31109d098502818024aaf5b90f944f25d9cada8f75aebeff19638fd50cd5efa3383b343a04bff4b4fb1b41700cbef0b53c95b1fee88945b1e2cc87cd884167a9f623104af593b90d14359f5bcde0b4e677025632c4d8cc607f6a507b81b3a7ac0cf6debaafcb9c2b525e1d8b0eb68a6147178b05f5a3f87e8f5d71f6aea97c89ab2b78054091ca1b028180305553e2b01bf431b99edc0a98507cec3e0b9c2a539a3081a3e098bdf5da6adac4f4b5a58dfbecaeacfd6bffcc8e3fedf53c5232cec710f6d557e6d9376f6b95e2574c374c420ce232d981fe08907ca1b3376f68bcf6bb8ecea2fbef44ee8a2a9f9fc52e95f4d5f136b00356d84e72d8952f374b73f7f18f33431abde2f4799b 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3231303531373138353235335a170d3231303531373138353235335a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100c09ef5882384903d339afe840eec1ce9afa2bc589d962aefc36375389df99716a5062a871ed687998db9eb9cdcd0780c91efc957136e0b7dc2b540876ed2b23edea7b0351efd8fbd4d22203cacc968344c2993351f371cb6f3d9e3349486da2fff1e660be789d924fa923e1566244c816e9af59a529f4f3241c20e3c0e8023762b3516ec81a0d8c97fe090bdb4b098fee1ef2ff4d58580de6199d1d5b421e9f96770d2dbadc88bf4b4043f219e4d69bdc46c0840dbc9cab7abf993dfc4033f4006217c90ca9695f50d2b991a8efa077bc4c3c8c49711dc801434d4274461a6754bd9acbb8c61ea1d2e0354b4437c160deaec9d755f6661c811ec336e04a30e33020111300d06092a864886f70d01010505000382010100b55c6c594cf7caec611102aac5830ffb092844c446826692fb45f4457a26b8043744f9ccc5dc839b65e716619b48395d5d16109abf5e80489a4137ba4737bd8e0533c59034adce74366eb8a69f8163cfe5967220e02af4f5a35d663a9cf3172edbf204f973b0a914c93b8df15c21e4cf36a5bd46396f832c329e6d310215c6125fef0594d7c1b995d5fd7396789fe516abbb3a58dddc00153eedbefeb7c17e18981d340369ddfbb86da34957bc9f168daf0246d181a9cef30502857aba605fd57a6b87250c6a88673e9241033457bbcfedd647d965fa159bb92c7b23d88657e63e7dd75f161b67a634caf69f2b18a7997b184d524c652c9281d21c07a30ac375 4 | idx = 2 5 | -------------------------------------------------------------------------------- /experiments/pompe/conf-distributed/hotstuff.gen-sec3.conf: -------------------------------------------------------------------------------- 1 | privkey = 48e9079e538ac37c139a8c3b20755633631b03ded00e8eb58c66f163c1b64b21 2 | tls-privkey = 308204a10201000282010100cfc0014ff1b5b734f06d12a6736fb71e860b38e78758c7477f8adc90cc29d0edcb16fa2573d84d5278301458e55a2caa15419a514de7c982065e7ddc8b6912836dbef47de2a4c5bd82ece311be795f5ec570947a7aff6a6d40dba820c41dda03a1c99b4307e756e84f5e759a41f11b4ae1d9695187cef3e58ff6dbe54d1324b8a44e385db443b01833c5bcec64d04e3583f6f917e13845f291cc29be5f6f2353a11849bec8eb83b412bfd7064bcdc41e74e038cf4a9420fc229146d18fb7e0d489027882f5c4b721b930b6f49ef6b36c3e4c2eeeaa7b46a5fc8af6b5bc374b10164e99c8989c3e4be07f8f85267d675411124490d2f6fc6ec1872faf7eb6de030201110282010024a969a4b22f2054a2e612599be689ba17a7a0a1541eb9c152be26ec60439d5723d6e0d96ecbd168e8087c0fb000dab49a56deff49fbba26011fbbdba02199daf53fd0caebc2b97bcbcf735d7bf74d10b96e3851d9785e1347ae4ad89b1453a649ba2a753da14b92685bf6a2c057b985af629a1d7251b291ec3a9f4695217ef316e27148bdd36416f3e3c9de9730d7b0a0217f687aa3e4a331633de00bdda412c1213f0ce07d04fd0e1205ad59433d0c8413b5fe294f4d3ee766f8b3e98b4e7068768161a7b4720a8414fab8e628e54c8835e95aafba48f24b72c4047e783e5f9442e9169f792049920f1c2c3ec5359e0f8ded0f7b67b3fa176d418454277a5902818100ea5dcb7b74e743193d51f9cec6b7bdf508acc830d10f3f4fd0498ae61399edaeebfacff81bfd94f27ca238a0d79517bf7c9907f971d950e91256ae6b4f27593ce984459606b650098299df05124189df6e7cb7fc678eebc05b4a4f0da810a0124c273fa2e36d55d74c74bf9d1a5fcb3ad3d639b274041c2ce8644b038502fc7502818100e2ed40460bae8b279068f5daf003ca024537099703dda1b0a9a5958d5ded3e8fc40bbf285f7ed27cf10cd38f2510fd180bd77ee043f96fae9b9dc1c01525cb1aa4deab18e3653631f4caa08274781630769df745b47768334b0ba639477d498ad756dbfad82b317e585fdaed53156c443a6d20dbf8fc8f0dff0d1c137229819702818100b338aaa9b3bfe8043df364ad2e8c8233d975118ebdfc99d39f474c195a488894d2929f09065880f5aa9a2b4dd20899b08c7506191ad35bfd867e85611e69625bc1a16263aac7a69ddc578c6d4a321e23547d7da2e5c7a538be47e21980852f1d0d0ef46d80bd056867a492873249410ede3a685b49a8ca407579df02b102489502818042be40149a0628ed84d3939abf102c5b054c6c3b799b89e8aa5de0b11ba021759403747549436b15b04f110bfbd7d1f8037b9dc97d677b335af229ed336577f8c7145070bb5a00e1843b989ed6f624a4d797df50bc9b971e25218b3e05f7ac37e4fb6de05db259d9ddc1d6fa81d91fd7d4f2eb8bfdefedd6f0a980ba6cdf07ff02818035391879df2d940d97583581c3b9aebbc1e0623cdb8ddb29cffe2b41d0af5306adce8554a353e2d0b7d30b019ffc7ea8beafe05e94785c78526c73426f98ca5cb533d195cb968912908eabca64821d4f87a471d77c137e7669deb2ffae7eef763a42921b1e3db1dfa9d4fb8195b10edf856c6eac0f6cb8359e4e3b5edfe46da5 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3231303531373138353235335a170d3231303531373138353235335a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100cfc0014ff1b5b734f06d12a6736fb71e860b38e78758c7477f8adc90cc29d0edcb16fa2573d84d5278301458e55a2caa15419a514de7c982065e7ddc8b6912836dbef47de2a4c5bd82ece311be795f5ec570947a7aff6a6d40dba820c41dda03a1c99b4307e756e84f5e759a41f11b4ae1d9695187cef3e58ff6dbe54d1324b8a44e385db443b01833c5bcec64d04e3583f6f917e13845f291cc29be5f6f2353a11849bec8eb83b412bfd7064bcdc41e74e038cf4a9420fc229146d18fb7e0d489027882f5c4b721b930b6f49ef6b36c3e4c2eeeaa7b46a5fc8af6b5bc374b10164e99c8989c3e4be07f8f85267d675411124490d2f6fc6ec1872faf7eb6de03020111300d06092a864886f70d010105050003820101007fcc52d206a659fda7db6d8495cdf216a9ae821cc36316862af68ae213852ea2e144b1519e8d536fd929bbfc3b05a7c943d7b1f459ee4279d504aefec48b6e33a54e584620e42a4f3ae47fe2224a004bbf74eb73fd06cb8e17d40f287714e74c66fb1dfeb7ea6ae60aadcc966e08134adbf1ca9c0b55f8842ceb5e744168bfe3067ac96a75c7d3cad6c97a2a622e962029d713f2fa8c69af160c8a30d3ceebc48212094e707465e5ca1475ddfa45f81ad44abe5f8f2c2e755533ce4ae0828286c9abfffd88e493075eb1b553904f9e3b0fff29f76e4f543d97acabfc5ca7d5a99bec13dbcd49734f6c07a420641b28a961e054c01ab7ce793bed65df564c4fbc 4 | idx = 3 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-distributed/hotstuff.gen-sec1.conf: -------------------------------------------------------------------------------- 1 | privkey = aeb9064a651b86377ef6c1d11dd0337deb4eb02bb45a66ee2d8d5e1df007dbe8 2 | tls-privkey = 308204a30201000282010100e259cc9f8f0750cf5c71adfb61988802e5e3aa2d453cc4eef6a361a382255278cc86c8a6daccd5c3042c81e4951568dab1117cc2f36ff190aef27cedc33fc4c22a364b64e26b4307c00cd0482499710faabe34712b77eee851e10c7eb086b23cb506e6df216f41339cbc644b428e2465bf1ac2abc7ec373ae4c320c8860aff50d32b788a8cf325174331d5bd22cd5595392a971f1a2d4cd8856256d18d78c7e295d69c96ed291cbbf77498bffaf1bf754acef89e9d3ccab78ab3080f7104dbcc29f0d81ef0924c35d6d7ff0abeabaab72ecd39061070a7267de6f80bd6c8f2a1f6961d886f7bf3c9faaf3147860679090058953d4287f4ae1b5d80b224aa39390201110282010100d509390ea4bb9759c06afe19c54443c67e0372fd6e574feff7305be52f322f80c07edaf764848cf3c7b16b317d4153a0a6a70c02c6fff26a0e1166856c7840b6be5137e67abf4e25697578bc5eae888737499ac4dd9e0e07d497934a0f8dd4edd78e0677a6ff4c6ccfc05e64f3589aba1d465cdde956ca91c83f2de9e791e13b3da0c87cd5035c106b6d4543c8b0f9d819f751b916e673120b1eaa4211bafaa0449337fac41c195c9851c7dbd35668214b9a080a737ebe3dc59853ffc947fbec7d2efae7b2b9179540a60c11ce2e37df7e7647660af5d4804a4b38aa7a4368587019c658c23bfcdc276ac5ffeb174ff8856e36de5c68ab7a588a7931cd6268f102818100f89fc14b99fbd14976854872c0ad8104a49d0fe380f84e784ac322ac84f94b285fd92b4ef3001c9a748426148c8a6bd4b934468a77ed816fb2420b09f691b6b2c0f21fa1dee0b0baa9f5f1ad1888b18a4641b866ca9c9e26b7c1e1d651ad7847ce0d228e732dd3af978dc94f2d6663479dc79481e5fa4ee024ab3ed51955394902818100e910e23a50a3c1fc5a8873b25ce3cb1af8f6c066f0e0241d0ece9f3ed5a8d26fed2105cd89cb252f21198e51dddb84fd314709890a989f26367f23c5b496a96e23fccde6e3ccf26c9831a08abb11ddcf722dd4c2da2ed73777352a006333db7c316d983badee6370793ff5986ed750c954cbe66f1a5e6f9bf89f2118211c707102818100923fdb1d69a32fd0dc4e66da16fca63ef76b72c20fa11f199563ba0b210b1d26cef83797da3c4d0f8fd543939df71240e56a0b6082c7f1c93bae60d8af28899653613fc8a138e06dcd637f1a86e6ff060b35b7c3feb67b25d5811b6f02de82fd0fcb7dbd34b18b947744584cb14b49756bdecfd3f0b15b92e864bb8c694130c102818100a484637475284cb221c9bb147dcdf8c7becc4b93f552ec50bf28706896d1857c2eea2236bb9e7499bd02fb0c9c9af4767d2315ca2598e8cfadff648b8e8877990a5818df37637df24d503516a22abab08cd50ea7a91201545425870f55158bdf31f3020c024debd6ec2d25d502f25724b453b1b7d660c740ebbb9ee3db23223102818002d5e7b429033c17a0cbc57aa4f90fecca4aa0a1d363ae01c83d1231014e62fbe31b837af2e6c51d157f8c8fb418de0b84513a8453242cb81247844cd852cde2b397d54dea735bada9b8fa0df4273e77494f105a729c14ec68058680b5d85245e606db9358045e6e702c125ef2ad714ce06c64e0b4eec968f9712b1352f3ab1f 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3230313030333230333930355a170d3230313030333230333930355a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100e259cc9f8f0750cf5c71adfb61988802e5e3aa2d453cc4eef6a361a382255278cc86c8a6daccd5c3042c81e4951568dab1117cc2f36ff190aef27cedc33fc4c22a364b64e26b4307c00cd0482499710faabe34712b77eee851e10c7eb086b23cb506e6df216f41339cbc644b428e2465bf1ac2abc7ec373ae4c320c8860aff50d32b788a8cf325174331d5bd22cd5595392a971f1a2d4cd8856256d18d78c7e295d69c96ed291cbbf77498bffaf1bf754acef89e9d3ccab78ab3080f7104dbcc29f0d81ef0924c35d6d7ff0abeabaab72ecd39061070a7267de6f80bd6c8f2a1f6961d886f7bf3c9faaf3147860679090058953d4287f4ae1b5d80b224aa3939020111300d06092a864886f70d01010505000382010100874960f9836e473eafdea15a9059230d745a6f2b4b64e2febaedc10bac93a44a8faae841377e4ff917430ea6730923967272f3749f7f0a01665601f96537d580492cda2c2b49abfbd8044d7b0ebec7d8af82c997130dd4e1ec7dce3a20a0d047617af96e7a15364cb71d77a26596b30f37b606fd046faae420126ee1a574bae247e45cd1eb24c99af45411cb146f71302bf08265e351e7f131bb871df1591e554cfe5d9204029f232a78da035a228e4b8ddf8635d8a5b1a051814cd0977bcef328aac3e83646df42d7297beae81ed2726f2bb3739de9ca2c062ea1c407543414a00d3a49dc0f9b06c3addd6e46a911b2b913490b1f38b31d39fe55065ec4c6f2 4 | idx = 1 5 | -------------------------------------------------------------------------------- /experiments/hotstuff/conf-distributed/hotstuff.gen-sec3.conf: -------------------------------------------------------------------------------- 1 | privkey = 09e34094681ef124c947fa8865c775ce440858ffaeb17fea5b5bc8daad5412f9 2 | tls-privkey = 308204a20201000282010100dbd38f851b1c649059e5b380b8bcfc92b42d6ef61b065753e23a7df8fad8ff3fabe64c7f98cc95306bde812d488a1b26e88417b0820982025f31bd692a6689a1030142d3cf47f53972eec1ce93fbaf123110d83a9ab8ec2c7ef2268cd1d547ee4cc1106edbdf05e2b296a2214502badc3040f5c7e01dfe52a2d62f1b9c5503974c0b15f6ad6e740928b495876f846f9068c30d60c9a6824ab3a9b79fe5c2ab984888bc86d53da84932df87e78281296ec6226fd3bf6b19e51859df544d0a1706f47b75e773c7ee3d95788a35aa6782d073491f23253be9738d442038e3c17ecd174904f906985f55ce8c08f41b8991dcbf49cd48ff31f499289d82682599953d0201110282010100cee53bc891fc9ae2367dd61ecbfd29f37c66ff05bf1506e589a0768ffb2695e192baa259f93904e24768011b8f910a7ef8f4cb007a634d2f68a748db7333545b4e1f4df486da503611d1a75903bfb3d4e2e2ad645562c029e0e3e80c10c8bc2b938887efddff1499208dc5c4f5a83765d30ff661c3dffe6be48d598365f5a9051f9e217dfa56d55ce23f0510ffb25ee1b2bb338ac1344c34b7b672733a076676c61d8591bc364fd9bfbe1af83445b88acf4734ee0d432d1e18cabfbe3ce6026bccf3d4f4cc7bd08a53de76eb9d73924e8ab715d250e7c11cefe4a78c57731b821c6ec6bd728381e7d1faca0d507f7c1fdd0eecec680d49ab619b506db901f8b102818100ed5ecdd419c5c2f5cfb4d272f774d1de40e9470b11bf87fc4b90318d655a821faec2dbdc142758e587dfc9cb8b3463e34a394ae7ba140f9d65adbb42bbda2a01a04bce551bb4d6af397753b1df7852a82a6e90b8a475d29931463e97172ac640ce04571d3e498aa7f46f9733b2db1e7da0eee25785149990c57560fd053a1acf02818100ed14448cb9ac6e60a89ccdb2686218e259f2df924a9f695664e7ac7812c04c9a674682bfe91c9a8c4f45c1743fc2b177ffad7caf173faa57b854b857707b8a72ca6c954e3ecf89fb62e4d82973a464b4d578073b0acfd9ab9d1aef9cafac6b520b0efab27ea31aa78b01fb124326ff7d437b0f364b8f3cc24b731bf68bcd62330281807daaa9340da4eebe5ee7423cdd5bf6a2d712168d63bfc076825b6587178a44e398c183748323e3c4cf7679e43aa343f0ccf127a7dafb8fcbcc6b08c8fa0a163d18a09a694ae7447ae2301d400ce558ef9dfe4c9dfcb6d8e7b0acb7b9669e2cb8e589d3c43008d0ef816840fd40921f3373514aa6cdfbd8d42c4d3358c6882c4f0281801be4444cca8cc1b104c727422a65e4cf55e05689ae6d1b7393668cc2d507908aa2bd0052d0217b980953802bcb4414e0f0e73bd85d168c82ca6451ec2b59d40d8139f3729dfa4c77ed8455aa8613572455596a432e72ce506cd5fe126f0539cd6ab677d8c39ab7d779c3ff6b8f6dfff09e86f2bb17f2bbda9f76f43b1f81931502818100cd1a44702b80fcaca56040f8c8cbe1bfe5e91afa177e67d8f55d2073244685fb6a78a58cda38b7ab6fc61299a8f673a234dc9e7d5f780586ea97801c5df347f244e97604546f79d651779508247d9f175d7d53d169e4c1dba7546c16b686b19d0dcd62b07665f77dc3545d8e1a453b097b805503d7fafb16ba62205c960fb3da 3 | tls-cert = 308202e4308201cc020101300d06092a864886f70d01010505003039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f7374301e170d3230313030333230333930355a170d3230313030333230333930355a3039310b300906035504061302555331163014060355040a0c0d6c696273616c746963696461653112301006035504030c096c6f63616c686f737430820120300d06092a864886f70d01010105000382010d00308201080282010100dbd38f851b1c649059e5b380b8bcfc92b42d6ef61b065753e23a7df8fad8ff3fabe64c7f98cc95306bde812d488a1b26e88417b0820982025f31bd692a6689a1030142d3cf47f53972eec1ce93fbaf123110d83a9ab8ec2c7ef2268cd1d547ee4cc1106edbdf05e2b296a2214502badc3040f5c7e01dfe52a2d62f1b9c5503974c0b15f6ad6e740928b495876f846f9068c30d60c9a6824ab3a9b79fe5c2ab984888bc86d53da84932df87e78281296ec6226fd3bf6b19e51859df544d0a1706f47b75e773c7ee3d95788a35aa6782d073491f23253be9738d442038e3c17ecd174904f906985f55ce8c08f41b8991dcbf49cd48ff31f499289d82682599953d020111300d06092a864886f70d01010505000382010100ca964bbbb5a90e8f666017288dd630f09f188d1c5f711a8f66644d9b4e9f2d55e384690d8b5f32aa50d7a0a914eb263488687dedec65df404d73a328a5e3a11d62ddfe8d4a5dd0e771c6652f7c64dfafbfad1ff844f9e35d163e59cd521ef6975a1a58631f3d2c32b03ab6879870ccb976461c03e68b3d9cfe609df3439a5c71e2c68f96ce505380309413dcf7d89e73acc775b415a3479e3fc6b8e854afd021e76c3e44fd0615bfd3307af74e8f99e7f95ab8f0d55600982cf71ccc59327674e00047d15a8bf0cb1c9d82467155cb77c39f0d0a0c24fc86eb1c7c6a48fe787a7bc67349aa7bb8c1b4957af24997ed5ceac7f11e4cd1fb3dec0c7a52b0b83e46 4 | idx = 3 5 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Pompe-Hotstuff 2 | 3 | This repo contains our implementation of Pompe on top of HotStuff. Please refer to our [OSDI'20 paper](https://www.usenix.org/conference/osdi20/presentation/zhang-yunhao) and contact Yunhao Zhang (yz2327@cornell.edu) for any questions. 4 | 5 | 6 | ## Build and Run 7 | ### Build and run on local machine 8 | 9 | My Linux username is `yunhao` and machine name is `driver`, so the `yunhao@driver:` below indicates my shell prompt. 10 | Replace the `yunhao` and `driver` below with your own username and machine name. 11 | 12 | 13 | ```shell 14 | yunhao@driver: export POMPE_HOME=/home/yunhao/Pompe-HS 15 | yunhao@driver: cd /home/yunhao/ 16 | yunhao@driver: git clone --recursive git@github.com:Pompe-org/Pompe-HS.git 17 | # Feel free to change the /home/yunhao above to any other directory 18 | 19 | # Install dependencies 20 | yunhao@driver: cd $POMPE_HOME 21 | yunhao@driver: ./install_deps.sh 22 | 23 | # Build Pompe 24 | yunhao@driver: cd $POMPE_HOME/libhotstuff 25 | yunhao@driver: ./build.sh 26 | 27 | # Run 4 Pompe servers 28 | yunhao@driver: cd $POMPE_HOME/experiments/pompe 29 | yunhao@driver: ./run_server.sh yunhao local 30 | 31 | # Run 4 Pompe clients for a 30 second experiment 32 | yunhao@driver: cd $POMPE_HOME/experiments/pompe 33 | yunhao@driver: ./run_client.sh yunhao 4 30 local 34 | # output will look like: 35 | ... 36 | client backoff 1 times 37 | client write to order log file /users/Yunhao/Pompe-HS/experiments/pompe//log/client0.order.log, 75293 entries 38 | client write to exec log file /users/Yunhao/Pompe-HS/experiments/pompe//log/client0.exec.log, 75210 entries 39 | # which means that, in 30 seconds, the client has processed 40 | # the ordering phase of 75293 commands 41 | # and the consensus phase of 75210 commands 42 | # and the client backoff once (see Evaluation.md for explanation) 43 | ``` 44 | 45 | ### Generate configurations for distributed cluster 46 | 47 | The Python script `$POMPE_HOME/libhotstuff/scripts/gen_conf.py` generates the configuration files. First, modify the IP addresses (or hostnames) of the server nodes according to your cluster environment. 48 | 49 | ```python 50 | # in hotstuff/scripts/gen_conf.py 51 | ... 52 | # datacenter small 53 | ips = ['10.0.0.4', '10.0.0.5', '10.0.0.6', '10.0.0.7'] 54 | # modify this ips variable to your own server list 55 | ... 56 | ``` 57 | 58 | Then generate your configuration files and replace the old ones. 59 | 60 | ```shell 61 | yunhao@driver: cd $POMPE_HOME/libhotstuff 62 | yunhao@driver: python scripts/gen_conf.py 63 | yunhao@driver: cp ./conf-gen/* $POMPE_HOME/experiments/pompe/conf-distributed/ 64 | 65 | # update the client and server IP/hostname 66 | yunhao@driver: vim $POMPE_HOME/experiments/pompe/conf-distributed/client.hosts 67 | yunhao@driver: vim $POMPE_HOME/experiments/pompe/conf-distributed/server.hosts 68 | 69 | # put all client and server IP/hostname into the file below 70 | yunhao@driver: vim $POMPE_HOME/all.hosts 71 | ``` 72 | 73 | Now you are ready to run Pompe in a distributed cluster. 74 | 75 | ### Build and run on distributed cluster 76 | 77 | First, you need to install dependencies on all machines in the cluster. 78 | 79 | 80 | ```shell 81 | # run install_deps.sh on all machines in the cluster 82 | yunhao@{machine_name}: export POMPE_HOME=/home/yunhao/Pompe-HS 83 | yunhao@{machine_name}: $POMPE_HOME/install_deps.sh 84 | ``` 85 | 86 | Then you can deploy and run distributed experiments from your driver machine. 87 | We assume that Pompe has been built successfully on the driver machine 88 | and driver can ssh directly to all machines in the cluster (see ssh-copy-id). 89 | 90 | ```shell 91 | # Deploy Pompe from driver to all.hosts 92 | yunhao@driver: cd $POMPE_HOME 93 | yunhao@driver: ./deploy.sh yunhao 94 | 95 | # Run Pompe servers 96 | yunhao@driver: cd $POMPE_HOME/experiments/pompe 97 | yunhao@driver: ./run_server.sh yunhao distributed 98 | 99 | # Run 4 Pompe clients for a 30 second experiment 100 | yunhao@driver: cd $POMPE_HOME/experiments/pompe 101 | yunhao@driver: ./run_client.sh yunhao 4 30 distributed 102 | 103 | # Collect the experiment data 104 | yunhao@driver: cd $POMPE_HOME/experiments/pompe 105 | yunhao@driver: ./data.sh yunhao distributed 106 | 107 | # Show aggregated experiment results 108 | yunhao@driver: cd $POMPE_HOME/experiments 109 | yunhao@driver: python process.py order pompe/data 110 | yunhao@driver: python process.py exec pompe/data 111 | ``` 112 | 113 | ## Evaluation and Troubleshooting 114 | 115 | The file [Evaluation.md](https://github.com/Pompe-org/Pompe-HS/blob/master/Evaluation.md) in this repo describes how to validate the evaluation claims in our OSDI paper as well as fixes to common issues. 116 | 117 | ## Acknowledgements 118 | 119 | I wish to thank Ted Yin, the creater of `libhotstuff` and my old good friend, for his generous help and discussions. 120 | I also wish to thank the anonymous OSDI artifct reviewers for their valuable feedback and dedicated efforts of reproducing our evaluation results. 121 | --------------------------------------------------------------------------------