Inspiration

To build a mailing list and communicate with users, DApps need to ask folks to add their email address. This is not how decentralised applications should work. Users should use their Ethereum addresses to log in, instead of requiring people to link a disconnected identity paradigm. It reminds us of the early Internet days when you needed to provide your postal address to get an email account!

What it does

DappLaunch enables DApps to offer a 'Subscribe for updates' to register Ethereum addresses that can later be notified with Mailchain messages.

How I built it

  • We built the front-end in Angular, which manages the mailing lists.
  • use ENS to allow users to provide their ENS address to receive messages
  • A form component and JS can be added to any DApp page to collect addresses.
  • Messages are sent in mail format via Mailchain to reach Ethereum addresses.
  • For Mailchain to send transactions in quick succession reliably, the GoLang client was extended to send messages with any.sender
  • We worked with the any.sender team to create GoLang binaries.

Challenges I ran into

The tech challenges we ran into include:

  • Bulk sending messages means handling nonces reliably and gas fluctuations, we investigated gas station network. We opted with any.sender as it was easier to send with.
  • any.sender currently only supports ropsten transactions
  • Indexing transactions - Etherscan does not return enough data when querying internal transactions. This means that separate calls for each transaction are required. This quickly passes the available API key limit.
  • Obtaining transaction data from internal transactions

Accomplishments that I'm proud of

We wanted to build out something from the Mailchain roadmap to handle bulk messaging. Any.sender helped us accomplish this.

What I learned

  • How any.sender works and started sending transactions with it.
  • gas station network and how this can provide a more customized and decentralized alternative for bulk sending.
  • Aztec is capable of hiding the transaction value but not the sender or reciever. An early idea we had was to send messages with recipient privacy.
  • Speaking with the Aztec and starkware they helped us to understand how we can roll up or batch messages to increase the throughput without slowing down the network. We will document a spec and build it :)
  • Internal transactions - previously we had not used contracts. Internal transactions complicate reading messages sent with relayers. We have in development a customized indexer. This will be extended to resolve this.

What's next for DappLaunch

  • Smoothing down some rough edges and getting it ready for production in a SaaS environment.
  • Writing unit tests
  • Fixing transaction indexing (for internal and regular ethereum transactions)
  • Test with gas station network
  • Deploy on to all networks
  • More information and our Gitcoin grant can be found at https://gitcoin.co/grants/626/dapplaunch

Built With

Share this project:

Updates