Inspiration

This project is inspired by email-based blogging platform Posterous founded by Garry Tan of YC and zkemail.xyz which has done a lot of work around zero-knowledge proof involving email.

The essence of inspiration is that email is the primary versaltie interface of our lives on internet and beyond. And email is the goldmine of information owned by users which can be used in permissionless without involvement of 3rd parties.

What it does

This app showcases how email can be used as a trusted and credible source to generate verified credentials (without involvement of issuers). This is possible because integrity of email is ensured via DKIM (DomainKeys Identified Mail).

How does DKIM works

A user can present his/her email in raw format or .eml file to proof something. Verifier/attestor can then check for authenticity of email with reference to DKIM signature, verifies that authenticated email has certain information via regexes. If everything checks out, the verifier/attestor will issue the VC to user through Trinsic SDK.

Credential template is generic to accommodate various proofs by email. https://schema.trinsic.cloud/stupefied-haibt-zg8jgredzmdh/proof-by-email

Permissionless ... there is no need for 3rd party, APIs, etc.... this is the beauty of using email as VCs. Users can use the emails in their inboxes which they have received from relevant sources. And then get VCs issued through Trinsic.

Proof anything ... literally anything using emails in the inboxes. Emails received in the past as well as in the future.

Examples ... use-cases for this are endless.

Below I have listed out ideas I could think of. Also I have implemented a few use-cases. Please refer to Github repo for details. Verifiers can be founder in ./verifiers folder.

  • proof of download of Trinsic ebook (code: ./verifiers/trinsic-ebook.js)
    • by verifying email received from Riley Hughes about the ebook
  • proof of participation in webinar (code: ./verifiers/luma-participation.js)
    • by verifying email received from Luma event
  • proof of correspondence (code: ./verifiers/email-correspondence.js)
    • by checking email between 2 people, and noting the date
  • proof of submission on Devpost (code: ./verifiers/devpost-submission.js)
    • by verifying email received from Devpost
  • proof of contribution to a Github repo
    • by verifying successful PR merge email from Github
  • proof of friendship length
    • by verifying email communication between 2 people and noting the date
  • proof of bank transfer
    • by verifying email received from Venmo/Zelle
  • proof of belonging (university, student group etc)
    • by verifying welcome email received
  • proof of newsletter subscription
    • by verifying email newsletter received (the first one, and the recent one)
  • many more...

How we built it

A simple NodeJS app is built.

  • A page with a form for user to paste in their raw email for proof
  • An endpoint which accepts the POST request from the form
    • then verifies email authenticity by checking DKIM signature via mailauth
    • then runs through validation logics
    • then issues VC with Trinsic SDK

More verifiers can be built easily by tweaking validation logics.

Challenges we ran into

Surprisingly, nothing much because Trinsic has excellent documentation and onboarding.

Accomplishments that we're proud of

  • A fully functional app with a few types of verified credentials

  • A base structured layer to build for many more use-cases

  • A simple but versatile proof-of-concept which taps into vast source of existing data in inboxes

What we learned

Importance of DID and VCs ... how DIF is supporting the ecosystem with many players building lots of legos to pave way for next era of sovereign and decentralized internet.

What's next for You've got mail & VC!

  • Tidying up codebase, and adding more examples so that other developers can use to build their custom use-cases

  • A Gmail plugin so that email can be presented right from Gmail UI for proof and get VC issued right away

Built With

Share this project:

Updates