SLUICE
from zip to first round.
Everything you need to build, configure and run SLUICE: token distribution for Solana projects, run by you for several projects, with your fee on every round. Read it top to bottom the first time. After that, press / and search.
01What you bought
AI tools were used to assist with parts of the code, documentation and graphics of this item. The author directed, reviewed and tested every part before release.
SLUICE is a Flutter console for token distributions on Solana. A project funds a pool. SLUICE reads who holds the project's token at the current slot (or averages balances over a window from samples you record), removes addresses that are not real holders (pool vaults, burn addresses, the treasury, your own list), divides the pool, prepares unsigned transfer batches for the project's own wallet and records what settled on-chain. You run it for several projects and can take a fee on each round.
A fresh install earns nothing and sends nothing, and its console opens only with the operator passcode you compile in (details): the fee is 0 basis points, the fee wallet is empty, there is no API key and no wallet address of anyone else in the source (lib/core/compute/operator_fee.dart).
| Step | What SLUICE does | Where in the code |
|---|---|---|
| Snapshot | Holders at the current slot, which is recorded with the snapshot, or time-weighted over a window from balance samples you recorded | lib/core/snapshot/ |
| Exclusions | Detects program-controlled accounts (pool vaults) mathematically; adds your lists; flags probable exchange wallets | lib/core/exclusions/ |
| Compute | Pro-rata or by tier (a tier editor in the project form), in integer base units, with documented rounding and dust rules | lib/core/compute/ |
| Dry run | Who gets what, what the round costs in SOL, your fee and what the exclusions removed. Nothing moves. | lib/core/report/ |
| Distribute | Direct SPL TransferChecked transfers as unsigned batches for your own wallet, each batch opening with Compute Budget instructions | lib/core/distribute/ |
| Audit | Every round reproducible from its snapshot hash; each signature is checked against its batch on-chain | lib/core/audit/ |
| Vocabulary | Rewards, distribution, revenue share, dividend, yield or your own words. Changes no number. | assets/vocabulary/presets.json |
SLUICE holds no key and produces no signature. It has no server. It prepares instructions; the project's own wallet signs and sends them, and you attach the signatures back so SLUICE can check on-chain that each one made exactly the transfers of its batch.

02Pick your path
03What is in the package
| Folder or file | What it is |
|---|---|
lib/ | All source. The engine is in lib/core/, the console in lib/features/, theme in lib/app/. |
assets/vocabulary/presets.json | The vocabulary presets, as data. |
assets/icon/ | The SLUICE product icon (sluice_icon.png), used for the app icons and the console header mark. |
macos/, web/, android/, ios/ | Platform projects. Linux and Windows are not configured. |
test/ | Automated tests (flutter test). |
docs/, CHANGELOG.md | Developer notes in Markdown. |
A Solana RPC endpoint (a free tier is enough to start), a Helius API key (recommended), the wallets that fund and sign each round, and signing tooling for those wallets. No on-chain program is needed. For store builds: Apple and Google developer accounts.
04Try it before you install
The live demo is the real web build compiled in demo mode: sluice-demo.mikodes.com (passcode sluice-demo). It reads no chain, holds no key and moves nothing; it shows one labelled sample round, computed by the product from sample input.

05How to read these docs
- Dark boxes are commands. Press Copy in the corner and paste them into a terminal.
- Grey text after
#is an explanation. The Copy button leaves it out. - Text in angle brackets, like
<your-mint>, is a placeholder. Replace it, brackets included. - Screen names follow your vocabulary preset. With the default preset a round is a "distribution"; these docs say "round".
- Required marks steps you cannot skip before a real round.
- Not built in this version marks things SLUICE deliberately does not do yet.