SLUICE docs
v1.0.0
Live demo Get help
● Set up · Every setting

Configuration
every setting, what it costs.

SLUICE has three kinds of settings: operator settings that apply to every project, project settings, and exclusion rules. There is no .env file and no build-time key. Everything is set in the console and stays on the machine.

01Where settings live

WhatWhere it is stored
Helius API keyOS keystore (sluice.vault.helius_api_key)
Operator settings, projects, audit trailThe app's local preferences on this machine
Vocabulary presetsassets/vocabulary/presets.json (built in), plus your custom preset
One build setting

SLUICE has no .env file and reads one --dart-define: SLUICE_OPERATOR_PASSCODE, without which the build has no console (details). SLUICE_DEMO=true exists only for the public demo build (tool/build_web_demo.sh); never use it for your own build.

02Operator settings

Settings. These are yours and apply across projects.

SettingDefaultNotes
JSON-RPC endpointshttps://api.mainnet-beta.solana.comOne per line, tried in order, rotated on failure. Replace the default.
Helius API keyemptyKeystore only. Absent means holders are read with getProgramAccounts.
Fee walletemptyNo fee is taken while this is empty, whatever the rate says.
Fee, basis points0Capped at 200 in code (Your fee).
Flat amount per roundemptyWhole units of the asset the project pays in. Charged on top of the rate.
Transfers per transaction10 (max 18)When every recipient already has a token account.
Transfers that also create an account6 (max 8)The create instruction adds accounts and bytes, so fewer fit.
Priority fee, micro-lamports per CU1000The fallback. During a run SLUICE reads a current value from your endpoint (getRecentPrioritizationFees) and bids it with SetComputeUnitPrice in every batch. Fill with the defaults resets packing.
Compute units per transaction200,000Between 10,000 and 1,400,000. Every batch sets it with SetComputeUnitLimit, and the priority fee is charged against it. Raise it if you raise the account-creating batch size.
Explorer base URLhttps://solscan.io/tx/Where a recorded signature opens.
Default vocabulary presetdistributionApplied to new projects.

Settings → Effective configuration shows what SLUICE is actually running on, from what is saved, not from what is typed but unsaved.

Third-party costs

Third-party API services such as Solana RPC providers (Helius, QuickNode, Alchemy and others) may charge for usage. Any such costs are the buyer's responsibility; SLUICE ships no API key and no paid plan. See Costs not included in the price.

What every batch contains

Each batch opens with two Compute Budget instructions: SetComputeUnitLimit with the Compute units per transaction setting, and SetComputeUnitPrice with the priority fee in micro-lamports per CU (left out when the fee is 0). Then come the SPL TransferChecked transfers, each preceded by the creation of the recipient's token account when it does not exist yet (lib/core/distribute/solana_instruction.dart). The Priority fees line of the dry run's network-cost estimate is exactly what these instructions bid: compute unit limit × price per CU, per transaction.

03Project settings

Projects → New project, or select one to edit.

SettingNotes
NameFor you.
Snapshot mintThe token holders are measured on. The token program is read from the mint, so Token-2022 needs no extra setting.
Asset mint, symbol, decimalsWhat is being sent. Often not the snapshot token.
Funding walletFunds and signs every batch. Excluded from its own round by default. A project treasury is excluded through Your list.
Minimum per holderBelow this, a recipient costs more in fees than they receive.
MethodPro-rata by balance or By tier. By tier opens the tier editor (below).
Dust rule, Remainder ruleSee below.
Recurring scheduleStarted by hand, Every N days, or When the funded balance passes a threshold.

Dust rule

ChoiceWhat happens
Re-divide among those above the minimum (default)Recipients below the minimum are dropped and the pool is divided again among the rest, until stable.
Leave it with the funding walletDropped; their share never leaves the funding wallet.
Carry it to the next roundDropped; the amount is recorded as a carry-forward.

Remainder rule

ChoiceWhat happens
Largest discarded fraction first, ties by address (default)One base unit each to the largest fractions. Allocations then sum to the pool exactly.
Leave the crumbs with the funding walletThe leftover units stay put.

Tiers

Choose By tier as the method and the project form shows TIERS:

FieldWhat it does
Tier ruleBalance multiplier: each tier multiplies a holder's balance before the pro-rata division; 1 is no change, 2 counts a balance twice. Fixed portion of the pool: each tier gets a fixed percentage of the pool, split evenly among its members; the percentages must add up to 100.
Snapshot token decimalsMinimums are entered in whole tokens, so SLUICE needs the snapshot token's decimals. Read from mint fills it from the chain. A dry run refuses to run if the mint's decimals differ from this value.
Name, Minimum held, Multiplier or Pool portion %One row per tier. The minimum is in whole snapshot tokens. The bin icon removes a tier; Add tier adds one.
Include holders below every tierMultiplier rule only: when on, holders below every minimum take part at 1×; when off, they are left out. With fixed portions only tier members are paid, so it has no effect.

A holder falls in the highest tier whose minimum they meet. The form names a tier with a missing name or an unreadable minimum, multiplier or percentage before it saves, and a schedule whose percentages do not add up to 100 is refused. Tier schedules are stored on the project (lib/core/compute/tier_schedule.dart).

04Exclusion rules

SettingDefaultNotes
Exclude program-controlled authoritiesonThe only setting that can put a pool vault back into a round. Turning it off asks you to confirm.
Look for exchange omnibus walletsonFlags, does not remove.
Apply a probable omnibus flag automaticallyoffDetect and flag; you decide.
Minimum share examined0.5 %Fixed default, no console control. The omnibus check costs one RPC call per candidate.
Transfers per day threshold50Fixed default, no console control. Above this an on-curve account looks like infrastructure.
Named lookups100Fixed default, no console control. How many of the largest holders get a venue name. The curve test runs on all.
Exclude the funding walletonFixed default, no console control. Paying yourself inflates every published figure.

The four fixed defaults are in lib/core/exclusions/exclusion_policy.dart; change them there if you need different values.

Your list: add addresses with a reason: Treasury, Team wallet, Burn address, Exchange wallet or Other. The exchange list ships empty on purpose: a wrong exchange address silently removes a real holder from every round.

05Vocabulary

PresetThe thing that movesThe funded account
rewardsrewardreward pool
distribution (default)distributiondistribution pool
revenue-sharerevenue sharerevenue pool
dividenddividenddividend pool
yieldyieldyield pool
customYour words. Anything left blank falls back to the default preset.

Changing the preset changes no number. test/vocabulary/preset_changes_no_number_test.dart renders the dry run, the exports and the realised rate under every preset and requires identical figures. To add a language, add a sibling block under locales in presets.json. The choice of words carries legal weight in some markets; see Compliance.