Skip to content

Commit

Permalink
deploy: 5f7d3bb
Browse files Browse the repository at this point in the history
  • Loading branch information
brenzi committed Jun 2, 2024
1 parent e5a51f6 commit e758b53
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 14 deletions.
4 changes: 4 additions & 0 deletions fig/democracy-aqb.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions fig/democracy-electorate.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions fig/democracy-proposal-lifetime-approved.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions fig/democracy-proposal-lifetime-rejected.drawio.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
27 changes: 21 additions & 6 deletions print.html
Original file line number Diff line number Diff line change
Expand Up @@ -393,11 +393,12 @@ <h2><a class="header" href="#js-api" id="js-api">js api</a></h2>
}
</code></pre>
<p>If you'd like to use javascript, please consider using our npm library <a href="https://github.com/encointer/encointer-js">encointer-js</a> which adds support for all our types</p>
<h1><a class="header" href="#democracy" id="democracy">Democracy</a></h1>
<h1><a class="header" href="#democracy-v01" id="democracy-v01">Democracy V0.1</a></h1>
<blockquote>
<p><em>this feature is work in progress and not yet released. See <a href="./decentralization-governance.html">Governance</a> to learn how it currently works</em></p>
<p>this feature is work in progress and currently only deployed on <a href="./testnet-gesell.html">testnet Gesell</a>. See <a href="./decentralization-governance.html">Governance</a> to learn how it currently works_on mainnet</p>
<p>V0.1 only encompasses a subset of local community governance actions</p>
</blockquote>
<p>The democracy module will bring decentralized governance to Encointer facilitating participants to take decisions. Such a <strong>universal human suffrage</strong> (one person one vote) governance shall render the current Encointer council obsolete. Examples of such decisions are the addition of new meetup locations to a community, an adjustment of the Demurrage rate or changes in the ceremony schdeule.</p>
<p>The democracy module will bring decentralized governance to Encointer, facilitating participants to take decisions. Such a <strong>universal human suffrage</strong> (one person one vote) governance shall render the current Encointer council obsolete. Examples of such decisions are the addition of new meetup locations to a community, an adjustment of the Demurrage rate or changes in the ceremony schdeule.</p>
<p>The decision making process should follow the subsidiarity principle, meaning that decisions should be taken on the lowest possible level. So for example, if a community wants to extend their region by adding some new meetup locations, only community members should be allowed to participate in the vote.</p>
<h2><a class="header" href="#scope-of-democracy" id="scope-of-democracy">Scope of Democracy</a></h2>
<p>This section describes the powers of Encointer's onchain democracy and at what level decisions are to be made.</p>
Expand Down Expand Up @@ -445,6 +446,8 @@ <h3><a class="header" href="#community-actions" id="community-actions">Community
<li><a href="https://github.com/encointer/pallets/blob/91cbd7c9c0d47c4a80c096d3b2b501625a6bb724/communities/src/lib.rs#L214"><code>update_community_metadata</code></a>: change name, currency, artwork IPFS cid for community</li>
<li><a href="https://github.com/encointer/pallets/blob/91cbd7c9c0d47c4a80c096d3b2b501625a6bb724/communities/src/lib.rs#L238"><code>update_demurrage</code></a>: change how fast balances are demurraged per community</li>
</ul>
<h3><a class="header" href="#petitions" id="petitions">Petitions</a></h3>
<p>Petitions are votes on matters that cannot automatically be enforced by the Encointer protocol. Therefore, they are non-binding for the network. They can have global or local scope. Petitions can be used to signal the network or community leaders about the will of the community.</p>
<h2><a class="header" href="#proposals" id="proposals">Proposals</a></h2>
<p>There is a set of predefined proposal <em>actions</em> that can be voted on (ie. set basic income to XY)</p>
<p>Everyone can start a proposal on an <em>action</em> (ie. set basic income to 48 LEU)</p>
Expand All @@ -469,13 +472,25 @@ <h3><a class="header" href="#proposal-lifetime" id="proposal-lifetime">Proposal
<p>For the sake of simplicity, we assume that just a simple majority is needed for a proposal to pass and there is no minimum vote required.</p>
<p>In the case of multiple proposals, all proposals shall be of the same action.</p>
<p><img src="./fig/democracy-voting.drawio.svg" alt="Democracy Voting" /></p>
<h3><a class="header" href="#practical-examples" id="practical-examples">Practical Examples</a></h3>
<p>Let's assume a proposal has been submitted at the end of the last <em>registering</em> phase. During the first day, the proposal doesn't reach the minimal turnout yet, but on day two it enters the passing state and the confirmation period starts. More people make up their mind and vote <em>Nay</em>, so the proposal fall out of confirming state before the end of the confirmation period. Over time, more <em>Aye</em> votes are coming in and the approval threshold is surpassed. This time, the proposal stays in the passing state during the entire confirmation period gets approved.
Any community member can call the lazy evaluation and the proposal action will be scheduled for enaction at the start of the upcoming <em>registering</em> phase. </p>
<p><img src="./fig/democracy-proposal-lifetime-approved.drawio.svg" alt="lifetime approved" /></p>
<p>Another example shows a proposal with insufficient approval. After an initial boost, it stays in the <em>failing</em> state until the the end of its lifetime. Any community member can request lazy evaluation and the proposal will be cancelled.</p>
<p><img src="./fig/democracy-proposal-lifetime-rejected.drawio.svg" alt="lifetime rejected" /></p>
<h2><a class="header" href="#voting" id="voting">Voting</a></h2>
<h3><a class="header" href="#eligible-reputations" id="eligible-reputations">Eligible Reputations</a></h3>
<p>We currently allow only reputations older that the ceremony cycle of the proposal start - 2 to participate in the vote. This is because the count of those reputations is not subject to change anymore. We need a reliable count of all eligible reputations in order to determine the maximum amount of possible votes, which is required 1. for AQB and 2. to determine the minimum turnout.</p>
<p>We currently allow only reputations older than the ceremony cycle of the proposal start - 2 to participate in the vote. This is because the count of those reputations is not subject to change anymore. We need a reliable count of all eligible reputations in order to determine the maximum amount of possible votes, which is required 1. for AQB and 2. to determine the minimum turnout.</p>
<p>If we want to relax this in the future, we would need to come up with a way to handle the dynamic change of the electorate while a proposal is running. This is not trivial.</p>
<p><img src="./fig/democracy-electorate.drawio.svg" alt="electorate" /></p>
<p>Your own voting power depends on the number of cycles you have attended during the eligible period. The more cycles you have attended, the more voting power you have. This is a sybil-resilient approximation of universal suffrage.</p>
<h3><a class="header" href="#adaptive-quorum-biasing-aqb-and-minimum-approval" id="adaptive-quorum-biasing-aqb-and-minimum-approval">Adaptive Quorum Biasing (AQB) and Minimum Approval</a></h3>
<p>In order to determine if a vote is passing, we use Positive Turnout Bias. In addition we enforce a minimum turnout of 5%.</p>
<h3><a class="header" href="#tutorial" id="tutorial">Tutorial</a></h3>
<p>In order to determine if a proposal is passing, we use positive turnout bias. The approval threshold follows the formula: \(thrs = \frac{1}{1+\sqrt{turnout}}\) where \(turnout \in [0, 1]\) and \(thrs \in [0, 1]\)</p>
<p>In addition we enforce a minimum turnout of 5%.</p>
<p>The goal of AQB is to ensure proposals can be approved even if turnout is low. Especially noncontroversial proposals may suffer from low turnout as they fail to mobilize the crowd. However, low turnout should require a higher approval rate to pass.</p>
<p><img src="./fig/democracy-aqb.drawio.svg" alt="AQB" /></p>
<p>The blue trace depicts a possible turnout over time. It can be expected that the initiators of a proposal will immediately vote <em>Aye</em>, leading to very high approval at start. As long as less than 5% of the elecorate have cast their vote, the proposal is in <em>failing</em> state. Over time, more people will make up their mind and the proposal may flip between passing and failing state several times before eventually staying in the passing state for the confirmation period. The end of the confirmation period is depicted by the blue dot.</p>
<h2><a class="header" href="#tutorial" id="tutorial">Tutorial</a></h2>
<p>For a tutorial of the democracy module, please see the <a href="./tutorials-democracy.html">Democracy Tutorial</a></p>
<h1><a class="header" href="#threat-model" id="threat-model">Threat Model</a></h1>
<h2><a class="header" href="#actor-profiles" id="actor-profiles">Actor Profiles</a></h2>
Expand Down
27 changes: 21 additions & 6 deletions protocol-democracy.html
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,12 @@ <h1 class="menu-title">The Encointer Book</h1>

<div id="content" class="content">
<main>
<h1><a class="header" href="#democracy" id="democracy">Democracy</a></h1>
<h1><a class="header" href="#democracy-v01" id="democracy-v01">Democracy V0.1</a></h1>
<blockquote>
<p><em>this feature is work in progress and not yet released. See <a href="./decentralization-governance.html">Governance</a> to learn how it currently works</em></p>
<p>this feature is work in progress and currently only deployed on <a href="./testnet-gesell.html">testnet Gesell</a>. See <a href="./decentralization-governance.html">Governance</a> to learn how it currently works_on mainnet</p>
<p>V0.1 only encompasses a subset of local community governance actions</p>
</blockquote>
<p>The democracy module will bring decentralized governance to Encointer facilitating participants to take decisions. Such a <strong>universal human suffrage</strong> (one person one vote) governance shall render the current Encointer council obsolete. Examples of such decisions are the addition of new meetup locations to a community, an adjustment of the Demurrage rate or changes in the ceremony schdeule.</p>
<p>The democracy module will bring decentralized governance to Encointer, facilitating participants to take decisions. Such a <strong>universal human suffrage</strong> (one person one vote) governance shall render the current Encointer council obsolete. Examples of such decisions are the addition of new meetup locations to a community, an adjustment of the Demurrage rate or changes in the ceremony schdeule.</p>
<p>The decision making process should follow the subsidiarity principle, meaning that decisions should be taken on the lowest possible level. So for example, if a community wants to extend their region by adding some new meetup locations, only community members should be allowed to participate in the vote.</p>
<h2><a class="header" href="#scope-of-democracy" id="scope-of-democracy">Scope of Democracy</a></h2>
<p>This section describes the powers of Encointer's onchain democracy and at what level decisions are to be made.</p>
Expand Down Expand Up @@ -203,6 +204,8 @@ <h3><a class="header" href="#community-actions" id="community-actions">Community
<li><a href="https://github.com/encointer/pallets/blob/91cbd7c9c0d47c4a80c096d3b2b501625a6bb724/communities/src/lib.rs#L214"><code>update_community_metadata</code></a>: change name, currency, artwork IPFS cid for community</li>
<li><a href="https://github.com/encointer/pallets/blob/91cbd7c9c0d47c4a80c096d3b2b501625a6bb724/communities/src/lib.rs#L238"><code>update_demurrage</code></a>: change how fast balances are demurraged per community</li>
</ul>
<h3><a class="header" href="#petitions" id="petitions">Petitions</a></h3>
<p>Petitions are votes on matters that cannot automatically be enforced by the Encointer protocol. Therefore, they are non-binding for the network. They can have global or local scope. Petitions can be used to signal the network or community leaders about the will of the community.</p>
<h2><a class="header" href="#proposals" id="proposals">Proposals</a></h2>
<p>There is a set of predefined proposal <em>actions</em> that can be voted on (ie. set basic income to XY)</p>
<p>Everyone can start a proposal on an <em>action</em> (ie. set basic income to 48 LEU)</p>
Expand All @@ -227,13 +230,25 @@ <h3><a class="header" href="#proposal-lifetime" id="proposal-lifetime">Proposal
<p>For the sake of simplicity, we assume that just a simple majority is needed for a proposal to pass and there is no minimum vote required.</p>
<p>In the case of multiple proposals, all proposals shall be of the same action.</p>
<p><img src="./fig/democracy-voting.drawio.svg" alt="Democracy Voting" /></p>
<h3><a class="header" href="#practical-examples" id="practical-examples">Practical Examples</a></h3>
<p>Let's assume a proposal has been submitted at the end of the last <em>registering</em> phase. During the first day, the proposal doesn't reach the minimal turnout yet, but on day two it enters the passing state and the confirmation period starts. More people make up their mind and vote <em>Nay</em>, so the proposal fall out of confirming state before the end of the confirmation period. Over time, more <em>Aye</em> votes are coming in and the approval threshold is surpassed. This time, the proposal stays in the passing state during the entire confirmation period gets approved.
Any community member can call the lazy evaluation and the proposal action will be scheduled for enaction at the start of the upcoming <em>registering</em> phase. </p>
<p><img src="./fig/democracy-proposal-lifetime-approved.drawio.svg" alt="lifetime approved" /></p>
<p>Another example shows a proposal with insufficient approval. After an initial boost, it stays in the <em>failing</em> state until the the end of its lifetime. Any community member can request lazy evaluation and the proposal will be cancelled.</p>
<p><img src="./fig/democracy-proposal-lifetime-rejected.drawio.svg" alt="lifetime rejected" /></p>
<h2><a class="header" href="#voting" id="voting">Voting</a></h2>
<h3><a class="header" href="#eligible-reputations" id="eligible-reputations">Eligible Reputations</a></h3>
<p>We currently allow only reputations older that the ceremony cycle of the proposal start - 2 to participate in the vote. This is because the count of those reputations is not subject to change anymore. We need a reliable count of all eligible reputations in order to determine the maximum amount of possible votes, which is required 1. for AQB and 2. to determine the minimum turnout.</p>
<p>We currently allow only reputations older than the ceremony cycle of the proposal start - 2 to participate in the vote. This is because the count of those reputations is not subject to change anymore. We need a reliable count of all eligible reputations in order to determine the maximum amount of possible votes, which is required 1. for AQB and 2. to determine the minimum turnout.</p>
<p>If we want to relax this in the future, we would need to come up with a way to handle the dynamic change of the electorate while a proposal is running. This is not trivial.</p>
<p><img src="./fig/democracy-electorate.drawio.svg" alt="electorate" /></p>
<p>Your own voting power depends on the number of cycles you have attended during the eligible period. The more cycles you have attended, the more voting power you have. This is a sybil-resilient approximation of universal suffrage.</p>
<h3><a class="header" href="#adaptive-quorum-biasing-aqb-and-minimum-approval" id="adaptive-quorum-biasing-aqb-and-minimum-approval">Adaptive Quorum Biasing (AQB) and Minimum Approval</a></h3>
<p>In order to determine if a vote is passing, we use Positive Turnout Bias. In addition we enforce a minimum turnout of 5%.</p>
<h3><a class="header" href="#tutorial" id="tutorial">Tutorial</a></h3>
<p>In order to determine if a proposal is passing, we use positive turnout bias. The approval threshold follows the formula: \(thrs = \frac{1}{1+\sqrt{turnout}}\) where \(turnout \in [0, 1]\) and \(thrs \in [0, 1]\)</p>
<p>In addition we enforce a minimum turnout of 5%.</p>
<p>The goal of AQB is to ensure proposals can be approved even if turnout is low. Especially noncontroversial proposals may suffer from low turnout as they fail to mobilize the crowd. However, low turnout should require a higher approval rate to pass.</p>
<p><img src="./fig/democracy-aqb.drawio.svg" alt="AQB" /></p>
<p>The blue trace depicts a possible turnout over time. It can be expected that the initiators of a proposal will immediately vote <em>Aye</em>, leading to very high approval at start. As long as less than 5% of the elecorate have cast their vote, the proposal is in <em>failing</em> state. Over time, more people will make up their mind and the proposal may flip between passing and failing state several times before eventually staying in the passing state for the confirmation period. The end of the confirmation period is depicted by the blue dot.</p>
<h2><a class="header" href="#tutorial" id="tutorial">Tutorial</a></h2>
<p>For a tutorial of the democracy module, please see the <a href="./tutorials-democracy.html">Democracy Tutorial</a></p>

</main>
Expand Down
2 changes: 1 addition & 1 deletion searchindex.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion searchindex.json

Large diffs are not rendered by default.

0 comments on commit e758b53

Please sign in to comment.