Logo

    Medusa Notes Sept. 8 2022

    Work Prioritization

    1. Organize contracts/sdk/node repositories
      1. CI is green for all 3 repos
        1. Setup Github Actions paid plan for the org @Deleted User
      2. Deployment scripts for contracts
      3. Refactor DKG smart contract out of Encryption Oracle
      4. End-to-end tests with sdk+contracts+node
    2. PL owned demo site setup with CI
      1. Automatically update Demo Node network on merges to master
      2. Speak with Drand ops Mario+Hector
      3. Get Jonathan access to AWS
    3. Refactor node code into State Machine pattern
    4. Determine DKG instance id
    5. Implement BLS signature round for proving request result
      1. Needs to match BLS hashing format in EncryptionOracle.submitResult() in order to verify the signed result
    6. 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
      1. Message from Request Emitter —> Init
      2. Determine request type:
        1. Request is invalid —> Reach consensus on invalid result
        2. Request is valid —> Reach consensus on re-encrypted result (First BLS round)
      3. Sign result (Second BLS round)
      4. Submit to Oracle

    DKG + Encryption Request State Machine Diagrams

    https://excalidraw.com/#json=H7_5lEixxSVgQYLz2KcR5,cGs1KvV1hy3VwOnPr-fkxw

    DKG Smart Contract Diagrams

    image
    image
    image

    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.

    Partners

    • Gumroad
    • Beatport
    • NFT collection companies
      • Bored Apes (Yuga Labs)
      • Nouns (Nouns DAO)
      • DigiDaiku (Limit Break)
      • Moonbirds (Proof Collective)

    CryptoNet is a Protocol Labs initiative.