Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create dairdrop application #2429

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

jyaymusk
Copy link

@jyaymusk jyaymusk commented Oct 18, 2024

Project Abstract

Decentralized airdrop application that does not must require a centralized server, and it can also create some community interaction games based on it. Based on this project, the community will explore more airdrop strategies within the Polkadot ecosystem and continuously improve the user experience in airdrops.

https://github.com/dota-network/Grants-Program/blob/master/applications/dairdrop.md

Grant level

  • Level 1: Up to $10,000, 2 approvals
  • [2] Level 2: Up to $30,000, 3 approvals
  • Level 3: Unlimited, 5 approvals (for >$100k: Web3 Foundation Council approval)

Application Checklist

  • The application template has been copied and aptly renamed (project_name.md).
  • I have read the application guidelines.
  • Payment details have been provided (Polkadot AssetHub (USDC & DOT) address in the application and bank details via email, if applicable).
  • I understand that an agreed upon percentage of each milestone will be paid in vested DOT, to the Polkadot address listed in the application.
  • I am aware that, in order to receive a grant, I (and the entity I represent) have to successfully complete a KYC/KYB check.
  • The software delivered for this grant will be released under an open-source license specified in the application.
  • The initial PR contains only one commit (squash and force-push if needed).
  • The grant will only be announced once the first milestone has been accepted (see the announcement guidelines).
  • I prefer the discussion of this application to take place in a private Element/Matrix channel. My username is: @_______:matrix.org (change the homeserver if you use a different one)

@github-actions github-actions bot added the admin-review This application requires a review from an admin. label Oct 18, 2024
@jyaymusk jyaymusk force-pushed the master branch 2 times, most recently from 7a01fdc to cf1e65b Compare October 20, 2024 04:44
@PieWol PieWol self-assigned this Oct 22, 2024
Copy link
Member

@PieWol PieWol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey, thanks a lot for the application. It sounds very interesting and I also don't know about an existing solution that solves the issue of distributing airdops. I left a few comments and questions for you to review.
Looking forward to your answers :)

applications/dairdrop.md Show resolved Hide resolved
applications/dairdrop.md Outdated Show resolved Hide resolved
Comment on lines 172 to 174
| 1. | Substrate module: airdorp | An airdrop module that provides all on-chain functionalities related to airdrops |
| 2. | Smart contracts: airdorp-ink| Implementation of the airdrop module using Ink. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| 1. | Substrate module: airdorp | An airdrop module that provides all on-chain functionalities related to airdrops |
| 2. | Smart contracts: airdorp-ink| Implementation of the airdrop module using Ink. |
| 1. | Substrate module: airdrop | An airdrop module that provides all on-chain functionalities related to airdrops |
| 2. | Smart contracts: airdrop-ink| Implementation of the airdrop module using Ink. |

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

do you mind accepting this typo fix?

Under development.

- https://github.com/dota-network/dairdrop
- https://github.com/dota-network/dota-super-chain
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there nothing but a readme to this project?

Copy link
Author

@jyaymusk jyaymusk Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there nothing but a readme to this project?

The Dota Super Chain has completed most of the code, developed by community contributors, and will be merged soon. The dairdrop is currently being prepared for development. Once the dairdrop development is completed, we will merge it into the Dota Super Chain, and the Dota community will use dairdrop to launch the 2.0 network.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

where can I find the code for dota-super-chain?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

where can I find the code for dota-super-chain?

Our original plan for the Dota community was to develop an EVM-compatible chain with NPOS, but there were no existing technology templates, and development would take time(even though we already have very experienced Substrate developers). Fortunately, Chainsupport reached out to us, offering to contribute code for this purpose, as they are collaborating with several different teams that have similar needs. They are currently focused on developing the public part of the code and expect to complete it within a month. After that, we will use their template to develop the Dota 2.0 network. Additionally, with the support of our community developers, we will be able to help them solve any technical challenges they encounter during the development process, as we have more experience with Substrate technology.

code: https://github.com/ChainSupport/frontier-pos-template

### Team's experience

- weaver
Five years of development experience with Polkadot, core code contributor in the Dota community, and involved in the development of multiple parachains. Possesses extensive experience in blockchain product development within the Polkadot and Ethereum ecosystems.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where can I see these contributions of yours that involve parachains or substrate development? On your github I only found your work on the dota indexer.

Copy link
Author

@jyaymusk jyaymusk Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Where can I see these contributions of yours that involve parachains or substrate development? On your github I only found your work on the dota indexer.

In the past few years (from 2019 to the present), I have primarily developed in an anonymous state due to privacy concerns. I was previously employed by several parachain teams and was a core development member for them. If you're interested, we can discuss this privately.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great, please forward this private information via e-mail to [email protected].

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great, please forward this private information via e-mail to [email protected].

I will send you an email in a few days.

| 1. | Substrate module: airdorp | An airdrop module that provides all on-chain functionalities related to airdrops |
| 2. | Smart contracts: airdorp-ink| Implementation of the airdrop module using Ink. |
| 3. | indexer| An on-chain airdrop activity indexer that monitors on-chain airdrop status in real time.|
| 3. | backend | Provide all APIs needed for the app, including calculating the MD5 hash of the airdrop file, the Merkle root of the airdrop, Merkle proofs, and airdrop status. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the backend? I suppose the substrate pallet and the ink implementation serve directly as the backend.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the backend? I suppose the substrate pallet and the ink implementation serve directly as the backend.

On-chain storage primarily contains the final state and completed Merkle proof verification. We need to provide an off-chain backend that allows users to obtain their Merkle proofs, submit transactions to claim airdrops, and access more information about the airdrop, such as progress, the number of participants, and which users have not yet participated. Additionally, anyone should be able to claim airdrops for others.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't this part of the web-service?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

isn't this part of the web-service?

Yes, considering the PC app, I developed it as part of the public section. The web server simply calls the APIs it needs from there.

applications/dairdrop.md Outdated Show resolved Hide resolved
| **0c.** | Testing and Testing Guide | Provide manual test cases as much as possible. |
| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. |
| 1. | UI/UX design | Design user-friendly interactive pages to enhance the user experience. |
| 2. | PC app | Desktop application compatible with Mac, Windows, and Linux. |
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest to only developing a web-app. I don't see people being interested in this if they can get the same functionality from a web-app. I'd remove this deliverable unless you know that there is demand for this.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd suggest to only developing a web-app. I don't see people being interested in this if they can get the same functionality from a web-app. I'd remove this deliverable unless you know that there is demand for this.

I agree with it, as it allows us to focus on providing users with richer features and a friendlier experience. However, user habits can vary. For developers, it's relatively easy to start a web service using Docker, but for regular users, this can introduce technical and learning costs. Therefore, I hope that while we develop the web application, we can also provide PC application.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you re-write the features section so that this application only contains the web-service?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you re-write the features section so that this application only contains the web-service?

Thank you for your suggestion. it will save us development time. We will provide more rich and user-friendly features. If the community needs a PC app in the future, we will try to get funding support from the treasury or include it in the third milestone. update as soon as possible.


- **On-chain**
- An airdrop pallet(substrate pallet)
- Set airdrop: Merkle tree root, MD5 hash of the airdrop file, start date, end date, total airdrop amount (must be staked)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To what granularity will the merkle tree resolve? To each individual address? To a group of addresses which will always be claimed together? I'd love to hear more about the strategy. Have you conducted any research up to which address amount your solution is able to scale?

Copy link
Author

@jyaymusk jyaymusk Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To what granularity will the merkle tree resolve? To each individual address? To a group of addresses which will always be claimed together? I'd love to hear more about the strategy. Have you conducted any research up to which address amount your solution is able to scale?

We will provide a complete Merkle tree for each airdrop event, which includes the airdrop information for every user and is stored in the backend. This will support up to 2^160 addresses.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you are storing all the addresses individually why do you need the merkle tree at all? Still do you have a more in depth design doc to share about your concept? I'd appreciate it.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you are storing all the addresses individually why do you need the merkle tree at all? Still do you have a more in depth design doc to share about your concept? I'd appreciate it.

You can think of each airdrop event as a Merkle tree, where each person's airdrop information is stored in the leaves. They will receive their Merkle proof from here and then submit it to the chain for verification to obtain their airdrop amount.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is very flexible and scalable. By adding some information to each recipient's airdrop data, we can create conditional claims for everyone, which can be applied in gaming and social applications.

- **On-chain**
- An airdrop pallet(substrate pallet)
- Set airdrop: Merkle tree root, MD5 hash of the airdrop file, start date, end date, total airdrop amount (must be staked)
- Cancel airdrop
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How will this work? Is the airdrop owned so that an account can decide on cancelling the airdrop at an arbitrary point in time?

Copy link
Author

@jyaymusk jyaymusk Oct 23, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How will this work? Is the airdrop owned so that an account can decide on cancelling the airdrop at an arbitrary point in time?

When users want to create an airdrop for the community, they will register the airdrop information on-chain, including the block height at which the airdrop will occur, the root hash of the Merkle tree, the end time of the airdrop, and more. They will also need to reserve their balances to ensure that everyone can claim the airdrop. Additionally, they can terminate the airdrop activity at any time. This ensures flexibility for the airdrop.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does the airdrop creator need to reserve any balances?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why does the airdrop creator need to reserve any balances?

The airdrop creator reserve the airdrop total amount in dairdrop pallet to ensure that users can receive funds after their airdrop proof is verified. This is because the funds come from the airdrop creator. This ensures that the airdrop creator does not must to distribute the airdrop to each user individually. Anyone can claim the airdrop on behalf of any user, as long as they can provide the recipient's Merkle proof.

@jyaymusk
Copy link
Author

jyaymusk commented Oct 23, 2024

Hey, thanks a lot for the application. It sounds very interesting and I also don't know about an existing solution that solves the issue of distributing airdops. I left a few comments and questions for you to review. Looking forward to your answers :)

Thank you very much for your outstanding work and responses. I'm very happy that we can discuss this application together.

@jyaymusk jyaymusk force-pushed the master branch 4 times, most recently from 38a642c to e289b56 Compare October 24, 2024 03:14
@jyaymusk
Copy link
Author

Hey, thanks a lot for the application. It sounds very interesting and I also don't know about an existing solution that solves the issue of distributing airdops. I left a few comments and questions for you to review. Looking forward to your answers :)

@PieWol, Thank you very much for your suggestions. I've updated the application accordingly. Regarding the desktop app issue, I agree that we should remove it, allowing us more time to focus on UX optimization and creating a product that is very user-friendly. However, our team is considering that community users are often non-technical and have diverse airdrop needs. Some may not want to provide a remote web service or might not know how to run a local program using Docker, which could impact community engagement and growth. If you have better suggestions, we are open to them. Our goal is to create an airdrop application that can be used in all scenarios.

@PieWol
Copy link
Member

PieWol commented Oct 25, 2024

Hey @jyaymusk
thanks for getting back to me this quickly. I noticed that some of my comments were not addressed. E.g. the pc-app is still mentioned in the features and deliverables. Looking forward to your replies and changes once again.

@PieWol PieWol added the changes requested The team needs to clarify a few things first. label Oct 25, 2024
@jyaymusk
Copy link
Author

Hey @jyaymusk thanks for getting back to me this quickly. I noticed that some of my comments were not addressed. E.g. the pc-app is still mentioned in the features and deliverables. Looking forward to your replies and changes once again.

Thank you very much for your professionalism and patience. I hope my response addresses your questions.

@jyaymusk
Copy link
Author

Hey @jyaymusk thanks for getting back to me this quickly. I noticed that some of my comments were not addressed. E.g. the pc-app is still mentioned in the features and deliverables. Looking forward to your replies and changes once again.

I will update the application in a few days.

@jyaymusk jyaymusk force-pushed the master branch 2 times, most recently from 0fe63fa to 233a0f2 Compare October 27, 2024 10:55
@jyaymusk
Copy link
Author

Hey @jyaymusk thanks for getting back to me this quickly. I noticed that some of my comments were not addressed. E.g. the pc-app is still mentioned in the features and deliverables. Looking forward to your replies and changes once again.

@PieWol, I have updated the application. If there are any new questions, we would be very happy to discuss them with you and would appreciate your feedback. I will send you an email as soon as possible. Enjoy your weekend!

@jyaymusk jyaymusk force-pushed the master branch 3 times, most recently from d992f92 to 027f12e Compare October 28, 2024 06:38
@idfree
Copy link

idfree commented Oct 30, 2024

Thank you very much for this proposal! A decentralized airdrop application is exactly what the Polkadot ecosystem needs, and at AIWeb3, we've been eagerly awaiting something like this for a long time. Do you think it could be integrated directly into our website? And when might this application be ready for use? Looking forward to seeing this in action!

@jyaymusk
Copy link
Author

Thank you very much for this proposal! A decentralized airdrop application is exactly what the Polkadot ecosystem needs, and at AIWeb3, we've been eagerly awaiting something like this for a long time. Do you think it could be integrated directly into our website? And when might this application be ready for use? Looking forward to seeing this in action!

@idfree We hope to have it ready for use right after the launch of the Dota 2.0 network, which will still take about a month of development time. I'm very pleased that we share this common need, as it allows us to maintain it together in the future. Such an airdrop application will be very useful for community events, and in the future, we will only need to add a small code to create some gaming applications on Telegram or the web. If you have any better ideas, we can also consider adding more features. We envision that in the future, Polkadot airdrop creators will only need to select the network and connect their wallets on our webpage, and then simply click the Assets icon to quickly create or claim their airdrops. Imagine being able to create an airdrop for any Telegram or Discord group with just a click on a webpage. Isn't that cool?

@jyaymusk jyaymusk force-pushed the master branch 2 times, most recently from 1d4a205 to d6cb80c Compare October 31, 2024 03:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
admin-review This application requires a review from an admin. changes requested The team needs to clarify a few things first.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants