PRIVATE PAYOUT LAYER · SOLANA

A private layer
for every payout.

Open an on-chain SOL vault, fund it, and pay out to any address through a program-owned treasury. Money moves through the rail, not wallet-to-wallet — so your personal and company wallets never link into one cluster.

Launch app →How it works
✓ No wallet-linking clusters✓ Single & batch payouts✓ API-ready
PAYOUT RAILLIVE
VAULT · TREASURY #1042
12.40 SOL
◆ 0.05
7xQ…k2 · winner0.049
9aB…m1 · referral0.098
+10 players · batch2.058
signed by operator keyfee 2% · on-chain
10
RECIPIENTS / BATCH
5
OPERATOR KEYS / TREASURY
TREASURIES / WALLET
THE PRIVATE LAYER

Your wallets and your company,
never linked on-chain.

Pay a customer or a team member straight from your own wallet and the transfer draws a direct edge between the two addresses. Do it often enough and holder-map tools merge your personal wallet, your company wallets and everyone you touched into one false cluster — read by analysts as insider control.

BlindRail sits in between. Every payment and payout routes through a program-owned treasury (a PDA), so funds never move wallet-to-wallet. The neutral contract account is the only thing on the graph — your personal wallets, company wallets and recipients stay independent, with no direct edges to cluster them together.

  • No false clusters — the program breaks the direct wallet-to-wallet link, so distinct entities aren't merged into one.
  • Privacy between roles — personal wallets stay separate from company and treasury wallets on-chain.
  • Still fully auditable — every flow is on-chain and verifiable; this is separation, not obfuscation.
PRIVATE LAYERno direct edges
◆ your walletscompany wallets ◆
same money · two separate clusters
HOW IT WORKS

From wallet to automated payouts.

Four moves. No custodian, no admin key on your server.

1

Connect & create

Connect a wallet and open a treasury. You're the admin. Open as many as you need.

2

Fund the vault

Deposit SOL into the treasury vault. Anyone can top it up, anytime.

3

Delegate operators

Authorize backend keys so your server pays out — without ever touching your admin key.

4

Pay out

Send single or batched payouts to any address — from the app or your own code.

BUILT FOR GAME ECONOMIES

A treasury that runs itself.

01

Admin + operators

One admin owns each treasury and delegates up to five operator keys for hands-off, automated payouts.

02

Batch payouts

Reward up to ten players in a single transaction. One signature, many drops.

03

API-ready SDK

A TypeScript client mirrors every instruction — wire payouts straight into your game backend.

04

Pause & transfer

Freeze payouts in one click or hand admin to a new wallet. The treasury address never changes.

05

Transparent fee

A flat protocol fee is taken per payout, on-chain and predictable. No hidden spread.

06

PDA-secured vaults

Funds live in program-derived vaults. Only authorized signers can move a single lamport.

$DRAIL · STAKING UTILITY

Stake DRAIL, pay less in fees.

Lock DRAIL to cut your protocol fees — both the SOL payout fee (base 1%) and the token-payout fee (base 0.001 SOL) drop by your tier. The more you stake, the less you pay; stake enough and payouts are completely fee-free.

STAKE 500K DRAIL
25%
quarter off every fee
STAKE 1M DRAIL
50%
half off every fee
STAKE 2.5M DRAIL
75%
three-quarters off
STAKE 5M DRAIL
100%
zero fees — fully free
✓ 30-day lock✓ Top up anytime (resets the 30 days)✓ Discount active while staked✓ Withdraw after the lock — keep the discount on what remains
Stake DRAIL →
SDK / AUTOMATION

Wire payouts into
your backend.

Your server holds only a delegated operator key. The admin registers it once — then your code signs payout and batchPayout with zero admin exposure.

Read the docs →Open the dashboard →
payout.ts
import { TreasuryClient } from "blindrail";
const rail = TreasuryClient.fromKeypair(conn, operator);
await rail.payout(treasury, winner, 50_000_000); // 0.05 SOL

Spin up your first treasury.

Live on Solana. Connect a wallet, pick mainnet or devnet, and run the full flow in under a minute.

Launch app →