Pre-launch · built and tested

Treasury voting

A SOL treasury that pays out only what holders vote to approve: one fixed recipient and amount per proposal, after a waiting period.

  • Paysapproved proposals only
  • Timingvote, then a wait
  • VEYDUCT feenone
  • Coinsfixed-supply Pump or SPL
Proposal, vote, waiting period, then the paymentExample with the practice run’s numbers: the creator proposes 1.2 SOL to a designer from a treasury holding 1.5 SOL. Holders vote for 48 hours: approve 75,000 (you 40,000, holder B 35,000), reject 30,000; turnout 105,000 passes the 100,000 quorum. After a 24-hour waiting period anyone carries out the payment once and the designer receives 1.2 SOL. ProposedVoting 48 hWaiting 24 hPaid Proposal #1 · fixed recipient and amount 1.2 SOLto the designer Approve 75,000 · Reject 30,000quorum 100,000 Treasury1.5 SOL0.3 SOL 1.2 SOL Designer0 SOL+1.2 SOL
Example · same numbers as Try it

With your wallet

Create, fund, propose, vote and pay

Pick an action, fill in only what it needs, then review the exact recipient, amount and cost before your wallet opens.

Pre-launch

Checking the published programs.

Start here

Choose an action

The coin holders vote with: its mint address, from Pump or DEX Screener. It needs a fixed supply and no freeze authority; Pump coins qualify.

Quorum: total votes needed for a result, for example 100,000 tokens. Payment cap: the largest single payment, for example 2 SOL, which limits what any one vote can move.

Minimum vote: the shortest voting time a proposal may have. Waiting period: the time between voting closing and the payment, so holders can react. Each is about 0.02 to 111 hours; 24 and 24 is a sensible start.

Advanced

Use a new number to create another treasury from the same wallet.

These rules are permanent. The creator can propose payments but can’t withdraw treasury SOL directly.

What happens next: the exact recipient, amount and rules appear in the Review panel. Your wallet opens only after you tick the check and approve.

Practice run · simulated · nothing is sent

Practice run

The practice run loads with the page. It needs JavaScript; nothing is signed or sent.

Everything the two programs do, and do not do

Checked against both programs’ source and this page’s own code.

Pays
Only approved proposals, once each, to the fixed recipient
Timing
Minimum vote, then a waiting period you set
VEYDUCT fee
None. Only rent and network fees
Coins
Fixed-supply Pump coins and classic SPL
Example

Accounts the programs create

Every account has an address derived from fixed seeds (a Program-derived address: an address worked out from fixed words and inputs, with no private key. Only the program can sign for it, so nobody can swap in a look-alike.), so the page can find it and nobody can swap in a look-alike.

Treasury

Holds the SOL and the permanent rules: creator, voting program, voting coin, quorum, minimum vote, waiting period and payment cap.

Seeds
"gov-treasury", creator, number
Size
154 bytes
Created by
The creator

Proposal and vote vault

Created by the voting program: deadline, quorum, Yes and No totals, and a token vault that holds locked votes.

Seeds
"veyduct-governance-v2", creator, number · "vote-vault", proposal
Size
188 bytes + 170 (Token-2022) or 165

Payment record

The one recipient and amount this proposal can pay, and whether it has been paid.

Seeds
"gov-action", proposal
Size
122 bytes
Created by
The creator, with the proposal

Your vote receipt

How much you locked, on which side, and whether you withdrew.

Seeds
"vote", proposal, your wallet
Size
84 bytes
Created by
Your first vote

The proposal’s fingerprint is SHA-256 of “veyduct.sol.action.v1”, the treasury, the proposal, the recipient and the amount. The payment record must match it, so a vote can never be redirected to another payment.

Who can do what

  • ActionWho signsRules the programs enforce
  • Create a treasuryAny wallet; it becomes the creatorThe minimum number of coins that must vote in total, Yes plus No, for a result to count at all. above zero, a payment cap above zero, minimum vote and waiting period each 100 to 1,000,000 slots, a fixed-supply coin with no freeze authority, an immutable voting program.
  • Add SOLAnyoneA plain SOL transfer. It leaves only through an approved payment.
  • Propose a paymentThe creator onlyBefore any vote, within the cap, with voting that lasts at least the minimum; proposal and payment record in one transaction.
  • Vote and withdrawAny holder of the coinLock coins on one side before the deadline; take them all back once from the deadline on.
  • Carry out the paymentAnyoneApproved, the waiting period over, not yet paid, enough SOL above the reserve. Pays only the fixed recipient.
  • Withdraw treasury SOLNobodyNo creator withdrawal, no arbitrary calls, no rule changes and no close instruction.

The creator decides what gets proposed, and holders decide whether it is paid. Vote weight comes from coins locked now, so check how the coin’s supply is spread before relying on a vote.

From proposal to payment, with a worked example

  1. Voting closes at the deadlinedeadline ≥ slot when proposed + minimum voteThe page adds 300 slots of headroom to a minimum-length vote so it still qualifies when it lands.
  2. The resultapproved = (yes + no ≥ quorum) and (yes > no)Read with the page’s own VeyductGovernanceV2.result. A tie or missed quorum never pays.
  3. The paymentpayable when slot ≥ deadline + waiting period, onceOnly if the treasury holds the amount above its rent reserve; otherwise add SOL and try again.

Example (same numbers as Try it)

  1. Rules: quorum 100,000, cap 2 SOL, minimum vote 24 h, waiting period 24 h.Cost 0.00143256 SOL rent + 0.000005 SOL network fee. No VEYDUCT fee.
  2. Add 1.5 SOL, propose 1.2 SOL to a designer, vote for 48 h.Voting closes 432,000 slots later; payable 216,000 slots after that.
  3. You approve with 40,000; B approves with 35,000; C rejects with 30,000.75,000 + 30,000 = 105,000 ≥ 100,000 and 75,000 > 30,000Approved when voting closes.
  4. Wait 48 h, then 24 h more.Anyone carries it out: the designer gets 1.2 SOL, the treasury keeps 0.3 SOL plus its reserve, and the payment can never run again.

Costs

VEYDUCT feeTreasury voting adds no VEYDUCT fee at any step.
None
Treasury rent reserve154 bytes at mainnet rent of 5,080 lamports per byte plus 128 bytes per account. It stays in the treasury.
0.00143256 SOL
Rent for each proposalProposal (188 bytes), vote vault and payment record (122 bytes), paid by the creator.
0.00438912 SOL (Token-2022) · 0.00436372 SOL (classic)
Rent for your vote receiptOnce per wallet per proposal, on your first vote.
0.00107696 SOL
Network feePer transaction, one signature.
0.000005 SOL

No account is ever closed, so rent is not refunded. The treasury’s reserve can never be paid out.

Timing

Times are Solana slots; the page converts hours at 9,000 slots an hour.

  • Minimum vote and A fixed delay between voting closing and the payment being allowed, so everyone can see the result and react before any SOL moves.: 100 to 1,000,000 slots each (about 0.02 to 111 hours). Both are fixed when the treasury is created.
  • Coins are locked only while voting is open. Voters can withdraw as soon as it closes, during the waiting period; recorded totals do not change.
  • Slots, not clock time. Hour figures assume 0.4 seconds per Solana’s clock tick. A slot passes about every 0.4 seconds (about 9,000 an hour). Deadlines on chain are slot numbers, not minutes. and can drift from real elapsed time.

Edge cases and what can go wrong

Not enough SOL

An approved payment fails as a whole if the treasury is short. Add SOL; it can be carried out later.

Over the cap

A proposal above the treasury’s payment cap cannot be registered.

Too short a vote

Voting shorter than the treasury’s minimum is refused when the proposal is created.

Tie or low turnout

Not approved. The payment can never run; voters still get their coins back.

Coins that can be minted or frozen

Refused. The voting coin must have a Nobody can mint more: the mint authority is removed. Otherwise new coins could be created to outvote holders. and no A key that can freeze any holder’s token account. Coins that still have one are refused, because a frozen voter could not vote or withdraw..

Unclear send result

The page saves the transaction before sending and asks you to check it before another action. It never retries by itself.

FAQ

Can the creator take the treasury SOL?

No. The creator can only propose payments. SOL leaves only through a payment holders approved.#

Who actually sends the approved payment?

Anyone, once the waiting period ends. They cannot change the recipient or amount, and it pays once.#

Can a proposal pay tokens or call another program?

No. This version pays a fixed amount of SOL to one address and nothing else.#

How is this different from Token voting?

Token voting records a decision only. Treasury voting ties each proposal to one SOL payment that runs after approval.#

How is this different from Shared treasury?

A shared treasury pays when two of three fixed owners sign. Here, holders vote and there is a waiting period.#

Do Pump coins work?

Yes. Pump coins are fixed-supply Token-2022 with metadata only and no freeze authority, which is supported.#

Can the rules or programs be changed later?

No. The treasury rules are permanent, the treasury refuses an upgradeable voting program, and the release only switches on immutable deployments whose exact bytes the server checks.#

Is the practice run real?

No. It runs on this page with a practice wallet and simulated holders; nothing is signed or sent. It follows the programs’ rules (quorum, payment cap, minimum vote, waiting period), so its numbers match a real voting treasury.#

Tested in this release

Test results are published with each release

Every release build runs both programs’ exact pinned bytes (votes and payouts) and this page’s own code in an isolated Solana runtime (LiteSVM), with mainnet token programs and a coin created by captured mainnet Pump instructions. This copy of the site has no build results attached; Release status lists the latest release.

  • Create a treasury, fund it, propose a payment, vote with real token custody and carry out the approved payment exactly once, on classic SPL and on a Pump (Token-2022) coin.
  • Quorum and majority, the minimum voting period, the waiting period and the payment cap are enforced; ties and missed quorum never pay.
  • Paying twice, paying a different recipient, reusing a proposal on another treasury and reusing locked coins in a concurrent vote are all refused.