Work Prioritization
- Organize contracts/sdk/node repositories
- CI is green for all 3 repos
- Setup Github Actions paid plan for the org @Deleted User
- Deployment scripts for contracts
- Refactor DKG smart contract out of Encryption Oracle
- End-to-end tests with sdk+contracts+node
- PL owned demo site setup with CI
- Automatically update Demo Node network on merges to master
- Speak with Drand ops Mario+Hector
- Get Jonathan access to AWS
- Refactor node code into State Machine pattern
- Determine DKG instance id
- Implement BLS signature round for proving request result
- Needs to match BLS hashing format in EncryptionOracle.submitResult() in order to verify the signed result
- Implement EncryptionOracle.submitResult() verifies the signed re-encryption result
Medusa Encryption Request Consensus Protocol
Note: Treat the encrypted contents as a blob from the smart contract point of view
- 2 rounds
- Get result
- Sign result
- Design as a state machine
- Message from Request Emitter —> Init
- Determine request type:
- Request is invalid —> Reach consensus on invalid result
- Request is valid —> Reach consensus on re-encrypted result (First BLS round)
- Sign result (Second BLS round)
- Submit to Oracle
DKG + Encryption Request State Machine Diagrams
https://excalidraw.com/#json=H7_5lEixxSVgQYLz2KcR5,cGs1KvV1hy3VwOnPr-fkxw
DKG Smart Contract Diagrams
Threshold Cryptography Notes
- Lagrange Interpolation
- If degree of F(x) is d, can reconstruct F(x) with d+1 points
- T = d + 1
- Transformations with Secret Share S_i can be combined to produce a Transformation with Secret Key S
- Discrete Log principle
- El Gamal Encryption algorithm
Product Ideas Brainstorm
Secret NFTs for Information Products
Idea
- An NFT with encrypted content
- Ownership of the NFT entitles authorization to read encrypted contents
- Transfer of the NFT results in re-encryption of the contents for the new owner
Use Cases
- Decentralized Information Product platform
- Music sounds/stems for DJs/producers
- Collectible NFTs where the content is secret? (You own a bored ape, but no one knows which one you own)
- Not sure if this is possible as content could be de-anonymized by previous owners
- Also, when buying NFTs, the buyer doesn’t know which NFT they are buying
- This could be a feature rather than a bug —> feels like playing the “lottery”
- But the seller has adverse selection —> could be that the cheapest NFTs in the collection are the majority of the ones for sale.
- For rare NFTs, OTC trades could occur where buyer shares NFT contents w/ seller privately.
- Perhaps buying/selling could occur as part of a pool (Sudoswap) or mixer
- Maybe the content of the NFT changes each time it is swapped
- e.g. token ids [1, 12, 1056, 7869] all sold within a certain time period, and the content of each token is mixed within the group
- Can we salt the encryption to change the encrypted contents
- Medusa Fee
- Re-encryption fee logic could be built directly into the NFT contract transfer function
- NFT marketplace could be responsible for facilitating trading fee to pay for Medusa re-encryption
- yields a seemless experience because the buyer already understands they have to pay for an NFT, but doesn’t have to know they are paying Medusa a fee.