History – Voting

Back
v5.15.1 · currentSplit paragraphs over 150 words at sentence boundaries; wording unchanged.–
2 blocks modified
  • Modified – Text at Block 2

    You vote on a caper, and then …ly – and still cannot execute.Where the winner is an executa… the source it was built from.

  • Modified – Text at Block 5

    What your vote tokens are wort…e cast, and no tally reads it.The stored ballot deliberately…rt – they are the same number.

v5.15.0Proposal fee moved to creation: max(500 XRD, 1% of the largest option); trigger free; ballot fee question removed–
1 block modified
  • Modified – Text at Block 3

    How a ballot works Voting open…usting a snapshot you supply. Every ballot also carriesA ballot is the ranking and nothing else. Until 6 October 2026 it also answered a second question: – who pays theether the proposer or the treasury paid a 10% execution fee ifat this proposal is triggered – the proposer, or the treasury. That one settles by plain weight majority, and a tie is a treasury waivere trigger – and that question went with the fee: the proposer now pays one fee at creation, and the trigger is free ( proposals (/wiki/governance/proposals) ). Counting takes one or two pe…ich is the second phase's job.

v5.14.1The trade fee is gone: the skim now splits 49.5% to the caper's treasury, 50% to the founder and 0.5% to the $CAPER treasury–
1 block modified
  • Modified – Text at Block 4

    How vote tokens are earned One…ent, where the state now reads trade_fee, vote_fee, proposal_fee, propo…ntract mints directly into it.

v5.14.0Update the “How your exit share works” infographic.–
1 block modified
  • Modified – Text at Block 8
v5.13.0Exit binding of 21 September 2026: the vote tokens handed in must come from the leaving member's own balance (exit_open, 'Vote tokens must all come from the recipient', contracts/logic/src/lib.rs at 4b53957, live on czmc8h0); governance tokens stay unbound (M-3, accepted).–
1 block modified
  • Modified – Text at Block 5

    What your vote tokens are wort…the tokens back to the curve. Since the redeploy of 21 September 2026 the vote tokens handed in must be the leaving member's own. An exit transaction first calls exit_open, which records the member's vote-token balance, and exit() then requires the vote tokens it receives to equal the fall in that balance, aborting with Vote tokens must all come from the recipient otherwise. Several accounts signing one transaction can no longer pool their v into a single exit. The governance tokens are not bound the same way: they transfer freely, so co-signers can still route them to the member holding the most v, a limit the contract source records as accepted. Read plainly, the formula pric…rt – they are the same number.

v5.12.0Correct the closing route claim: current_main moves for a settled $CAPER UPGRADE and, separately, for the admin badge. Detail moved to governance/proposals rather than restated here.–
1 block modified
  • Modified – Text at Block 7

    Three eras, and why the ledger…iven deployment they are fixed – but t. The deployment itself can be swapped by a $CAPER UPGRADE, which is exactly how this page came to need rewriting twiceis not: the registry moves current_main for a settled $CAPER UPGRADE, and separately for the protocol admin badge, which needs no ballot at all. Proposals (/wiki/governance/proposals) sets out both routes and where each one is gated.

v5.11.1Remove the $XRD caper and its reference basket, and say a sell pays no trade fee. Both follow the 18 September 2026 redeploy.–
3 blocks modified
  • Modified – Text at Block 2

    You vote on a caper, and then …ow is at or above the baseline – with one caper inverted, the $XRD caper, which has no curve of its own and is judged against a basket instead. The vote legislates; the mar… the source it was built from.

  • Modified – Text at Block 4

    How vote tokens are earned One…on_peak and the three windows. One field has been added since, at the redeploy of 15 September 2026: xrd_basket, the reference basket the $XRD caper's market phase is priced against – state rather than a bare constant, so which market judges the platform's fee sink is readable off the gateway. What this buys is a bound on …ntract mints directly into it.

  • Modified – Text at Block 6

    What the circulating supply do…tor under a vote already cast. One caper obtains it differently. The $XRD caper has no bonding curve and its members hold native XRD, whose total supply cannot be read on-ledger at all: Radix creates XRD at genesis without supply tracking, so the resource reports no total. The contract substitutes XRD's protocol maximum instead, the tightest figure guaranteed to be at least the sum of member holdings. Erring high there makes $XRD exits conservative, which is the right direction to err. The same caper does take proposals, but its optimistic phase cannot read a mark that never moves. Since the redeploy of 15 September 2026 it is priced against a reference basket of other capers' curve (/wiki/markets/bonding-curve) prices, each member weighted by its XRD curve reserve and the index normalised to sum to one. That basket is quoted in XRD, so the test inverts: the proposal passes if the window's basket mean is at or below the baseline locked at the trigger. Capital rotating out of capers into XRD pushes the basket down and is consent; dumping XRD into capers pushes it up and is the veto. Membership is a state field the gateway can read rather than a constant – xrd_basket, holding the single entry CAPER when read live on 16 September 2026 – and widening it means swapping the logic tier, exactly like retuning a window.

v5.11.0The $XRD caper does take proposals: the 15 Sep 2026 redeploy prices its window against a reserve-weighted reference basket and inverts the test. Its state-field list gains xrd_basket, and the universal 'at or above the baseline' claim gains the one caper that runs the other way.–
3 blocks modified
  • Modified – Text at Block 2

    You vote on a caper, and then …ow is at or above the baseline – with one caper inverted, the $XRD caper, which has no curve of its own and is judged against a basket instead. The vote legislates; the mar… the source it was built from.

  • Modified – Text at Block 4

    How vote tokens are earned One…ion_peak and the three windows, and nothing else. One field has been added since, at the redeploy of 15 September 2026: xrd_basket, the reference basket the $XRD caper's market phase is priced against – state rather than a bare constant, so which market judges the platform's fee sink is readable off the gateway. What this buys is a bound on…ntract mints directly into it.

  • Modified – Text at Block 6

    What the circulating supply do…ection to err. The same caper cannotdoes take proposals at all, because the optimistic phase has no market signal to resolve against, but its optimistic phase cannot read a mark that never moves. Since the redeploy of 15 September 2026 it is priced against a reference basket of other capers' curve (/wiki/markets/bonding-curve) prices, each member weighted by its XRD curve reserve and the index normalised to sum to one. That basket is quoted in XRD, so the test inverts: the proposal passes if the window's basket mean is at or below the baseline locked at the trigger. Capital rotating out of capers into XRD pushes the basket down and is consent; dumping XRD into capers pushes it up and is the veto. Membership is a state field the gateway can read rather than a constant – xrd_basket, holding the single entry CAPER when read live on 16 September 2026 – and widening it means swapping the logic tier, exactly like retuning a window.

v5.10.1Sweep #414: the crank subsidy ended with the 11 Sep 2026 redeploy, not 9 Sep; settle_proposal folds up to 60 outstanding ballots itself (SINGLE_PASS_MAX_VOTERS); exit takes amounts and aborts without v, so the no-ballot holder sentence no longer names trading; the two-phase era's 'v now accrues on both surfaces' dated to its end (contracts/logic/src/lib.rs at HEAD, source unchanged since bd5892a).–
3 blocks modified
  • Modified – Text at Block 3

    How a ballot works Voting open…s a treasury waiver. Counting is a two-step crank. Both steps aretakes one or two permissionless cranks, and since 911 September 2026 whoever cranks…posal then freezes the verdict –, an electorate small enough to fit foldsd folds up to 60 ballots the volley has not reached (SINGLE_PASS_MAX_VOTERS) inline in that singlame call instead, so a proposal with 60 ballots or fewer needs only the one crank. The threshold it applies is …ich is the second phase's job.

  • Modified – Text at Block 5

    What your vote tokens are wort…s zero, so a holder who has neither voted nor traded through the protocol – who receiver cast a ballot redeems nothing from the treasury, howevedr tokens some ohey came by their way – redeems nothing from the treasury, though the sell leg still returnstokens – exit aborts without vote tokens – though they can still sell their tokens' curve valu back to the curve. Read plainly, the formula p…gh identically if one of them did the trading and the voting that built the marketcast the ballots the other skipped. And because the numerator reads the buckets you actuallyamount you choose to hand in, redeeming part of a …rt – they are the same number.

  • Modified – Text at Block 7

    Three eras, and why the ledger…WAP over the window itself. v now accruesd on both surfaces at one rate, trades and ballots, until the redeploy of 11 September 2026 removed the trade mint. The staking ballot box did n… came to need rewriting twice.

v5.10.0Sweep #410: document weighted Trollbox moderation (c39120f) - flags weighted by w, three-flagger floor, author shield capped, stake clamps both sides, 24h mute after three collapses, founder restore final. Sourced from src/domains/trollbox at HEAD 34ac4d4–
1 block added
  • Added – Text at Block 9

    The same weight moderates a caper’s Trollbox Every caper has a Trollbox, a chat room on its profile, and a separate room under each of its proposals and each page of its company wiki. Anyone holding the caper’s token, its vote token or its founder badge can post in all of them. The founder is the rooms’ one human moderator. Since September 2026 members can also collapse a line themselves, and a flag is weighted by the same w = (t·v)/(V·T) that decides a ballot and prices an exit (/wiki/foundations/leaving-a-caper) . A flag with no weight is refused rather than counted, so flagging needs v, and v comes only from casting a ballot. A holder who has never voted can post but not flag. Each member flags a line once and cannot withdraw the flag, the same shape as a ballot. A line collapses only when two tests pass together: at least three members have flagged it, and their combined weight clears a bar that the author’s own weight raises, up to double. No single holder can take a line down however large their position, and a poster with real weight in the caper is harder to silence than a newcomer, though the cap on that shield means nobody is impossible to silence. Both sides are re-read against live stake when the flags are counted. A flag is credited with the smaller of the stake its author held when they flagged and the stake they hold now, the same clamp settlement applies to a ballot, so stake that has since been sold cannot moderate. The author’s shield takes the smaller of their weight when they posted and their weight now, so they cannot buy protection once flags start arriving or keep it after selling. A collapsed line reads hidden by the room with its flag count. The text is withheld on the server rather than hidden by styling, and holders can ask to see it. An author with three lines collapsed in the same caper within 24 hours is muted in that caper until the count drops back under three. The founder can restore a collapsed line, and the restore is final: further flags are refused, and the line stops counting towards the author’s mute. The founder can also remove any line in the caper’s rooms, and an author can remove their own. None of this is on-chain. It is how the application runs the rooms, and it reads the caper’s on-chain balances and supplies to do it. The weight a whole room carries is far smaller than the formula’s ceiling of 1, because most of a curve’s float sits with accounts that have never voted, which is why the three-flagger floor, not the weight, is usually the test that binds.

v5.9.0The counting cranks are no longer gas-reimbursed: the settle-path subsidy was removed on 9 Sep and deployed on 11 Sep–
1 block modified
  • Modified – Text at Block 3

    How a ballot works Voting open…. Counting is a two-step crank, and b. Both steps are permissionless, and gas-since 9 September 2026 whoever cranks pays their own network fee – the reimbursed fromment the proposal's own feefee used to fund was removed outright (/wiki/governance/execution) . crystallize_ballots folds ba…ich is the second phase's job.

v5.8.0Update the “How your exit share works” infographic.–
1 block modified
  • Modified – Text at Block 8

    How your exit share works You…asury, however much it traded. The diagram below still shows the older two-source rule and is being redrawn. CAPER PROTOCOLHow your exit …You also needv – minted 1 per ranked ballot you cast, and 0.01per XRD you trade, either directi.Trading mints none.All four terms are read the m…t anyone can mint theirown by vocasting or tradinga ballot.Earned by voting or trading, paid at exit.caper.networkw …·v) / (V·T) · earned by voting or trading, paid at exit.

v5.7.0Trades stopped minting v at the 2026-09-11 redeploy: ballots are the sole member source (VOTE_MINT = 1), vote_rate is gone, and the ballot's own mint is now inside its snapshot. Verified on the ledger (component_tdx_2_1cq64v5twlsaverknjplmh92cv3cdmnazs9q72mnz056u2tujjflhcr has no vote_rate field), in contracts/logic/src/lib.rs (VOTE_MINT = 1) and in the deploy seed (commit d0e776b).–
4 blocks modified
  • Modified – Text at Block 1 → Block 1

    Method Ranked ballot (a full p…to sell into Vote tokens (v) Two surfaces, one rate: 1 per ballot cast (100 XRD × 0.01) and 0.01 per XRD of gross trade value1 per ballot cast, and nothing else – trades stopped minting v at the redeploy of 11 September 2026 What v is for Weighting a ba…rading (/wiki/markets/trading)

  • Modified – Text at Block 4

    How vote tokens are earned Vote tokens accrue on twoOne surfaces at, one rate, and the contract says outright that the equality is the point: voting earns v at exactly the trading rate, so neither surface out-farms the other. - Casting a ballot mints vote_fee × vote_rate = 100 × 0.01 = 1 vote token, banked in the same call that banks the fee and appends the ballot. - Buying mints 0.01 per XRD of the gross payment, before the trade fee and the founder skim come out of it. - Selling mints on the gross XRD the curve (/wiki/markets/bonding-curve) pays out, again before the fee. - A swap (/wiki/markets/trading) is a sell and a buy, so it earns on both legs, each in its own caper. Rewarding both directions of a trade equally is the mechanism's most contestable choice, so it is worth stating rather than burying: because selling is how the second phase is opposed, paying v only to buyers would put a thumb on the scale for every proposal in its window. And because a ballot earns at the same rate as a 100 XRD trade, a member who governs is not quietly diluted by one who only trades. Three trades mint nothing, and all thramount. A ranked ballot mints its caster VOTE_MINT = 1 soulbound vote token, banked in the same call that banks the fee and appends the ballot. Nothing else mints any to a member. Buying, selling and swapping all mint zero, and a transfer in mints zero, so a position that arrived without a ballot behind it carries no v at all – and exit (/wiki/foundations/leaving-a-caper) aborts without one. The trade-side mint is recent history rather than ancient: until 11 September 2026 every buy and sell also minted v, at a flat rate the logic component held as vote_rate. The pen-test that preceded the redeploy found the reason it could not stay. Because a buy minted the v in the same transaction that opened the position, one transaction could acquire a stake, mint the record that prices the exit, and redeem on both – the exit right had a purchase price, and it was the trade fee. Removing the trade mint takes vote_rate with it; the field is gone from the source and from the deployed component, where the state now reads trade_fee, vote_fee, proposal_fee, proposal_fee_rate, collateralization_peak and the three windows, and nothing else. What this buys is a bound on v that capital cannot lift. The vote fee is sunk, and a ballot is one per account per proposal, so the record accrues with participation and not with the size of a position. The admin badge keeps one escape hatch, mint_vote_to, restricted to the admin role and used to seed are the protocol acting rather than a member: a passed INVEST buying a target caper's token, a passed DIVEST selling one, and the sell leg inside exit() itself. A treasury is not a member, and minting fresh v to somebody on their way out would be perverse member the ledger would otherwise strand. One ordering detail follows. The ballot's snapshot counts its own mint in both the caster's balance and the supply it divides by, which it did not do while trades were a second source. With ballots the only source, a snapshot taken before the mint would score every member's first ballot at zero and no caper's first proposal could ever pass. Because v is soulbound it ca…op like an ordinary token, so the trade and vote methods take yourvote takes the caster's account address and the contract mints directly into it. That is why buy_token, sell_token, swap and vote each ask for an account alongside the rest.

  • Modified – Text at Block 7

    Three eras, and why the ledger…rRegistry, then read vote_fee, vote_rate, proposal_fee, proposal_fee_ra… came to need rewriting twice.

  • Modified – Text at Block 8

    How your exit share works You… tokens you have earned – and vote tokens accrue on two surfaces at one rate: 1 per ranked ballot you cast, and 0.01 per XRD of gross value on evsince 11 September 2026 a ranked ballot is the only thing that earns them, one pery buy and sellallot cast. A bag that has neithver voted nor traded redeems nothing from the treasury, however much it traded. The diagram below still shows the older two-source rule and is being redrawn. CAPER PROTOCOLHow your exit…ting or trading, paid at exit.

v5.6.0Update the “How your exit share works” infographic.–
1 block modified
  • Modified – Text at Block 8

    How your exit share works You…you hand invvote tokens you’veearnedVall vote tokens, totalT…redeems nothing. You also needv– minted 1 per ballot you cast, and 0.01perXRD you trade, either directio… terms are read the moment youexit.Hand in half your position, redeemhalf yourshare.Vote tokens are soulboun…urs; but anyone can mint theirown by voting or trading.Earne…ting or trading, paid at exit.

v5.5.0Anchor the three compute_vote_weight call sites on function names rather than line numbers, which had all three gone stale at HEAD–
1 block modified
  • Modified – Text at Block 5

    What your vote tokens are wort…s it to the BallotCast event (vote, in contracts/logic/src/lib.rs:1707): that is the figure the inte… crank, from the clamped stake (:402). exit() is the third (:2363). A ballot's preview and a bal…rt – they are the same number.

v5.4.1Sweep #372: window/baseline/verdict prose settled against the 7 Sep 2026 redeploy – exact price-time integral with minute checkpoints, trailing baseline as a logic constant, market window as drill tuning; no durations in prose–
2 blocks modified
  • Modified – Text at Block 1 → Block 1

    Method Ranked ballot (a full p…ation of 2–5 options), then a 48-hour market window Threshold 1.5 /…g" first; or sell, during the 48-hourmarket window – a DEBATE winner open…rading (/wiki/markets/trading)

  • Modified – Text at Block 2

    You vote on a caper, and then …ch locks the caper's trailing seven-day average price as a baseline and opens a fixed 48-hourthe market window. The action runs only … the source it was built from.

v5.4.0Lead and infobox: a DEBATE winner passes legislatively and has no second phase to reach–
2 blocks modified
  • Modified – Text at Block 1 → Block 1

    Method Ranked ballot (a full p…ell, during the 48-hour window – a DEBATE winner opens no window to sell into Vote tokens (v) Two surfaces…rading (/wiki/markets/trading)

  • Modified – Text at Block 2

    You vote on a caper, and then …y – and still cannot execute. SWhere the winner is an executable action, someone must then trigger it, w…gislates; the market ratifies. Where the winner is a DEBATE option – a ranked position with no action attached, added to the deployed logic on 5 September 2026 – the tally is the whole decision, and execution (/wiki/governance/execution) never begins. A correction, because this pa… the source it was built from.

v5.3.0compute_vote_weight has three call sites, not two: name fold_ballot_batch (the crank) as the binding one and vote()'s as a preview; state that t is read twice–
1 block modified
  • Modified – Text at Block 5

    What your vote tokens are wort…/bonding-curve) . On a ballot, t, v and V are read at the cast … once per proposal at creation, while t is read twice – at the cast, and again when the crank folds the ballot, with the smaller of the two counting (the min-clamp above); on an exit all four are read…nd the logic tier calls it in exactly two plthree places – worth separating, because the call made while you watch is not the one that counts. vote() computes a weight_preview and attaches: vote() and exit() it to the BallotCast event (contracts/logic/src/lib.rs:1707): that is the figure the interface shows you at the cast, and no tally reads it. The stored ballot deliberately freezes no weight at all – it keeps t, v, V and T as raw inputs – so the weight that decides the proposal is derived afterwards, by fold_ballot_batch inside the permissionless crystallize crank, from the clamped stake (:402). exit() is the third (:2363). A ballot's preview and a ballot's verdict are two separate calls of one function, and only the crank's binds. That is why the source calls…rt – they are the same number.

v5.2.0Update the “How your exit share works” infographic.–
1 block modified
  • Modified – Text at Block 8

    How your exit share works You…e.Vote tokens are soulbound – unon-transferable, unbuyable, and the treasury’s only measure of who turned upso nobody can buy yours; but anyone can mint their own by voting or trading.Earned by voting or trading, …ting or trading, paid at exit.

v5.1.0Update the “How your exit share works” infographic.–
1 block modified
  • Modified – Text at Block 8

    How your exit share works You…e vote tokens you have earned —– and vote tokens are minted only by trading,ccrue on two surfaces at one rate: 1 per ranked ballot you cast, and 0.01 per XRD of gross value, on every buys and sells alike. A bag that nevehas neither voted nor traded redeems nothing from …ems nothing. You also need v– and v is minted only by trading,minted 1 per ballot you cast, and 0.01 perXRD you trade, either direction.All four te…are.Vote tokens are soulbound —– non-transferable, unbuyable, …reasury’s only measure of who built the market.Earned byturned up.Earned by voting or trading, paid at exit.caper.n…w = (t·v) / (V·T) · earned by voting or trading, paid at exit.

v5.0.0Voting is back: ranked ballots legislate, the 48h window TWAP ratifies. Replaces the 26-28 Aug 'there is no ballot / v is minted only by trading' model with the deployed two-phase one - cast mechanics, the crystallize/settle crank, the 1.5/option_count threshold of cast weight, the min-clamp, the one-rate v mint on both surfaces, and a three-era history section. Verified against the live CaperMain (component_tdx_2_1cpz5lth...) and contracts/ at 3a8af9c.–
1 block added, 6 blocks modified, 5 blocks reordered
  • Modified – Text at Block 1 → Block 1

    Method None — a caper has no ballot. Proposals resolve on price How you dissent SRanked ballot (a full permutation of 2–5 options), then a 48-hour market window Threshold 1.5 / option_count of cast weight – and a leading no-op fails by rule How you dissent Rank "Do nothing" first; or sell, during the proposal's 48-hour window Vote tokens (v) Still minted, but by trading: 0.01 per XRD of gross trade value, on buys and sells alike What v is for PTwo surfaces, one rate: 1 per ballot cast (100 XRD × 0.01) and 0.01 per XRD of gross trade value What v is for Weighting a ballot and pricing your exit (/wiki/foundations/leaving-a-caper) : – one expression, w = (t · v) / (V · T) Transferable No —– soulbound, minted straight to the tradmember's account Related Proposa…rading (/wiki/markets/trading)

  • Modified – Text at Block 2

    You do not vote on a caper. There is no ballot, no ranking, no tally and no quorum, and the deployed contract has no vote method to call. A proposal (/wiki/governance/proposals) names one action,, and then the market gets a veto. A proposal (/wiki/governance/proposals) carries between two and five ranked options, holders cast a ranked ballot weighted by (t·v)/(V·T), and a permissionless crank folds and settles them. If the Borda (/wiki/dao-governance/concepts/voting/ranked-and-alternative-ballot-methods) leader clears a 1.5 / option_count supermajority of cast weight and is not the "Do nothing" option, the proposal has passed legislatively – and still cannot execute. Someone must then trigger it, which locks the caper's trailing seven-day average token price as a baseline, and sits open for forty-eight hours. When the window closes anyone can settle it: it passesopens a fixed 48-hour window. The action runs only if the livaverage price over that window is at or above thate baseline. Holding is consent. Selling is the vote against. This page is about the thing that survived the ballots: the vote token, written v. It is still minted, it is still soulbound, and it still decides what you get when you leave. What changed is how you earn itThe vote legislates; the market ratifies. A correction, because this page carried the opposite claim. Between 26 and 28 August 2026 the platform ran a logic component with no vote method at all, and this page described it accurately: there was no ballot, and trading was the only vote. That deployment was replaced on 29 August 2026, which reinstated ranked voting in front of the optimistic phase while keeping the window-TWAP resolution. The history section (#history) below sets out all three eras; everything above and below it is read off the live CaperMain and the source it was built from.

  • Moved – Text at Block 4
  • Modified – Text at Block 4

    How vote tokens are earned now Vote tokens accrue to trading, at a flat 0.01 per XRD of gross trade value – a rate stored on the platform's logic component as vote_rate, readable on-ledger rather than taken on trust. Both directions earon two surfaces at one rate, and the contract says outright that the equality is the point: voting earns v at exactly the trading rate, so neither surface out-farms the other. - Casting a ballot mints vote_fee × vote_rate = 100 × 0.01 = 1 vote token, band they earn symmetrically: - Buying mints on the gross XRD you paidked in the same call that banks the fee and appends the ballot. - Buying mints 0.01 per XRD of the gross payment, before the trade fee and the… legs, each in its own caper. The symmetry is delibeRewarding both directions of a tratde and itequally is the mechanism's most conte…rying: because selling is how a proposalthe second phase is opposed, paying v only to … the scale for every proposal oin the board. Rewarding both sides equally mits window. And because a ballot earns at the token that prices your exit is indifferent to which way you traded while a window was opensame rate as a 100 XRD trade, a member who governs is not quietly diluted by one who only trades. Three trades mint nothing, a… ordinary token, so the trade and vote methods take your account addr…t is why buy_token, sell_token and, swap and vote each ask for an account alongside the tokensrest.

  • Moved – Text at Block 5
  • Modified – Text at Block 5

    What your vote tokens are worth v has exactly one live job:two jobs, and they are the same arithmetic. It weights any ballot you cast, and it sets your share of the tre…ations/leaving-a-caper) . The shareexpression is w = (t · v) / (V · T) where t is the governance tokens you(held, when voting; handed in, when exiting), v the vote tokens you hand in, V the caper's whole vote-tok…wiki/markets/bonding-curve) . All four are read at the moment you exiOn a ballot, t, v and V are read at the cast and T is frozen once per proposal at creation; on an exit all four are read at that moment. If any of them is zero the shareweight is zero, so a holder who has neveither voted nor traded through the protocol …holding identical bags do not redeemweigh identically if one of them did the trading and the voting that built the market. And bec…re is no all-or-nothing exit. The formulaIt is one function, compute_vote…ogic tier calls it in exactly onetwo places: vote() and exit(). IThat is the same expression the retired ballot system used to weighwhy the source calls it a vote, which is why it is still called a vote weight in the source. Today it weighs only an exiteight, and why a member's standing in a governance decision and their claim on the treasury cannot drift apart – they are the same number.

  • Moved – Text at Block 6
  • Modified – Text at Block 6

    What the circulating supply do…eryone exiting at that moment. On a ballot it is frozen once, at the proposal's creation, so ordinary trading during the voting window cannot move the denominator under a vote already cast. One caper obtains it differen…is the right direction to err. The same caper cannot take proposals at all, because the optimistic phase has no market signal to resolve against.

  • Moved – Text at Block 7
  • Modified – Text at Block 7

    What this replaced Until August 2026 a caper decided by ranked ballotThree eras, and why the ledger is the authority Caper's governance surface has been replaced twice in a month, and both replacements reached every caper at once, because a change confined to the logic tier arrives without a per-caper migration. The record matters here more than usual: material written in good faith during any of the three eras describes a real deployment, and only one of them is live. - The ballot era, to 26 August 2026. Members staked governance to…llot box, cast an ordered list covering every option exactly once, and the contract scored them Borda-style; the leading option executed only if it cleared a 1.5 / N supermajority of all weight cast, and a late market veto could still cancel i behind a 1.5 / N supermajority, with a late market veto able to cancel the result. Vote tokens were minted one per ballot, at release –, which meant a member's first ballot always weighed zero, and a brand-new caper could not pass its first proposal at all. That apparatus is gone: the deployed CaperMain exposes no vote, no finalize_proposal, no release_ballots and no veto call. The replacement is smaller in every dimension – one ac. - The price-only interregnum, 26–28 August 2026. The whole ballot apparatus was removed. A proposal named one action, locked a seven-day baseline, and passed if the price at resolution was at or above it. v was minted by trading alone. This is the model the wiki described for three days, and the model a good deal of third-party writing about Caper still describes. - Two-phase, from 29 August 2026. Ranked voting was reinstated as the legislative phase, in front of the optimistic one; the market's role narrowed from "the only vote" to a ratification winstead of a ranked field, one price comparison instead of a tally, no staking, no windows to watch, no fee per ballot. What it gives up is expressiveness: a caper can no longer ask itsdow, and its test tightened from the spot price at the crank-second to the TWAP over the window itself. v now accrues on both surfaces at one rate. The staking ballot box did not come back: tokens stay liquid while you vote, and the min-clamp is what makes moving them after casting unprofitable. What survived all three is the exit and the expression that prices it. What the second era gave up – the ability to ask members to choose between five options, rather than only whether to stop one – is what the third bought back. The wider trade, and where o…overnance/voting-mechanisms) . The practical instruction is the one this wiki gives everywhere: read the numbers off the ledger. Resolve current_main on the CaperRegistry, then read vote_fee, vote_rate, proposal_fee, proposal_fee_rate, voting_period_in_seconds, proposal_window_in_seconds and twap_window_in_seconds off the component it names. None of them has a setter, so on any given deployment they are fixed – but the deployment itself can be swapped by a $CAPER UPGRADE, which is exactly how this page came to need rewriting twice.

  • Moved – Text at Block 8
  • Added – Text at Block 3

    How a ballot works Voting opens the moment a proposal is created and closes when its voting period elapses. To cast, you call vote with a full permutation of the option indices – every option ranked exactly once, which the contract asserts rather than accepting a partial ranking – and a 100 XRD vote fee that is deposited into the caper's own treasury. You must hold at least 1 of the caper's governance token; the contract reads your live balance at the moment of the cast rather than trusting a snapshot you supply. Every ballot also carries a second question: who pays the execution fee if this proposal is triggered – the proposer, or the treasury. That one settles by plain weight majority, and a tie is a treasury waiver. Counting is a two-step crank, and both steps are permissionless and gas-reimbursed from the proposal's own fee. crystallize_ballots folds ballots into the tally in chunks, cursor-driven, so a large electorate can be counted by a volley of concurrent transactions that each take a disjoint range. settle_proposal then freezes the verdict – an electorate small enough to fit folds inline in that single call instead. The threshold it applies is a share of cast weight, not of the electorate: 1.5 / option_count, which is 75% with two options and 30% with five. One detail decides whether a ballot can be gamed. The crank clamps each ballot's stake to min(held at cast, balance now), so casting and then selling shrinks the weight of your own ballot – you cannot vote a position you no longer hold. What it cannot do is stop you selling instead of voting, which is the second phase's job.

v4.1.0Add the “How your exit share works” infographic.–
1 block added
  • Added – Text at Block 7

    How your exit share works Your exit share multiplies what you hand in by the vote tokens you have earned — and vote tokens are minted only by trading, 0.01 per XRD of gross value, on buys and sells alike. A bag that never traded redeems nothing from the treasury. CAPER PROTOCOLHow your exit share worksONE FORMULAexit share w = ( t · v ) / ( V · T )tcaper tokens you hand invvote tokens you’veearnedVall vote tokens, totalTtokens in circulationA bag alone redeems nothing. You also need v– and v is minted only by trading, 0.01 perXRD, either direction.All four terms are read the moment you exit.Hand in half your position, redeem half yourshare.Vote tokens are soulbound — non-transferable, unbuyable, and the treasury’s only measure of who built the market.Earned by trading, paid at exit.caper.networkw = (t·v) / (V·T) · earned by trading, paid at exit.

v4.0.0Replace the retired ballot documentation. A caper has no vote; this page now documents what survived — the soulbound vote token, which since the 28 Aug 2026 redeploy is minted by TRADING at vote_rate 0.01 per gross XRD on both legs (verified on the live CaperMain component_tdx_2_1cqtt9nz…, and against contracts/logic/src/lib.rs) — and the exit weight w = (t·v)/(V·T) it prices. Drops the outdated banner; the retired system is kept as a dated historical section.–
6 blocks added, 12 blocks removed
  • Removed – Banner at Block 1
  • Removed – Text at Block 2 → Block 1

    Method Ranked-choice (Borda-weighted) Ballot Stake first, then cast a signed pre-authorization; one per proposal, final Weight Escrowed governance stake × participation, read at cast time Proof Soulbound vote token, one per ballot; drives exit Passes at 1.5 / N supermajority of weight cast, then survives the market veto Related Proposals (/wiki/governance/proposals) , Execution (/wiki/governance/execution) , Voting mechanisms (/wiki/governance/voting-mechanisms)

  • Removed – Text at Block 3

    Voting on a caper is ranked-choice. You submit an ordered list of the proposal's options and the contract scores them Borda-style — with N options, your first pick earns N−1 points and your last pick 0 — so a ballot expresses a full preference order rather than a single yes/no.

  • Removed – Text at Block 4

    What is my vote worth? How is vote weight calculated? Your voting weight is not simply your token balance – it is the product of your stake and your participation. The contract computes w = (t · v) / (V · T), where t is the governance-token balance you have staked into the caper's ballot box, read at the moment your ballot is cast, v is your locked, non-transferable vote-token balance, V the total vote-token supply, and T the caper tokens in circulation. There is no past-block snapshot and no later re-reading: a staked bag is locked until the ballot it backs is released, so the figure credited is the figure you committed. Because v is read before this vote mints its token, a member's very first vote counts v = 0 and therefore carries zero weight: influence is earned by showing up, not bought in a single transaction. This participation gate, not a snapshot block, is what makes a caper resistant to flash-loaned voting power (/wiki/dao-governance/concepts/voting/token-weighted-voting) , the attack that has drained token-weighted DAOs like Beanstalk (/wiki/dao-governance/concepts/analysis/dao-security-and-governance-attacks) .

  • Removed – Text at Block 5

    Each cast vote mints one soulbound vote token into your account — your permanent proof of participation. Vote tokens also drive exit redemption (/wiki/dao-governance/concepts/membership/rage-quit-and-exit-rights) : to leave, you burn vote tokens alongside the caper tokens you redeem and receive a treasury share computed by the same expression that sets your voting power. The same expression, not the same number: a ballot reads t off the stake escrowed in the ballot box and v off your whole vote-token balance, while exit() reads both off the buckets you hand in, so redeeming part of a position redeems that part's share. A proposal's voting window closes at its expiry. Anyone can then release the ballots and finalize (/wiki/governance/execution) the result — the option with the most total weight wins, but executes only if it reaches a supermajority of 1.5 / N of all weight cast (the contract compares with >=, so a share landing exactly on the bar passes). If it falls short, or if the no-execution option placed first, the proposal closes with nothing happening on-chain. A tally that does clear the bar faces one further gate: the market veto (/wiki/governance/execution) cancels it at finalize if the caper's curve price fell more than 30% between voting close and settlement – a decision made by holders trading, not by anyone voting.

  • Removed – Text at Block 6

    How do I vote, and how do I rank the options? Voting is two acts, not one. First you stake governance tokens into the caper's ballot box, a component that holds one escrow vault per voter. Then you cast, submitting an ordered list of the proposal's options. A member casts by signing a pre-authorization subintent, which an assembler batches with other members' ballots into shared transactions, so a ballot needs a signature rather than a transaction of its own. The contract will not accept a partial ballot. Your ranking must cover every option on the proposal, exactly once – a short list, a repeated option, or an index that is not on the ballot all fail. That is what makes the Borda scoring comparable across voters: every ballot spends the same points, and the only thing that varies is the order. Two conditions gate a cast, and both close gracefully rather than reverting, because an abort would poison every other ballot batched into the same transaction. A cast that arrives outside the proposal's window records nothing and returns false; so does a cast from an account with nothing staked. In both cases the vote fee is deposited into the caper's own treasury (/wiki/foundations/what-is-a-caper) exactly as it would be on the accepted path, so a missed ballot fails without leaving anything half-applied, and costs the fee.

  • Removed – Text at Block 7

    Can I sell after I vote? Not the tokens you voted with. Your ballot's weight term is the stake sitting in the caper's ballot box, and casting refcount-locks that vault: the contract refuses an unstake while any ballot it backs is still unreleased, with an explicit stake locked while a cast ballot awaits release. Tokens you did not stake stay yours to trade throughout, and the stake unlocks by itself when the ballot is released after voting closes. This is stricter than the rule it replaced, and worth stating plainly because this page described the old one until 16 August 2026. A ballot used to be credited the smaller of the balance held at vote time and the live balance at tally time, and anyone could permissionlessly re-clamp a counted ballot downward during a challenge window after voting closed. The clamp existed because the tokens could still move. Under escrow they cannot, so the apparatus around it went with it: no snapshots, no caps, no clamping, no challenge window. Double voting is now prevented by custody rather than bookkeeping, since one bag cannot back two counted ballots. The asymmetry the old rule bought is therefore no longer something any member has to enforce. A member who votes and then sells into the result they voted for cannot do it with the voting stake at all, without asking anyone's permission or watching a window. That is the same principle the exit right (/wiki/dao-governance/concepts/membership/rage-quit-and-exit-rights) relies on, applied to the vote itself, and it is why a caper needs no snapshot block to resist borrowed voting power (/wiki/dao-governance/concepts/voting/token-weighted-voting) .

  • Removed – Text at Block 8

    Can I change my vote? Can I vote twice? What does it cost to vote? You get one ballot per proposal, and it is final. You cannot vote twice: the contract refuses a second ballot from the same account outright, so a vote cannot be edited, replaced or withdrawn once it lands. Nothing about it moves afterwards either: the weight was fixed when the ballot was folded into the running tally, and the stake behind it stays locked until release. Do I need XRD to vote? Yes. Each cast carries the configured vote fee in XRD, and it is deposited into the caper's own treasury rather than paid to the protocol, so the cost of governing a caper accrues to the caper. The fee is a governance-settable lever bounded only to be non-negative, so read the current figure off the caper you are voting on rather than off this page. What happens if nobody votes? What if no one votes at all? Nothing happens. Settlement measures the leading option's weight against the total weight cast; with nothing cast that share is zero, no option can reach the 1.5 / N threshold, and the proposal closes with no on-chain effect. There is a sharper version of the same case, and it is a real property of a new caper rather than an edge case. Vote tokens are minted at release, strictly after the last ballot is cast, and a caper is created with none in existence. On a caper's first proposal every voter therefore reads v = 0, every ballot weighs zero, and the proposal cannot pass however large the holdings behind it. Participation has to accumulate before governance can act. Can a whale control the outcome? Not by buying in. Weight multiplies holdings by a voting record that only showing up can produce, so a holder who has never voted carries zero weight at any size, and one who has voted carries a record that cost them a ballot each time.

  • Removed – Text at Block 9

    What the circulating supply does, and what it cannot do Weight is divided by the caper's circulating token supply (/wiki/markets/bonding-curve) as well as by the total vote record. That divisor is the same for every member, so it cancels out of the only comparison settlement (/wiki/governance/execution) actually makes: the leading option's weight against all weight cast. Circulation changes how fast the treasury pays out an exit; it cannot move a proposal's outcome. One caper obtains the figure differently. The $XRD caper has no bonding curve, and its members hold native XRD, whose total supply cannot be read on-ledger at all — Radix creates XRD at genesis without supply tracking, so the resource simply reports no total. The contract substitutes XRD's protocol maximum instead, which is the tightest figure that is always at least the sum of member holdings. Erring high there makes exits conservative and leaves votes untouched, which is the right direction for both.

  • Removed – Text at Block 10

    What the 1.5 / N threshold asks for The pass mark reads like a sliding bar and is not one. Every ballot spends the same number of Borda points – N(N−1)/2 times the voter's weight – so an option's share is measured against the pool of all points cast, and the largest share any option can reach is 2 / N, which happens only when every voter ranks it first. A threshold of 1.5 / N is three-quarters of that ceiling, and it stays three-quarters at every ballot size. Put in members rather than points: where the voters who do not back an option rank it last, it takes 75% of the weight ranking it first to carry – the same 75% whether the ballot has two options or six. What does change with the option count is what a divided electorate can pass. Because Borda scores standing across the whole field rather than first preferences, from five options upward an option that nobody ranks first but everybody ranks second clears the threshold, provided first preferences are spread across the rest of the field; at four options the same profile falls just short. Splitting one question into many options therefore does not lower the bar for the proposer's own favourite – it widens the opening for a compromise nobody led with. The general property, and how other DAOs meet it, is covered under ranked and alternative ballot methods (/wiki/dao-governance/concepts/voting/ranked-and-alternative-ballot-methods) . One of the options in N is not the proposer's. Every proposal carries an automatic no-execution option (/wiki/governance/proposals) , titled Do nothing, appended last and always present – so a proposal offering a single action is a two-option ballot needing 75% of weight behind it, and every option a proposer adds raises N from a floor of two.

  • Removed – Text at Block 11

    Where the formula lives, and which package runs it The weight formula is one function, compute_vote_weight, and it is defined in contracts/common/src/lib.rs – the shared arithmetic crate, not in either of the packages that call it. Its own source comment states why: the swappable logic package and the ballot package "fold weights with EXACTLY these functions", so the arithmetic sits in one place both can compile against. Which package runs it depends on what you are doing. A ballot cast runs the copy inside the ballot package, contracts/ballot/src/lib.rs, which reads your staked balance and your vote-token balance at the moment of the cast and folds the result straight into the tally. The logic package, contracts/logic/src/lib.rs, calls the same function in exactly one place: exit(), to size the treasury share you redeem on the way out. Since the ballot-era upgrade of 16 August 2026 (/wiki/governance/execution) , CaperMain::vote computes nothing itself. It forwards to the ballot vault's cast_for and returns whether the cast was accepted. The split has a consequence worth knowing before you audit anything. caper-common is a source dependency, so every deployed package carries its own compiled copy of the formula. Replacing the logic package through an UPGRADE proposal (/wiki/governance/proposals) replaces the copy that sizes exits; it does not touch the ballot vault, which is a separate component the logic tier calls by address. Voting weight and exit weight are the same expression, but they are not the same deployment, and only one of them moves when a caper votes to upgrade itself.

  • Removed – Text at Block 12

    How vote weight works Vote weight multiplies what you hold by the voting record you have earned, so a big bag alone can’t capture control — and the very same number sets your share of the treasury when you exit. CAPER PROTOCOLHow vote weight worksONE FORMULAvote weight w = ( t · v ) / ( V · T )tcaper tokens you’vestakedvvote records you’veearnedVall vote records, totalTtokens in circulationStake alone isn’t control. You also need v –the record you can only earn by showing upand voting.The same formula sets your treasury share atexit – there t is the tokens you hand in,not the staked ones.Each vote mints one soulbound vote token — non-transferable, unbuyable proof that you participated.Power is earned, not just bought.caper.networkw = (t·v) / (V·T) · power is earned, not only bought.

  • Added – Text at Block 1 → Block 1

    Method None — a caper has no ballot. Proposals resolve on price How you dissent Sell, during the proposal's 48-hour window Vote tokens (v) Still minted, but by trading: 0.01 per XRD of gross trade value, on buys and sells alike What v is for Pricing your exit (/wiki/foundations/leaving-a-caper) : w = (t · v) / (V · T) Transferable No — soulbound, minted straight to the trader's account Related Proposals (/wiki/governance/proposals) , Execution (/wiki/governance/execution) , Trading (/wiki/markets/trading)

  • Added – Text at Block 2

    You do not vote on a caper. There is no ballot, no ranking, no tally and no quorum, and the deployed contract has no vote method to call. A proposal (/wiki/governance/proposals) names one action, locks the caper's seven-day average token price as a baseline, and sits open for forty-eight hours. When the window closes anyone can settle it: it passes if the live price is at or above that baseline. Holding is consent. Selling is the vote against. This page is about the thing that survived the ballots: the vote token, written v. It is still minted, it is still soulbound, and it still decides what you get when you leave. What changed is how you earn it.

  • Added – Text at Block 3

    How vote tokens are earned now Vote tokens accrue to trading, at a flat 0.01 per XRD of gross trade value – a rate stored on the platform's logic component as vote_rate, readable on-ledger rather than taken on trust. Both directions earn, and they earn symmetrically: - Buying mints on the gross XRD you paid, before the trade fee and the founder skim come out of it. - Selling mints on the gross XRD the curve (/wiki/markets/bonding-curve) pays out, again before the fee. - A swap (/wiki/markets/trading) is a sell and a buy, so it earns on both legs, each in its own caper. The symmetry is deliberate and it is the mechanism's most contestable choice, so it is worth stating rather than burying: because selling is how a proposal is opposed, paying v only to buyers would put a thumb on the scale for every proposal on the board. Rewarding both sides equally means the token that prices your exit is indifferent to which way you traded while a window was open. Three trades mint nothing, and all three are the protocol acting rather than a member: a passed INVEST buying a target caper's token, a passed DIVEST selling one, and the sell leg inside exit() itself. A treasury is not a member, and minting fresh v to somebody on their way out would be perverse. Because v is soulbound it cannot ride the transaction worktop like an ordinary token, so the trade methods take your account address and the contract mints directly into it. That is why buy_token, sell_token and swap each ask for an account alongside the tokens.

  • Added – Text at Block 4

    What your vote tokens are worth v has exactly one live job: it sets your share of the treasury when you leave (/wiki/foundations/leaving-a-caper) . The share is w = (t · v) / (V · T) where t is the governance tokens you hand in, v the vote tokens you hand in, V the caper's whole vote-token supply, and T its circulating token supply (/wiki/markets/bonding-curve) . All four are read at the moment you exit. If any of them is zero the share is zero, so a holder who has never traded through the protocol – who received tokens some other way – redeems nothing from the treasury, though the sell leg still returns their tokens' curve value. Read plainly, the formula prices both what you hold and how much of the caper's activity you were. Two members holding identical bags do not redeem identically if one of them did the trading that built the market. And because the numerator reads the buckets you actually hand in, redeeming part of a position redeems that part's share – there is no all-or-nothing exit. The formula is one function, compute_vote_weight, in contracts/common/src/lib.rs, and the logic tier calls it in exactly one place: exit(). It is the same expression the retired ballot system used to weigh a vote, which is why it is still called a vote weight in the source. Today it weighs only an exit.

  • Added – Text at Block 5

    What the circulating supply does, and what it cannot do T, the divisor, is the caper's circulating token supply. It changes how fast a treasury pays out – a larger circulation makes each individual exit smaller – and it is the same figure for everyone exiting at that moment. One caper obtains it differently. The $XRD caper has no bonding curve and its members hold native XRD, whose total supply cannot be read on-ledger at all: Radix creates XRD at genesis without supply tracking, so the resource reports no total. The contract substitutes XRD's protocol maximum instead, the tightest figure guaranteed to be at least the sum of member holdings. Erring high there makes $XRD exits conservative, which is the right direction to err.

  • Added – Text at Block 6

    What this replaced Until August 2026 a caper decided by ranked ballot. Members staked governance tokens into a per-caper ballot box, cast an ordered list covering every option exactly once, and the contract scored them Borda-style; the leading option executed only if it cleared a 1.5 / N supermajority of all weight cast, and a late market veto could still cancel it. Vote tokens were minted one per ballot, at release – which meant a member's first ballot always weighed zero, and a brand-new caper could not pass its first proposal at all. That apparatus is gone: the deployed CaperMain exposes no vote, no finalize_proposal, no release_ballots and no veto call. The replacement is smaller in every dimension – one action instead of a ranked field, one price comparison instead of a tally, no staking, no windows to watch, no fee per ballot. What it gives up is expressiveness: a caper can no longer ask its members to choose between five options, only whether to stop one. The wider trade, and where other DAOs land on it, is in optimistic governance (/wiki/dao-governance/concepts/voting/optimistic-governance) and voting mechanisms (/wiki/governance/voting-mechanisms) .

v3.5.0Repoint the cited deployment at the 28 Aug 2026 full redeploy: CaperMain component_tdx_2_1cqtt9nz…, CaperRegistry component_tdx_2_1cpqacn3…. The claims are unchanged and still hold — the v-minting core interface change forced a new immortal core, so every prior address moved.–
1 block modified
  • Modified – Banner at Block 1
v3.4.1Banner's on-chain citation repointed: current_main moved to component_tdx_2_1crmlq2f… on 28 Aug 2026 (logic upgrade; registry unchanged). Re-read the new component the same day — still eighteen methods, still no vote, finalize_proposal, release_ballots or veto call.–
1 block modified
  • Modified – Banner at Block 1
v3.4.0Dated 'may be outdated' notice: the ballot stack this page documents is not on the deployed CaperMain (interface read on-chain 28 Aug 2026). Body left intact pending rewrite.–
1 block added, 11 blocks reordered
  • Moved – Text at Block 2 → Block 1
  • Moved – Text at Block 3
  • Moved – Text at Block 4
  • Moved – Text at Block 5
  • Moved – Text at Block 6
  • Moved – Text at Block 7
  • Moved – Text at Block 8
  • Moved – Text at Block 9
  • Moved – Text at Block 10
  • Moved – Text at Block 11
  • Moved – Text at Block 12
  • Added – Banner at Block 1
v3.3.0Note the market veto as a second gate on a passed tally, and state the supermajority comparison as inclusive–
2 blocks modified
  • Modified – Text at Block 1 → Block 1

    Method Ranked-choice (Borda-we…N supermajority of weight cast, then survives the market veto Related Proposals (/wiki/go…/governance/voting-mechanisms)

  • Modified – Text at Block 4

    Each cast vote mints one soulb…wins, but executes only if it clearreaches a supermajority of 1.5 / N of all weight cast (the contract compares with >=, so a share landing exactly on the bar passes). If it falls short, or if the…th nothing happening on-chain. A tally that does clear the bar faces one further gate: the market veto (/wiki/governance/execution) cancels it at finalize if the caper's curve price fell more than 30% between voting close and settlement – a decision made by holders trading, not by anyone voting.

v3.2.0Update the “How vote weight works” infographic.–
1 block modified
  • Modified – Text at Block 11

    How vote weight works Vote we… / ( V · T )tcaper tokens you hol’vestakedvvote records you’veearnedVal…s, totalTtokens in circulationHoldingsStake alone areisn’t control. You also needv — –the record you can only earn by showingupand voting.The very same weight sets your share of thetreasury when you exit. Voting power andpayout scale togethersame formula sets your treasury share atexit – there t is the tokens you hand in,not the staked ones.Each vote mints one soulbound…er is earned, not only bought.

v3.1.1Exit redemption: the same expression as vote weight, but its terms are read from different places.–
1 block modified
  • Modified – Text at Block 4

    Each cast vote mints one soulb… and receive a treasury share equal to your canonical vote weight — the same metric that sets your voting power, so influence and redeemable stake stay alignedcomputed by the same expression that sets your voting power. The same expression, not the same number: a ballot reads t off the stake escrowed in the ballot box and v off your whole vote-token balance, while exit() reads both off the buckets you hand in, so redeeming part of a position redeems that part's share. A proposal's voting window c…th nothing happening on-chain.

v1.0.0Sweep #264: state the fee schedule as configured rather than flat/fixed, matching governance/proposals and help/faq–
1 block modified
  • Modified – Text at Block 7

    Can I change my vote? Can I vo… vote? Yes. Each cast carries a fixthe configured vote fee in XRD, and it is … cost them a ballot each time.

v3.1.0Add: where compute_vote_weight is defined and which package runs it (common / ballot / logic)–
1 block added, 1 block reordered
  • Moved – Text at Block 11
  • Added – Text at Block 10

    Where the formula lives, and which package runs it The weight formula is one function, compute_vote_weight, and it is defined in contracts/common/src/lib.rs – the shared arithmetic crate, not in either of the packages that call it. Its own source comment states why: the swappable logic package and the ballot package "fold weights with EXACTLY these functions", so the arithmetic sits in one place both can compile against. Which package runs it depends on what you are doing. A ballot cast runs the copy inside the ballot package, contracts/ballot/src/lib.rs, which reads your staked balance and your vote-token balance at the moment of the cast and folds the result straight into the tally. The logic package, contracts/logic/src/lib.rs, calls the same function in exactly one place: exit(), to size the treasury share you redeem on the way out. Since the ballot-era upgrade of 16 August 2026 (/wiki/governance/execution) , CaperMain::vote computes nothing itself. It forwards to the ballot vault's cast_for and returns whether the cast was accepted. The split has a consequence worth knowing before you audit anything. caper-common is a source dependency, so every deployed package carries its own compiled copy of the formula. Replacing the logic package through an UPGRADE proposal (/wiki/governance/proposals) replaces the copy that sizes exits; it does not touch the ballot vault, which is a separate component the logic tier calls by address. Voting weight and exit weight are the same expression, but they are not the same deployment, and only one of them moves when a caper votes to upgrade itself.

v3.0.0Ballot-era correction: staking and signed pre-authorization casts, escrow custody in place of the min-clamp, re-clamp and challenge window, and the release/finalize path replacing crystallize/settle.–
1 block added, 1 block removed, 5 blocks modified
  • Modified – Text at Block 3

    What is my vote worth? How is …not simply your token balance —– it is the product of your sta…(t · v) / (V · T), where t is yourthe governance-token balance read live at the moment your vote transaction runs (there is no separate past-block snapshot — and when the ballots are tallied after voting closes, the credited balance is clamped to the smaller of that snapshot and what you still hold, so later trades can shrink a cast vote but never grow it), v is your locked, non-transferable vote-token balance, V the total vote-token supply, and T the caper tokens in circulationyou have staked into the caper's ballot box, read at the moment your ballot is cast, v is your locked, non-transferable vote-token balance, V the total vote-token supply, and T the caper tokens in circulation. There is no past-block snapshot and no later re-reading: a staked bag is locked until the ballot it backs is released, so the figure credited is the figure you committed. Because v is read before thi…ction. This participation gate —, not a snapshot block —, is what makes a caper resista…rity-and-governance-attacks) .

  • Modified – Text at Block 4

    Each cast vote mints one soulb… its expiry. Anyone can then crystallizrelease the tballyots and settlfinalize (/wiki/governance/execution)…th nothing happening on-chain.

  • Modified – Text at Block 5

    How do I vote, and how do I rank the options? Voting is two acts, not one. First you stake governance tokens into the caper's ballot box, a component that holds one escrow vault per voter. Then you cast, submitting an ordered list of the proposal's options. A member casts by signing a pre-authorization subintent, which an assembler batches with other members' ballots into shared transactions, so a ballot needs a signature rather than a transaction of its own. The contract will not accept a…on the proposal, exactly once —– a short list, a repeated opti… is not on the ballot all fail the transaction. That is what makes the Borda…that varies is the order. Two other conditions gate a vote. You have to present a proof that you hold at least one of the caper's tokens, and the vote carries a fixed fee in XRD that is deposited into the caper's own treasury (/wiki/foundations/what-is-a-caper) . A vote that arrives outside the proposal's window is handled gracefully rather than reverted: cast, and both close gracefully rather than reverting, because an abort would poison every other ballot batched into the same transaction. A cast that arrives outside the proposal's window records nothing and returns false; so does a cast from an account with nothing staked. In bothe contract records nothing, returns false, and deposits the fee into the treasury the same wayases the vote fee is deposited into the caper's own treasury (/wiki/foundations/what-is-a-caper) exactly as it would be on the accepted path —, so a late transactionmissed ballot fails without leaving anything half-applied, and costs the fee.

  • Modified – Text at Block 6

    Selling after you vote, and who can mCan I sell after I vote? Not the tokens you voted with. Your ballot's weight term is the stake sit count The balance credited to a ballot is the smaller of what you held whting in the caper's ballot box, and casting refcount-locks that vault: the contract refuses an unstake while any ballot it backs is still unreleased, with an explicit stake locked while a cast ballot awaits release. Tokens you voted and what you hold whendid not stake stay yours to trade throughout, and the stally runs, so credit only ever moves down. That rule is enforced by two calls that anyone can make, not by a privileged settler. - Crystallization folds ballots into the proposal's persistent tally, re-reading each voter's live balance as it goes. Large proposals are folded in chunks, so no electorate is too big to settle. - Reclamping re-observes a range that has already beke unlocks by itself when the ballot is released after voting closes. This is stricter than the rule it replaced, and worth stating plainly because this page described the old one until 16 August 2026. A ballot used to be credited the smaller of the balance held at vote time and the live balance at tally time, and anyone could permissionlessly re-clamp a counted ballot downward during a challenge window after voting closed. The clamp existed because the tokens cryould staillized and ratchets down any voter who has sold since. Because it can only lower cred move. Under escrow they cannot, so the apparatus around it went wit,h it is safe to leave permissionless — a spammer can spend gas re-checking, but can: no snapshots, no caps, no clamping, not challenge a tally that is already honest. A tally taken at one instant after the execution window opened settles straight away; any other tally has to sit out a challenge window first, during which a reclamp can still be run. The practical effect is that a member who votes and then sells into the result they voted for does not merely fail to gain — any other member can force the tally to noticewindow. Double voting is now prevented by custody rather than bookkeeping, since one bag cannot back two counted ballots. The asymmetry the old rule bought is therefore no longer something any member has to enforce. A member who votes and then sells into the result they voted for cannot do it with the voting stake at all, without asking anyone's permission or watching a window. That is the same asymmetryprinciple the exit right (/wiki/dao-go…oting/token-weighted-voting) .

  • Modified – Text at Block 7

    Can I change my vote? Can I vo…d or withdrawn once it lands. The only thing that still moves afterwards is the balance credited to it, and that can only fall – see the reclamp rule abovNothing about it moves afterwards either: the weight was fixed when the ballot was folded into the running tally, and the stake behind it stays locked until release. Do I need XRD to vote? Yes… cost them a ballot each time.

  • Removed – Text at Block 1 → Block 1

    Method Ranked-choice (Borda-weighted) Weight Live governance balance × participation, read at vote time Proof Soulbound vote token — one per vote; drives exit Passes at 1.5 / N supermajority of weight cast Related Proposals (/wiki/governance/proposals) , Execution (/wiki/governance/execution) , Voting mechanisms (/wiki/governance/voting-mechanisms)

  • Added – Text at Block 1 → Block 1

    Method Ranked-choice (Borda-weighted) Ballot Stake first, then cast a signed pre-authorization; one per proposal, final Weight Escrowed governance stake × participation, read at cast time Proof Soulbound vote token, one per ballot; drives exit Passes at 1.5 / N supermajority of weight cast Related Proposals (/wiki/governance/proposals) , Execution (/wiki/governance/execution) , Voting mechanisms (/wiki/governance/voting-mechanisms)

v2.1.1AEO: reword the run-44 section to carry four more buyer phrasings verbatim–
1 block modified
  • Modified – Text at Block 7

    Can I change my vote? What happens if nobodyCan I vote twice? What does it cost to votes? You get one ballot per proposal, and it is final. TYou cannot vote twice: the contract refuses a second b… see the reclamp rule above. Voting costs XRDDo I need XRD to vote? Yes. Each cast carries a fixed vote fee in XRD, and it is deposited into the…n rather than off this page. If nobody votes, nWhat happens if nobody votes? What if no one votes at all? Nothing happens. Settlement mea…late before governance can act – which is the same property that stops a whale from arriving and deciding a question, since weight multiplies holdings by a voting record that only showing up can produc. Can a whale control the outcome? Not by buying in. Weight multiplies holdings by a voting record that only showing up can produce, so a holder who has never voted carries zero weight at any size, and one who has voted carries a record that cost them a ballot each time.

v2.1.0AEO: headings carry the buyer's wording; new section on one-ballot finality, the vote fee, and why a caper's first proposal cannot pass–
1 block added, 2 blocks modified, 3 blocks reordered
  • Modified – Text at Block 3

    How your weight is measurWhat is my vote worth? How is vote weight calculated? Your voting weight is not sim…rity-and-governance-attacks) .

  • Modified – Text at Block 5

    What a ballot has to containHow do I vote, and how do I rank the options? The contract will not accept …leaving anything half-applied.

  • Moved – Text at Block 8
  • Moved – Text at Block 9
  • Moved – Text at Block 10
  • Added – Text at Block 7

    Can I change my vote? What happens if nobody votes? You get one ballot per proposal, and it is final. The contract refuses a second ballot from the same account outright, so a vote cannot be edited, replaced or withdrawn once it lands. The only thing that still moves afterwards is the balance credited to it, and that can only fall – see the reclamp rule above. Voting costs XRD. Each cast carries a fixed vote fee, and it is deposited into the caper's own treasury rather than paid to the protocol, so the cost of governing a caper accrues to the caper. The fee is a governance-settable lever bounded only to be non-negative, so read the current figure off the caper you are voting on rather than off this page. If nobody votes, nothing happens. Settlement measures the leading option's weight against the total weight cast; with nothing cast that share is zero, no option can reach the 1.5 / N threshold, and the proposal closes with no on-chain effect. There is a sharper version of the same case, and it is a real property of a new caper rather than an edge case. Vote tokens are minted at release, strictly after the last ballot is cast, and a caper is created with none in existence. On a caper's first proposal every voter therefore reads v = 0, every ballot weighs zero, and the proposal cannot pass however large the holdings behind it. Participation has to accumulate before governance can act – which is the same property that stops a whale from arriving and deciding a question, since weight multiplies holdings by a voting record that only showing up can produce.

v1.1.0Add 'What the 1.5 / N threshold asks for': the Borda pool's 2/N ceiling makes the threshold three-quarters of unanimity at every ballot size (75% of weight ranking the winner first, where the rest rank it last); from five options a unanimously-second option clears it and at four it does not; and N always counts the automatic Do nothing option. Arithmetic derived from apply_borda + the settle threshold in contracts/logic/src/lib.rs.–
1 block added, 1 block reordered
  • Moved – Text at Block 9
  • Added – Text at Block 8

    What the 1.5 / N threshold asks for The pass mark reads like a sliding bar and is not one. Every ballot spends the same number of Borda points – N(N−1)/2 times the voter's weight – so an option's share is measured against the pool of all points cast, and the largest share any option can reach is 2 / N, which happens only when every voter ranks it first. A threshold of 1.5 / N is three-quarters of that ceiling, and it stays three-quarters at every ballot size. Put in members rather than points: where the voters who do not back an option rank it last, it takes 75% of the weight ranking it first to carry – the same 75% whether the ballot has two options or six. What does change with the option count is what a divided electorate can pass. Because Borda scores standing across the whole field rather than first preferences, from five options upward an option that nobody ranks first but everybody ranks second clears the threshold, provided first preferences are spread across the rest of the field; at four options the same profile falls just short. Splitting one question into many options therefore does not lower the bar for the proposer's own favourite – it widens the opening for a compromise nobody led with. The general property, and how other DAOs meet it, is covered under ranked and alternative ballot methods (/wiki/dao-governance/concepts/voting/ranked-and-alternative-ballot-methods) . One of the options in N is not the proposer's. Every proposal carries an automatic no-execution option (/wiki/governance/proposals) , titled Do nothing, appended last and always present – so a proposal offering a single action is a two-option ballot needing 75% of weight behind it, and every option a proposer adds raises N from a floor of two.

v2.0.0Sweep #196 (governance rotation): three contract-verified sections — ballot completeness and the graceful out-of-window close, the permissionless downward clamp/reclamp ratchet and its challenge window, and why the circulating-supply divisor cancels out of a proposal's outcome (plus the $XRD caper's substitute figure).–
3 blocks added, 1 block reordered
  • Moved – Text at Block 8
  • Added – Text at Block 5

    What a ballot has to contain The contract will not accept a partial ballot. Your ranking must cover every option on the proposal, exactly once — a short list, a repeated option, or an index that is not on the ballot all fail the transaction. That is what makes the Borda scoring comparable across voters: every ballot spends the same points, and the only thing that varies is the order. Two other conditions gate a vote. You have to present a proof that you hold at least one of the caper's tokens, and the vote carries a fixed fee in XRD that is deposited into the caper's own treasury (/wiki/foundations/what-is-a-caper) . A vote that arrives outside the proposal's window is handled gracefully rather than reverted: the contract records nothing, returns false, and deposits the fee into the treasury the same way it would on the accepted path — so a late transaction fails without leaving anything half-applied.

  • Added – Text at Block 6

    Selling after you vote, and who can make it count The balance credited to a ballot is the smaller of what you held when you voted and what you hold when the tally runs, so credit only ever moves down. That rule is enforced by two calls that anyone can make, not by a privileged settler. - Crystallization folds ballots into the proposal's persistent tally, re-reading each voter's live balance as it goes. Large proposals are folded in chunks, so no electorate is too big to settle. - Reclamping re-observes a range that has already been crystallized and ratchets down any voter who has sold since. Because it can only lower credit, it is safe to leave permissionless — a spammer can spend gas re-checking, but cannot change a tally that is already honest. A tally taken at one instant after the execution window opened settles straight away; any other tally has to sit out a challenge window first, during which a reclamp can still be run. The practical effect is that a member who votes and then sells into the result they voted for does not merely fail to gain — any other member can force the tally to notice, without asking anyone's permission. That is the same asymmetry the exit right (/wiki/dao-governance/concepts/membership/rage-quit-and-exit-rights) relies on, applied to the vote itself, and it is why a caper needs no snapshot block to resist borrowed voting power (/wiki/dao-governance/concepts/voting/token-weighted-voting) .

  • Added – Text at Block 7

    What the circulating supply does, and what it cannot do Weight is divided by the caper's circulating token supply (/wiki/markets/bonding-curve) as well as by the total vote record. That divisor is the same for every member, so it cancels out of the only comparison settlement (/wiki/governance/execution) actually makes: the leading option's weight against all weight cast. Circulation changes how fast the treasury pays out an exit; it cannot move a proposal's outcome. One caper obtains the figure differently. The $XRD caper has no bonding curve, and its members hold native XRD, whose total supply cannot be read on-ledger at all — Radix creates XRD at genesis without supply tracking, so the resource simply reports no total. The contract substitutes XRD's protocol maximum instead, which is the tightest figure that is always at least the sum of member holdings. Erring high there makes exits conservative and leaves votes untouched, which is the right direction for both.

v1.0.1Vote-weight copy: t is snapshotted at vote time then min-clamped at the tally (not frozen); link the chunked crystallize/settle path–
2 blocks modified
  • Modified – Text at Block 3

    How your weight is measured Yo…t your vote transaction runs (frozen there against any trades you make afterward — there is no separate past-block snapshothere is no separate past-block snapshot — and when the ballots are tallied after voting closes, the credited balance is clamped to the smaller of that snapshot and what you still hold, so later trades can shrink a cast vote but never grow it), v is your locked, non-tran…loaned voting power (/wiki/daos-governance/concepts/voting/token-weighte…AOs like Beanstalk (/wiki/daos-governance/concepts/analysis/dao-security-and-governance-attacks) .

  • Modified – Text at Block 4

    Each cast vote mints one soulb…ve exit redemption (/wiki/daos-governance/concepts/membership/rage-quit… window closes at its expiry. The contract then resolves the winnerAnyone can then crystallize the tally and settle (/wiki/governance/execution) the result — the option with the most total weight — but only executes it if that optionwins, but executes only if it clears a supermajority of 1.5…th nothing happening on-chain.

v1.0.0Repoint 3 taxonomy-split link(s) to canonical daos/* paths–
2 blocks modified
  • Modified – Text at Block 3

    How your weight is measured Yo…loaned voting power (/wiki/daos/concepts/voting/token-weighted-voting) , the a…AOs like Beanstalk (/wiki/daos/concepts/analysis/dao-security-and-governance-attacks) .

  • Modified – Text at Block 4

    Each cast vote mints one soulb…ve exit redemption (/wiki/daos/concepts/membership/rage-quit-and-exit-rights) : t…th nothing happening on-chain.

v1.1.0Add the “How vote weight works” infographic.–
1 block added
  • Added – Text at Block 5

    How vote weight works Vote weight multiplies what you hold by the voting record you have earned, so a big bag alone can’t capture control — and the very same number sets your share of the treasury when you exit. CAPER PROTOCOLHow vote weight worksONE FORMULAvote weight w = ( t · v ) / ( V · T )tcaper tokens you holdvvote records you’veearnedVall vote records, totalTtokens in circulationHoldings alone aren’t control. You also needv — the record you can only earn by showingup and voting.The very same weight sets your share of thetreasury when you exit. Voting power andpayout scale together.Each vote mints one soulbound vote token — non-transferable, unbuyable proof that you participated.Power is earned, not just bought.caper.networkw = (t·v) / (V·T) · power is earned, not only bought.

v1.0.0Accuracy: replace inaccurate 'snapshot block' weighting with the live-balance × participation mechanism (w=(t·v)/(V·T)); add how-weight-is-measured + supermajority sections. Verified vs caper_dao.rs compute_vote_weight + vote().–
4 blocks added, 2 blocks removed
  • Removed – Text at Block 1 → Block 1

    Method Ranked-choice Weight Governance balance at snapshot block Proof Soulbound vote token (drives exit) Related Proposals (/wiki/governance/proposals) , Execution (/wiki/governance/execution)

  • Removed – Text at Block 2

    Voting is ranked-choice. You submit an ordered list of options; tallies use weighted preferences from your governance token balance at the snapshot block. Each cast vote mints a soulbound vote token into your account — your proof of participation. Vote tokens drive exit redemption (/wiki/dao/concepts/rage-quit-and-exit-rights) : to leave, you burn vote tokens alongside the caper tokens you are redeeming and receive a treasury share equal to your canonical vote weight — the same metric that sets your voting power, so influence and redeemable stake stay aligned. A proposal closes when its expiry passes. The winning option (or the no-execution option, if it placed first) determines what happens next.

  • Added – Text at Block 1 → Block 1

    Method Ranked-choice (Borda-weighted) Weight Live governance balance × participation, read at vote time Proof Soulbound vote token — one per vote; drives exit Passes at 1.5 / N supermajority of weight cast Related Proposals (/wiki/governance/proposals) , Execution (/wiki/governance/execution) , Voting mechanisms (/wiki/governance/voting-mechanisms)

  • Added – Text at Block 2

    Voting on a caper is ranked-choice. You submit an ordered list of the proposal's options and the contract scores them Borda-style — with N options, your first pick earns N−1 points and your last pick 0 — so a ballot expresses a full preference order rather than a single yes/no.

  • Added – Text at Block 3

    How your weight is measured Your voting weight is not simply your token balance — it is the product of your stake and your participation. The contract computes w = (t · v) / (V · T), where t is your governance-token balance read live at the moment your vote transaction runs (frozen there against any trades you make afterward — there is no separate past-block snapshot), v is your locked, non-transferable vote-token balance, V the total vote-token supply, and T the caper tokens in circulation. Because v is read before this vote mints its token, a member's very first vote counts v = 0 and therefore carries zero weight: influence is earned by showing up, not bought in a single transaction. This participation gate — not a snapshot block — is what makes a caper resistant to flash-loaned voting power (/wiki/dao/concepts/token-weighted-voting) , the attack that has drained token-weighted DAOs like Beanstalk (/wiki/dao/concepts/dao-security-and-governance-attacks) .

  • Added – Text at Block 4

    Each cast vote mints one soulbound vote token into your account — your permanent proof of participation. Vote tokens also drive exit redemption (/wiki/dao/concepts/rage-quit-and-exit-rights) : to leave, you burn vote tokens alongside the caper tokens you redeem and receive a treasury share equal to your canonical vote weight — the same metric that sets your voting power, so influence and redeemable stake stay aligned. A proposal's voting window closes at its expiry. The contract then resolves the winner — the option with the most total weight — but only executes it if that option clears a supermajority of 1.5 / N of all weight cast. If it falls short, or if the no-execution option placed first, the proposal closes with nothing happening on-chain.

v1.0.0Refresh: make the exit-redemption sentence contract-accurate (both vote + governance tokens; share = canonical vote weight) and link to the new rage-quit / exit-rights pillar.–
2 blocks added
  • Added – Text at Block 1 → Block 1

    Method Ranked-choice Weight Governance balance at snapshot block Proof Soulbound vote token (drives exit) Related Proposals (/wiki/governance/proposals) , Execution (/wiki/governance/execution)

  • Added – Text at Block 2

    Voting is ranked-choice. You submit an ordered list of options; tallies use weighted preferences from your governance token balance at the snapshot block. Each cast vote mints a soulbound vote token into your account — your proof of participation. Vote tokens drive exit redemption (/wiki/dao/concepts/rage-quit-and-exit-rights) : to leave, you burn vote tokens alongside the caper tokens you are redeeming and receive a treasury share equal to your canonical vote weight — the same metric that sets your voting power, so influence and redeemable stake stay aligned. A proposal closes when its expiry passes. The winning option (or the no-execution option, if it placed first) determines what happens next.