Docs

plop documentation

plop hands a token's supply back to its holders one drop at a time, by rule, on Robinhood Chain. A creator locks part of the supply in a dropper contract, publishes the split rules on chain, and a keeper fires a drop every interval to every wallet that qualifies. Anyone can read the rules, recompute who qualifies, and audit every drop from chain data alone.

These pages are written for people who want to build on top of plop: integrate it into a wallet or launchpad, run their own instance, visualise the data, or verify a drop.

Start here#

If you want to…Read
Understand the moving parts in five minutesOverview
Call the contracts directly (ABI, addresses, semantics)Contracts
Know exactly who gets what and whySplit rules
Index, chart or audit the dataReading the data
Consume JSON instead of raw RPCHTTP API
Launch an airdrop for your own token, from a UI or from codeCreate a dropper
Run the keeper, or act as the executor for your own dropperKeeper and executor
Host the whole stack yourself (contracts, web, keeper)Self-hosting
Know what is enforced by code and what is only declaredTrust model
Quick answersFAQ

Deployment on Robinhood Chain#

ChainRobinhood Chain, chain id 4663 (0x1237), an Arbitrum Orbit rollup
Registry (Fabryka)0x1CE8f5785617eaf9B6BB3c77CE7d242D86Dd0502, deployed at block 63645852
Default executor (plop keeper)0x5e25b93C6454C10E4110B70DAFa76C6934cDee03
Public RPChttps://rpc.mainnet.chain.robinhood.com
Explorerhttps://robinhoodchain.blockscout.com
Multicall30xcA11bde05977b3631167028862bE2a173976CA11

The registry is permissionless: anyone can create a dropper and it appears in the list. Nothing in the list is "verified". The only reliable identifier of a coin is its contract address.

Three ideas to keep in mind#

  1. The dropper holds the money, the registry holds the rules. A dropper (Kroplomierz) is a small contract that holds one token's supply and pays it out in capped, rate-limited batches. The registry (Fabryka) never touches tokens; it only lists droppers and stores their split rules so that anyone can recompute the next drop.
  2. The split is computed off chain, deterministically, from public data. The keeper builds a holder snapshot from Transfer logs, applies the on-chain rules, and calls the dropper with the resulting list. The dropper records a hash of the list and a hash of the rules in every Kropla event, so any third party can recompute both and compare.
  3. Amounts are integers, time comes from block headers. Every amount in the contracts, the API and these docs is an integer in the token's base units (decimals is always read from the token, never assumed). Every timestamp is block.timestamp of a block header, never a wall clock and never the blockTimestamp field of a log, which this chain sometimes reports as zero.

Conventions used in these docs#

  • Solidity identifiers, storage fields and JSON keys are Polish, because the code is. Every page introduces the English meaning next to the identifier the first time it appears, and the glossary lists all of them.
  • Code samples use viem 2.x and Foundry's cast. Any EVM library works; nothing here depends on viem.
  • Example addresses that are not the registry or the default executor are placeholders such as 0x1234….