Context
Shutter’s Commit and Reveal Scheme leverages threshold encryption to provide a secure, decentralized commit-and-reveal workflow. A distributed keyper set handles critical cryptographic operations, including distributed key generation, monitoring decryption triggers, and securely releasing decryption keys. The system revolves around an on-chain registry contract where clients can register identities and time-based decryption triggers. Keypers continuously monitor this registry to ensure tamper-proof decryption key releases when trigger conditions are met. The API exposes endpoints for encryption key retrieval, decryption key access, and the decryption of commitments, providing a flexible and scalable framework. Future enhancements could include event-based and block-based triggers, P2P decryption key delivery, and WebSocket-based real-time notifications to further enhance decentralization and usability.
MVP Specification / Tasks
1. Registration Contract -> Issue: shutter-network/contracts#3
- Deploy new contract that allows registering identities and their time-based triggers
- Clients need to submit their payment during registration
- Payments are directly sent to the contract and then withdrawn by the contract’s owner (DAO’s address)
- Allows for balance withdrawal (can implement the Ownable pattern)
- Possibility to adjust the price per registration (start with zero fees)
2. Keyper Update -> Issue: shutter-network/rolling-shutter#551
- Listens to the registry contract for any new registrations
- Monitors the time-based condition to release the keys / use block timestamp (first block with timestamp > to time)
- In case of a downtime, release any keys that were supposed to be released during the downtime
- Set a sent flag on any keys that were released to avoid sending them again
- Endpoint to request old decryption keys should be open to the API to request old decryption keys if needed (already available in the keyper)
- Custom implementation under keyperimpl
- Deploy local keypers for the MVP
3. Centralized Service / API Specification -> Issue: #2
This service is a helper service that allows to use the Shutter system as follows:
- Listens to the P2P network
- Stores the decryption keys
- Exposes the below endpoints
- Has access to the keyper endpoint to retrieve old decryption keys if needed
Endpoint 1: Register Identity with Timestamp
- Allows a client to register an identity and time-based decryption trigger.
- Stores the client's identity and timestamp on the registry contract.
- Returns the encryption key for that identity.
- If the identity is not supplied, it returns a randomized identity together with the encryption key.
Endpoint 2: Get Encryption Key
- Allows a client to retrieve the encryption key for a certain identity.
Endpoint 3: Get Decryption Key
- Retrieve the decryption key once the timestamp is reached.
- Provides the decryption key to the client for local decryption.
Endpoint 4: Decrypt Commitments
- Perform decryption of encrypted commitments.
- Accepts encrypted data with an identity. Decryption keys are stored when released per identity.
- Outputs the decrypted data.
The service needs to offer the below additional functionalities:
- Stores decryption keys when released
4. Documentation
Write some documentation that allows users to use the system
Context
Shutter’s Commit and Reveal Scheme leverages threshold encryption to provide a secure, decentralized commit-and-reveal workflow. A distributed keyper set handles critical cryptographic operations, including distributed key generation, monitoring decryption triggers, and securely releasing decryption keys. The system revolves around an on-chain registry contract where clients can register identities and time-based decryption triggers. Keypers continuously monitor this registry to ensure tamper-proof decryption key releases when trigger conditions are met. The API exposes endpoints for encryption key retrieval, decryption key access, and the decryption of commitments, providing a flexible and scalable framework. Future enhancements could include event-based and block-based triggers, P2P decryption key delivery, and WebSocket-based real-time notifications to further enhance decentralization and usability.
MVP Specification / Tasks
1. Registration Contract -> Issue: shutter-network/contracts#3
2. Keyper Update -> Issue: shutter-network/rolling-shutter#551
3. Centralized Service / API Specification -> Issue: #2
This service is a helper service that allows to use the Shutter system as follows:
Endpoint 1: Register Identity with Timestamp
Endpoint 2: Get Encryption Key
Endpoint 3: Get Decryption Key
Endpoint 4: Decrypt Commitments
The service needs to offer the below additional functionalities:
4. Documentation
Write some documentation that allows users to use the system