Steps 4–5 · Relay Distribution
The bundle must not be traceable to one funding transaction. Wallet 0 splits the budget across every bundle wallet through relay.link, on your schedule.
Step 4 — Choose the window
Enter the total duration in hours (e.g. 0.5 = 30 min) and click Build plan. The engine reads wallet 0's live balance on the source chain and generates a plan:
- Amounts — randomized around the average share, within ±30%
- Timing — Poisson-spaced intervals rescaled to fill your window, with a randomized gap between every transfer
- Routing — each entry is a relay.link cross-chain transfer into a different bundle wallet
The plan is written to out/funding-plan.json — inspectable, resumable.
Step 5 — Execute
Click Execute. The vault must be unlocked (the app asks for the password if needed). The engine then works through the plan:
- Each transfer goes
pending → sending → confirmed(orerror) - Failed entries are retried on the next run — the journal makes the whole job crash-safe
- The Setup step flips
runningwhile it works anddoneonly when every entry is confirmed
from_balance mode means the plan always matches wallet 0's real balance — an empty funder refuses at plan time, not mid-execution.
API
| Route | Body | Notes |
|---|---|---|
POST /api/plan | {hours, from_balance, src_chain, source_index} | src_chain accepts 8453 or "base" |
POST /api/execute | {execute: true} | requires unlocked vault; {execute: false} dry-runs |
GET /api/state reports plan.status counts ({confirmed: n, pending: n, …}) — the UI derives step-5 completion from that, never from a flag you could fake.
Until this is done
Launch remains locked: /api/launch returns etape 5 : la distribution relay.link n'est pas terminee if any entry is unconfirmed.