Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/walterproof/merkle-airdrop
An experiment of merkle airdrop on Tezos
https://github.com/walterproof/merkle-airdrop
Last synced: 7 days ago
JSON representation
An experiment of merkle airdrop on Tezos
- Host: GitHub
- URL: https://github.com/walterproof/merkle-airdrop
- Owner: WalterProof
- License: mit
- Created: 2022-09-04T21:35:54.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-10T07:40:54.000Z (3 months ago)
- Last Synced: 2024-08-10T08:52:18.789Z (3 months ago)
- Language: PHP
- Homepage:
- Size: 2.77 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Merkle Airdrop
## What is this?
Complete airdrop solution for [Tezos](https://tezos.com/) tokens.
The chosen solution uses merkle trees.
The advantages are of 2 kinds:- It is cheap because fees will be paid by the claimers.
- It brings engagement, requiring some action from the claimers.Status is experimental / side-project.
If you are looking for real airdrops, take a look at [organicgrowth.wtf](https://www.organicgrowth.wtf)
(on etherlink)## How it works?
An airdrop project consists in off-chain and on-chain data:
- [on-chain](./contracts), there is a smart-contract that holds projects information, e.g: the token contract address,
the hex of a merkle root of beneficiaries (address, amount), and the registry of already claimed beneficiaries entries.
- [off-chain](./app), the merkle tree must be stored to be able to generate the merkle proofs required to claim.
An off-chain app also is helping on the merkle tree generation and validation before deploying the airdrop contract.## Prerequisites
- [taqueria](https://taqueria.io/docs/getting-started/installation) is used for the contracts stack
- PHP8 is used for the dApp
- docker for infra (MySQL, adminer, flextesa..)## Why PHP?
- it is still the king of cheap hosting.
- it has great retro-compatibilty
- it is [evolving](https://php.watch), there is a [PHP fundation](https://thephp.foundation/) now, and everything is [discussed openly](https://php.watch/rfcs).
- it still runs an important part of the web, and we want to make decentralized apps, so why not using a popular language for this.## Dev
1. Install dependencies: `make install`
2. Launch infra: `make up` (Stop it: `make down`)
4. Compile contracts: `make compile`
5. Deploy contracts: `make deploy`
6. Start app: `make start`Then, you'll have :
- adminer available at
- local sandbox at
- tzkt api at## Dapp
Use [flextesa](https://gitlab.com/tezos/flextesa)'s bob or alice for dev purpose, you can also add
choosen deterministic keys in the [testdata script](./infra/testdata.ts).Otherwise, you can add your address in same script.
The Dapp will check for the address existence in the [Identifier](./app/src/Identifier/TezosIdentifier.php).
## Resources
- [Evolution of Airdrop: from Common Spam to the Merkle Tree](https://hackernoon.com/evolution-of-airdrop-from-common-spam-to-the-merkle-tree-30caa2344170)
- [Merkle Airdrop: One of the best Airdrop Solution for Token Issues](https://medium.com/mochilab/merkle-airdrop-one-of-the-best-airdrop-solution-for-token-issues-e2279df1c5c1)
- [Merkle tree](https://en.wikipedia.org/wiki/Merkle_tree)
- [Merkle proofs Explained](https://medium.com/crypto-0-nite/merkle-proofs-explained-6dd429623dc5)
- [The Ultimate Merkle Tree Guide in Solidity](https://soliditydeveloper.com/merkle-tree)
-
-