This repo contains the implementation of the paper DyCAPS: Asynchronous Proactive Secret Sharing for Dynamic Committees.
Three branches are included in this repo:
-
main
: evaluate the latency of DyCAPS.Handoff
.
-
byStep
: evaluate the latency of each step in DyCAPS.Handoff
, where the steps are executed sequentially. *Sequential execution consumes around 20% more seconds than concurrent execution.
-
payload
: evaluate the latency and throughput of DyCAPS.Handoff
with different payload sizes. Given a payload, DyCAPS.Handoff
serves as a dynamic-committee version of Dumbo. Besides, setting payload=0
gives the same functionality as main
.
In this repo, the shares are sent to the parties by a trusted dealer during the latency benchmark (just for simplicity).
Dependencies
Before executing DyCAPS, come into the directory ./cmd/DyCAPs/list
and configure the IP addresses and port numbers for parties in both the old committee and the new committee.
- Write
n
lines of IP addresses in file ipList
, where line i
is for party i
in the old committee, and n
denotes the maximum of parties in each committee.
- Write
n
lines of port numbers in file portList
.
- Do the same in
ipListNext
and portListNext
for the new committee.
Run DyCAPS Locally
The IP addresses for all parties are 127.0.0.1
for local configuration (we use port numbers to identify the parties).
To run branch main
and byStep
, execute the following script in ./cmd/DyCAPs
:
./test_multiCommittee.sh <n> <f>
To run branch payload
:
./test_multiCommittee.sh <n> <f> <payloadSize>
where n
is the total number of parties in each committee, f
is the number of corrupted parties and payloadSize
is the size of payload (in Bytes).
We require n
and f
satisfies that n = 3f + 1
.
We recommand n=4,f=1
if you are using a laptop for local test.
Results can be found in ./cmd/DyCAPs/metadata
, where files named log*
show the latency information of the specified party and those named executingLog*
show the details of execution.