multi-party-ecdsa
multi-party-ecdsa copied to clipboard
Make the {2,2} protocol state machine
First Step take the hash of the public key to be a token. save to local storage (cache):
-
id
for token -
next
for next function for this token
place a test at the beginning of every function for party_one,party_two
such that only if :
- the token
id
is registered in the storage - the function that is being called is
next
Then execute the function and update next
, otherwise abort.
After the last function of the protocol has been called - clean the id
from storage
Second Step make a token that will connect between key generation and signing so that the signing parties in case they run Key Generation multiple times will know which private key to use for signing. suggestion: use the local public keys (H(secret_share * G)) to identify keys. This should be saved to permanent storage.
The storage layer must be abstracted (DAO: https://en.wikipedia.org/wiki/Data_access_object).
In the original issue:
save to local storage (cache)
The storage can't be local because the server will be a fleet of stateless machine. When a request is issued it is distributed via the load balancer.
Options: low latency no SQL ddb such as DynamoDB.
We are having a discussion for using token for state validation.
After our meeting, here is what we agreed on:
- The state machine API should be the only public APIs to prevent any security risks of using functions directly.
- Because of the item above, state machine API will be added to this package (and not abstracted it to a different one).
- We need to investigate in a token validation.
Assigning to @romanz.
can #35 help ?