Introducing Linkdrop Protocol
A community initiative to build an unified standard for including digital assets/attributes into shareable links/QR-codes
How We Started
We were honestly pretty surprised by the overwhelming interest from various parts of the Ethereum ecosystem, and have since then been busy collaborating to make Eth2 DApp available in major wallets such as Trust Wallet, Coinbase Wallet, Opera, Status and imToken.
Not Just ETH or User-to-User
While the initial buzz from Eth2 DApp was steered by users gifting other users ETH, an increasing number of crypto DApps reached out to us requesting a feature allowing to mass-distribute ETH as well as ERC20 and ERC721 tokens, as a way of gifting crypto, onboarding new users and implementing loyalty schemes. As this presented an opportunity for us to survive the harsh crypto winther, we developed the Volca’s Linkdrop solution to help DApps generating “One-to-Many” links including ERC20 and ERC721 tokens.
These clients mainly distributed ERC20 and ERC721 tokens, such as Binance distributing BNB via Trust Wallet, XYO Network distributing more than $1 million worth of XYO tokens and Snark.Art and DaDa.nyc distributing ERC721 artwork via shareable links.
Hackathon & Charities
Our participation at the Status Hackathon before Devcon 4, marks the period where we started experimenting with including other attributes than currencies into links. Here we won two first prizes for Onbotting.eth, an DApp including properties such as ERC721, ENS name and Universal Login contract creation into shareable links. Another recent experiment has been to empower and add more value to the “gifting” and “charity” experience in collaboration with Radi.Cards, Giveth, CryptoXmas.xyz and a number of other projects from the Ethereum ecosystem.
Bigger Than Any Single DApp
We have come to realize the feature of including digital assets and attributes opens up an indefinite number of use cases (of which the most is not yet discovered) that will provide tremendous value to the Ethereum ecosystem and Web3 in general.
Just take the use case of onboarding new users; Web2 champions such as Paypal, Uber, Airbnb, Pokémon Go, WeChat, all have in common that they utilized loyalty and referral schemes to attract and retain users. Imagine how much more powerful this can be with interoperable web3 infrastructure, tokenization and identity properties like Universal Login and ENS?
We believe this calls for a joint community effort to develop a unified, non-rent seeking standard for including digital assets and attributes into links and QR-codes, up until now, our internal terminology for this has been Linkdrop Protocol.
The Need For an Unified Protocol
Some of the feedback we have received on the initial Linkdrop blogpost & EIP draft, have been a request to generalize Linkdrops even further. It is now clear to us we see an unified Linkdrop protocol will add value Ethereum ecosystem by enabling:
- Interoperability (so that links originated in Burner Wallet could be withdrawn within other mobile wallets (e.g. imToken)
- Ease-of-use for developers to integrate “send by link” functionality in their DApps/Wallets
At present developers need to develop this functionality all by themselves including Escrow Smart Contract, Front-End code and Linkdrop Operator Node and they also need to deploy it (Linkdrop Operator Node and Escrow Smart Contract) and maintain it.
Proposed Linkdrop Protocol
We have drafted a proposal paper for a generalized protocol in the Linkdrop Protocol GitHub. In the remainder of this post we will sum up the main points from the proposal. Whether you are a wallet, DApp or interested developer, we are very interested and open to hear your feedback on our below proposal:
- Sender shares claim link with the receiver;
- Receiver opens the link in the default browser (or mobile app if it’s a deep link);
- Web app served by Link Operator (LO) or DApp, redirects receiver to a wallet app of his choice that supports the protocol;
- Optional: if sender required a verification, then wallet asks verifier to verify receiver (Verifier is chosen by sender and is configured in the Linkdrop Contract);
- After receiver is verified Verifier provides his signature that receiver is verified;
- Wallet signs receivers Ethereum address by the transit private key and sends signatures (Verification Signature + Transit Signature + Linkdrop Signature) to the Linkdrop Operator;
- LO calls Linkdrop Contract and provides signatures to the Linkdrop Contract. (We’re researching the option of removing dependency on a single server by integrating the Gas stations network (EIP 1613));
- Linkdrop Contract verifies signatures and if everything is correct transfer digital assets to the receiver.
What We Want to Achieve
- Native support for as much wallets as possible;
- Set in incentives for Linkdrop Operators to bootstrap initial adoption of the protocol;
- A reference implementation of a DApp that allows to send user-to-user linkdrops in ETH, ERC20 and ERC721;
- Bootstrap an open iterative community around the Linkdrop Protocol.
What We Want to Build
- Linkdrop Operator server implementation;
- Verifier server implementation;
- Linkdrop Smart-Contract;
- A DApp for sending and claiming user-to-user linkdrops;
- A service for deploying business-to-users linkdrops;
- Native wallet libraries (Java, Swift, React Native) for sending (user-to-user) and claiming linkdrops.