dao_exec.md 5.7 KB

DAO execution

DAO execution proof once quorum, and yes vote required have been met.

$$ X = (bulla, coin^{proposal}, coin^{dao}, cm^{vote^{yes}}_x, cm^{vote^{yes}}_y, cm^{vote^{all}}_x, cm^{vote^{all}}_y, cm^{value^{proposal}}_x, cm^{value^{prososal}}_y, spendHook^{dao}, spendHook^{proposal}, data^{proposal}) $$

$$ W = (proposal^{destination}_x, proposal^{destination}y, proposal^{amount}, proposal^{tokenId}, blind^{proposal}, proposerLimit, quorum, approvalRatio{quot}, approvalRatio_{base}, tokenId, pub_x, pub_y, blind^{bulla}, vote^{yes}, vote^{all}, blind^{vote^{yes}}, blind^{vote^{all}}, sn^{proposal}, sn^{dao}, value^{dao}, blind^{value^{dao}}, spendHook^{dao}, spendHook^{proposal}, data^{proposal}) $$

$$ \mathcal{L}= {X:(X,W)\in \mathcal{R}} $$

Execution proof.

  • Derive, and reveal bulla
  • Derive, and reveal proposal input coin
  • Calculate, and Reveal yes-vote 0/1 for no/yes commitment: $vote^{yes}*vote^{all}$
  • Reveal all-vote value commitment
  • Calculate, and reveal proposal coin value commitment
  • Reveal dao execution spendHook
  • Reveal proposal spendHook
  • Reveal proposal spendHook input data
  • Reveal dao spendHook input data: bulla commitment
Public inputs Description
bulla dao bulla
$coin^{proposal}$ proposal input coin
$coin^{dao}$ dao coin
$cm^{vote^{yes}}_x$ yes vote commitment x coordinate
$cm^{vote^{yes}}_y$ yes vote commitment y coordinate
$cm^{vote^{all}}_x$ all votes commitment x coordinate
$cm^{vote^{all}}_y$ all votes commitment y coordinate
$cm^{value^{proposal}}_x$ x-coordinate of commitment to $value^{proposal}$
$cm^{value^{proposal}}_y$ y-coordinate of commitment to $value^{proposal}$
$spendHook^{dao}$ dao spendhook
$spendHook^{proposal}$ proposal spendhook
$data^{proposal}$ input data for $spendhook^{proposal}$ contract
$data^{dao}$ input data for $spendhook^{proposal}$ contract
Witnesses Destination
$proposal^{destination}_x$ proposal destination public key x coordinate
$proposal^{destination}_y$ proposal destination public key y coordinate
$proposal^{amount}$ proposal amount in proposal token
$proposal^{tokenId}$ proposal token id
$blind^{proposal}$ proposal commitment blind factor
proposerLimit governance token necessary for the vote to be valid
quorum minimum number of votes necessary to pass the proposal
$approvalRatio_{quot}$ proposal approval ratio quotient
$approvalRatio_{base}$ proposal approval ratio base
tokenId governance token id
$pub_x$ dao public key x coordinate
$pub_y$ dao public key y coordinate
$blind^{bulla}$ bulla commitment blinding factor
$vote^{yes}$ yes vote a boolean as either 0, or 1
$vote^{all}$ all votes value
$blind^{vote^{yes}}$ yes vote commitment blinding factor
$blind^{vote^{all}}$ blinding term for all votes commitments
$sn^{proposal}$ serial number for proposal coin
$sn^{dao}$ dao input coin serial number
$value^{dao}$ dao input coin value
$blind^{value^{dao}}$ dao coin value blinding term
$spendHook^{dao}$ dao spendhook
$spendHook^{proposal}$ proposal spendhook
$data^{proposal}$ input data for $spendhook^{proposal}$ contract

Circuit checks

  • $ quorum <= vote^{all}$
  • $ \frac{approvalRatio^{quot}}{approvalRatio^{base}} <= \frac{vote^{yes}}{vote^{all}} $