|
|
@@ -1,60 +1,71 @@
|
|
|
-# dao execution
|
|
|
+# DAO execution
|
|
|
|
|
|
-$$ 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}[^1], spendHook^{proposal}, data^{proposal}) $$
|
|
|
+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:W\in \mathcal{R}\} $$
|
|
|
+$$ \mathcal{L}= \{X:(X,W)\in \mathcal{R}\} $$
|
|
|
|
|
|
+## Execution proof.
|
|
|
|
|
|
-| public inputs | Description |
|
|
|
-|----------------------------|--------------------------------------------------------|
|
|
|
-| bulla | dao bulla |
|
|
|
-| $coin^{proposal}$ | proposal coin |
|
|
|
-| $coin^{dao}$ | dao coin |
|
|
|
-| $cm^{vote^{yes}}_x$ | x-coordinate of commitment to $vote^{yes}$ value |
|
|
|
-| $cm^{vote^{yes}}_y$ | y-coordinate of commitment to $vote^{yes}$ value |
|
|
|
-| $cm^{vote^{all}}_x$ | x-coordinate of commitment to $vote^{all}$ value |
|
|
|
-| $cm^{vote^{all}}_y$ | y-coordinate of commitment to $vote^{all}$ value |
|
|
|
-| $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 |
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-| witnesses | Destination |
|
|
|
+- Derive, and reveal [bulla](bulla.md)
|
|
|
+- Derive, and reveal [proposal](proposal.md) input [coin](../payment/coin.md)
|
|
|
+- Calculate, and Reveal yes-vote 0/1 for no/yes [commitment](../crypto/commitment.md) $=vote^{yes}vote^{all^}$
|
|
|
+- Reveal all-vote value [commitment](../crypto/commitment.md)
|
|
|
+- Calculate, and reveal [proposal](proposal.md) coin value [commitment](../crypto/commitment.md)
|
|
|
+- Reveal dao execution spendHook
|
|
|
+- Reveal proposal spendHook
|
|
|
+- Reveal proposal spendHook input data
|
|
|
+- Reveal dao spendHook input data: [bulla](bulla.md) [commitment](../crypto/commitment.md)
|
|
|
+
|
|
|
+| Public inputs | Description |
|
|
|
+|----------------------------|----------------------------------------------------------------------|
|
|
|
+| bulla | dao [bulla](bulla.md) |
|
|
|
+| $coin^{proposal}$ | [proposal](proposal.md) input [coin](../payment/coin.md) |
|
|
|
+| $coin^{dao}$ | dao [coin](../payment/coin.md) |
|
|
|
+| $cm^{vote^{yes}}_x$ | yes vote [commitment](../crypto/commitment.md) x coordinate |
|
|
|
+| $cm^{vote^{yes}}_y$ | yes vote [commitment](../crypto/commitment.md) y coordinate |
|
|
|
+| $cm^{vote^{all}}_x$ | all votes [commitment](../crypto/commitment.md) x coordinate |
|
|
|
+| $cm^{vote^{all}}_y$ | all votes [commitment](../crypto/commitment.md) y coordinate |
|
|
|
+| $cm^{value^{proposal}}_x$ | x-coordinate of [commitment](../crypto/commitment.md) to $value^{proposal}$ |
|
|
|
+| $cm^{value^{proposal}}_y$ | y-coordinate of [commitment](../crypto/commitment.md) to $value^{proposal}$ |
|
|
|
+| $spendHook^{dao}$ | dao spendhook |
|
|
|
+| $spendHook^{proposal}$ | [proposal](proposal.md) 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 coin serial number |
|
|
|
-| $value^{dao}$ | dao coin input 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
|
|
|
+| $proposal^{destination}_x$ | [proposal](proposal.md) destination [public key](../payment/keypair.md) x coordinate |
|
|
|
+| $proposal^{destination}_y$ | [proposal](proposal.md) destination [public key](../payment/keypair.md) y coordinate |
|
|
|
+| $proposal^{amount}$ | [proposal](proposal.md) amount in proposal token |
|
|
|
+| $proposal^{tokenId}$ | [proposal](proposal.md) [token id](../payment/token_id.md) |
|
|
|
+| $blind^{proposal}$ | [proposal](proposal.md) [commitment](../crypto/commitment.md) blind factor|
|
|
|
+| proposerLimit | governance token necessary for the vote to be valid |
|
|
|
+| quorum | minimum number of votes necessary to pass the [proposal](proposal.md) |
|
|
|
+| $approvalRatio_{quot}$ | [proposal](proposal.md) approval ratio quotient |
|
|
|
+| $approvalRatio_{base}$ | [proposal](proposal.md) approval ratio base |
|
|
|
+| tokenId | governance [token id](../payment/token_id.md) |
|
|
|
+| $pub_x$ | dao [public key](../payment/keypair.md) x coordinate |
|
|
|
+| $pub_y$ | dao [public key](../payment/keypair.md) y coordinate |
|
|
|
+| $blind^{bulla}$ | [bulla](bulla.md) [commitment](../crypto/commitment.md) blinding factor|
|
|
|
+| $vote^{yes}$ | yes vote a boolean as either 0, or 1 |
|
|
|
+| $vote^{all}$ | all votes value |
|
|
|
+| $blind^{vote^{yes}}$ | yes vote [commitment](../crypto/commitment.md) blinding factor |
|
|
|
+| $blind^{vote^{all}}$ | blinding term for all votes [commitment](../crypto/commitment.md)s |
|
|
|
+| $sn^{proposal}$ | serial number for [proposal](proposal.md) [coin](../payment/coin.md) |
|
|
|
+| $sn^{dao}$ | dao input [coin](../payment/coin.md) serial number |
|
|
|
+| $value^{dao}$ | dao input [coin](../payment/coin.md) value |
|
|
|
+| $blind^{value^{dao}}$ | dao [coin](../payment/coin.md) value blinding term |
|
|
|
+| $spendHook^{dao}$ | dao spendhook |
|
|
|
+| $spendHook^{proposal}$ | [proposal](proposal.md) spendhook |
|
|
|
+| $data^{proposal}$ | input data for $spendhook^{proposal}$ contract |
|
|
|
+
|
|
|
+
|
|
|
+# Circuit checks
|
|
|
|
|
|
- $ quorum <= vote^{all}$
|
|
|
- $ \frac{approvalRatio^{quot}}{approvalRatio^{base}} <= \frac{vote^{yes}}{vote^{all}} $
|
|
|
-
|
|
|
-[^1]: why dao exec contract spend hook doesn't have data? although it's public input.
|