Using Clusters for ETH->SOL Airdrops
Overview
Crosschain airdrops (like airdropping a Solana SPL-20 coin to holders of an Ethereum or EVM-based NFT) are tricky because Solana addresses are different than Ethereum addresses. Users have to link, or cluster, their authenticated EVM and SOL addresses together to ensure the airdrop goes to the right place.
For example, with the Pudgy Penguin $PENGU airdrop, users held Ethereum NFTs and were eligible to claim a Solana SPL-20. They linked their wallets together, with an option for full privacy, using Clusters. Clusters powered over 1.3 million unique claim events and over $1 billion of value.
Using Clusters is better than building your own bespoke internal system because:
Faster time to ship, we've already built this infra and run several top airdrops through it, like $PENGU and $ANIME
Users can preregister ahead of time, reducing first-hour load on launch servers and improving both uptime & throughput
Easy compatibility with delegate.xyz claims, which are critical for smart contract wallets like Gnosis Safe and 4337 wallets that cannot make an EIP-712 signature
Battle-tested across literal billions of dollars worth of value already
Reusable composable state, so your community becomes legible and can make even more money from third-party airdrops (or future first-party airdrops)
How Clusters Works
Clusters are bundles of wallets, for example here is a cluster of one ETH address, one SOL address, and one BTC address:
A verified wallet can only be apart of one wallet at a time.
Any verified wallet in a bundle can publicly or privately add wallets to a bundle.
Clusters uses a bundling framework. Where a wallet creates a “bundle” they then can publicly or privately add wallets to the bundle.
Authentication
Clusters protocol authentication works via offline wallets based signatures via EVM or Solana wallets.
Creating a bundle
POST /v1/bundle
The connected wallet will create a bundle.
(Alternatively, a user can skip this step and go straight to adding wallets to a bundle. If no bundle exists, it will create one beforehand)
The initial created bundle
Adding wallets privately OR publicly
POST /v1/bundle/wallets
The authenticated wallet can add wallets of any type to the bundle they are in. These wallets can be public to everyone OR can be completely private and hidden to the outside world.
*When privately adding wallets, no events will be emitted to our Data Availability Layer, completely shielding the identity of the wallet and their associated bundle connections.
Claiming airdrops
GET /v1/airdrop/claim/doodles
Any wallet that is apart of a bundle can authenticate themselves and privately call the associated airdrop endpoint. The clusters backend will determine what wallets are eligible by traversing all bundles they are associated with.
Return objects can be associated merkle roots, transaction call data, etc.
In the below example, solana wallet Gg1..fwz tries to claim an airdrop. The system determines it’s associated with EVM wallet 0x000…123. If this EVM wallet is eligible for a claim, we can process it accordingly.
Post claim
Register the user a new community name
doodles/foobar
Assign the above bundle to the community name (
POST /bundles/assign
)
Last updated