Allocation Scaling Process
How are balances scaled for airdrops
Process outline
A snapshot of data is gathered for the following, at a block height not made available in advance:
BAL holders (including wallet balances, major BAL liquidity provision, incl. 80BAL-20WETH)
Voters of the Aura proposal on Balancer’s Snapshot
Vote-locked Convex (vlCVX) holders
LobsterDAO NFT holders
Holder addresses are filtered:
“Infrastructure” (e.g. CEX) addresses are removed
Addresses which are not either EOAs or Gnosis Safe multi-sigs are removed
Balancer DAO addresses are removed
Top-level allocations of AURA are defined for different groups.
The allocations are calculated for each group (explained below).
The allocations for each group are combined into a single allocation for each user.
A Merkle tree is generated for the combined allocations, and a number of artefacts are output:
Address⇒Allocation table as CSV and JSON
Merkle proofs for every address with a claim
Interactive tree map to visualise all holdings
Calculating allocations
For each group with a top-level allocation (Balancer, Convex, LobsterDAO):
Apply redirections
Verified redirections (e.g. for BadgerDAO and individuals) are applied to underlying balances
Initial rescale
Considered balances are rescaled in order to reduce whale dominance and create a fairer distribution.
Get the relevant unscaled balance for each user (e.g. for Balancer, each user’s total BAL holdings we captured).
Get the largest holding value to establish the domain of values (i.e. the considered range of balances).
Given the domain, create a power scaling function with an exponential transform which will be applied to each value
The exponent being used is
0.75
.Each range value y can be expressed as a function of the domain value x: y = mx^k + b, where k is the exponent value.
This creates an array of multipliers that scale balances according to the balance and the considered domain.
Get the share of the allocation for all the multipliers, and simply multiply the unscaled balances by this share.
This yields fairly rescaled values according to the power scale we defined for each group.
Cull shrimp
Given a minimum claim size of
50 AURA
per account, remove all claimants under this threshold.
Final rescale
Same process as initial rescale; claimants that were not filtered out will receive more AURA.
At each step, key metrics are logged out and the Gini coefficient is calculated to ensure that rescaling has the desired effect.
IMPORTANT: Snapshots of eligible addresses were taken with block heights before this information was posted, to avoid gaming of these airdrop allocations
Last updated