# hens.farm rug snapshot Who held each Hen, and each user wallet's HEGG, on Robinhood Chain (id 4663). The rug is transaction `0x1920b1dacac05efcf3733779865a2543432aa5ca69367bab1573e9899f1e4ce8`, in which the hens.farm mint revenue wallet `0xd4baFfEe663e3a974Bf2781ED8BFCBc9f80CD6d8` bridged out 31.88 ETH. - **Hens** at block **97724868** (2026-10-25T16:29:17.000Z): the last Hen the sale sold after the rug. Those buyers paid full price, so they are in. - **HEGG** at block **97276880** (2026-10-25T03:21:34.000Z), the block before the rug. Block hash: `0x757ced15afec4bfb91e84863651530ad5e84028bc75399476752d3de531de274`. | | root | entries | |---|---|---| | Hens | `0xb745cd95e85dc679274693eb26960957de19109ad1aedde3c406228851973f91` | 8202 hens, 899 holders | | HEGG | `0x7790d2dac7e4bc9b22a62c0a7955956079bf52ca1f8696d08cff653541c7ab83` | 475 wallets, 422834 HEGG | | HenRegistry | `0x20071ef1cd7690ae267c74e33d9b7e466c7bc10888f89d11a603961c2e83f743` | all 10000 hen ids (1798 pool ids at weight 0) | The HenRegistry root is the one the registry freezes on chain; the hens root is the same hens and weights with their holders, for checking a wallet. ## Files - `roots.json`: the roots and exactly what each leaf commits to. - `wallets.json`: every wallet's snapshot hens `[id, weight]` and HEGG balance (wei). - `proofs/
.json`: one wallet's entries with their Merkle proofs. - `hen-snapshot.json`, `hegg-snapshot.json`: the full snapshots the trees are built from. - `hen-stats.json`: every hen id as a HenRegistry leaf (rebuild with `buildStatsRoot.ts`). ## What is in, and what is not - **Hens:** every Hen held at the block, except the 1381 in hens.farm's HenTrust allocation (the team's unclaimed hens). Weight is the HEGG burned into the hen (`henData(id).heggBurned`), in whole HEGG. Hens minted after the block are not in. - **HEGG:** user wallets only. hens.farm contracts and deployer, the Uniswap v4 PoolManager, the burn address and non-wallet contracts (see hegg-snapshot.json labels). Two smart wallets (an ERC-4337 account and a Safe) were reviewed by hand and kept as users. ## Leaves OpenZeppelin `StandardMerkleTree` (`@openzeppelin/merkle-tree`): leaf = `keccak256(bytes.concat(keccak256(abi.encode(...values))))`, sorted-pair nodes, so proofs verify with OpenZeppelin `MerkleProof.verify`. - Hens: `(uint256 henId, address holder, uint96 weight)` - HEGG: `(address wallet, uint256 balance)` - HenRegistry: `(bytes32 statsDomain, uint256 henId, uint96 kg, uint32 numberOfTransfers, string name)` ## Check it yourself The public RPC keeps no historical state, so the snapshots replay the Hen and HEGG contracts' own `Transfer` (and `HenWeightIncreased`) logs from deployment to the block, and were checked against live `ownerOf` / `henData` / `balanceOf` at the chain head. Scripts (chooks repo, `hardhat/`): `henSnapshot.ts`, `heggSnapshot.ts`, `buildHenRoots.ts`. BLOCK=97724868 node scripts/henSnapshot.ts BLOCK=97276880 node scripts/heggSnapshot.ts npx hardhat run scripts/buildHenRoots.ts # must print the same three roots