Blossom Budgeting a proportional budgeting mechanism, by Blossom Labs

51% of the voters should not spend the whole pool.

In its second round, TheDAO Security Fund asks the ETHSecurity Badge holders to decide which initiatives it funds. Under a majority rule (Condorcet, Borda, most votes first), the largest like-minded group decides every dollar. Blossom Budgeting is a tiered-ballot rule that protects representation for groups with shared priorities. Below is the same small round, tallied both ways.

Majority ruleAuditors cast 55% of the ballots and direct 99% of the pool.
Blossom BudgetingAuditors cast 55% of the ballots and direct 57% of the pool.
  • Auditing tools
  • Wallet safety
  • Incident response
  • Research and education
  • Unspent

A round in miniature

Thirty people hold a badge and 20 of them submit a ballot. The $100,000 pool is split equally among the ballots, so each voter steers $5,000. Nine initiatives ask for $174,000 between them, each with one deliverable and one price.

A ballot sorts the proposals a voter wants into tiers: S-Tier for what must be funded, A-Tier for what should be, B-Tier for what would be nice to have. Proposals in the same tier are tied. The voters fall into five groups with different priorities, which is what a security community looks like: auditors want auditing tools, wallet teams want phishing defence, responders want response capacity. To keep the example small, everyone in a group submits the same ballot as their colleagues.

Audit firms

6 identical ballots, $30,000

  1. S-Tier
    • Bridge fuzzing harness $40k
  2. A-Tier
    • Vyper static analyzer $17k
    • Audit findings database $17k
  3. B-Tier
    • Compiler bug bounty $25k

Solo auditors

5 identical ballots, $25,000

  1. S-Tier
    • Bridge fuzzing harness $40k
  2. A-Tier
    • Audit findings database $17k
    • Compiler bug bounty $25k
  3. B-Tier
    • Vyper static analyzer $17k

Wallet teams

4 identical ballots, $20,000

  1. S-Tier
    • Phishing blocklist API $20k
  2. A-Tier
    • Transaction simulation warnings $10k
    • Whitehat legal retainer $10k

Incident responders

3 identical ballots, $15,000

  1. S-Tier
    • Incident war room $20k
  2. A-Tier
    • Whitehat legal retainer $10k
    • Transaction simulation warnings $10k

Researchers

2 identical ballots, $10,000

  1. S-Tier
    • Formal verification course $15k
  2. A-Tier
    • Whitehat legal retainer $10k
    • Audit findings database $17k
  3. B-Tier
    • Transaction simulation warnings $10k

A majority rule orders the proposals by what most voters prefer and funds from the top. Here every auditing proposal beats every other proposal head to head, because the same eleven voters outvote whoever is on the other side, and the Borda and vote-count orders come out the same. Their four proposals cost $99,000, and nothing else fits in the $1,000 that is left. Fund from the top and the other nine voters, 45% of the electorate, get nothing they asked for.

A proportional rule asks a different question: how much of the pool does each group deserve to steer? Blossom Budgeting answers it with the Expanding Approvals Rule for participatory budgeting (PB-EAR), published by Haris Aziz and Barton Lee at AAAI 2021.

How the tally works

  1. Money is weight. The pool is split equally among the badge holders who submit a ballot, so total voting weight always equals the pool balance.
  2. Start with each voter's top tier. A proposal is affordable when the voters who have it in their S-Tier hold enough unspent money to cover its cost. If several are affordable, the one with the most money behind it goes first.
  3. Current supporters pay, in proportion. The proposal's cost is deducted from the voters who have it in an open tier, each in proportion to what they still hold. Spent money cannot pay for anything else.
  4. Widen only when stuck. When nothing is affordable, lower tiers open: a voter's next tier opens one step later for each proposal above it. Unplaced proposals never open. When no tier can fund anything more, what voters still hold goes back to TheDAO.

Step 1 of 10Every voter holds an equal share of the pool

The $100,000 pool is split equally among the 20 badge holders who submitted a ballot, $5,000 each. The tally starts with every voter's S-Tier.

$0 of $100,000 spentNo tier counted yet.

Voters and what they still hold

  • Audit firms6 ballots

    1. S-TierFuzzing
    2. A-TierAnalyzerFindings DB
    3. B-TierBounty
    4. Return to TheDAO
    $30,000
  • Solo auditors5 ballots

    1. S-TierFuzzing
    2. A-TierFindings DBBounty
    3. B-TierAnalyzer
    4. Return to TheDAO
    $25,000
  • Wallet teams4 ballots

    1. S-TierBlocklist
    2. A-TierSimulationRetainer
    3. Return to TheDAO
    $20,000
  • Incident responders3 ballots

    1. S-TierWar room
    2. A-TierRetainerSimulation
    3. Return to TheDAO
    $15,000
  • Researchers2 ballots

    1. S-TierCourse
    2. A-TierRetainerFindings DB
    3. B-TierSimulation
    4. Return to TheDAO
    $10,000

Proposals and the unspent money behind them

  • Bridge fuzzing harness$40,000

    Asks $40,000

  • Vyper static analyzer$17,000

    Asks $17,000

  • Audit findings database$17,000

    Asks $17,000

  • Compiler bug bounty$25,000

    Asks $25,000

  • Phishing blocklist API$20,000

    Asks $20,000

  • Transaction simulation warnings$10,000

    Asks $10,000

  • Incident war room$20,000

    Asks $20,000

  • Whitehat legal retainer$10,000

    Asks $10,000

  • Formal verification course$15,000

    Asks $15,000

The marker is the ask; the unspent money behind a proposal must reach it to fund it.

Place what you would like to see funded, even in a low tier. Transaction simulation warnings is the last proposal funded, and it only just passes. It asks for $10,000. The wallet teams had spent their whole share on the blocklist, so the incident responders were left with $9,000 behind it, $1,000 short. The researchers' B-Tier closes the gap: they pay $1,127 and the responders $8,873.

Had the researchers left it off their ballot, it would not have passed, and $13,000 would have gone back to TheDAO instead of $3,000. Money only pays for what its voter placed. A $1,000 donation from the public could still have funded it. So a ballot should hold more than a voter's own priorities: use the lower tiers for proposals you would be glad to see funded.

Cast a ballot

This is the ballot a badge holder fills in: Must fund is the S-Tier, Should fund the A-Tier, Nice to have the B-Tier. You are a twenty-first voter, and to keep the numbers round the pool grows so every ballot still steers $5,000. Proposals in the same tier are tied. Your share only pays for proposals you place in a tier; whatever you have left after your tiers goes back to TheDAO. The incident responders hold $15,000 and their war room costs $20,000. The researchers hold $10,000 and their course costs $15,000. Your one ballot can fund either. A direct public donation can also lower an ask until its backers can afford it, which you can try under the ballot.

Or start from a ballot:

Set your funding priorities

Drag proposals into a tier, or select a proposal and choose “Move here”.

Proposals in the same row have equal priority. Unplaced proposals sit below all three tiers.

Unplaced proposals 9

S-TierMust fund

Drop proposals here

A-TierShould fund

Drop proposals here

B-TierNice to have

Drop proposals here

You can move proposals between tiers at any time before submitting your ballot.

The public does not vote. A donation goes straight to an initiative and lowers what it asks from the pool, so it needs less badge-holder weight to pass.

The round with your ballot in it

$100,000 pool, 20 ballots, $5,000 each

  • Bridge fuzzing harness
  • Phishing blocklist API
  • Whitehat legal retainer
  • Audit findings database
  • Transaction simulation warnings

You have not placed anything yet, so you change nothing. This is the outcome the other 20 voters reach on their own.

Where your $5,000 went

Nowhere yet. A badge holder who submits no ballot steers no money.

What the tally guarantees

The paper calls it Inclusion PSC, proportionality for solid coalitions. Groups that agree on their top choices receive representation according to their share, subject to project costs and ties. A group cannot be left short of another jointly preferred proposal if its share can cover that proposal plus the funded projects counted toward its representation. The wallet teams cast 20% of the ballots and all put their $20,000 blocklist in their S-Tier, so it is funded whatever the other 80% do.

A voter's money only ever pays for proposals they placed in a tier, so every funded proposal is paid in full by voters who asked for it.

Voters will be able to choose to spend their remaining money on other proposals of the round instead of returning it. With that option they can still withhold it from the proposals they discarded.

Proposals are funded whole or not at all. The responders alone cannot fund a $20,000 war room with $15,000; they need an ally or a donation. Any money the tally leaves unspent goes back to TheDAO.

A quiet ending: the last ballot should not get the last word

With a hard deadline, whoever moves last can change what is funded and nobody has time to answer. So the round closes with a quiet ending. A day before the deadline it takes a first tally. If the result at the deadline is the same, the round closes on time. If it changed, voting stays open a little longer so everyone can answer, and every extension is half as long as the one before. Below, one late move is followed to the end.

Step 1 of 6A day before the deadline

The round is about to close. A day before the deadline it takes a first tally and publishes it: Bridge fuzzing harness, Phishing blocklist API, Whitehat legal retainer, Audit findings database and Transaction simulation warnings would be funded. This is the result the deadline will be compared with.

20 ballots, $5,000 eachThe result to compare with

The rest of the mechanism

Public ballots
Every ballot is recorded on-chain, and a voter can replace theirs while the round is open. Badge holders vote from pseudonymous addresses: a ballot is public, but it is tied to an address, not to a name. The running result is public from start to finish, so everyone votes knowing where things stand and anyone can follow the round as it happens.
A tally anyone can run again
The result is computed with an open reference implementation of the rule, which will be published soon. The ballots and the asks are on-chain, so anyone will be able to run the same program on the same data and check that they get the same funded proposals.
Badge holders vote, the public donates
TheDAO Security Fund sponsors the pool to the ETHSecurity Badge collection. The pool is split equally among the badge holders who submit a ballot, so holders who do not vote steer nothing: if 30 people hold a badge and 20 of them vote, each voter steers $5,000 of a $100,000 pool. The public does not vote. Anyone can donate directly to an initiative, and every dollar donated is a dollar that initiative no longer asks from the pool. A well-supported initiative gets cheaper for the badge holders to pass, which is the market signal the round is built around. If other sponsors add to the pool, it grows, and every voter's share grows with it.
Priced deliverables, paid in full
Every proposal states one deliverable, one price in dollars and one recipient. It is funded in full or not at all, so each payout matches a concrete scope. Funds go to Safe multisigs controlled by TheDAO's operational signers.
Everything in the open
Ballots, donations and the tally are all public. Anyone can see how the badge holders voted, address by address, what the public donated, and where the two disagreed.

This page explains the mechanism. The specific rules of the round are announced by TheDAO.

Sources

Aziz, H., and Lee, B. E. 2021. Proportionally Representative Participatory Budgeting with Ordinal Preferences. Proceedings of the Thirty-Fifth AAAI Conference on Artificial Intelligence, 5110 to 5118.

Aziz, H., and Lee, B. E. 2020. The Expanding Approvals Rule: Improving Proportional Representation and Monotonicity. Social Choice and Welfare 54(1), 1 to 45.