From c00053e45e9f131131f9e2ae34167f6068ed32c8 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Fri, 26 Apr 2019 14:09:49 -0400 Subject: [PATCH 01/34] Initial commit of court focused revision --- README.md | 210 +++++++++++----------- images/permissions.png | Bin 0 -> 16051 bytes images/proposal-agreement-permissions.png | Bin 0 -> 29324 bytes images/sortition-tree.png | Bin 0 -> 30623 bytes images/terms.png | Bin 0 -> 32392 bytes 5 files changed, 108 insertions(+), 102 deletions(-) create mode 100755 images/permissions.png create mode 100755 images/proposal-agreement-permissions.png create mode 100755 images/sortition-tree.png create mode 100755 images/terms.png diff --git a/README.md b/README.md index e651aaf..3657df6 100644 --- a/README.md +++ b/README.md @@ -1,141 +1,147 @@ - # Aragon Network -***Abstract*** -An opt-in jurisdiction that facilitates more efficient interactions between blockchain-native digital entities using economic incentives. Users are required to stake digital assets in order to participate in governance and to collateralize subjective agreements. In the event of a dispute a decentralized court serves as an oracle to resolve and enforce agreements between participants. An algorithmic monetary policy manages reserves and issuance of ANT to incentivize participation and healthy growth of the network. +Aragon is a platform for creating and operating an organization on a blockchain network. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges are impossible to encode with smart contracts alone because smart contracts cannot directly encode subjective constraints. Voting is one way to impose a subjective constraint using a smart contract as it takes human inputs as a filter, however, voting assumes a majority of stakeholders will always honor the mutually understood intent of the organization. If we want organizations to be able to protect the interests of minority and passive participants we need more effective ways to enforce subjective constraints on an organization's actions. + +The Aragon Network is an Aragon organization which provides infrastructure and services to users of the Aragon platform. The Network is governed by holders of its native token ANT. + +The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables organizations to create *proposal agreements* which define subjective constraints on an organization's operation that can be enforced even by a minority stakeholder in the organization. Jurors stake ANT in order to participate as dispute resolution service providers in exchange for fees provided by organizations which opt-in to use the service. + +## Aragon's Permission Architecture + +Organizations control which addresses have access to perform actions on behalf of the organization in a permission registry called the A*ccess Control List*. Addresses on the registry can be externally owned accounts or contracts. Some contracts are intended to *forward* actions based on pre-defined criteria, for example a voting app will forward action after the successful approval vote. + +By chaining multiple permissions together we can define complex criteria which constrain how actions can be performed within the organization. To illustrate this we can look at common scenario where we want to allow treasury funds to be transferred, but only if they are 1) proposed by a member of the organization, 2) approved by a majority of members, 3) within a pre-determined budget. This can be accomplished by configuring a permission chain using multiple applications each imposing logical constraints on the final action as follows: + +![](images/permissions.png) + +*Figure 1: Token Manager --> Voting --> Finance --> Vault* + +The vault, which stores the organizations assets, grants the transfer role only to the finance application, which internally implements budgeting and recurring payment logic. The finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from Token Holders the Token Manager's associated token. + +This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately left up to a majority vote, and its not unreasonable to be concerned that a majority of the organization's members might one day decide liquidate the organization, excluding minority stakeholders from the distribution of funds. + +To avoid this organization's need a mechanism to impose a subjective constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. + +### Proposal Agreements + +Proposal Agreements are designed to facilitate these types of constraints within Aragon organizations. They allow an organization to define human readable terms and require proposers to deposit collateral before the users intent can be forwarded. + +The human readable terms can be used to protect the interest of minority stakeholders as described in the previous section, but they can also be used to define basic quality standards for what supplemental information must be included with a proposal. + +Proposal agreements can be paired with a Voting app by assigning the *create vote*, *pause vote*, and *cancel vote* roles. + +![](images/proposal-agreement-permissions.png) + +*Figure 2: Proposal Agreement --> Voting --> Finance --> Vault* + +With this flow, when a user wants to make a fund transfer they will be prompted to review and agree to the terms of the proposal agreement. + +### Dispute Creation + +If a user feels that a submitted proposal violated the proposal agreement terms they can choose to raise a dispute. When they raise a dispute they will need to deposit an equivalent amount of collateral, along with initial *dispute fees* determined by the court. They can also provide *evidence* to support their claim. The vote will be immediately paused until the dispute is resolved. + +If the original proposer feels that the dispute is valid they can opt to do nothing and the dispute will be automatically ruled in favor of the disputer. The proposers collateral will be transferred to the disputer and the vote will be canceled. If the original proposer believes they will win the dispute then they must pay *dispute fees* and provide evidence to support their position. + +Once both parties have submitted evidence and dispute fees, the case is scheduled to be reviewed by the *court*. + +## Aragon Court Protocol + +Proposal Agreement dispute resolution relies on a decentralized oracle protocol referred to as the *court* where *jurors* stake the Aragon Network's native asset ANT in order to earn the right to perform dispute resolution service and earn a portion of *dispute resolution fees*. + +When a dispute occurs, a jury is formed by drafting jurors via *stake-weighted sortition*. Drafted jurors are required to commit to a ruling on the dispute within a commitment period, and then reveal their ruling after all drafted jurors have committed. The verdict is returned based on the majority decision of drafted jurors. + +Before the verdict is enforced, there is an opportunity to *appeal*, which repeats the adjudication process with a larger set of jurors. Appeals can be made a fixed number of times before a *final judgement round* that requires every staked juror to commit to a ruling. + +### Juror Staking + +In order to participate as a juror, an individual must acquire ANT and then deposit it into the court's staking contract. Similar to a [token bonding curve](https://blog.relevant.community/bonding-curves-in-depth-intuition-parametrization-d3905a681e0a), the staking contract uses the current balance of deposited ANT to determine an exchange rate between ANT and the user's stake in the court. Unlike a token bonding curve, we do not treat the resulting economic stake as a transferrable token. This curved staking approach encourages jurors to participate early and establish the credibility of an instance of the court, and enables the network to potentially deploy multiple instances of the court protocol which compete with one another by specializing in resolving specific types of disputes. + +The staking and un-staking actions are governed by the following formulas: + +**Staking:** + +$$s = t * ((1 + d / b)^r-1)$$ + +**Unstaking:** + +$$c = b * ((1+s / t)^{\frac{1}{r}}$$ + +Where `s` is the resulting stake in the court and `d` is the users deposit. When un-staking, `c` is the amount of ANT returned. The other variables represent state and parameters of the staking curve. `r` is the ratio of deposits to total stake, `b` is the balance of ANT in the staking contract, and `t` is the total amount of distributed stake. -# 1. Introduction -The Bitcoin network has proven to be a disruptive force on the global financial system. Bitcoin's innovation is broad but the most significant contributions can be summarized as (1) combining cryptography and economics to create a novel toolkit for solving large scale distributed coordination challenges and (2) using that toolkit to secure transactions on a global peer-to-peer cash system independent of any centralized authority. +Once a prospective juror has staked they are considered *active* and eligible to be drafted to review cases. A distinction is made between a juror being *staked* and *active.* An *active* juror can *de-activate* themselves at any time, but they will not be able to *un-stake* until any pending disputes they have been involved in have completed. -Building on the innovations of Bitcoin, Ethereum created a platform for decentralized applications that abstracts away the crypto-economic security of block production from application developers. By separating concerns, application developers can share a common security layer and thereby pool the cost of securing the network. Pooling the cost of security reduces the portion of value that individual applications must allocate to security compared to running an independent app-chain. +### Juror Drafting -Ether is currently used primarily as a speculative currency, however, after transitioning to Casper proof of stake it will be used primarily to secure the network in exchange for transaction fees. Less volatile assets will become the dominant currencies used on the network. Scalability and Usability challenges will be pushed to subsequent layers through bridges and application specific side-chains, as the common platform's base-layer optimizes for cost-effective security. +Juror drafting is managed via a process of *stake-weighted sortition*. In order to manage the sortition process efficiently, all of the court's operations are scheduled into *Terms. Terms* are defined in seconds and cannot be changed after the Court has been initialized. Terms are transitioned by calling a public *heartbeat* function which is used to make updates to *active juror stakes* from the preceding term and generate a new *random seed* for use during the subsequent term. A portion of the courts fees are used to compensate the caller of the heartbeat for gas usage. -The Aragon Network provides a subjective governance layer that improves the overall usability of Ethereum by providing a mechanism for pseudo-anonymous blockchain entities, including decentralized autonomous organizations (DAOs) and individuals, to create flexible human-readable agreements that are enforceable on-chain. In order to enforce an agreement on-chain, parties of the agreement must deposit collateral in the form of digital assets for the duration of the agreement. The network's native digital asset, the Aragon Network Token (ANT), utilizes a stability reserve to optimize for usage in governance of the network and as a reserve currency for collateralizing agreements. -## 2. Agreements -Enforceable agreements are a tool used to reduce friction between agents which do not trust each other. Ethereum provides one type of enforceable agreement, a smart-contract, which is enforced by protocol rules and cryptographic security. However, the types of agreements which are practical to encode in a smart-contract are limited. Smart-contracts require the terms of an agreement to be machine interpretable, do not allow for human-friendly or subjective language, and their rigidity creates a complex attack surface that is difficult and expensive to secure. +![](images/terms.png) -In cases where smart-contracts are not practical, agents may instead turn to traditional legal agreements. However, this poses a problem for blockchain-native agents which may not be linked to traditional legal entities. Projects like [Mattereum](https://mattereum.com/upload/iblock/af8/mattereum_workingpaper.pdf) and [Openlaw](https://openlaw.io) are working on making it easier to link blockchain entities to traditional legal forms, but much of the censorship resistant properties that make public blockchains so valuable are lost as soon as an agent links their pseudonymous blockchain identity with their physical identity. +*Figure 3: Court operations are broken into Terms* +For each dispute or appeal we have a number of available *juror slots* which must be filled. Each slot can be thought of as a seat on the jury. A single juror can occupy multiple seats, but each seat is associated with an equal portion of their stake which is committed and locked until the dispute is fully resolved. -To resolve this tension we propose a mechanism that allows any agent to be a party to a human readable, enforceable agreement. We define an Aragon Agreement as a set of smart-contracts and a human readable document that is cryptographically signed. Aragon Agreements specify the responsibilities of relevant agents, their respective liabilities, and what mechanism will be used to enforce the agreement in the event of a dispute. -## 2.1 Responsibilities -Agents collaborate to define their respective responsibilities in a human readable document, similar to a traditional legal agreement, the parties of the agreement may specify their expectations for their counter-party including dates and contingencies. When both parties are satisfied with the document, it is cryptographically signed by both parties and a hash is stored on-chain. In the event of a dispute, either party may show the full agreement to another entity, that can then prove authenticity by checking the on-chain signed hash. -## 2.2 Liabilities -Since agreements must be enforceable without violating the security guarantees of the underlying protocol, liability for any agreement is limited to the collateral that agents deposit when creating the agreement. We assume that any digital assets can be used as collateral, and define a general interface for defining the liability of an agreement. - - **MIN\_LIABILITY**: defines collateral which is exclusively locked for the duration of an Agreement. It's availability as recourse for a dispute is guaranteed. 
 - - **MAX\_LIABILITY**: defines collateral which is locked for the duration of an Agreement, but which can also be used to resolve disputes for other Agreements that share the same enforcement mechanism. Agreements which rely on MAX\_LIABILITY are making a collateral efficiency/enforceability tradeoff, that enables the emergence of a robust credit system. 
 - - **FINALIZATION**: defines EVM code that will be executed to determine whether the agreement is still valid or has finalized. Allows composability of different criteria for an agreement to finalize. Time or block spans, the ability for both or a third party to end it or prolong it are basic examples of what could be computed here. 
 +One block after the heartbeat function is executed for the term in which a dispute is scheduled, a function to draft jurors for that dispute is called. This function can be called at any point during the term and the resulting selection of jurors will be the same. If this transaction does not happen before the term ends the dispute must be rescheduled for a subsequent court term. -## 2.3 Enforcement -Agreements must also specify an address which all parties of the agreement grant privileges to re-assign deposited collateral in the event of a dispute. This can be the address of a trusted third party, but in practice we expect that most Agreements will be enforced by the Aragon Court mechanism due to the network effects and collateral efficiency of using MAX_LIABILITY Agreements. -# 3. Courts -Courts are the native enforcement mechanism for the Aragon Network, they provide users with a neutral shared context for Arbitration. Each court produces an oracle feed of judgments on subjective disputes. Over time, as disputes are successfully resolved and jurors earn reputation, the judgments of a court will become more consistent as precedents are set and reinforced. +To make the draft function efficient, active jurors are arranged into a tree structure based on their stake. Using the random seed for the term and the id of the dispute a random number is generated and used to traverse the tree and arrive at a juror. This process is repeated until all juror slots for the dispute have been filled. -Courts are organized into a hierarchical structure, with more specific and specialized contexts at the bottom and more broad and general contexts at the top. As agents participate as jurors in a court they earn reputation in the court as well as any courts directly above in the hierarchical structure. At the very top of this structure is a supreme court that enforces and encodes the community values of the Aragon Network. +![](images/sortition-tree.png) -The adjudication process is structured similarly to the mechanism proposed by [Kleros](https://kleros.io/assets/whitepaper.pdf), however, our mechanism separates juror reputation from collateral and introduces a novel escalation metagame that makes the schelling point for jurors more resistant to bribery attacks while minimizing reliance on victims paying appeal fees. -## 3.1 Collateral and Reputation -We propose using collateralized agreements to bootstrap a self-reinforcing reputation system for jurors. +Figure 4: Traversing the sortition tree to select a juror -In order to participate as a juror in any court, an agent must agree to a code of conduct which defines their responsibilities as a juror. These responsibilities are straightforward and fulfilling them does not require a juror to depend on any other agents. A simple example of such an agreement could be summarized by the following responsibilities: +Due to gas constraints, the draft function can select at most 100 juror slots per call, so to select additional jurors we can do selection in multiple batches across multiple transactions or we can adjust the amount of stake which is committed to a ruling per juror slot in order to increase the amount of stake that is drafted. - 1. In the event that either party of the dispute attempts to bribe the court, the juror agrees to flag the case for review. - 2. In the event that both parties attempt to bribe the court, the juror agrees to vote for dismissal of the case. - 3. In the event that a single party attempts to bribe the court, the juror agrees to rule in favor of the party which did not attempt to bribe the court. +The sortition tree must be updated between terms as the proportional stake of jurors changes. Changes are queued and executed when the heartbeat function is called. -The purpose of this agreement is to create a metagame with a Nash equilibrium that favors honest jurors over malicious agents and dishonest jurors attempting to influence court decisions. +### Juror Ruling -The network can set a MIN\_LIABILITY agreement for jurors collateralized with ANT, and in exchange grant juror a baseline reputation within a court. As the juror participates in disputes within the court honestly and effectively, they will accrue additional reputation. This mechanism is designed such that anyone can get reputation by collateralizing agreements, but the cost to earn reputation through honest participation is significantly cheaper. +Once jurors have been drafted the dispute enters a deliberation phase where jurors are expected to provide a ruling in favor of one party or the other. Jurors are expected to make an independent judgement, but we assume that out of band communication between jurors is possible. For particularly nuanced cases there may even be forums and discussion threads used to discuss the details of a dispute. However, to minimize the ability of jurors to simply copy the voting behavior of other jurors we require rulings to be submitted in a two-phase commit reveal process. -When a new court is initialized, there will be a small amount of reputation relative to collateral, but overtime as the court adjudicates disputes the proportion of reputation relative to collateral will increase. As the court matures, this transition makes it less and less cost effective to influence the rulings of a court by purchasing and staking collateral. +Jurors are given a certain number of terms, called the *commitment period*, to submit a hash of their ruling. After the commit period ends, jurors are given a certain number of terms to reveal their ruling, this period is called the *reveal period*. If a juror reveals their vote prior to the reveal period, anyone can use this information to penalize the juror in exchange for a reward. If a juror fails to commit and reveal a vote by the end of the *reveal period* they are penalized. -Since reputation is court specific and non-transferrable it is more difficult to sell, however, even if reputation within a court is sold, the impact of an individual court becoming compromised is minimal. Honest jurors within the court can organize to fork the court keeping their reputation balances, and parties of agreements enforced by the court can mutually agree to use a different court. -## 3.2 Adjudication Process -We assume that a client side application will be used by all participants to monitor on-chain changes and alert them when actions are required. This includes being selected for a jury, dispute initialization, appeals, and ultimately resolution. +After the conclusion of *reveal period*, a majority of support among drafted jurors is used as a *preliminary ruling*. The preliminary ruling is considered final if there is no appeal made during the *appeal period*. -Jurors who are willing to actively participate in arbitration within a court activate their reputation in order to be eligible for selection on a jury. When a user triggers a dispute they must pay an arbitration fee proportional to the amount of reputation that will be included on the jury. A jury is formed by randomly selecting from all activated reputation within the court at the time of the dispute. +### Appeals -Once the dispute is initialized and the jury formed, the adjudication process is broken up into four time windows, the duration of each can be different depending on the specific court being used: +Each dispute is subject to a maximum number of appeal rounds. The number of appeal rounds determines how the sortition tree and sub-trees must be structured and therefore cannot be adjusted on a per-dispute basis. Since each dispute and appeal round has a fixed duration, the max appeal rounds also determines the maximum amount of time before a final decision is reached. - - **Evidence Submission**: a period when parties of an agreement can submit statements and evidence to the jury. - - **Jury Ruling Period**: a period for jurors to review submitted evidence and submit a ruling. The ruling determines if the case should be (1) escalated for review, (2) dismissed, (3) have the Agreement's FINALIZATION parameter updated and/or (3) whether collateral should be reassigned between parties.
 - - **Ruling Review Period**: a period which is triggered if atleast one juror flags the case for review, the evidence and jurors rulings are reviewed by a second set of jurors selected from the Review Court. The review process is intended to punish jurors who do not self-report bribery or vote in such a way that is not coherent with the jurors code of conduct. - - **Appeal Period**: a period after the court has provided a ruling, but before reputation is assigned to participating jurors. -### 3.2.1 Jury Ruling -The Jury Ruling mechanism operates as a schelling point game where jurors individually assess the evidence and make a ruling and have an incentive to rule along with the majority of other jurors. +Appeals can be triggered after a dispute has been resolved with a preliminary ruling in favor of one outcome or the other. In order for an Appeal to occur both sides of the dispute must deposit additional collateral. If neither side deposits the required collateral to trigger the next appeal round, the preliminary ruling is finalized. If only one side deposits the required collateral the ruling is immediately finalized in their favor. If both sides deposit the required collateral then the appeal round is scheduled. -Since a ruling must aggregate input from all jurors, the following procedure is used to create a jury ruling and reward participants. +The amount of required collateral depends on the appeal round and is a multiple of the fees required to compensate selected jurors. In higher appeal rounds where more juror stake is selected to adjudicate the dispute, the base amount of collateral required will be higher. The amount of collateral required will be a multiple of this amount, 2x the base amount for the side which is reinforcing the preliminary ruling, and 3x the base amount for side which is appealing the preliminary ruling. These deposit do not need to be supplied by a single party, but can be crowdsourced. When a final ruling is reached, the collateral of the loosing side will be used to compensate jurors and reward funders of the opposing side proportional to their contribution. - 1. If a majority of the jury indicate the case should be dismissed, then the case is immediately dismissed, with no changes to the agreement. - 2. If a majority of the jury indicates that the Agreements expiration should be extended, then the expiration is extended by the median value of those juror votes. If no appeal is made, than jurors who voted for extending the expiration earn reputation, and those that did not vote for extending the expiration lose reputation. 
 - 3. If a majority of the jury indicates that collateral should be re-assigned then collateral is re-assigned based on jurors voting on a new collateral ratio between the two parties and taking the median value. If no appeal is made, than jurors who voted for re-assigning the collateral earn reputation, and those that did not vote for extending the expiration lose reputation. - 4. If no appeal is made Fees are distributed to all jurors regardless of whether they gained or loss reputation. 
 - 5. If any juror flags the dispute for review, before the court proceeds with a ruling the evidence and jury's ruling is reviewed. -### 3.2.2 Ruling Review -The Ruling Review mechanism assesses if any jurors violated their Juror Agreement and removes them from the adjudication process before the court provides its ruling. It operates under the assumption that for a given jury if there is at least one honest juror who flags a dispute we can punish all dishonest jurors. +### Final Ruling -If atleast one juror flags a case for review we automatically select 5 jurors from the Review Court, a court that is specifically used for evaluating if other jurors have complied with the Juror Agreement. Since this court only handles cases which have been flagged for review, participants do not need specialized knowledge about the case, they just need to assess whether the Jury complied with the Juror agreement. Reviewed cases have only 3 possible outcomes for the ruling: the dispute was flagged incorrectly and the original ruling is served, dispute was flagged correctly and the case is dismissed because both parties attempted to bribe the jury, or the dispute was flagged correctly and ruled in favor of the party that did not attempt to bribe the court. +A final ruling is reached if a preliminary ruling is produced and neither side appeals, or if only one side appeals, or if the maximum number of appeals are reached. When a final ruling is produced the court needs to process collateral and stake redistribution. -If any of the jurors are found to have not complied with the juror agreement by the reviewers they will lose all of their reputation and their collateral will be assigned to the Networks Stability Reserve, unless they choose to appeal. -### 3.2.3 Fees -Jurors are compensated for their time reviewing disputes through arbitration fees. Fees are set at the court level and can be governed by reputation holders within the court. The network also sets a base fee for all court handled disputes which is directed to the network treasury. This fee is used to help support future development of the network and to compensate jurors who participate in the Ruling Review process when applicable. -## 3.3 Appeals -Any party which is unhappy with ruling made by the court has the option to appeal during the Appeal Period. We require an appeal to double the reputation weight of the jury, this means doubling the fee of the original dispute or most recent appeal. By requiring the jury pool to increase for each appeal we ensure that parties do not simply appeal multiple times hoping for a favorable jury, but rather each time they appeal they are sampling from a larger portion of active jurors and therefore giving the ruling more authority. +**Redistributing and Unlocking Juror Stake** -If there is not enough active jurors within the court, we can select jurors from courts from higher levels in the court hierarchy, eventually pulling in every active juror in the supreme court to produce a decision which can no longer be appealed. In practice we expect the cost to escalate a dispute to that level would be prohibitive in all but the most extreme cases, but it is important that the option to escalate disputes is available. -# 4. Aragon Network Token -Agreements require agents to lock up collateral, in some cases for extended periods of time. If a highly volatile asset like ETH is used, parties of the agreement are exposing themselves to the volatility risk of the collateralized asset. On the other hand if a stablecoin like DAI is used both parties face an opportunity cost of holding an asset that has no upside potential. The ideal currency for collateralizing agreements would provide competitive risk adjusted returns for holders and frequently split to ensure it can still be used as a stable unit of account. It would also retain some of its utility while locked up. +After a final ruling has been decided, all the adjudication rounds in the dispute can be settled. Jurors that didn't vote for the final ruling will lose the tokens that they had at stake. All the aggregated penalties and the juror fees in a round will be distributed proportionally among the jurors that voted for the final ruling option. -To optimize ANT for usage as a reserve currency for agreements and minimize the opportunity cost of participating in governance of the Aragon Network, we propose a monetary policy that programmatically manages both the supply of ANT and a stability reserve based on a price target. In addition, to encourage participation and long run growth of the network we incorporate a participation rate target, inspired by [Livepeer](https://github.com/livepeer/wiki/blob/master/WHITEPAPER.md), that diverts a portion of inflation to reward specific groups of users who actively contribute to growing the value of the network. Using inflation to reward positive contributions to the network is similar in principle to the coinbase rewards in Bitcoin and Ethereum. +In case that no juror in a round voted for the final ruling, the juror tokens will be burned and the collected juror fees for the round will be refunded to the creator of the dispute (in case that it was the first round) or to the appealing party that sided with the final ruling. -This approach to creating a low volatility currency is closest to the work being done by [Fragments](https://www.fragments.org/protocol/), but is also inspired by [Maker](https://makerdao.com/), [StableUnit](https://stableunit.org), and [Basis](http://www.basis.io/). As research in this area matures, we expect that there will be many low-volatility currencies available with slightly different risks, rewards, and utilities that lead to their adoption as the preferred medium of exchange and store of value for specific communities. Within the Aragon Network jurisdiction, the marginal utility and rewards of participation in governance will lead to ANT becoming the preferred reserve currency for collateralizing agreements. -## 4.1 Price Feed Oracle -Agents can agree to act as price feed oracles by collateralizing an agreement with ANT that commits them to provide accurate price information and not attempt to manipulate the results of the feed. We can take the median value from all participants weighted by their collateral to get a price for a specific period. +**Redistributing Collateral** -If an agent tries to manipulate the price feed, a dispute can be created and the agent's collateral taken. Since price information is widely available and fairly objective, this mechanism should provide reasonably strong guarantees under the assumption there is at least one honest agent monitoring the price feed. +If there was any appeal rounds before the final ruling, the total amount of collateral that was deposited for triggering each round will be assigned to the appealer supporting the final ruling. -Agents which provide the price feed take on risk by collateralizing an agreement and must be compensated both for that risk and for providing a service to the network. A portion of inflation is dynamically allocated to incentivizing this behavior based on a target level of participation. -## 4.2 Stability Reserve -The purpose of the stability reserve is to dampen the volatility of ANT, particularly on the downside, in order to ensure that it can be effectively used as a unit of account and store of value for collateralizing agreements. By optimizing for store of value and unit of account properties, it is likely that ANT could also become a common medium of exchange. +In the first adjudication round of a dispute (the original round created with the dispute), the Court doesn't directly manage collateral (as there may not be collateral at all or a different token is used). In case that there was collateral at stake depending on the Court ruling, whenever the Court has a final ruling it will notify the contract being *arbitered* with the ruling and this contract can then distribute collateral. -As the demand for ANT grows and prices rise, ANT is minted and sold to collateralize a reserve. When prices fall the reserve automatically sells collateral in order to buy ANT and remove it from circulation. If there is insufficient collateral in the reserve to buy ANT and maintain price targets, bonds can be issued to support the price and paid back by the network at a later date. Unlike other bond mechanisms, the Network's ability to pay back bonds in the future is not strictly tied to appreciation of ANT, but also from revenue generated by services provided by the network such as the Court. +## Fee Summary -If there is sufficient collateral in reserve, defined by a stability threshold parameter, ANT can split in order to maintain a stable unit of account while ensuring that holders of ANT benefit from network value appreciation. -## 4.3 Price, Stability, and Participation Targets -The monetary policy of ANT is intended to be mostly algorithmic, automatically responding to changes to price and participation rates to promote the healthy growth of the network. In order to respond to these variables the algorithm must be parameterized with a set of target values for price, stability, and various participation rates. +In order for the court to operate fees must be captured from users to compensate jurors for their effort, risk, and opportunity cost of capital. The market for dispute resolution services exhibits some dynamics of a predator-prey relationship. Disputes will be more rare if there is a common expectation that the dispute resolution process is reliable and fair. The result is that as disputes become more rare, or are settled in early dispute rounds, the incentive to participate as a juror decreases. As these incentives decrease there will be less stake in the court and the court may be perceived as less reliable, resulting in more disputes and more appeals leading to overall less consistent and efficient operation. To resolve this issue, fees are captured not just when disputes occur, but also on a recurring basis from users even when no disputes occur. -Changes to these parameters can be constrained so that adjustments must be made in small increments and significant changes would need to be done gradually over a long period of time. -### 4.3.1 Price Target -The price target determines when the supply of ANT is expanded or contracted. For simplicity of implementation this could be set to a common unit of account like the USD, but ideally would be set to an inflation adjusted basket of goods similar to the CPI. Targeting a specific currency requires little intervention, whereas, targeting a basket of goods or basket of currencies requires the network to manage the elements and weights of the basket. -### 4.3.2 Stability Target -The stability target determines how conservative the automated reserve policy is. With a high stability target the reserve will hold more collateral, however, as a result holders of the currency will experience less value appreciation through currency splits. It is likely that the optimal stability target will change over time as the network and currency grows and becomes inherently more stable. -### 4.3.3 Participation Targets -Participation targets are used to incentivize important contributions to the network including maintaining a desired ratio between collateralized and liquid ANT, rewarding price feed providers, rewarding dispute reviewers, and funding the treasury. In general participation targets look at the ratio of ANT collateralized for a specific purpose relative to the total supply. +- **Agreement Tax**: A tax is imposed on organizations which choose to use the court as an arbitration provider. Taxes must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. +- **Dispute Fee**: Dispute fees are captured at the time a dispute or appeal occurs. And are calculated based on a flat amount times the amount of juror stake selected in the dispute or appeal round. These fees are distributed only to drafted jurors who rule in favor of winning side. -For example, if the network wants 75% of ANT locked as collateral and 25% to remain liquid we can set the participation target for collateralized ANT to 75%, then for a given period if collateralized ANT is below the target more of the value from inflation is directed to participants with collateralized ANT, conversely if the amount of collateralized ANT exceeds the target, less of the value from inflation is directed specifically to participants with collateralized ANT. This is beneficial because it allows the network to encourage the use of ANT as collateral, while ensuring that there is a pool of liquid ANT that can be held by market makers. -# 5. Governance -Governance is about coordinating groups and making collective decisions. As the size of the group and the number of required decisions grows, governance becomes increasingly difficult. Often the aggregate preferences of a large group diverge from the preferences of individual constituents, and each individual constituent cannot effectively process and participate in all the decisions that are made. The result is a tension between scaling decision making capacity, and ensuring that decisions are representative of the aggregate preferences of the group. +This fee structure ensures that there is a consistent stream of revenue to support the operation of the court even if disputes occur irregularly. Fees are governed by the Aragon Network organization as described below. -For the Aragon Network to be successful as a global jurisdiction, its governance process must increase social scalability relative to alternative jurisdictions by minimizing the trust, effort, and direct involvement necessary for participants to benefit from its operation. -## 5.1 Principle of Least Authority -Rather than one monolithic structure, the Aragon Network can be separated into components, each with varying degrees of influence on the network, if a specific component has a large and immediate impact on the network, the governance processes associated to it must be highly authoritative. Similarly if there is a component that does not need to be changed, then it should be static. There are four primary components of the Aragon Network ordered from most significant to least significant. +## Governance - - **Upgradability**: The ability to upgrade contracts that constitute the Network. Granting authority to upgrade contracts is a superset of all other privileges and therefore should require the highest possible authority. 
 - - **Courts**: The ability to arrange the court hierarchy, and set arbitration fees at the court and network level. Courts are used to enforce agreements within the network, significant changes to the structure and fees of courts should require significant authority. - - **Monetary Policy**: The ability to manage price feeds, stability targets, and participation targets that govern the supply of ANT and the stability reserve. These parameters are critical to the stable growth of the network, but changes are constrained such that the impact of any single action is minimized. 
 - - **Fiscal Policy**: The ability to direct discretionary funds held in the Network's treasury. Since the treasury is isolated from the Network's Stability Reserve, governance of discretionary funds will have limited short-term impact on the network. 
 -## 5.2 Stakeholder Representation -Actions that require high authority, such as upgradeability, should ensure that all stakeholders have some way to check the power of other stakeholders. In the case of an upgrade of the Aragon Network we should consider: users of agreements, ANT holders, and Jurors. While the exact processes for governance of network upgrades has not been defined and will ultimately be decided through a series of experimental deployments, a reasonable process that incorporates checks and balances would look something like this: +Governance authority over the court is granted to ANT holders by way of an Aragon organization. - 1. ANT holders vote to propose an upgrade - 2. Reputation holders in the supreme court vote to approve the proposal - 3. A wait period is enforced before the upgrade occurs that allows parties of agreements to mutually decide to use a different arbitration mechanism, or simply settle their agreement. -## 5.3 Incentivization -Every participant benefits from good governance but the effort and opportunity cost of actively contributing leads to minimal participation and poor social outcomes. This is a classic free-rider situation, where the benefits are shared among everyone in the network, but the burden is not widely distributed. +Initially, all votes will last 1 Month, require 50% approval and 1% approval quorum. Creating votes requires depositing 1000 ANT into a *proposal agreement* with the following terms: -Attempts to resolve this issue by incentivizing participation in governance can have unintended consequences, for example paying people to vote will increase voter turnout but does not necessarily result in voters fairly considering all options and voting responsibility. [Futarchy](http://merkle.com/papers/DAOdemocracyDraft.pdf), in theory, does an excellent job of aligning participation incentives so long as there is an objectively measurable outcome to optimize. +> Proposals must be made in good faith with the intention to improve the network's operational efficiency, quality, or breadth of service, and benefit all ANT holders in equal measure. -However, in the absence of a measurable outcome we can use collateralized agreements and the court mechanism as a general primitive for incentivizing participation in governance that generally aligns with the values of a community. In order to participate in certain aspects of governance we can require agents to collateralize an agreement with ANT, committing them to a specific code of conduct. In the event that a decision is made that violates the code of conduct, such as voting for a proposal to send all treasury funds to participants who vote to approve the proposal, anyone can pay an arbitration fee to raise a dispute and put the offending parties collateral at risk. In exchange for taking on the risk and putting up collateral, the network can use monetary policy to incentivize participation without encouraging participants to vote in a malicious or negligent way. +The organization will face many operational decisions, including but not limited to the following: -# 6. Conclusion -We propose the Aragon Network, an opt-in blockchain native jurisdiction, as a means to improve social scalability in the blockchain ecosystem without requiring users to give up their privacy and freedom by associating their physical identity with their blockchain identity. Economic incentives are used to create a self-reinforcing subjective oracle for enforcing human readable agreements and resolving disputes. Since the network does not rely on physical identities to enforce agreements users are required to collateralize their agreements with digital assets, which can be highly inefficient compared to traditional jurisdictions. To minimize capital costs of collateralized agreements, the networks native digital asset ANT is designed to be an efficient and practical reserve currency that retains its primary utility, governance, even while used as collateral. +1. Changes to the organization's permissions or the content of the proposal agreement itself. +2. Changes to court fees and other configuration parameters. +3. Managing a treasury which is funded via a portion of the Court fees. diff --git a/images/permissions.png b/images/permissions.png new file mode 100755 index 0000000000000000000000000000000000000000..dd5e184fc8732a45e2ad7814f9fe6150d42bf5a2 GIT binary patch literal 16051 zcmeIZbySpJ_cyF4AT81@D%~Mnf^-ZB0uEimNJ%$1NGOf8bmLb-LSjgXp=(gOhZ@OY zL~4NN;=b2`gt>IBmg)W%$MU+xB zl@G~e9+XTyukK(uY?Ud0kk#?bTN(U93D`=#LpHb0N!#l3})9FC^u zql;bXS`px<6(Ook@g9eeGwSD-^YGm8jx$f;{Y{&R8H6CnYXP;vW%i{gJQ;QBK>vsi{3Cz5v?Si;j=d+YU-{8bH9>?=u zLjA*Jxh?1S_4ZPCh8mY1{HJTDSbXbV!mt|>8*oOfE$$C)**vy~jbk=szpEl$ zLFx@I^1F;7CbI>x8e%-N;N!@J9oc}OOg_`a-SY;$MMrUd)x9Go8n!e#i`!R~aHDe5 z!GNGauhs$gx=XW^bq%k5iPp9S51v7=`BIJPmpvx?W{aiNdI#hu-DtmFCLhoJ-;IX( zxQ1q4zZ6+=@u$GIk-?4^nN2>(U=c6rfH`1l0T{7IEz3`0(zy{iBhdnF>89Q@cKs?0&dI#> z)7D-Mt(!Rk?DE(HCHIXC`?%`)IoI~=A)#Kz{;ySSpNFKj%WZ~yLU9OVnmeeBOcQ0U zu$Y%d=}tBMpOi=?i+;#F%c*fC;%OSBJ4Rnek}bob;Nz#DzccnR!wbI1 z*#5$Jxz9Vz`)%sEazXI)eE=46w%_uDDpS9D^2%>LrB@;Ycqx5)+Fz_N zuEF)h8%}5c6Wom=BIaByt`Bu~OK54`E$u4-o%F4j63j}JERQIe%11IZr!3?uyO zHTjAoBjoawr}w#?Oo}Tb#(U1$UfDz$E_pUzwwDnK6)C4h{5SHhEWFLvzBMpgmS6SljyU;MR=pnJU~ zJjw#BpA@RHcKb~>*AYRoz4f$hlJ+N?I7#;WPm8*|KpcHz8b2y`&fD|{p_!Dg6d6J7 zyx)EmEPU~2!YFk^#dpfghwUeK73}vv`9~V{k9LdG%r#t^ck69OBsaDCcq!6H{p%d^ zZv`)SO|kJ*Hd;IE{#}V=VK<=v)@qk#CicpuX`TE042u~}iew3vsQX~zk1FocKm5p% zBQX@R-+J8XZxM3gRRdU#!(&v|$4<7LbIb_}oD7j2>y(#=AGUk36 zn($?K&qBIZ<7E!jgpYpebLeY7ed)ek(ZDW$iH=WtI%O(?9dQvj&z8`k7k<0kF|a1R z*Z4RCQj+m0Uhb?+I98x8hwajXm#3och4A@KZRBZH%b`YDvWfLaHbwu#ANVX`b&uzS z>nCAO?+Dcq`HQUq99d-Hm${dJN?C`krmdrg}#+u+lntBYd};J`kcW^_yN+yb17#4W+FA+UYz zlV&H($js~I;a7_bZkeXnxH;zWe6rR-i0Xz#f1VtT`1{+xb*11iaI zR8Dl}3f6l;o*Ycu#D}ZkCfnDX5)H@|fn+4sR^CC>(lpoO(f1vCPfYgz^sk9- zDG4WR-TVK%?)v?;Drcwt>M~yeh8dCOxH_9^=ME3K+(Nz4$WI**g{3?wb2vXi#wTfu zFNn@~O_?PT3A702hdOtEAkPooDX$&T$no3Aux&k>)Qpok?E6NF>*!Jj0438#0(YfF zz|*?w`^p9C#uWR3eW!2DkmL~9&D8N1;^k~q7agWAgCo#%&S!WQv!KxhTdPQ z5dG@sK76qFw)4H_eqgs5SIJUbPv5Sm7_r;B+u%yMIRa(`sl+j6WCfq0@;fsLJvuFb znSbMhc_f_59(3GETDsWtIo0+)1*T=fQ5QCB*kR#0uG~*;;zZ6}zuM`E+Z9hN?3Upf znaL03m<`zdZloqsHZ2c?%&t@P!*{x_X570p#+J~r?4Xl_l@(K;Ip>B1b$c@e1LBMC z`;ySB2nLsXb9U`nk5j_S9d+{(aVj*#>HSD;<|a)&hEvL0|IQM)$uXR0UqT7@Jw_xs zD2qP2cKZ?5)VZ&yKboljzULzw~pV7Osn+rp+$}rC;f(=Rd3f*r5|?@)DbTYU$L!Qkar<8 z1+q!$ML8K~uTu>_u)QcUdF=gQ`LnG;6cF)JfsHA(qMx`<0G_~UAjV7qVdu}75?RHN zP0;Td^Pr<&e|8&|NS8ozr)vX$#b#`i>MYuWQ`Rj4(LHrO`->1 z8NF@%Z6~XLfN-nPu;4xCS=IXYpP>L`tT=+fwWV4xOS!Er{2BKt^lj|v+{k70)J2^1 zUYVb_TgGRi7-UQrsWh({q&S6JGuIQLjsk*#$w!Lrv~U`83EAsC7xowuQuROjWmL*I z=TtkKDtCE;w35nA(h^obyFA}Fnp^;4E21svJmM5M2xd~p^B$#3LC0q4AwbY5ZS_CW zkUw2Z8fdGvF!lx<12w=?m9+?jS1W2%kLZL}QXAk~C^_c zH6y;#NhF}f@!6rkbFDAYY7wv#(`4&P1Optlr>Dx4QVC>&lwCQ%bSqLM%rX)eK)ys| z*yl*LZhUs+#t5|jL3k!AQ-9e>!vp{}@4^bY$y_@AJYtGBgE@S>3(j`=LrI19oP1?Z zg2Fq0aWD~0nVFJxBB66+`Utx4O!qAqX44EgXs%M;5a|%BI_#It_T3YOOa!FwTj(>iAxjP z+B0LfY_Cbwi&R#5!S!VQ5|+S&XVWfvmm&+C11V)8jJwn!+qt_To0Efg-p21OwTBe* zDqMyD;fG*7c(R1|+tuZ{k+%|EuI~l9m!%XqA>b1ozg5hrJlWF6Tsz`j=8#<}aPevq zN1x|@o-!dcm8VXlF#1O|YLI7MxzjjukFxPE*n!Umr7201teiUuUAvAUvCb|sl2r1~hgR*Lx z2hMr1v_0cyY~@4G?Yu#W{6$z@P4S$%mi^njZ5|sHgnwM+L*hOiBTAf#HQyIHM&y%L z@-k*3oMRL?6hSo0BM;TFh3mX#Z4fVw+51RNzS$3H)ogsdRGW73 ziIDGz$FO(gt|)$;ylsMtg|E&W&D!lex+>6`QieaeD;8p7uo#!k83pXcuxqgX$KEw^ zYq@uaw~xJH856=0`7HP9!ipKdtzMAooMDlRzYXo$lg2i&-{k6vy%PB{1xfk&7Su+G z3AM@;W{~^SBkktQmY>ww2`YwBpNA7f>r@J#1_VCSDA(`Xe{2%mH;VB=1N8E%yY|)# zW!6lW452Z$*h(6MI-wEpP&fS4_BC?w{vif=qWhd)c;>E4l#p(Rof#|z{tZYh90nVD z)5WVU2g^UKEY}O;q_`z_zIA=NLn`r5^tgn9VHgIIL3fXt#g!mEW%)E7k{6p~<;&u( zYS&E8^qdC5qw1&mV3Sf5!r6_zzU(uCJ(T(eE~Z)>6DLWz*eCPT!RTmNW`FyedOPaNDAz>1W$m1LcO*TW8&7Ms#A2i7Xmdfx%M%B$$r>TEGOtOu zU{Eo`_c$BH(j>Y2Rdnp3pCH{k4 z=lYpWY$IfY`~#yJ| zf?cwZ6D7rB=rd>m!CQ>e-%Jc`5-+^L_p*-k)$0tq)lu8Ayl441fUK0Wh7b-T{4HK%D~@7 zRjf@1|7&BpQFM1@@!;i1xXyB*`unmqBt(KWplwGyQzaZ13xZPL`|}(&J~UCVE{Uuj zkNU%Mb)s7Ab?+3H`&hlo+WdW8RHG`evb0IU?qM)WQSR!8m_rW(5Az%63Dhvf@@;2n zTsYCL%NAF3O%a1ZWfF+iq%4)jk{&wgS|k#at1{csWUtif^(A?5BZKqK_*o9xQN6H_ z1HCLC;UveZgVBeo5GAu+#tr&S4crl=mLVI8Bw?Ul*-$eApYj)v8kFz0Z<{ ze49Z{P*)@GN`AhcOQ7B2?Kqz;gBM+G++ zY`$jsu6{%T(3a+J7h%j7Q6TS@0<^{)_5+V0Ovq%bYB-%ApV`+EHY7Y~P(SxuK)I!@ zLJZPyVZ`78ZQtK%zkLTUOsKDBbFr*F7E9|K^Rkonk$sk%%D@SJX_mXj$p!GC@CEx` z8LN3QI9C9`Ub|{y(z??lyZKi6Q5`_yWSX4w+sy7d;Y2gi$|ri*F1&$O8!-o;tOz;+ zU=afFX2q7cK^-7`SefF%jVzrc;6{GO3qD=GoIo-Pk>FoF0^kHSJUx0F-S1`=e7bH` z-r&D2Og;BgAH+mVYxJr5F&)Dm03wJp=Nt-S5!aL|2;f{@v~K|b9YHkjh;;C2oIuV;QIRn_M%lK^bt8AXrv$6*MmR>QnM-#&4iL@=&2nDpQ!g`*8jsl#0qHzw+o3WPlc>t9{uiKY z|5Qk(k2I>r_yGifER5eM<~ux73G#&^Q-4DFo%r8z#aI^`Y@sp<--K@{Q+uzO$R)$V z3&@co&r|U5cu&~t)uF;cg5gfo0NfKik1lz>CbD6XM}ZJDcqAT8j5@(YuO^U_{1MT zw-IjiD8#_DTgynM&9YB$mT0}~g6Bl6ml@p2Hn4HdrI}B1C5)oe@(Pb z2b#R&#p?`q@6yFBCFl;NlU02uP64jLIPip+M~P>~fBP`i8$kniT;DA$VoO%OSH#kC zdH^_>wl4!$s~zWi-8do6F-~X=d@A{mMtv@Yt^gQJD(em3Y&5Mu#c3@&b-Hxsso#uqx7}&XAV#)1+aFW2ZD0})sUW-#4mA!_7w)l;Rqci+m*af4 zrZCQ@hpvU-zyWx)lj(o}L)xG~*U^B^SMQ6%xdHy9Tyg&P+Vdf1BcG|_&Yas*be7p2 zjZU7RVj>f7#>U2~oy*glCD-XbiOZ?JZRxmX&*}#Rl&lL|kV=0v7yL)yXMIQi?>6ys z_Vdc-mx}or{5DP=#VLk_DSn>#Jnn)EoQJ<47uDZQVB|k;hhJ)TkNHCACTi565?awXm6~z~cxGU_9Y8cVeN}vA7Uo%4 zO1|Aw3dX$AuJYb-dnE@^9-SNX-9`g!l9_u-ok&Xd=YWZ&O7tBtVH)3C9hRU!dSwP| z&h}VsFo%etMRT~frnq%hg;#bBrgjN=I0Kp4KRrF#SWk;>ug(26IXZG2V00V47=?s* zWhaHDszoxos|CAH1Y^WB&2v=AaO1wFNLY04DL-OG>@_ECx?bq*ke9aeqoBqR`s$UkBh zNL_Xw0%)b{0}GXLhcINEG`~S!{J!@Rz+(;`Wxm-)hi2{!^8UluRp&IT>zGjh2sjRl zRQZ|&0%p_x+Z9RnIezS~0N}4^batXLv9a4UZL)z1sc6AHjd2=;=EzViGJ?Rr7CI!+ zy3iJUfnDqLTip97chl64=%7_WlB2j8&%&HIOw=QVh6_OC62%ruvzWOeT@jyii1C>` zb+-%|o9`U2wPDVMFE^C23j{dz4%=a0O*=h`qKRQPXyi)Q7)SXWN z_mzDGQ2wsWBwxn|ARpwkSj?1iI8%kmy=#s1aQQu1gxo<3+795@R*Z6scQvhK+b$A= z#&_eyh0z--XOkg7mb7vr0+Wt^u9(ft?$o(FW)U|A*Xm7QUF?Uj{2i8Hm{Is~2Eb7g zP%dp@q#;4fjFNKyOCvL?xXeyTD?r4(mz#B`x7XM9T3qGy_27*u{o%MIK5hB_o3`-E z{1z=u_ZS^c3{S7gM~wE+-02S8)TdNO1K|f{w>GhK(eVQ+t6gP!g|H$DH>?bT3jBjS z#KDewf}~z45Wty{it9`^d+2x#68O;?pL4enIO#q1$IB)Zz8rph_~5=ian zoPfQigx5VN>}y6{co%E8CsZ^FS%65`Kdpme*kd2bS~A5YdJc`f!nsygX)(n~s~3%? zR)|o4KcYkYc@LYcANv4xCqgcbgJWEpx_!9oKfI4=SEs*!hi{Np0~&Y-o$Ob{Kv}Qu zvpQ{Pz>8Lq+*{eq_Ax&M^oX!?=~Em8^Pymo(oQ^<V0Gcxgf1vpsxh;Br+C8Eb`1e%)^dX=upDQBFL+cp~nWT4;3a9 ztY?SdLnnJ;7y_~AUL&3G0FkS$VvpgcQ%{=rV2X+Q74-R>|Y2fp0 z*{=Y!qO=%FrC#fBp_B98*?q~LLFO%MuwEi4IMn$Cftp-|#L#q4kyVlM-BnrF3^t}G z&eqa+Kz%~+wn?3Kdah%G!n?``0F-y?`+#VT!r=$S-1AJz&k&`uvfc5GO4_yV|C)r- zp}3P`{vMBn5ZA`Vv>afS`w=*j=gTF}Pk?~Nh*v)UI@4J(B4OaEi@%I)iLO?fp>P^{ zgT5j6qG(2p?ls=rW&{m>Yuq3)ql6%3pWh0exViAC0inB&ZSofhT3LTjhioMxCY+35 zZo2-m7yW9-591OQ!XKI$0P-wU7Mutb_e@pbz4!h6)x^^PfXU{&Cwjzf4s+a*rZA$T z%#rAMSVyU%&T)?;+w(=A@u%_D%d>5zXNfK}cj3*2>$K=N-?koV69d9}+t3+-@X2Yj zFkjXD3{;(Uv4Tc~I7?aIv&I7sKAMNh@_St2m=O>S| ziQG%dk?gt;ijspAWin3$6zSEax^FFdQax_D_&dic5X$67&dvPoi9n}Y!X|5MPe-1D z^u6vA+EKR4jidqJRa&<&U!6QtrIz(J?WV9A9JeTid7FC#19!XW5M&7Y0ghyn4_(R5 zeeV;@^;mU?q_}%OA`P+ z2qbZ8Zby7isaKx%@u_lcHOc`zYYO#e0+f45h@r(JW6l}@MDuH9HNhOHIYFw-TM^e` zd#G(Siif+3`&xaRxGv1KNS&T;=8|Fj)`hEdH@y0<36O8Nq{#Frz$mg8fs|k+X`VLX zIBe4h_~`^7*mGQJwF9D_XB1b7T09`n4b)-NfKrnblc->b~TserXzS5|z7Pmh;EEROqZq@J}r zUN|`%6qrDjWb(JJrhu}9&l>`$_*$05oKMo9V=#Zz)CnxC9kTC*_$uLFDBXA1vj%i zO0LUM>7#9De|IxU>4cv!NxIwiB?bN&S55H)@?iiBs1AlLF%AOtT#B|@?YKnjGvXo$ zKtnCmG*|0(?7w3X?{42g$OWAhUGv_vUq%+i7w5;IYvKGGeXkgxXO{xSOqY|^v)^A! zdl@~n?2-U&(a(P^Q8i*IYoEV)=Y@K2Dxl?h0yV@6>>?m|clv!B))t$2vO85}VaM!u z|M0m)jq9P^nzC_f$eMDW2l^sGiIiX)(@K}05n?nfVcsAai~~sSkxbskFoXt=mt?*s zf76rhNWct_uoohjFbbV}#~51q4YS{^5On*t87B7JUb6;8!HnCOy74HQ$JT3zzi4t;U~Wd9T!LJFb-i^M9| z+rAnh_jZGWcBQ1CR4J8dw;$$;}F0kWsLX> zKetvDMciOn_kDje->EPI07vV|1PFIlvRTlq!-w1@~CJkCLFv*WIyvK zbX%-Gt!Sxni{4xA=0o6v%i)!uiUdk?gZ=x&$C%2&WvNDhJnlya^Ft8EbX1d1^)Crh zDtv!?vJx4Ydb;MJCeSxJ#>Pjg?RM}3Ke95%Q`+VO0kQRBgdy)8JmPzNR%+WWfEGTM zoqh3^S>m7{EgXoqNgI+h^+;Z&BeE`LvR(*#(koB801|qVK=X0ia4=eMG*6+K=)gxu zGRzPnG-e$uOej$CDDD&K*hP{;@Vk|_A4KjBFqDJLbA(A25M1%Pas~6x7xTdn;}F`S z462X{%|+WT5^-X;B=8Z!Sq^IU z2T3T78!@FY3ap__lcBZPrpEpUD4LU*37`EzQNZjI>0V=nVUFm2DNmtj)^;pqLUq#3w#T>o7a)_hMXST_HHYt;s)^QFSuZ4*h`|8z;Wqm@UDqgxxL0 z*?pvt#<_YI-89>%(hXX5my_$g9mVzY#XYu!Cc8i?oD_>9RiM6aLMvarIL+o19VG&L z-=jdI3wQZS{UM&x8}&lD;i=rI_UDeK`!#MdnTzWUy=^FsPYdE?^lt(7jKb+Y2Lz#V z#ICfzpe)|1EIM3~%k_6Ow6Vv1rm?3rv(mWxrQ%;^<_7h^A$&ysn~52GjN1E}b3mD0 z>aCr7Vpi}Vx`m8vu53B#+@6#8P`2n9Wd{le)W(6wd^R2)BlCdj+~8*~j_h3D#(QH9 zX?CV|WZ^(8;`-*Jd#ND}p z^H$6#QuO|{qGi_jrRZ_)Gb68v&c1je6F!nccNxR5+T0zto{RG@?{F4qfNrvL@5-6y zw}s2m%6DfL5+F$S9$Ic8ilGT}!uq;3>zMfTFVWjVcn?6?bo*f(4YrCtfS`5o=R+tT zRA|vb4;~xUVOdz`@DUpHx?!-*x|n4!L9*oSsJ&bQnh~gZIgoTUx(W%>a)AnHGs8lq zH-8ut2u;X2O@9*<(>HCK<#?ZAO>R;lq#y;FgtR`07thTX_b|~$Kz1K0SbYk8gyesn zJL~QebEo^=3h}+1_|YPsyE*rIHMmyYW0YFHy(1QMC3;OCegKAQ38NFxA6L(2oL`#6 zJA3T3u%%3jqNn{bh#(AZG9^q!6pZq&DR#POr)3#mwGJXdYudRsqVwtoF7?SCJo8k#Wf*X9zHz6-++GP?5jtC6iXD3 zf_g>_)H;1YO7=j6+7)5FO~-&>K0=srgciI#agljZG-Wbp`mBP;ewYryopj&U?@h`-;#?~D-uU9ibbIceY z^z6bB_FdiRMV=qde3&n{rii2PcS_Oo<9!xz=GgDTS?y2`G2#TBhy*Qx6kkv1va>~X zK`aip8N4jP=GF_sHkqUKSer1ccheX2-Skj#?H0NZ$qfnaU4!`M{t7DTP|%DkR&|}0 z%5I3`{QyIRLy+PW8Jqy{bW|fBq61k-alep#L``1yjU9KTn2Wy!SqyscXELir-`>HldVLL$8ZXVF6S%G|C z#2~Xyekko0FtdJ9`3{GI-!i(MK-`mvgxYdGRKoDpcWr&kb*^1N+GWW(Iq*#7=(r1K z=v%V%MQGwOEhySNL~5)vAQ|q{O2<+|Y-_kEMVJ|ftGIOazp>ZS6Seb>`rb2eK@YgZ z*#m|4as&6Cpl*=xDy1(*+-O52Tb#lDaj_#$3Z%vF!yc0ils#!gI~f^e)8FI5R1SjY zAlLcq>uixS#&I$7W-=1TPDJ%PF!Tx5ATRswmedd0@NVr@frV!u&na_|(`>&GAFt6Q zKdphG-tudwf@!Zm-?~UOxA)`C3FQj-kPszuby~2 zr5XC42#zrMk=29J8UoG3ylVZ(5h^200^Fq5UvnBQKT-b*1{Wpb2`#!iL0G0(7e%OfPni}8wTS$g;d+LwF1_abyfn=TpX^zK$p!q9 zBnLmGeVi*XrAUiCN9*6lW!K81srs7!P1`fXS(yK>uu#Nbii5NIrKiq6=}sHQIs2_$ zO7BgHhd2%zd5Xx(lML_p&z$}$v2P&XG&13ku2`fRbP;Gb{l04-FWwyA$cw3+z|8T^ z?LWerr3{yA_0H{VXU5X_rO|>8-M-E4H@cW|TyBW$J(d^HvCjZwY9_Y%a+fT;TX$Lj z#kRGPw;kyNp4Hnb=`pXzdDu)mH*huLA|D)ozTz`~*;vjnHCRc}Aeo;#eA)bY4C!$} zK*4!-R6*_fMqB9-9O{(SCt$JbV-T~Ak#0B560019uY*rt{n?(=$n>7}X|}Lvj;rso z__F!0+c#s%?}lFgwMfgz7;^fKas#Fy5j#qIxK!KzioKE|jb+Y0_+sbqd;Lpi|13k- zfEnj=GpNq}K6o_t*!S{OLVwrCRJ=0jqWr0V&Zuj=7qaEe+?V>m;HI5@@Dk>HS=>e) zv5-V9Qnx&6SW}&iZNs#G-R0TiXm`5w30`P44~Df-bZ zP~fZfKmJx!^Ih5_!H53e4F!g0OXvRGr=F*OcSmZL%V-v3@W1=kmqTz2Yfel5eKASF z8|%N8*Jx1G@37B3>u6jeHL5<7q&@!H zEaBCOt0m4p|Eijhgg1p*E*6a`e2W{{?oNXJ2u7SIHc4x<8ws-YRGzz8-#Ahd+0QU;_* zC$!)=inN4|)Zjo8S}36jA#hI^opHYT{@lCnTDPq42P{^?d){;QIeVXdo@YPj@in8X zJo^Op?bxw{M^E=Me8jvYHV@OyWIPcr0R&hFSDyhHEuC6oIcGsE1qbk91?P12g~vYWS!BTvXR*$y`ILt=PH*Hj-A?QpsczZ85dex!m%~8LbC9I5@fX z9v1%l5Bn(2{cXk3C;$2BpZ{mVaY;dt^FN<>up{I;7gvW4MOCB_w z&z!|g2MBq#o~OKgDkI?Y#Y=O2 z;#CAaN8~$mjER6*&>&KOVq4MXa1|}hzxjiphjj%xh{?c_H?q~nj+4$dp76D{aELc; zM&_jUK2#>MMEQnriA#-|o5cZBh;#uTj2B_K*D8YE=jB>%NfDDp>n(OkeD|7LQgT`G zuiYPSn|$d-!$H-VYnz*^gv3&!ic7`NDZhyqVq!IgHM7->?i`Ksjj>Z(XA|v$&@5JG zVttuw)#vbXe;pNCif6Nqpqt5T)mRj2;XQw1d7o{KYem0fxv0gu=ECoM6n?^&D<^!P zN>`jcS6Fq^-)k5|XA+jcRm)#5a*nXC8LoBvh*O?*n-A4iJLZmkz>S*9^CIT!+q z?xA?sd$A3g_@3XcR_Oj{2qkpC%vn`>8N%jKUoBOUvOZlT>y&a&hbJkJ5tp8y&Yh&b zG5^ltbwP#X7K^-PlWmv`Um5l#mwdYUw8y?*vCkUOYvoag>a+2U$EX+}i}#$opJ9ko zD%eeevrq)q%IlDPuGtG)5BY7Ygzh$QD4t!VLJ4T4-?;`0tNwT*&}xu|_4@R4L=Sql zZgqsBxjClUJV@SLsTK-e?@HIN7Sl`)qWaRy`x4^KEOU1ccLoo8_Z5WHaLs5eCX>3I z3yT8jE;v1==--ja{v;RXGH#Dl7%zxDT623-g4QP~C+6;7MUTf^O*6@REuY9OmFhQ@ zt9UhJ%EYOtrmhN0c3zV?drZT`^KmTx`(2~>g>PhtNwUO2O z8*s+CTqI7)^h)KRdyT*w6<{0}0#_6KiS*k#On{62%dFd<^dwSEf;Jb^`#$sDHK;t{ zJ5+2lP_S|~D@KzoBAXdZ!WyAV@{DX?Kk~ zh1wvCq}*aD?{^~O^5w;J<0WHKA#d@S0onT|?n2y(vog&`8u~Zr#f>M+ZAyus`7j1J z=gGv_TaXtC4Q2zDf>`+Q;?7fFw3LC*yA%abeHk%%S$YOC_}l(vVhQFigN&OhUqIGc z)UdUb#k#pbkH@&nUpFdX)P~yqXCEugIeyqS@X5ovB1|N6rp0a(r9AcPE60`&(;GIX zuMM*IQ4;HyvKU0)`cfg($J5?Pwe}hES)!JFcU`KXS%bZH!L0S4LbCli5xFDD&Y9fd zS)!jbm@{2VgIQLri@W-cIjLtB} ze#VCmOud13H`lH>IHxok7EdymxvM%=KU^~F3Mzx4%Fg~hp~f( z-(}&*+2Aoj@>!&mrW@8KaJh#v8g{6#=M>+B{w)@_IBQ%&69Oqtn2OnR!t0uJ|MI(2 zn{Q;UgkIA&c&HeX?Mq+|D?X23+n~q>L(*9@PA=^-VtovFm;yCjtBFxvHR&+uRw;doHF4F& zUe<%&`t;z)dT(WdNmr`^JIbRr78?6Vm;hA}!}Sy7Wz}@w$c7O1oC>&G)jy^4-5j0e z)c17w+rbSk15cZF}M*~w{ry^mlEEW`EjsEt>LrMi3_-01w~tvg3@Tq;=}6oT`2Wb2 zw63Ri>HHlB|1!n@!`Yiu=yp%2cJ?5ec&al%c%@yOsWo((xU7S952rUGWp&d^TSbzk zK9*g@&fYGgo@b6+gr0oGBhUPi^;eoa0SQUicELqyIq#`%Gl)Ys;Q$nl9h^J>ElQSm zic*-ozNj>$fO8jt-QQxZrq3aLyF}ImAc`$Yn&~1IIphsP`LSozV&Pua#1C;XouT)i zISv;Do*!(yvv?Ajye#s~bV>I^AWc6RUs=8#4vZWqD(5y(242&Z6OEmY(a%`AHTmnV zCeJs!+eBK*gvHey$q%b3=dTaidgdo7ds1iiPw{{AH7znoAD7$mVy^=~yWS9aPqy#~ z`b@h&XVj6pN~7^dU*}M+h|^X|uIOgC#J4W6<1x(n(fyF`IKTIryD72y5AgfaA~6N2HHjdkuX; zxY~Jjh*OrA&>c!Gy?tDTabi?2^u`;Uy^U0faO|L4cuaE68RW)HjJ_x-?>-harS z-t&)^+r7c~3;A#y9GqcNa)Ikhmu%HqzKh_XCtDI3Dmk!_fA#6X|2xjG_8eS}tx4Az z65E;9H^Vj9@8A29XJx${tT`_WcGMI5$M(y$_drF%nXtP12~l4MCbz)Zm1CU##qcAr z#h*56-~>xb`fz&8x2bxyZN#OJ1AnvGEWW)| z)TO~9=z4vX`VT+ZUIc!ZfD`lghN}ISbzBD4v2oGKH$)sGg__7_0s4u59CUjn$okvHxg(-3-{n<3{Q;KH>KL zoFip@`&}-b{N8Nsfneyfg1E08mTTg2Y{Qy@HPK-^wPA!+a95vV zs%^lSz3!P>vu+mtI)V%m7dTg4xEbX{Oo2R7digx<>#Tv?eg0<1h~+8NS8qS?s6jWY zwbLVWbLUU?=fCx2rx*wc*Isx1_I29o&d9-^w;JgAIY>9{`T7npM6M3%Nb~b=P2-P( zBb+qV&wMBQoU}dcrTPa-9e%+lnoj@uPSN^fXS+&{kB?#`+-K^cBs97!o4y2W|cSvmjNwtWhh$)u3PozibDds%?V zYH1KR{__Dt_Yk6FY97jH*6nTQ*DaF8Ui#!|poji}c=KisB`YYdz`5%an z{iR(dlh)TRjeXl?#cl0l9+N_azPZS5D`8U=)z{t!S2`_Kz7D&=exD(-+_J!3YT(&% z`DWk^)#s62Ge3lw7<5z^MCU&{+5F-5;3{s+8e#J~!t6?4$xZT{06jBx{^BGf+owX5K~!tg z)A9YbKEC^xEeU`nBEGG~Z{`Kl@;@x`Zv%d_*Z-j1uQBV}I{Cj7+6}pK7&L4Dd{>kj zy$tj( zP?F<{_`5RPr_$i3BNQwS~+0l>wKQ7ZE2ddu{#csQI^h4ygtd`GAAq zmW5@3S&^f0{kMR`4%l+@AYbR%kgRyXwb!+VUg40F>f@}P;yZ$Nm@cT48FVd$ZKGI3 zfF7(fBQ!UD?)U0~wLCdjXg&*2T-0P%VgfiYzw)v29rkuXRxsxXgbjfE%6Qy=C)f;} z-(_nX{$rz1{_CCs(4A^uM#CtK7FpTK5kHrH`!F77EsxI+`3uK30kZllYa3|&hOAO@ zjRT$itLwkb#dgmde&+@l$-Nb-AxMw+f$c3zA(-2b!gQ+~Hk$<)Wy!G5U_AIKNV)&V zV@jI;EaZmuy(`-oG5h@Mj;ACrdMoS8XKELTij~JD-qBWrS$)Cro+S0k{NfJ+Vj=j< zm=COJyDdvL0?BwU8&te8>q~eYQfDY3*1EY;Nr+$Wvm*!vE_G0ds&i5`GbILS<{()k z>L@=Icv%Xvt`-0@_E_$d;WOk`{1bxzHrL{|;N0*>UkKO_+Z{pxGF%rxcdGO=5$DMKQ6D08$Bc)?@c;ki~Bo zuwaRmI-w%~6>Bc6Wi&HB9}2EA+cH#aH=!FMt1L<#<0F*@e%+XH(tMpY4!>aZS6;&2 zI6_7M!84ueeOdx!-g={Jq~IX8OwCKLod8%&*D`nP<9d%Jd9}3cb_aZbkNZjgnPSUf z6ea$K`=NAu>$pwe5xud_uOe}qPi3m_^n3T&Ot)}%W)HAYDFJhXo{kefpI(@qhE0|c z`Hv_pE_};i{@k?qB;=4`cc3HpZ|O00fW3-zdbURQXqvAKd6IsPV0NW%ny_K`Zs-z^ z>Vqh*y-Q_UPV@Oq6aHl82nt}}@mp)@TM+c|h6s(N7bP2vmPBxTD-XK^js~)9=-#EN z7=vmV)QHm&Se<`&sK{g8km;1{k>^AGQas@Nx`&XyF)kt2m|dGGOwW=A1df=;f%v_L zCr*Tv1t+cWL>Nq_C5E*c47e24Z71iuwMRdSMCY#_!;>a9TEa>*0cu&Ef~F>i6~9Rc zZ4l)51qTPNH2?;{N@L-%F{XB}Ff#KV-*W<>H(VZm=0pdf~!G{X8`*i)AW z%F@U`xF4TWKmv5K;7|`DPG?FwMDO@zCX>8nOMbKp9JsQU?&fjMmmKI@_t?!0W`sft zsX<8)bgY(z({rhwDw(R$(2`F5b3NhB^0weRW>2~JgwE(tct#w+i|=M{$zbXN2qxnX^NP_BOu`O61r0<`usk2i+6fSa>&D>p?i z0+KFsQzR0{zjr)bIqMU)+fdfjXlqP!^VOvFV%*bt*2-W}kmhuLsbkA6e=WPcOV1lJ zgrGWSSPgqLuJMi=>2(wL4{p@Yl(Y=U?rK7_*wj|;!OgrIb$JOIO{;N6D!EZiFvSEm z(I&<}u17)>J*SG#HfEM}d;z;jRYi0Xf2@L=lH*40sHg`WHrdxIGK^vg|1fbQ4Ijm_aNa8BsnQQ_dB~;u9UV3#Zz70yQ9ST@%TgC?0E%&}&J=9jGHOt55UJ}V0 zRH(NmseVLlNziTR#~oE*2qWWHn-(C7&b(iI4@_Dk>Pb%#_s=Q-R_gkM(=09wg*@}cL>A{)nj@CxORUA z;*6+qhNov*te776OAtN-9l-W}4*XbcQxo$uSeHTwchCtCs>;tV4kbaM?YZI!aSj4U zN!&77Hl0V|+41`q01sDMe@RXPKNG-aTAh>vCE86xOfG%Aa$^&9*uyB+CKbsqK4M)4 zP*P={xLIwcA|V~@y8}gQ>R#*bA_ot2EeWd3-W|sMj3qe=XmBsR+@9kSnE%6~VAk|D zAJ)ISWzJf&cK)GkKF0z^0roh~`Z7&iF$=-?MR^#t@$sS8NIlNe-!q7WLn9;==^|7e zCV7)iZf5VBD(TPSCUgAI`o)yf_Tlsc^`wN;ntPWXH)NcIs*omAY4Zv{#IZCd1Lyqh z);?a?Bi486o*uZ>=^?B*BE2eaO!-BSt8q&tk$OAm%ZIBSXK{0U|)V9O_hu+ zz*DgW5^48eZq_rJ&sniIi)j$dejV-%j8yEsL$97LEZ^zmjvWtNCsPFOn z@;Smvb*|QPTKm-cwHh+Ll02fqoGJAWFHP+8APFy{bxNX2-F!C{rvs_2$)48Lj!DV~ z+iB{XAe*cNq~&V)=0bGv(pqe*-O8Ro7BT%vu|P-@YUm;bgNEKwX{8 zNw=+02Z^o+n;@loeo1yp>$ePAqgb)I>S<5~;4EGIJ8!w2&IsuLlwJK?NsCND{0&>Y zkw_m`qK%J*OEU&iz)ml{LAKaC9U3M^b^N0OBq;J{Y$j;(iAYXBQK zrPvP|lb@<$6F)8>D|e3eA3@W~eTMEes*HeyP<^nj6E3-=j~rJu zmB32q=7#p0&Oio8`LcHXN@=B&%URWk({chJ}O7-l>bpFMnY@7T6SbwnHBDSwA`Up}|e3eHJuc2+HnQq^hHi+yR}#C8^^X%GpypzDoq0ow4^OPJd=ADwuQ;fL*vzSvDAj;pcm-*IMUluU8_~)aWM^k&nd^ezl7*>$|fK zO~*&wDLmI%fd53?=ycboEni)yy|5+-MN_F&F?*st^>Z(DyJ~t0I2sLmx;qmQ+7V3( z^7J*mWU4N$Zmmv7z^yvW@%(_F+d8e(B3cAbB2^1b-$M~%ocmLAkuCY9Rx4y;pau)O z(#|{7tl&cqTwRY1eL+u%RB(^Fq8-hDTw_&K`5;dnw8ZDP6yj+RazS(gv&4aj_$_kjX z3DG-p*+BT5$8XH-;)v>ey~jW1gv_f=!p4F@mBXN`SPMJVE@_s0-TgKl9GQDI+o~oL zF+2qPb2p7Hb+;n7vJM@G^uQIQPO{sllxrZR>5HxIg1rjGYkj=fB3)_SgsazB&Nc24 z9#9=wh>BG@D9TwU{+#a>v~_vFGUgO#opk$LVc%xXZyu-eKMzyr9?(N$kyX-P&_o)DNTPV z!J~dq;T>}Zwrxa_Anw?#>MKqe=fr-qU3$siqq8}(n6}!jWh$@+A`LrnYnBaOYq88a z^IFbhS{0OvIO|n#HDD!v_EcFLpX~S?amqF#m~zg}V&~1RMa?Zl(85zY47)t0{71_t zNSbt7?m+VXITMM%X)CfNn|5bp$p+?*BYmFS&lb2Un`K=Uz0_Tm$dHs>l#zp)D)L=y zdFV-l4Q*(2q^}BTpr5hp!pv^yh7F<_BHmXU>d7biE+si@o`h2S)M*p7_V!GAWl?$? zZjRy8R-2$9dsc;-bjvw679&SO2Lc2_29Gz&Eg6f}tT*eKN(nB6g}?5Mnaz!gcflM2 zN8#mAwZ6l-D?MoSF69DSW_?Cuq_qb~Y;NIQn{LpQU8Qn{3tTeYExcT+&!1?zdEo>! z+}*A}IATN%dZ}#aP^N;Vt$6IHzka0{r62{OtkhY>KJoY8j)OIa3%Z*dlu`zyR!>f* z39fgen!+}@))yHewaZY`51yww4Um_j1?$RyBP2F~Twzi`nCXV~(B(6NL?&PzAxE$* zA5iX9C@auheraVAvkw+$q^C_{J(kbBj3h2|XZrSf33j{XrYE?-cXhA}n;0F@L0+Hs z6TL{&o7x3x)+B_v)4 zc)&+Sl24rVpf^XwNoeP;#Jn7w^aX@=U!2uQbsQ9(l{s{wMGC$UWc9->w@&ZA zk&zfJxc_CEV88XDaZqa#nG9J@tDL7`h2Iu&t;V4Wjk%Y?4rx@ek&{x>7tPC8oUTcY zDfJz}D}BUi$kVwdcz-pB`vKXadq(aNC(Cch+$q)Dxgo%4TJ+FbXYajEzv%*~)#LIR zTATKw!a}Uz{7|&0aDqz;S6yef!O5v;g;{VGwPCbtc&xO-?sIO!aCel0L=Pd0AggDR z9cN*F(hrm*G>4hm8Fs5=bjOKVFfEq*{t(r8&O3fw+^yKjj#w9<|0Zk2D$kE<9>Y?j zmrB_8rYtV12OpPU`WG&DmBn?dav~TN5$?Aou1{vhq^Wt|suzKI8fCr5-cw=vmM9qe zsmQwGHno}FMz50HHE^F7>pWFNmZycBsunukUczMy$&X8pb+0KICt!1yv<*_)ka!8_ z!H;dXjm*fbS>NflDNvtfxw8|df#{TnW=y6jJ!4c)m_!@(OsWO8Mcy$oN5^})8!cWw zOXf2nMY_w}Otf^)bwnw?31Xvi3c_jo+YKckU9E9r)}z_ZhWbx3x%57??Kgy5%1C^| zJaL2P`Pl?4yf3f5VXH?jGl>1UtKuim^C>!dajR;qX6+D6QX3E2h={ZgQ0u&0KwdCc zS~R~K5~S)b^@W!-lJc&7QjxZxoVps}b4n#B2-fdMt0MyI%Y~eW9c*GwYuZ=rB?OOTxDAY7LJr1tP$ZO=)U3jC1zdmo#A-S z*oVtgBv$Pnx2;sB*jBLi!C@M90mpKg2*Pc`2m!`hM5I@cN4Q&dhhfbrjXi-|sU~6_ zI)gh@nZ7|DO7ldXiqfr=dJ^&rarPaoW|FKtoNZMUls#_izOu+A?IxWM;MHY$(;MO! z#P$Nr&jkZcP&KS>0Jg^Im?O%eZ=*0mL-)rbUG(0T*+8KX8FrzbTd?fd_~TJCD>p^x zD<6j>uKNt10spx=-%pb{-43$5-bS?DzS>xJ>3JSEdfIK|N#fKXtLU?C#>KDR`Ao0 zgT$^1lW1M<$1{75YkE-i%L{AiQ(yxPD3HP6M#)>7tK~oHF=97!XHz9$$sPkzdbtTw z1{INPG?OaJ6H6^<=wD&nK1Wv)pHHBxvfvE&+R!^E#`zfDmsZ~`GeIE0yF&V;g&9KN_iQFSpCfCI)Ec#f=D|_%Cv0G}<=x9m24Ox!cUJn93v!5?sbt(|)f(@h zQv<=7LD~^+LB2r;p+Qc;WGDWQ<^Ak3)_&DZa*^7j6QtOm@F!u9e*-nM@5_-HKg%l` zonSA88x_j*tJ*cbo3k5fYu@0uMj5%5+BQGT_a#{RhL6X3wwfLnV~WnT2fk0DXOi*q z7n;T@emOMw40q=vPow*=u|njbIV#R0jV49;N$FB4mrCa&uk6G#4DM&CJ_ATk#k!#l zsPRb^LbL)(O`hzYIWD%AgqSiDJnxAmhx!;>o$jBFWh6WAi(F+_;t7t!a!X8J=--_J zfVKzef$G6vjyUgUh{u?Q`Bjb+VAlu0Asg;L^-kb~GVzyW~rJ4%zk-QFp zv*LR57sGRlus5?4uc8ZiqCnl=a=D)l!|UxX{%+jMR#~2>;+hckL^`Ag-!*&5_G~N$ zDfTH=%Z{^$8=kslSH~&(W{;ZZnpd6t@T$i zkA$R`Z`A~`e1?v>omhfznJj+Xe*n%9yyG}nmKM3%4l(Gz>D?cwp41?Rn$KR-=eu|?e@XIgJ$ zNmrU!0q|?sna0J#TdPY@yAHEIV>%JrIeK#-Kz9<$b&yw0-?Uu(O!^0Yd3SdKxTFLN z*B44_3dl}gV8lKuI~}JZbPB-n1JZBHxQyVOq8^uE%hj!#S>f=3vu`sEW#9260$QZV z^5JarxuTQ;Um0h_g$bC4AEMykMfgc4!Q!#2GS3mQXG3BzhWd~^lRkr5q0%Q2LbWf=OIx1EkmgQjO? zi!sY5qPaR4KN7gJ9dQQSFB}J(<2I|HZu=?pOUR;3`TMbMka|7Hi$uv}{5=D`7In%h5eZp0z==Lc@8_i|r_FbF6cyY38{BUsUDjK9F8<9h;Yqw+JG7rXl(Q zPu!1X;c%>ZHVwfB{hhhHYah?B>rYLwi1_}cXWn`1;#z4w=N1#a6C_KMb)vNUgWvLuz z12qSYDv~i}O$(A^qS5_ZSxsWk!ykIOwxC}r2f<`QJ|`+2&FvgW*%^K?{+4SYA2v`t z2)U%(w@+z*EA zX`gSde6BS)LrWIIp*D#ds3_gZN#!gl#K~AM83Z*E-lI&Qsr-uc5pH~ixz?hrL1U>& zwHAwq^ol#Aq37c|2b6D622P8;^c==O6{*&7_BM>f=@)FyrY@3Fs{mizb^hZ$sWDo( z3Vq|Y1!79IvDi9J!HrXCZ9y-C%+;CT5T^ku?|b*)V6WyU(>y&lJCCj$cS`A~Uv0W4 z%ru_0KxugB$5E?A`=t8q7!MR1lNENwx;)JkDlG}7Vnw=I(VAT!-(iLXXWqO!=xs+- z;2Ul6He7i-w1;vm;nsEd3Ug*m`5^TZW>S}HuT;{5*gN~FPBTAnp+XXQ`5_}IPb<~3 z^qQX3+MnjXfh0lr?{gc8QpPb72@r0~{{EC5ou6*P^~vMhuAFAMK8bnW$w8dj_+!Lf z&H~P@4{sT{a^Du+8(;Zq{7e~MkLZQE(5!bZ>nW<^{z|`7-yE__5?ZK@2=#-U?#3LP znn{1zjedAPR91vi?3wa{yvX@DMZxm|tX-Uc9^&wv@1~4CuHjZtjwpPfMc=eN#T-Fa z<7pEYOV15W(xD=rNVcT#xwU$Rr1ISl<$y$K+<|1ZmzBumOQa=|I+t3U@;t@cI}J-0cS{Z4@r>*FloPx- zet~&azF_E1R)x-Z__*`kN$;)%-9|^9$-WVRFs`zUo~5_Led z?_6$uJjNxz63{#4HuY-9K8C&iB6>J6V4TA&s#yD!R&NYIKI}QU%W{s#%!u@p;^5M% zOgG|SEHW{o>F0_j`%JK-puwCQ@!! zcp;gM?0GYqBs7sf7Xi$(?9o6q8>|E9uqzkJ8-y(hGPG6WYDiVc$w7fB^an z*i_Rp;8W^XY5=)vwPs-3DUAeJxJw|=^LRvi0B#z7?;;lfpaw0kvTfe`6dbjE2+|dw zUV67*+EX6fxXNZIr$H5yht0kBM+zW_>@tw}mHBMt$AO}Ie>$1nEJ#t8Ur)~g2(Kb- zb1A2i8QGKgV(^1G%-5)^$ZaNGr+pA0XL8~t*pzwMXLf7ozJj1E@;hlo$NE{Mt3WmBuu<~ zTERZkD`-xuv{l>%*-H1%MTE_DAA+OG%)aO?)qt)IcGYkL1-gYN6O;IV+(K|_4wg}bb?{GPY=nFg;{kkBn!!V@-P5n zU*`?hBXMQ5%_FF^ZCe*K-N~+7CyqYSZI1-RwP=j(-N5#KeZ;t zk}s-T8F=kIm77z+hMfHJo0NZ@Oms=wh8BDoB>;c#n@e_Nd`X=P$k`+kgu1{1p?n4Z zYItmmS_%LvwaIGd^`*(>`#ykVDnAJptY5)%myFDDx8QtJ!>gY!y$r-6q9PhBkDO>R+g81UQP7 zDt!1_WiYc+CEYlP5m&%w0n}&BgD0szioIyXIyC~p2Ww2B57dEpTdow}Dcv31|pi+I5D|nK!tol}A=XvHO zJ3^kPjQN4iPp|eWh&d)$qna$ANQzZ3OtSUR`%)wl(O8_sG1ooSoMUuq!I3B1p99piGmVK{_EWw8r9 zZPWn=%WYD-XPiq=d*6cCFo6-{-eP`guKwtg%*%t04+wXuh$BuqRBH!2Rb`jKZN;B^ zV}HItH-w74Dp5lVC@UzoB=hb!}2qa%+oyVrnF%BF@= z6&olnrVDpIlXV#3C(k4U;tw9t6x6w<)awN@Irqj>!2u`4w@Qd5bB7Y)ol0v&zDc1t zM)Go+n_^=&#&J@ukdl-jNriAg6|#PGj*3oY1_>CDx~4I)7?4^1H+o$k@_T#t=u;8Vkqe z`z}KI(-#p@-pJ-NrmblFDuL-zu#t;gwFv zIGlp@v=IZ#@C1EkEkOS2-rntM2OF@(L+hBPLcY zG#A@NtYxdRNVZ+xC&k>{pv3)S)~@2eb|iOd^0($5O`J-=7q?w;9N7I4_k-t{8oc?6 zoqL|=E$oLO&oeH0!QN4cxP{i>vi;N;#wX=E;#^a(dl@3~%#~8UCFH4%NKd%LVv|TQSmiR{b=CF8TfY&tKSDF% za39cm3Ud-Z^ETJDW-_f}f>+l-s{|>m47G>&q>tWqSA*M#z0J4Y;o#pId4*5QCOE-KV9WNld_D+W5$5+m@5B0JqHZ?rx{+2j3o1?M z=RMyhhxx-bR1NHJf3iL%zIOdvEx;oRH!}1j%u2lNtkSQ%clE7w+q(K3YllQ>t3bVI z*4F0bB$Ac-E<2dh6<;-1i}W~v*e990(25!_$b}RnZb)Q_4rXLw6kHO}6D48~j=i@2 znAuic28|ci4L2TZhCEKfXx$c4MN~wV$##^f_9#cYlDK~p-#e5En*6{$qe$q|oX%ME z)mK*}c)pDvwPp-tX4}csGek?|vqC<_tot5R)g{w>G+V2Y0VNx-(Tm0?+yg`@DKnUJ z0x6pbc@YzcGJ^0oaNneTs7$^}D+?EtZ6u7V%S!7)lBfo}-VQdl3QrYl2tU}jrrMZ@vYaX({FehaUkAkHh zGC}dBDZ#sXoeQ60mDJ^3qvY}KQ-(069;{OQ!Lf8H|C3sZxymcItM#;ZMugsp#E_am zJx~R}tx>cQ;X^dOd84K`nQ9N*PWm`~dciabZ`w@81VP@X5v)&To_OC~ttb7MhzV49 zyY@Ni=i}}Z-q&eW^?br|!JrDWEge@J{)4XfLxqIo2AKZZct%>zOXLB0i19C759sXD zB)`vzpLu`OUk=YqF@$5K-eq34$P*T|@8&uVKk_;0R#a|}07?Y=;9BS*$felH@!ypA zeej1{ooI1XLrr6U)S0G@#cuISn3PBGSPB00caaErGkv!=P-B0DB;-m-X$tZ=w5J6A zi zbf{H^Neo||hL&yBZn{%7hia*gmf8`=i9a8%&iXvlvGVT4QCNKc%rx==^liS-4J@x@ z{~m;Zw6Wh}Y)q>NL<|~RatO#h^KOh+B?ywZY!KD*mx`Z}*N*n7z#9odIQS9CK}!u> zPCNb)(ZCpPc|n#(cjUrwtB9BcLQ>ka3T4>J6NCWeY(KUxoP(Be=PO2HeOo(kaK;%4 z)8{!kkMX zKHJt~+&AwwnfM;Ule3=m>uHqxSDYbMSrQ zA=O;_JR>`;eGjCXQBw&*jqrHs#Zv-hF4XC`hK#+padU>~>*ny2Q%-g;dWf~l_|G=8 z>LptThJ7ytWXIjQiWO^G5P_`j>%ST?GMH(%(lHdA*=@PfVlv%YeznjyHk|s}XDNC| z$S$Cc19y z6f10*)+w6KojLBP#@~vj1TxYEdr~IC4IoYNytmMd6g1`LMKKEMw`P=hB&Km`EI&wQPP#oHc zzek);)~U!HGKt2ZcBb9BuAz#Ef-2jJX(b4D4RJv^@H4o{M094|s{mty&?!`Y)A@P! zRSh*RVI>VxAL0n9;)8BL9%ZbzW3wuPn_*&14sQ|#XrUcN;1vz zt~n4|?wx)|O-X-XwbF$#G7^?*j7zzN5Rl@iO1ZW8MpEnw!cPj)V}L-3x)oA)t1y|M zF4`g|X3t$^64aybqjI=tHQBxJ^o8i5%TUvgU4~Z*#*+Jyy}#?6 zc&o`7c;>m5|4IP}e0innWn6DdjHyYnw~T{mmI{q2L#pGKd=Wp@CmTgMApI2^F&K<7 zELrFriWTb;m(6;6pwIdpRbv8F$|4J9Q>Srik4V}fjsugu2L@XkK|$tzaXGP~VDmS6 z2Q+=$U=cf6{*|Z8RHYrb>p7#Nl29rv$9<&-Dx{}$(QsQ@jTid=x$f5;oy z8h{jVrOsW+>VIer|5S!du+@GI^YQ=Ii8R~=s;PIm6aSP|ZofB!t=Qf9?#6$S;=BVY z9iE(*g5T68f43WQ5NNdy93@Uz|L;sSoO$Oh^xD1Du}!io8z%U= zDcR@{_w8XLfEPxfM9Xg!dVNolp%{n5M?!i6xe={_7s+ z$U|9pwuEP%i;*eT^uA%Vz{=pe`#W}o7;(70^mhJY1T+KaAK7A5wji8#Pb%!2%x_!6 zqD26XuskRbX9sH9jqE`Y#vER)>F__?;#mQ3%TIn-0S?YMU13vY+*C>%P1G{rss48o zju1VzL^Ic{@}ZcPz0@vve5qcZmlE&ym$nGYB>`6r!`n(90V)rv41L7vt|8_&^%y&1eAvjJDz8UN19>t7DG7lgQ_|zg-xp zt=XP>f4ZCZ2VuEOoOxbGhim))5`nVKCIo`e2abNJy@!uUg?!FKDH;6w??%`oGN111 z1d-`2yOH^Qf6G4E-Sz^C@&bc5;sy^IM)w`)J84;3rvFm$KgMj%i2!mZmp4b7Ks#C) z{+!&gFr1Rx@5e9ZM}2(t{RL25>u~#+`qpwoFhlm7yRwZ^2h#iz4A(oAL^3@j@S6&B zTbB}2f8-kP-@;v3ZW+L8SAOyt|EH3?S~LSzCi506^}Ut<6fcc}iyL@|)n%gJ1-R{| z!5vp1+nVOhZ~ES1e@^v*D7NwQ4Gg}!rRl5P+r>cK{NJm#ceVc+@UPANf6LbIKjd(nOzf%VJpspWPnhNF2vS7P(W?GGkz-X^}z67_a*!p z&_|A3OD*;7i%j_;$%KF0i$rY?b9L z4SG=kHh~k;fwDz|JC0%aHi>>m5gqj6Pr-7_ATY3N$ zcf)=k`oTRs`Y&PCrtTr!OW6%Tfo00Bpk+%3i3xAnyvz(B6)Ege75pMmwS|3mTM4LF z>)z45M`J!jWrodk8Wc&Fwf{shE%Gx(zuj-!o~FZT!M<|Q#oj%PN9pXEl~>1=7NFF+ zp0mJK*5+3XI6JWKq=ImR{xb;_CrzeBTMJu0z+e|+8=X@mdjO_uU{0BYHsblhR#?#2 z4zL&%m30NRY}(D2=mo@|HxhuTcy0UQIc@>KQ$;TO?$&QA=cT%4z4r)1Z=DhJDrA_JxBxt&fXy6mq@hoo5SB zoZEAAb&?+-^wWkxLF4wVhHJm^*I$DdFxXOEJfKNk>}NrpxB(hSjcjR&vA5Y=JzMRh zpLZt+RDS1i)GoEoLll){A#Vxe(j0X}ubJY;1Wca6a%U#j0I!@ua|xME9BP?|K4M>i zxkmR0wqhP)C4OcL#sqd4`lG=OW@KaHFBWB~M9~pET9kd?~8Ty02S;lHK6!5HZKi!w@CfBvvwuV*mw7h zyK0L+r~tBq9*W+mjMyL8sg&f#bG8dlR_00mBa6<QFMv7t3h-jB- zN2KHuO3{#nEplhhvnFX~&pGE0IESCSUNe@pzH6;#J^G_LsLa+plKU>A%$%U9StZ@qn6@4`8bj6M6{KN>T)tWmUb~|ZSwI(I_uE>h*TM_lajPJW*F}J1g-zCYp{k8+`IdViW2P|lDAF>&HIuT= z)tH;M><1CnhJFw&r(3rx*Q=xz9a<+eie%c#L0S9U?Vd+EoIm%dBo3#tVejF$M||q5 z51I+7D%5Y0Oj?opQ~omDk~Ut$ic`G{8zVn#bX#;eMs%%e^6(SqiRQ+JB2(uX5+Rpv z;8%wCzvLU^W-c`-Rl`uHWKl%rrhp`>;NVN&7BNAJH*v*hKC?Qderni5&LmWLtCi`& z%dlPx7EfE(?Og5=nz%J9E*%8;!IS4L4VaYn$~2?8rl=S%g)vI>Ys78Uz5I5XePo_p zJR_6hwO&PGQA&AB?ND)J>22i)NNn_7sOW3Wx*D~vitlLdzd|UOf?n{GK;Oe<1<0Mc~c_F05!^{7c!f^`Q?0BIyd#9fF8dzuN1;&hP{wNp8jlUF*gM@!78(-8KsM(Yp z&+&(IZQQ+DBY`>uD)+mxj^23}wSVrsm4?8siwfCF7ew#LBlQxkUgx@bnhm1G1_IiY zf+`X&!6{mBuyH-esLz$xqjT!!PG_)t1;wQJry5q?_{`SSkop?ko^1PyAXM-w|I7f? zf!Z%G^s4(~^x+uvQSB#ye#B=gy?Nph9kHuiTG7rVqO)2q*usXa49VpAgM7I#vQ?6C{t^@`9-U`}Rr34& z8{G^oD^)r|>CvYj0$FJ0gpSwR-rWlX+EpWBxqa`cBw5xM8~Cw}ePYzXhV z5AaFr8roVxFdjrMS)wjL^n%dOHOIw_AKbw0()SS8yG46q`IbG`*NX)nkycYr<8#5B zUIG~!l)mvQ&^W%Iwc2s@v5mkSADRnQ#)+#ThH%l%Vk=YzGde`=+^ zvMDD*n2m6*=f4L-sm))C{meSLh#FlA5kO`U*Nk`G~pUC#?;)^YlVm2 zFZrfKg;{RbO*Svj`XB(;e$rM0OE9?MY{qk-^`J!MNNoB3jRB3~Jw|do$#@w8e3|vM z`4XRn<<8r8omT7Z1YjOG)VztL!>T*3~2X>^M2m~^_kI-2PENr2f-(Z z55dB1;r(tzbaM*G*nbw!Ipp7G4!z*v@$`kc(J z=4a2KF=kjII_1HN$65k?FCT^M?I~)3j-YiNq5;j2dVBLr!5apkH z0YE*exv>&Hq2$Pm)^K1X;KTZuUAYgYx-FwNT838ct^~;ZCf_JozK!FWi;-HIT|w7? z)hc8620_YDP4*aoYHX3um^fcK6I}%HKrFx3@P}lGaH*N~-iumXw)3rg89eNV`}R~y zJUCPs?v)G3gANB7sgi$KOG_n`nL43_&ae#PI-&O{RZs)#{5!a&*bO~Do_hr(GVV14 zinkb6p^wd+tsa?i5)OgLAqA1`C;vK1z^5H3_OgS5>nbSj-i`7>x}~UCoOJD!miN>D zg20)cMc^oaIynI0`&&B3_|xx_Ych1Z9^Oe)1S$~jFI4@TeQ*2&8{xTL`sPQ1)$uYUcx4OFfdflC*ayjrHItPbNFl_XKjL zr-E;?Q&e0kuWdi$y*$7r|MBC;EA5+^L0uyfeuHD1rMJg<2J|yFuZ~`R`VPl_OA@Z| zS1|&8p;An7cXv1TN^5~nqp7c?{;xxxubP)q2?6cKp%cS?Q?fUkPOs3hO4kq53ctl4 zUe=nFhtyd7Rf)ybTHp+`n5}11 zdU_5yFN^$Lm=O~p%-|jyX6T^1oueau04Kt~dWR%)vA3wDm6!z@*kkh-81K*`5L|4@ zAiEsZ3I1U1)V-w3P0<~*C%`g)q`$54sL;dGKUa^Q==k_DpM5`eJ}ESmc|cfJ4y!80 zVnx*?E82dDsBXXKK_x^f!)z-BoGIA*ECe3&czN^<$@>nzy_YUrxN-AE4HcOB6iOv< zl|Psk=D3tK^sw4`HTk>*hP1@h0&UwwAu>w@zMG3o@FE7uk z$oZ#?;en1vfg^pd0^iqO86Q|seW3Nu&$g6T%%JNJEw}8z*(7Zf(khX=rh>Xh%j3G6z2EJNs9R4gYf&&+A`ulx4a8v+2@{6DLI{gG4%_ zKX^nh-WInxsfV-pFH7=Nbk*~4@UItiFR=?3Jj05a zR|)z?e)Hly{Yv);f}?kAz!{ru)=(03NEu6DVm{lP;Ok8+K0EQ) zgZ+z}3h8uuVy0b$VDW^+`&Dn!J@sGI^Mt-L`Gy_xU?(({s|EjPNJ8T3=Uuiu=51z^ zXZtaNKL{wbz>Sn%8yB?JXyB=L7*20Tve43GutP6|k_5 zXkuYuPvakjPl%^vpJ8FqV~O7uQL@LL9XvMB`EYOlm#j~_QdRr;xZC1E0iOf(@-HRi z`VQ)`-~W(4CVb^KBk#G_2`ntf_3_0y|UK1*Pvwx%a z5(@{P-u=&y5nTM@4f?-6fIq37q918I#ol}V-><>Ha5bHe{`ZRP$A~TTkA;|${5=jf z4yVwOzejLKhrk%QxRQnc`4kJABKqIiA^)P6gfY}S88!aQ8Tr)R-KXWxY!4>n&xnna z$zBt{@t+$(SJxT*b-VCi8v?MfRYP>YkpE{G`jOEq|G6)GJ#lw;Hpy%~pZ^R)Z1Ico zKlg>3djVY?%y=(X^gqME@*V&GaQQr@i4U$u8dCl4@_5&yV;Ru(t-mX#`6Y9$kZtLeY_H0JG?Ue}bu3!rFo5*K6(?V$+e!R^ouiE@c z?KB>&YFguo>Z)+Eo53Xc%~fvC=j@grtO$M*7K7&ZSqkH4uwp?h7VCp{Wx}O)u;;GZ z&StCSJ?afs)tG@_v2`?{9d^VAdKV zGX5p%;laLJx=@X;8a2X#JmutMcbtqX%~wA*UtcJ{N8Xnx?-zUPMPHz-&{X06_V9io ztWQe_hsGls0qg9KC$E1s?n<9ptJs=Ov)%aqqCbq+#B_e3#CEX;Pa~95E8TH*f79T5 z|KqBHZXLHl8n=Nb^=bviol^Q6E4>EMy&8`z#)oLFzFsaIcHJ)N-ruMfo`q+X)U@Es zKa?H4^MfgIxyY>l=aOP;B6_rHZ>GvwCC6Yqi%-k8S3h%zszNbUy}&qqR#teoLnTYw zOsmY+H!`WvdbX!6jK}Cfr51sD2&b0u9XgkM>N@p&!?zW?YyDj%Rt5&Kfi6xV>}sQZ zALMURb|lMx9M34_)GqHCa+sj$H_57qcwFJQIv|94c7mFZhcc~#Da!sqx)7N|Y^kQz zH{Qgyro3i>CjBQr-x~dC|LH3(W_o8~ci%#5uVQyR4VQOnVY?GGAtt75P@st!+}Z zzq_D?wryld>M<)C{MoFGj!Ur(WRfjhA9fpVzBX}|;@$?9D1&_1bmChk>2<{tBB70# z>#A`)R1R&|2$YTq-stk~$QXkbP@@ z2}b7nH(vpkjrNz4m!^s#XrTD(GKbsqKW(_EpO6*t5bFx^j8iO?kra;;C9vPId0-y* zUPHXCYOUp0{l=V-MSDX;Cfj!Z@Se)~xs-ATplbWu_3^vtQH?*6)yBPb*>qnT0o#W#C7lnCHx+~tfBZg#P-`NA05^UzQ5 z=ib%s^8^x9sJ2nUqG8uEr!4t2-S$nPyTAHfT)&0!T6Gg|&h2k?R}D=1yy-R!eS^W5 z>@PGMJQwDf6eBi~60y;FyujJTnU(F{qK(3(xS5vxtq++QOXB+5F|z$i{JtZbEYFNX z-R4@nv;4R;^i$@Aj5=>}R8+PIZ5Q8I(f09YmSv<_(3$D2TARR&=G9jqw7Vb?7D5@F zKl#E_P@1D-X-{Itlk^Q>r?JUV;vu+Iaa)B>LKpc;JO4 znr&G+N1hTi5%^AHH}G~bwwedRXZuYC^_5#bzU4bhO`IbgAI?g|iTPTtPW9#`5gJ1< z*TOJd733C@9b!Ph($ib+B$*Z~M+%Vq-%j32Dx#%GCPih|o?nYcYhTTwli7*K%PZ#= zGegCefwu3Ezf+Q8sO~N6z+Aj2zG)O5;CX^WJ2rUZvoH08Cl-pglqDxXg{z}|nL^9@ zZFoQuy~qT!QHr%RYDHY+9eL)WxJP(Mk}Ro3inFkwd_CKxcIME;5f*o)_EoJ?qF!ZH zt?}ce7DlXbI+@tibpJ>h9pgMMAZ)0q5X)!Dy`33oT zdEzva!Rd~au}p78-IVw(+}(lC#rqr8oaR>V9~W@PspxjBnsBJ+XW#$$yu>J0phm|l zX{OIpe03f|oW<$GD0TCqoWAOgtjD=D`c4rf<}D?RNmH5;Wfxkb38KSW~Gzp0<#?>R1{{EDn8^HG4DPyWv$n|~$;u3N|{smXZ z&;9-YImmhd-_K(@c}Neg_RkMX4gkX@Pa1Fi1%^Eu@QE!%6Vr^C|GFgp4|Rao-J?NB zR{S&2TZntFq*O6-Fu|Do>U6a{DWX&V{9W%(jH7KXqw2xjFA*H46B(?_WdmfBc# z((;+U+w8t?if40>bI~z!xT&*!1tzMoN+FI11xt_)S|p?$5aw(Y+1*XuRFm#Z^Zwc1 zyoU^0LT50SakbyP*gu?y+1Ffg$zHcCUNwLK3fSxFo_l&E?|-J|>K`zwl( zpIwoOz-`~9hg-&aCXK8~EFrVp5(W=*BL7rDFP`aZTgLYL)Q9s=fw-qY{R9_&las?C zC@i&Gn4i{suiL~gfZ5!1b`U#QF?s@6fB8xMKB&juo=R3okWfj)W__u+SeH=scI#@} zy@R`#AjoESX2iZm1H*U?lEVlx;z2#`mNs0B_!Q)5Dty{c>=Y{t-{R9`QkE}u3*GN;zkeJ>35h$xkzcHKF z(w8V5KI?wuWOl0ZzJbE$H#FC0pHXOA%#o@$&PgjYKS@YSZII8$_eoJ90I8! z@u^`Fr5~2KEPvx)E2`T4M(a3vuD{eKt-!FYHdQr?wx7;9cGqg6x!?tzYY$*JbLlXi z9LLpZ6w!BH7?C3y0MMHZ zdUN%2cK7Oi1Iyn8g*>dLA9fE8tTun za7aiNn+ikM`!c*wGxcr!8q>Penx@Ky8H05(Q#W>1zwgkr@}A9b8j3dv_xNp4PVR70 zU($6aOce8_8ZR^(D(|J@HP$0&58|O(n=2YthtUSMsUMfO`34x}v%iaS+jHoyWXmkB zbzGk}>r7Q9oabCsSG+(ZxFSdKHPWU_&3qq06!@Q=vGQ0SZ$Zk7d$3uChD??g; zDz@8ZrptFucsBc^l!uP9z*KyoR83b;&O-!c=R!e<@l~&*n;16HGy4+2$hoLl=OKsmQ6Mom3ksNBwUfva_8=?GKkMOrqp6xz_Pzkd74Sls;|RUznlgIF(@j zlzq?M!SI5#&&vqgJ|kNwLQ7J7)$iT@f~UTB17!&?TB_#_M8JNb?b$J+f~=~&K41T- zuxkh56rB&j`$Ok&K9t9=_kYx`C3rhaf%U> z>aNavDKeg3wnjTKP=%%=s8UxUGGB{OKY6bvzK$b5D?MKMBrjEh{=!1Z1T8hcxu$8D z?&4YDUD<9YmTJr`1~>H!ACr8k`THmhBEBb5%e?2VGww+KZpY}X;+{MPb&9c_nYvn> z<1yJs3&0$PX+(JgH=s6$Ru+Mg#%Bm$ZMb@tq37X$ush5tEB4xILvYq2dR?0IW zmeys-5))iGLLbA}gpwX_Cq}JN|FB8w_C6BGV&3W z%q)TJ%M)ziy@nLX8Dj4Y^F`B06U(ei#EKdf&53oo{aK6%qQwGMDj$6d<9sJ?VF`G; zcwL=VTe7;yq?^#@r_c}+}4 zX-q^|y+K$Ab6ydSK%{o>-JFPCIEhL1F2%do5+yhou)3$25tjV6=(hO!XnXsrx}F}e zJhImK{Rg@5m8QG?cb{@EBU&7M(kgeI4;AS%?{d${wIxitXz?f{jMR0j)%c4IMmf!2 zE0SirXdG__u)ZrnlA>&`u>S!+eHRWT|A2*8#cG#^c|QdH$$7hA<`{)N@4{`zPr@do zlGsu66$!f1HPPg)tuNoVzk4yW0k#8S@px=_TPO6AzC9!e^ zh!w3gC_9X2(A6J6YkJ~~a7r$%9<@OLB`fnt(y6VtNd%7qyNoK2bKr^`!W<+p;%a_z z=|Mvrku6(xU>FD_2$7s;ghCfDH0GCOeFKe!2Y+Z@x%pg zW8V|KlVC0QPRG|@m+jcqvV(DnnUPw8Tes&mawoa&Rn3il_C^A_4q|1bhEt9lRm3kc zk11;ZX0Mr}fm9h^9yLUs@CYucA&dJGb|?;$pl4GlY}Eb&$@))ps%>pKo?ahn52vCh z0)Ue+S7T-rIX6q1dJyw|1Lr#6 zGnD`LtN&vw(0S_~)8P}4JL&QLCgN5JH>O9d;b5Ra}V#j=){U7!v>YR}2ybUhkrqTPvK_ zangB}4aS^)x>?d z+`kJbY}|4z?9k8=0P=rbpdlM{jOQX>PX6c9Mc8%Po(6w^5l#OQKBPR#c>O=0R>PeB zccOnUNkcYz_4vdc+rz`HB%uoka;<^E?_N^~M}|R5R8G0={D2X_ntUTnVlV%&^FzP@ zg_SPb>Z{ZH%d)+IbWMRuDAcXN*`AVhGj`cp$x+EruWOz-puVthHi>ngve8WkAt8uf zP6CbH*`6So0hK79^M-}fTtWAPdc)xlqCV+P>+@?hcyv9qPP6y<2dx9OTvj{h-vL-| z;{-a}P8)dqStvR3#@<|S23SqftfrV{pcPe6#Ag^@;7s*{k`1`fXMS3fXjP; zx5R3q4;%07h$ly+W`VIXl#~?}n?J)7mL42{eJq?3QdpYMz98hN(fcdKKv7rtu>Org zJ@W|YFj?t<$#Pr>%BlFxO?6y16RsNo9nPL3yHIe5Dc#XRs59RilZ5mSvS&O;OpGLh zYEArlA8l2OpC>Ab@o3A~L9GWvor0lM+k?Cgp2B@>lpGXU*`SGhT9Ug|;JWLG)R|LM zS%4rzdXgU6oIK2p9?k?oJ1LidhVO=P<9H zQcWqeF9$G6&cgP2P18bn_&=7;fo3Aq!EzcovN1vKp798z^Hs^vD(lLB`8))w%=N(x zv;IQcwO)fV{SlktjE_XZ1J6%TKLW1a%IBeBa4lfGUZbSQNBl$fao>PP&M@A9iYJuy z#fg7*fI>_o=f&cQ_V8Q?79j6V4k<}oF=+m3KUDHnP9(7JgXonVVd+vaNq%$`Xgq|U zF3Ln0`U$SRW1+|FmWsVTbKhy9qUicwUW-uPxm(YBphS8IYC(|?XK6#T@cxb_-#IpY zGRgf%s25TYc8eXc{PPle#gwa_w=@RHlM9&O6_VG zu60nrtv5UcP;e#oF73gLDM?-u#hlU)n|-IZeQLap?{KMdIjTQU_L5(8JN)%9?!8Qh zkf&D`_52Vb9VS(DAppEw4ynDv`#;>K#A<+^8f*nm-1!|?k;O1Y!m!4>oxg)KeJ%vY zw{wnEZ;8lCs&CYqQZaEK2xd{d=_>IvVUF%U?k z`!sFmQN&w)Y}8$X+?7^*WzhgnEQWO||8!@XS+zTMPO9_L7pBBH zBW8mRp32lA>Mvpy+%6kuVp?18$XhBpzp#FTLWpmtF0vp3?Cp;6Sgv$<^c`88!B5G}plOi_lgqlsv1P5$gI4+4CP6RN1ztBlJy>OXE` zztx#Mk6~nOe5WUK+^|_wT&2%ElDHCC?a?(SAMEcG9bj6FGrvANLT+f#i3GcM_DtNz^N(WtGDeA9T1CM8jo$VTuLDK6#y5g)|r}sS70*)8F^6YX0*uI zXJ4(TJ;9cLV*=S}=G|`9x~1>zxUB3kCPhK*C*0>Nx6S$Iq$doOe!}E)yiN)*XRui8 zIcE0e8K@Rl{$fJ(_xY-Q*D^?w4?Ti~#k#Gg!jg5{nF9*znS5^`)DG~7j}((+Y!p#s zcYy#&KuEWct2=RiLY55rh%k=me6Rpl`E7n-WQA?&Sz4EBLim_pQeU;u^)?gw2rN%1 zzDm{JmI?n&KI=(2H~hb64W(Kt{n;da8FZY+)KLvqWy};0N~R{zlMBUMwNb}4>*u!f zP(64lPSc1cVw7IGzihFVP&&?>%FIW$REX78NqnKHRJ#dJqI6HfVfq(PwPA_4M+1*{ zWonrKWUwaGVqP48%r(gSpk{1EUGa!2DC&@%9`0l+Ebtz3KN<2Kw7)A%$b6O%a)X!0 zW+ezVQ0zMmilx1q)llBQip62B?9FAT1Y6polk6Lq{)0{UujawNtfh>UCrEztx)DHSEmqsS$Jr zstVPzb8Id6p|3g=CQILl$K3!tmh%yOo6Fg zFCwAI5RdKx74-luBbZobC16F);K;-!qbI%wQ4XJJvZg%M&wRuSt~rh1B`}b1gTQF` zE&%76R#HNIjBL{~*IRaHUq=H!$%u{a^=wL{hq~7WJ3GWqO*X&l8j=0)(Q94Y|q$@p# zQ>(OCnGlHauuIozqS;#sqT=P*Q5L1^AyT9RM%X8$X_Q71-d1gtn^*1H+WD$nqT5%G zvnr+Q29Z1%UOq_Rl zb5Lo@y1S<>Zlxz1rwgCYH`a9sOdOtaRSn}y>Mk9c^1pTR3B%p-Z)}+QdOTi7x+)Gu z{g7ZgwSL9mG?Vtb&zNFF4I0Z9rM?#|?HfmAkWBBhd8i)7D?J$?JFG%}1TkQ1?XR>; za+NqK8!3rN#?7cRO2=(~k#!AF;aDMb5XGs;=boVdlLoPI_f)}J=XaACcZZi?N=b}R z!H_Ca!Quz=hJc!otAK*Vv`+3=?_Z)FS`_t8SV{g`bJI)r=%eGIFJze%Q7U^wimua| zr8OZ-bVAO>Y|l;3x3~Q~^Jf^3Mr7NH`B_~#ACuxz5;b%uJNRuT!|8v&K#C*9B8B~F ze&Cqlk1u}q`e{niOdWCMO>AzEx8@%;X%w11;U^VZYG8P%++jKWJMmjzt}?fb@ZP>x z0RncR?vtInU$3;}A0fJNNyWUd z?+ly!KeZIV*|&%W5l^FW_nU&ha$6@sQ@;$#hBfU5gC;@qo2#Sv8U@C|fG(P4u71b0 zTVM;`{eM?*lFK_;ZOZ4FZ0AcR`d}d9{vzj1OS@&gjOOIJo6nC^J_yxubue|)*EXyn z=_~`k2xr4}Ae*IZZR4(3FmQlVHd;#f;0$<(PD;xp^h16!MQx_Z%&W17<(#at`CJODgao8^(~ z^Ti*1L!ip+M`>1OQ(k$5n8(O9-plg~!EzNC)x14~0C{`FyC3QH18&2Fod zS>5)In`VBp!rQ$qvrxys9-bXq07pwgA)Z$TuSr)ieY0Qurfz$*QZL_@^S=zx2auA< zo@sN&@NKy>D~hPExdMrXfIy1)tQOv#2fw1RzzdF@yKu1M+8 zud+lPwWR8r4DWb&e?g?rM^F_&63T&b?S+Aoyid$Qe5`WqYa8+Mg||*#yWncoxSl!& zVafn8e}MrbR6t0XS~9Zw=9P58KzJbp#XL5$ zm<`x(MB!Hq-h?-AKzUo-t)72t!chI;C71o(b#o_+aBa7(siZZi`aeImT`0i0|G|B} zjzY(}I~8QxFIq+9H?9rx9c?+3ZVw)$J0-Y=J>>|P(bIheX@n8^9i>FY0Vo}UW^2Jf zIvUJ1M zf0z^p<&&0)b+2e+jucqNWHK!?JnS!eT%_L=qBhYSDXE`=;^k2fW;VLOA;cng76fk% zm&>k=_Z|AqM05Sgf*#3)*%J3Vgt1Yrt|$enoc26fAuP=Hh;79>wyHi3ht8WQUdM!O z9U}p-cOLP9$9kz{)}QaK$7!`$Kd7qvtx~2FS|kLp}xVfCLknS#jqE~j`AnSoiAUOq0rqL zBQ-31JS-Gvw&Jk-8m*7J!tnZ38mWrdTdRZ2ZOI4)Et^r}mzVBzbp%J%YDU-;MO3nL zslHR*u+OI6HER3tOv|DM1*&6`8k82ABMI_}8}vV+PAH-kbi~bLSvM(=S0vu$y-yH> za0_8eNzXV+t*1s+I834LDOo-lb;)jCv+QS>i9~^j$k=Jw8*e-Lj?UDW;I@;|k4UJ# z8at>GYmw9NTs!7uEQMTl+zX=goxEY%VXOl^hOK2=_q_nuJ?+Fsxk_*Hp~X$SrsG|M z3q0*w_u0epP{I-FX}=qS!@&^|#NMOeDxgw7sd8e^_5?xs4!&9{cds8h2c#P1SwX4o z-zB~W53X}|u<>m+H5G!&l|=`ml_tFVUz#7%;nV@Eto*e?@=&IO@55Jl&L@l{bJwV3 zpAlwF+#z+|T(5a(?~7JKl;L(v{sBjYkSBNPW89eoAuiV9sS%V0?Ko9M8{mF856>nz zDlzhRd4!H|C(7sM%_R$UVQ)A;`6~3gOAuIa+B^OKk!%QVqZOlriaF!a0R#pq1ew_Fw%Q~l5q9!swUe&^@@?E79cZacpaw|75S ze`hm_hH|UG>}&g((jcBaOCp$+QX}Xi#Tsay{ZMC_0mR4wrnUF&9oi|oUhvXC055T_ z%jS5fEjZbFe*+0)Dpb_+L`#vXwnH5-4tCeU*E&~ygy?l}8okmsIoLJ0=fP}oozoUQ zQU^?cmiCoLU$cP$VAaJx1`g$-Uqf>RNsB5j*vPYQX%$oo;ZcTO~nY^%YxY zw&3~z263(+cAB}*)Q_!2>RMxO%{`|!&jwofvNAbmk3>;<(EHtm{85HCS8E~8=?l?2 z1E)NYk~#rF;o(BXdK9lw`={Sc~5t5Jfzg0XUJ> zX(xSqPcB!Tupes85g$FTszQnQijZanJ_rEUwaQ--KFk06*IE1N1o5&s|#|usVP`B9V#e=KY1==1XTdiyqg#BI}C1g~yMRREomP zWL231yHv_@Pf;#;1^C;Z$+kExUFsVl-Oo6HzrDXsSMZ1IYvj1(v}S52ld3C;$Dv(* zmAv5-g%Zp(ABgUWrX~IQ3FWADsv7lNJ@0U_V&Ik)>Em_fYC-}MCuzXMoM`mg5$vD! z>P6;e-i<=wP0`He12!lsi&=e7yW_u-&MRVl2&9(u44nDXLmMG533AF6!w5<98 z_l}UQ@r)yPA{1!S<>@%)V?>!xB`mS8W^y;3o@HbO%kEErJ{gd2&3Pm-OVG2T!=E9$ z&D(kTZ&Jb-+|=_3Em7K*o;w|5QlGE;Jdwdzj}=tuk;Y)Q!Bz8L+oQuK@o9JbXwBoL zJ!n&kA;!H*6E^xor25NagV9!bFaMsH^A^j#_NQPKpkRo5AvfAshHzsn*w^!B1w_X

G~qiP*z4?s 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 Date: Fri, 26 Apr 2019 14:48:24 -0400 Subject: [PATCH 02/34] fixed minor formatting issues --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ab22f96..3d16581 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ Juror drafting is managed via a process of *stake-weighted sortition*. In order ![](images/terms.png) *Figure 3: Court operations are broken into Terms* + For each dispute or appeal we have a number of available *juror slots* which must be filled. Each slot can be thought of as a seat on the jury. A single juror can occupy multiple seats, but each seat is associated with an equal portion of their stake which is committed and locked until the dispute is fully resolved. One block after the heartbeat function is executed for the term in which a dispute is scheduled, a function to draft jurors for that dispute is called. This function can be called at any point during the term and the resulting selection of jurors will be the same. If this transaction does not happen before the term ends the dispute must be rescheduled for a subsequent court term. @@ -85,7 +86,7 @@ To make the draft function efficient, active jurors are arranged into a tree str ![](images/sortition-tree.png) -Figure 4: Traversing the sortition tree to select a juror +*Figure 4: Traversing the sortition tree to select a juror* Due to gas constraints, the draft function can select at most 100 juror slots per call, so to select additional jurors we can do selection in multiple batches across multiple transactions or we can adjust the amount of stake which is committed to a ruling per juror slot in order to increase the amount of stake that is drafted. From d906bed2f4fb8a0b6ef80afce089f1fde7b48c40 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Fri, 26 Apr 2019 14:57:33 -0400 Subject: [PATCH 03/34] Editing introductory paragraphs for improved clarity --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3d16581..2054b5e 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Aragon Network -Aragon is a platform for creating and operating an organization on a blockchain network. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges are impossible to encode with smart contracts alone because smart contracts cannot directly encode subjective constraints. Voting is one way to impose a subjective constraint using a smart contract as it takes human inputs as a filter, however, voting assumes a majority of stakeholders will always honor the mutually understood intent of the organization. If we want organizations to be able to protect the interests of minority and passive participants we need more effective ways to enforce subjective constraints on an organization's actions. - The Aragon Network is an Aragon organization which provides infrastructure and services to users of the Aragon platform. The Network is governed by holders of its native token ANT. -The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables any organization to create *proposal agreements* which define subjective constraints on an organization's operation that can be enforced even by a minority stakeholder. Jurors stake ANT in order to participate as dispute resolution service providers in exchange for fees provided by organizations which opt-in to use the service. +Existing Aragon platform infrastructure enables users to create and manage organization. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges are impossible to encode with smart contracts alone because smart contracts cannot directly encode subjective constraints. + +The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables any organization to create *proposal agreements* which define subjective constraints on an organization's operation that can be enforced even by a minority stakeholder. ## Aragon's Permission Architecture From c01aa873ae19e2ecdee8fd80cbf0b598cad239d3 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Fri, 26 Apr 2019 14:58:49 -0400 Subject: [PATCH 04/34] fixed typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2054b5e..67fbf49 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ The Aragon Network is an Aragon organization which provides infrastructure and services to users of the Aragon platform. The Network is governed by holders of its native token ANT. -Existing Aragon platform infrastructure enables users to create and manage organization. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges are impossible to encode with smart contracts alone because smart contracts cannot directly encode subjective constraints. +Existing Aragon platform infrastructure enables users to create and manage organizations. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges are impossible to encode with smart contracts alone because smart contracts cannot directly encode subjective constraints. The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables any organization to create *proposal agreements* which define subjective constraints on an organization's operation that can be enforced even by a minority stakeholder. From e193e3ec5961fb4229a12ca0988203ba30ab536b Mon Sep 17 00:00:00 2001 From: lkngtn Date: Fri, 26 Apr 2019 15:26:47 -0400 Subject: [PATCH 05/34] minor edits to grammar and formatting --- README.md | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 67fbf49..82e7615 100644 --- a/README.md +++ b/README.md @@ -1,30 +1,28 @@ # Aragon Network -The Aragon Network is an Aragon organization which provides infrastructure and services to users of the Aragon platform. The Network is governed by holders of its native token ANT. +The Aragon Network is an Aragon organization which provides infrastructure and services to users of the Aragon platform, and is governed by ANT holders. The existing Aragon infrastructure enables users to create and manage organizations. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges require subjective constraints which cannot be encoded in a smart contract directly. -Existing Aragon platform infrastructure enables users to create and manage organizations. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges are impossible to encode with smart contracts alone because smart contracts cannot directly encode subjective constraints. - -The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables any organization to create *proposal agreements* which define subjective constraints on an organization's operation that can be enforced even by a minority stakeholder. +The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables an organization to create *proposal agreements* which define subjective constraints on an organization's operation that can be enforced by a minority stakeholders. ## Aragon's Permission Architecture -Organizations control which addresses have access to perform actions on behalf of the organization in a permission registry called the A*ccess Control List*. Addresses on the registry can be externally owned accounts or contracts. Some contracts are intended to *forward* actions based on pre-defined criteria, for example a voting app will forward action after the successful approval vote. +Aragon Organizations control which addresses have access to perform actions on behalf of the organization in a permission registry called the *Access Control List*. Addresses on the registry can be externally owned accounts or contracts. Some contracts are intended to *forward* actions based on pre-defined criteria, for example a voting app will forward action after the successful approval vote. -By chaining multiple permissions together we can define complex criteria which constrain how actions can be performed within the organization. To illustrate this we can look at common scenario where we want to allow treasury funds to be transferred, but only if they are 1) proposed by a member of the organization, 2) approved by a majority of members, 3) within a pre-determined budget. This can be accomplished by configuring a permission chain using multiple applications each imposing logical constraints on the final action as follows: +By chaining multiple contracts together we can define complex criteria which constrain how actions can be performed within the organization. To illustrate this we can look at common scenario where an organization want to allow treasury funds to be transferred, but only if they are 1) proposed by a member of the organization, 2) approved by a majority of members, and 3) within a pre-determined budget. This can be accomplished by configuring a chain of permissions with each link imposing logical constraints on the final action as follows: ![](images/permissions.png) *Figure 1: Token Manager --> Voting --> Finance --> Vault* -The vault, which stores the organizations assets, grants the transfer role only to the finance application, which internally implements budgeting and recurring payment logic. The finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from Token Holders the Token Manager's associated token. +The vault, which stores the organizations assets, grants the transfer role only to the finance application, which internally implements budgeting logic. The finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from Token Holders the Token Manager's associated token. -This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately left up to a majority vote, and its not unreasonable to be concerned that a majority of the organization's members might one day decide liquidate the organization, excluding minority stakeholders from the distribution of funds. +This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote, and its not unreasonable more a minority stakeholder to be concerned that a majority of the organization's members might decide liquidate the organization and exclude minority stakeholders in the process. -To avoid this organization's need a mechanism to impose a subjective constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. +To avoid this organization's need a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. ### Proposal Agreements -Proposal Agreements are designed to facilitate these types of constraints within Aragon organizations. They allow an organization to define human readable terms and require proposers to deposit collateral before the users intent can be forwarded. +Proposal Agreements are designed to facilitate these types of constraints within Aragon organizations. They allow an organization to define human readable terms and require proposers to deposit collateral before the users proposal can be forwarded to a voting app. The human readable terms can be used to protect the interest of minority stakeholders as described in the previous section, but they can also be used to define basic quality standards for what supplemental information must be included with a proposal. @@ -38,15 +36,15 @@ With this flow, when a user wants to make a fund transfer they will be prompted ### Dispute Creation -If a user feels that a submitted proposal violated the proposal agreement terms they can choose to raise a dispute. When they raise a dispute they will need to deposit an equivalent amount of collateral, along with initial *dispute fees* determined by the court. They can also provide *evidence* to support their claim. The vote will be immediately paused until the dispute is resolved. +If a minority stakeholder feels that a submitted proposal has violated the proposal agreement terms they can choose to raise a dispute. When they raise a dispute they will need to deposit an equivalent amount of collateral, along with initial *dispute fees* determined by the Aragon Court. They can also provide *evidence* to support their position. The vote will be immediately paused until the dispute is resolved. -If the original proposer feels that the dispute is valid they can opt to do nothing and the dispute will be automatically ruled in favor of the disputer. The proposers collateral will be transferred to the disputer and the vote will be canceled. If the original proposer believes they will win the dispute then they must pay *dispute fees* and provide evidence to support their position. +If the original proposer feels that the dispute is valid they can opt to do nothing and the dispute will be automatically ruled in favor of the disputer. The proposers collateral will be transferred to the disputer and the vote will be canceled. If the original proposer believes they will win the dispute then they must also deposit *dispute fees* and provide evidence to support their position. -Once both parties have submitted evidence and dispute fees, the case is scheduled to be reviewed by the *court*. +Once both parties have submitted evidence and dispute fees, the case is scheduled to be reviewed. ## Aragon Court Protocol -Proposal Agreement dispute resolution relies on a decentralized oracle protocol referred to as the *court* where *jurors* stake the Aragon Network's native asset ANT in order to earn the right to perform dispute resolution service and earn a portion of *dispute resolution fees*. +Proposal Agreement disputes rely on a decentralized oracle protocol referred to as the *court* where *jurors* stake the Aragon Network's native asset ANT in order to earn the right to perform dispute resolution service and earn a portion of *dispute resolution fees*. When a dispute occurs, a jury is formed by drafting jurors via *stake-weighted sortition*. Drafted jurors are required to commit to a ruling on the dispute within a commitment period, and then reveal their ruling after all drafted jurors have committed. The verdict is returned based on the majority decision of drafted jurors. @@ -54,7 +52,7 @@ Before the verdict is enforced, there is an opportunity to *appeal*, which repea ### Juror Staking -In order to participate as a juror, an individual must acquire ANT and then deposit it into the court's staking contract. Similar to a [token bonding curve](https://blog.relevant.community/bonding-curves-in-depth-intuition-parametrization-d3905a681e0a), the staking contract uses the current balance of deposited ANT to determine an exchange rate between ANT and the user's stake in the court. Unlike a token bonding curve, we do not treat the resulting economic stake as a transferrable token. This curved staking approach encourages jurors to participate early and establish the credibility of an instance of the court, and enables the network to potentially deploy multiple instances of the court protocol which compete with one another by specializing in resolving specific types of disputes. +In order to participate as a juror, an individual must acquire ANT and then deposit it into the court's staking contract. Similar to a [token bonding curve](https://blog.relevant.community/bonding-curves-in-depth-intuition-parametrization-d3905a681e0a), the staking contract uses the current balance of deposited ANT to determine an exchange rate between ANT and the user's stake in the court. Unlike a token bonding curve, we do not treat the resulting economic stake as a transferrable token. This curved staking approach encourages jurors to participate early and establish the credibility of an instance of the court, and enables the network to deploy multiple instances of the court protocol which compete with one another by specializing in resolving specific types of disputes. The staking and un-staking actions are governed by the following formulas: @@ -72,7 +70,7 @@ Once a prospective juror has staked they are considered *active* and eligible to ### Juror Drafting -Juror drafting is managed via a process of *stake-weighted sortition*. In order to manage the sortition process efficiently, all of the court's operations are scheduled into *Terms. Terms* are defined in seconds and cannot be changed after the Court has been initialized. Terms are transitioned by calling a public *heartbeat* function which is used to make updates to *active juror stakes* from the preceding term and generate a new *random seed* for use during the subsequent term. A portion of the courts fees are used to compensate the caller of the heartbeat for gas usage. +Juror drafting is managed via a process of *stake-weighted sortition*. In order to manage the sortition process efficiently, all of the court's operations are scheduled into *Terms*. *Terms* are defined in seconds and cannot be changed after the Court has been initialized. Terms are transitioned by calling a public *heartbeat* function which is used to make updates to *active juror stakes* from the preceding term and generate a new *random seed* for use during the subsequent term. A portion of the courts fees are used to compensate the caller of the heartbeat for gas usage. ![](images/terms.png) @@ -88,7 +86,7 @@ To make the draft function efficient, active jurors are arranged into a tree str *Figure 4: Traversing the sortition tree to select a juror* -Due to gas constraints, the draft function can select at most 100 juror slots per call, so to select additional jurors we can do selection in multiple batches across multiple transactions or we can adjust the amount of stake which is committed to a ruling per juror slot in order to increase the amount of stake that is drafted. +Due to gas constraints, the draft function can select at most 100 juror slots per call, so to select additional jurors the sortition process can be broken into multiple batches spanning multiple transactions. To minimize the number of transactions required to select a specific proportion of total stake the amount of stake per juror slot is increased. The sortition tree must be updated between terms as the proportional stake of jurors changes. Changes are queued and executed when the heartbeat function is called. @@ -102,7 +100,7 @@ After the conclusion of *reveal period*, a majority of support among drafted jur ### Appeals -Each dispute is subject to a maximum number of appeal rounds. The number of appeal rounds determines how the sortition tree and sub-trees must be structured and therefore cannot be adjusted on a per-dispute basis. Since each dispute and appeal round has a fixed duration, the max appeal rounds also determines the maximum amount of time before a final decision is reached. +Each dispute is subject to a maximum number of appeal rounds. Since each dispute and appeal round has a fixed duration, the max appeal rounds also determines the maximum amount of time before a final decision is reached. Appeals can be triggered after a dispute has been resolved with a preliminary ruling in favor of one outcome or the other. In order for an Appeal to occur both sides of the dispute must deposit additional collateral. If neither side deposits the required collateral to trigger the next appeal round, the preliminary ruling is finalized. If only one side deposits the required collateral the ruling is immediately finalized in their favor. If both sides deposit the required collateral then the appeal round is scheduled. From 901330b7f1f618c71a80bd037f45f506c82cb920 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Fri, 26 Apr 2019 15:31:41 -0400 Subject: [PATCH 06/34] Switched to external latex render for math rendering --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 82e7615..811d50d 100644 --- a/README.md +++ b/README.md @@ -58,11 +58,11 @@ The staking and un-staking actions are governed by the following formulas: **Staking:** -$$s = t * ((1 + d / b)^r-1)$$ +![](http://latex.codecogs.com/gif.latex?s&space;=&space;t&space;*&space;\(\(1&space;+&space;d&space;/&space;b\)^r-1) **Unstaking:** -$$c = b * ((1+s / t)^{\frac{1}{r}}$$ +![](http://latex.codecogs.com/gif.latex?c&space;=&space;b&space;*&space;\(\(1+s&space;/&space;t\)^{\frac{1}{r}}) Where `s` is the resulting stake in the court and `d` is the users deposit. When un-staking, `c` is the amount of ANT returned. The other variables represent state and parameters of the staking curve. `r` is the ratio of deposits to total stake, `b` is the balance of ANT in the staking contract, and `t` is the total amount of distributed stake. From 9bcfe89d0cf214666b83ebd29f37ebceec5094ea Mon Sep 17 00:00:00 2001 From: lkngtn Date: Fri, 26 Apr 2019 15:33:47 -0400 Subject: [PATCH 07/34] fixed error in math rendering --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 811d50d..1b1ac11 100644 --- a/README.md +++ b/README.md @@ -62,7 +62,7 @@ The staking and un-staking actions are governed by the following formulas: **Unstaking:** -![](http://latex.codecogs.com/gif.latex?c&space;=&space;b&space;*&space;\(\(1+s&space;/&space;t\)^{\frac{1}{r}}) +![](http://latex.codecogs.com/gif.latex?c&space;=&space;b&space;*&space;\(1+s&space;/&space;t\)^{\frac{1}{r}}) Where `s` is the resulting stake in the court and `d` is the users deposit. When un-staking, `c` is the amount of ANT returned. The other variables represent state and parameters of the staking curve. `r` is the ratio of deposits to total stake, `b` is the balance of ANT in the staking contract, and `t` is the total amount of distributed stake. From 9dd657656e12b2f5eb418339aa69debd02b18688 Mon Sep 17 00:00:00 2001 From: John Light Date: Wed, 8 May 2019 12:30:52 -0400 Subject: [PATCH 08/34] Update README.md Co-Authored-By: lkngtn --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b1ac11..6b45eef 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ The Aragon Network is an Aragon organization which provides infrastructure and services to users of the Aragon platform, and is governed by ANT holders. The existing Aragon infrastructure enables users to create and manage organizations. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges require subjective constraints which cannot be encoded in a smart contract directly. -The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables an organization to create *proposal agreements* which define subjective constraints on an organization's operation that can be enforced by a minority stakeholders. +The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network itself, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables an organization to create *proposal agreements* that define subjective constraints on an organization's operation and can be enforced by minority stakeholders. ## Aragon's Permission Architecture From 53f0779b423f16cab9e94f6eedfb207c3b7e6692 Mon Sep 17 00:00:00 2001 From: John Light Date: Wed, 8 May 2019 14:05:19 -0400 Subject: [PATCH 09/34] Update README.md Co-Authored-By: lkngtn --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6b45eef..b98c128 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Aragon Network -The Aragon Network is an Aragon organization which provides infrastructure and services to users of the Aragon platform, and is governed by ANT holders. The existing Aragon infrastructure enables users to create and manage organizations. Each Aragon organization exists as a set of smart contracts which define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges require subjective constraints which cannot be encoded in a smart contract directly. +The Aragon Network is an Aragon organization that provides infrastructure and services to users of the Aragon platform, and is governed by ANT holders. The existing Aragon infrastructure enables users to create and manage organizations. Each Aragon organization exists as a set of smart contracts that define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges require subjective constraints that cannot be encoded in a smart contract directly. The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network itself, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables an organization to create *proposal agreements* that define subjective constraints on an organization's operation and can be enforced by minority stakeholders. From 1c591832e98535584795089d429b90d017e58550 Mon Sep 17 00:00:00 2001 From: John Light Date: Wed, 8 May 2019 14:05:43 -0400 Subject: [PATCH 10/34] Update README.md Co-Authored-By: lkngtn --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b98c128..f0b69d5 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ The Aragon Court is a decentralized oracle protocol developed and maintained by ## Aragon's Permission Architecture -Aragon Organizations control which addresses have access to perform actions on behalf of the organization in a permission registry called the *Access Control List*. Addresses on the registry can be externally owned accounts or contracts. Some contracts are intended to *forward* actions based on pre-defined criteria, for example a voting app will forward action after the successful approval vote. +Aragon organizations control which addresses have access to perform actions on behalf of the organization in a permission registry called the *Access Control List*. Addresses on the registry can be externally owned accounts or contracts. Some contracts are intended to *forward* actions based on pre-defined criteria, for example a voting app will forward action after a successful approval vote. By chaining multiple contracts together we can define complex criteria which constrain how actions can be performed within the organization. To illustrate this we can look at common scenario where an organization want to allow treasury funds to be transferred, but only if they are 1) proposed by a member of the organization, 2) approved by a majority of members, and 3) within a pre-determined budget. This can be accomplished by configuring a chain of permissions with each link imposing logical constraints on the final action as follows: From b5fa53b925251d280756f0c59a5d8530b9ef474e Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 09:55:40 -0400 Subject: [PATCH 11/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f0b69d5..788c079 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The Aragon Court is a decentralized oracle protocol developed and maintained by Aragon organizations control which addresses have access to perform actions on behalf of the organization in a permission registry called the *Access Control List*. Addresses on the registry can be externally owned accounts or contracts. Some contracts are intended to *forward* actions based on pre-defined criteria, for example a voting app will forward action after a successful approval vote. -By chaining multiple contracts together we can define complex criteria which constrain how actions can be performed within the organization. To illustrate this we can look at common scenario where an organization want to allow treasury funds to be transferred, but only if they are 1) proposed by a member of the organization, 2) approved by a majority of members, and 3) within a pre-determined budget. This can be accomplished by configuring a chain of permissions with each link imposing logical constraints on the final action as follows: +By chaining multiple contracts together we can define complex criteria which constrain how actions can be performed within the organization. To illustrate this we can look at a common scenario where an organization wants to allow treasury funds to be transferred, but only if they are 1) proposed by a member of the organization, 2) approved by a majority of members, and 3) within a pre-determined budget. This can be accomplished by configuring a chain of permissions with each link imposing logical constraints on the final action as follows: ![](images/permissions.png) From ac69e8292c4b83626021bd469a5e4938c90cc52c Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 09:57:38 -0400 Subject: [PATCH 12/34] updated grammar --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 788c079..8cfb702 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ By chaining multiple contracts together we can define complex criteria which con The vault, which stores the organizations assets, grants the transfer role only to the finance application, which internally implements budgeting logic. The finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from Token Holders the Token Manager's associated token. -This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote, and its not unreasonable more a minority stakeholder to be concerned that a majority of the organization's members might decide liquidate the organization and exclude minority stakeholders in the process. +This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote. It's not unreasonable for a minority stakeholder to be concerned that a majority of stakeholders might decide to liquidate the organization and exclude minority stakeholders in the process. -To avoid this organization's need a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. +To avoid this the organization's need a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. ### Proposal Agreements @@ -78,7 +78,7 @@ Juror drafting is managed via a process of *stake-weighted sortition*. In order For each dispute or appeal we have a number of available *juror slots* which must be filled. Each slot can be thought of as a seat on the jury. A single juror can occupy multiple seats, but each seat is associated with an equal portion of their stake which is committed and locked until the dispute is fully resolved. -One block after the heartbeat function is executed for the term in which a dispute is scheduled, a function to draft jurors for that dispute is called. This function can be called at any point during the term and the resulting selection of jurors will be the same. If this transaction does not happen before the term ends the dispute must be rescheduled for a subsequent court term. +One block after the heartbeat function is executed for the term in which a dispute is scheduled, a function to draft jurors for that dispute can be called. This function can be called at any point during the term and the resulting selection of jurors will be the same. If this transaction does not happen before the term ends the dispute must be rescheduled for a subsequent court term. To make the draft function efficient, active jurors are arranged into a tree structure based on their stake. Using the random seed for the term and the id of the dispute a random number is generated and used to traverse the tree and arrive at a juror. This process is repeated until all juror slots for the dispute have been filled. @@ -86,7 +86,7 @@ To make the draft function efficient, active jurors are arranged into a tree str *Figure 4: Traversing the sortition tree to select a juror* -Due to gas constraints, the draft function can select at most 100 juror slots per call, so to select additional jurors the sortition process can be broken into multiple batches spanning multiple transactions. To minimize the number of transactions required to select a specific proportion of total stake the amount of stake per juror slot is increased. +Due to gas constraints, the draft function can select at most 100 juror slots per call. More that 100 juror slots can be selected using multiple transactions. To minimize the number of transactions required to select a specific proportion of total stake, the required amount of stake per juror slot can be increased in subsequent appeal rounds. The sortition tree must be updated between terms as the proportional stake of jurors changes. Changes are queued and executed when the heartbeat function is called. @@ -104,7 +104,7 @@ Each dispute is subject to a maximum number of appeal rounds. Since each dispute Appeals can be triggered after a dispute has been resolved with a preliminary ruling in favor of one outcome or the other. In order for an Appeal to occur both sides of the dispute must deposit additional collateral. If neither side deposits the required collateral to trigger the next appeal round, the preliminary ruling is finalized. If only one side deposits the required collateral the ruling is immediately finalized in their favor. If both sides deposit the required collateral then the appeal round is scheduled. -The amount of required collateral depends on the appeal round and is a multiple of the fees required to compensate selected jurors. In higher appeal rounds where more juror stake is selected to adjudicate the dispute, the base amount of collateral required will be higher. The amount of collateral required will be a multiple of this amount, 2x the base amount for the side which is reinforcing the preliminary ruling, and 3x the base amount for side which is appealing the preliminary ruling. These deposit do not need to be supplied by a single party, but can be crowdsourced. When a final ruling is reached, the collateral of the loosing side will be used to compensate jurors and reward funders of the opposing side proportional to their contribution. +The amount of required collateral depends on the appeal round and is a multiple of the fees required to compensate selected jurors. In higher appeal rounds where more juror stake is selected to adjudicate the dispute, the base amount of collateral required will be higher. The total amount of collateral required to appeal will be a multiple of this amount, 2x the base amount for the side which is reinforcing the preliminary ruling, and 3x the base amount for side which is appealing the preliminary ruling. When the dispute is finalized the base amount is used to compensate jurors and the remainder is used to compensate the winning party for risking their appeal deposit. Appeal deposits can be crowdsourced so they do not need to be supplied by a single party. ### Final Ruling @@ -120,7 +120,7 @@ In case that no juror in a round voted for the final ruling, the juror tokens wi If there was any appeal rounds before the final ruling, the total amount of collateral that was deposited for triggering each round will be assigned to the appealer supporting the final ruling. -In the first adjudication round of a dispute (the original round created with the dispute), the Court doesn't directly manage collateral (as there may not be collateral at all or a different token is used). In case that there was collateral at stake depending on the Court ruling, whenever the Court has a final ruling it will notify the contract being *arbitered* with the ruling and this contract can then distribute collateral. +In the first adjudication round of a dispute (the original round created with the dispute), the Court doesn't directly manage collateral (as there may not be collateral at all or a different token is used). In case that there was collateral at stake depending on the Court ruling, whenever the Court has a final ruling it will notify the contract being *arbitrated* with the ruling and this contract can then distribute collateral. ## Fee Summary From b8323244eb7f95a4da733f989c1e22878e27a079 Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:00:05 -0400 Subject: [PATCH 13/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 788c079..373b880 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ By chaining multiple contracts together we can define complex criteria which con The vault, which stores the organizations assets, grants the transfer role only to the finance application, which internally implements budgeting logic. The finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from Token Holders the Token Manager's associated token. -This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote, and its not unreasonable more a minority stakeholder to be concerned that a majority of the organization's members might decide liquidate the organization and exclude minority stakeholders in the process. +This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote, and it's not unreasonable for a minority stakeholder to be concerned that a majority of the organization's members might decide liquidate the organization and exclude minority stakeholders in the process. To avoid this organization's need a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. From 4ad6ebbb09e8fc62a89ec7b4f42b609b23f0c36e Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:00:18 -0400 Subject: [PATCH 14/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 373b880..7eded02 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ To avoid this organization's need a mechanism to impose a constraint that can be ### Proposal Agreements -Proposal Agreements are designed to facilitate these types of constraints within Aragon organizations. They allow an organization to define human readable terms and require proposers to deposit collateral before the users proposal can be forwarded to a voting app. +Proposal Agreements are designed to facilitate these types of constraints within Aragon organizations. They enable an organization to define human-readable terms that proposals must conform to and require proposers to deposit collateral before their proposal can be forwarded to a voting app. The human readable terms can be used to protect the interest of minority stakeholders as described in the previous section, but they can also be used to define basic quality standards for what supplemental information must be included with a proposal. From 50506959991d8a9b5f9b30d34fd70327b1767b20 Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:00:30 -0400 Subject: [PATCH 15/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7eded02..fe23f7e 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ To avoid this organization's need a mechanism to impose a constraint that can be Proposal Agreements are designed to facilitate these types of constraints within Aragon organizations. They enable an organization to define human-readable terms that proposals must conform to and require proposers to deposit collateral before their proposal can be forwarded to a voting app. -The human readable terms can be used to protect the interest of minority stakeholders as described in the previous section, but they can also be used to define basic quality standards for what supplemental information must be included with a proposal. +The human-readable terms can be used to protect the interest of minority stakeholders as described in the previous section, but they can also be used to define basic quality standards for what supplemental information must be included with a proposal. Proposal agreements can be paired with a Voting app by assigning the *create vote*, *pause vote*, and *cancel vote* roles. From 06e21fe5d268592d9c6927ca714a02d20f59593a Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:05:19 -0400 Subject: [PATCH 16/34] more grammar fixes --- README.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/README.md b/README.md index d65788b..b27949b 100644 --- a/README.md +++ b/README.md @@ -16,11 +16,7 @@ By chaining multiple contracts together we can define complex criteria which con The vault, which stores the organizations assets, grants the transfer role only to the finance application, which internally implements budgeting logic. The finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from Token Holders the Token Manager's associated token. -<<<<<<< HEAD This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote. It's not unreasonable for a minority stakeholder to be concerned that a majority of stakeholders might decide to liquidate the organization and exclude minority stakeholders in the process. -======= -This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote, and it's not unreasonable for a minority stakeholder to be concerned that a majority of the organization's members might decide liquidate the organization and exclude minority stakeholders in the process. ->>>>>>> 50506959991d8a9b5f9b30d34fd70327b1767b20 To avoid this the organization's need a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. @@ -108,7 +104,7 @@ Each dispute is subject to a maximum number of appeal rounds. Since each dispute Appeals can be triggered after a dispute has been resolved with a preliminary ruling in favor of one outcome or the other. In order for an Appeal to occur both sides of the dispute must deposit additional collateral. If neither side deposits the required collateral to trigger the next appeal round, the preliminary ruling is finalized. If only one side deposits the required collateral the ruling is immediately finalized in their favor. If both sides deposit the required collateral then the appeal round is scheduled. -The amount of required collateral depends on the appeal round and is a multiple of the fees required to compensate selected jurors. In higher appeal rounds where more juror stake is selected to adjudicate the dispute, the base amount of collateral required will be higher. The total amount of collateral required to appeal will be a multiple of this amount, 2x the base amount for the side which is reinforcing the preliminary ruling, and 3x the base amount for side which is appealing the preliminary ruling. When the dispute is finalized the base amount is used to compensate jurors and the remainder is used to compensate the winning party for risking their appeal deposit. Appeal deposits can be crowdsourced so they do not need to be supplied by a single party. +The amount of required collateral depends on the appeal round and is a multiple of the fees required to compensate selected jurors. In higher appeal rounds where more juror stake is selected to adjudicate the dispute, the base amount of collateral required will be higher. The total amount of collateral required to appeal will be a multiple of this amount, 2x the base amount for the side which is reinforcing the preliminary ruling, and 3x the base amount for side which is appealing the preliminary ruling. When the dispute is finalized the base amount is used to compensate jurors and the remainder is used to compensate the winning party for risking their appeal deposit. Appeal deposits can be crowdsourced so they do not need to be supplied by a single party. ### Final Ruling From 3ba20a4f4a3b6ba34537f6b2a1d155f2bc94e8c6 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:07:30 -0400 Subject: [PATCH 17/34] standardized capitalization of Proposal Agreements --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b27949b..33e2454 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ The Aragon Network is an Aragon organization that provides infrastructure and services to users of the Aragon platform, and is governed by ANT holders. The existing Aragon infrastructure enables users to create and manage organizations. Each Aragon organization exists as a set of smart contracts that define the organization's stakeholders and their associated rights and privileges. However, some rights and privileges require subjective constraints that cannot be encoded in a smart contract directly. -The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network itself, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables an organization to create *proposal agreements* that define subjective constraints on an organization's operation and can be enforced by minority stakeholders. +The Aragon Court is a decentralized oracle protocol developed and maintained by the Aragon Network. The Aragon Court can be used by organizations, including the Aragon Network itself, to resolve subjective disputes with binary outcomes. When combined with the existing Aragon infrastructure, it enables an organization to create *Proposal Agreements* that define subjective constraints on an organization's operation and can be enforced by minority stakeholders. ## Aragon's Permission Architecture @@ -26,7 +26,7 @@ Proposal Agreements are designed to facilitate these types of constraints within The human-readable terms can be used to protect the interest of minority stakeholders as described in the previous section, but they can also be used to define basic quality standards for what supplemental information must be included with a proposal. -Proposal agreements can be paired with a Voting app by assigning the *create vote*, *pause vote*, and *cancel vote* roles. +Proposal Agreements can be paired with a Voting app by assigning the *create vote*, *pause vote*, and *cancel vote* roles. ![](images/proposal-agreement-permissions.png) From 2a46825239d408016a073662bf1be252acbbdd5b Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:11:04 -0400 Subject: [PATCH 18/34] grammar and spelling fixes --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 33e2454..1b035d0 100644 --- a/README.md +++ b/README.md @@ -36,9 +36,9 @@ With this flow, when a user wants to make a fund transfer they will be prompted ### Dispute Creation -If a minority stakeholder feels that a submitted proposal has violated the proposal agreement terms they can choose to raise a dispute. When they raise a dispute they will need to deposit an equivalent amount of collateral, along with initial *dispute fees* determined by the Aragon Court. They can also provide *evidence* to support their position. The vote will be immediately paused until the dispute is resolved. +If a minority stakeholder feels that a submitted proposal has violated the proposal agreement terms then they can choose to raise a dispute. When they raise a dispute they will need to deposit an equivalent amount of collateral, along with initial *dispute fees* as determined by the Aragon Court. They can also provide *evidence* to support their position. The vote will be immediately paused until the dispute is resolved. -If the original proposer feels that the dispute is valid they can opt to do nothing and the dispute will be automatically ruled in favor of the disputer. The proposers collateral will be transferred to the disputer and the vote will be canceled. If the original proposer believes they will win the dispute then they must also deposit *dispute fees* and provide evidence to support their position. +If the original proposer feels that the dispute is valid then they can opt to do nothing and the dispute will be automatically ruled in favor of the disputer. The proposer's collateral will be transferred to the disputer and the vote will be canceled. If the original proposer believes they will win the dispute then they must also deposit *dispute fees* and provide evidence to support their position. Once both parties have submitted evidence and dispute fees, the case is scheduled to be reviewed. @@ -48,7 +48,7 @@ Proposal Agreement disputes rely on a decentralized oracle protocol referred to When a dispute occurs, a jury is formed by drafting jurors via *stake-weighted sortition*. Drafted jurors are required to commit to a ruling on the dispute within a commitment period, and then reveal their ruling after all drafted jurors have committed. The verdict is returned based on the majority decision of drafted jurors. -Before the verdict is enforced, there is an opportunity to *appeal*, which repeats the adjudication process with a larger set of jurors. Appeals can be made a fixed number of times before a *final judgement round* that requires every staked juror to commit to a ruling. +Before the verdict is enforced, there is an opportunity to *appeal*, which repeats the adjudication process with a larger set of jurors. Appeals can be made a fixed number of times before a *final judgment round* that requires every staked juror to commit to a ruling. ### Juror Staking @@ -92,7 +92,7 @@ The sortition tree must be updated between terms as the proportional stake of ju ### Juror Ruling -Once jurors have been drafted the dispute enters a deliberation phase where jurors are expected to provide a ruling in favor of one party or the other. Jurors are expected to make an independent judgement, but we assume that out of band communication between jurors is possible. For particularly nuanced cases there may even be forums and discussion threads used to discuss the details of a dispute. However, to minimize the ability of jurors to simply copy the voting behavior of other jurors we require rulings to be submitted in a two-phase commit reveal process. +Once jurors have been drafted the dispute enters a deliberation phase where jurors are expected to provide a ruling in favor of one party or the other. Jurors are expected to make an independent judgment, but we assume that out of band communication between jurors is possible. For particularly nuanced cases there may even be forums and discussion threads used to discuss the details of a dispute. However, to minimize the ability of jurors to simply copy the voting behavior of other jurors we require rulings to be submitted in a two-phase commit reveal process. Jurors are given a certain number of terms, called the *commitment period*, to submit a hash of their ruling. After the commit period ends, jurors are given a certain number of terms to reveal their ruling, this period is called the *reveal period*. If a juror reveals their vote prior to the reveal period, anyone can use this information to penalize the juror in exchange for a reward. If a juror fails to commit and reveal a vote by the end of the *reveal period* they are penalized. From 930faf9372dc44710a14a02a770ff2b1b415a595 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:12:10 -0400 Subject: [PATCH 19/34] Fixed capitalization of Network consistency --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1b035d0..fd6b336 100644 --- a/README.md +++ b/README.md @@ -52,7 +52,7 @@ Before the verdict is enforced, there is an opportunity to *appeal*, which repea ### Juror Staking -In order to participate as a juror, an individual must acquire ANT and then deposit it into the court's staking contract. Similar to a [token bonding curve](https://blog.relevant.community/bonding-curves-in-depth-intuition-parametrization-d3905a681e0a), the staking contract uses the current balance of deposited ANT to determine an exchange rate between ANT and the user's stake in the court. Unlike a token bonding curve, we do not treat the resulting economic stake as a transferrable token. This curved staking approach encourages jurors to participate early and establish the credibility of an instance of the court, and enables the network to deploy multiple instances of the court protocol which compete with one another by specializing in resolving specific types of disputes. +In order to participate as a juror, an individual must acquire ANT and then deposit it into the court's staking contract. Similar to a [token bonding curve](https://blog.relevant.community/bonding-curves-in-depth-intuition-parametrization-d3905a681e0a), the staking contract uses the current balance of deposited ANT to determine an exchange rate between ANT and the user's stake in the court. Unlike a token bonding curve, we do not treat the resulting economic stake as a transferrable token. This curved staking approach encourages jurors to participate early and establish the credibility of an instance of the court, and enables the Network to deploy multiple instances of the court protocol which compete with one another by specializing in resolving specific types of disputes. The staking and un-staking actions are governed by the following formulas: @@ -137,7 +137,7 @@ Governance authority over the court is granted to ANT holders by way of an Arago Initially, all votes will last 1 Month, require 50% approval and 1% approval quorum. Creating votes requires depositing 1000 ANT into a *proposal agreement* with the following terms: -> Proposals must be made in good faith with the intention to improve the network's operational efficiency, quality, or breadth of service, and benefit all ANT holders in equal measure. +> Proposals must be made in good faith with the intention to improve the Network's operational efficiency, quality, or breadth of service, and benefit all ANT holders in equal measure. The organization will face many operational decisions, including but not limited to the following: From 5a6ade8bf45010f97425c078c83b70bcddcd98b8 Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:17:25 -0400 Subject: [PATCH 20/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd6b336..79e9651 100644 --- a/README.md +++ b/README.md @@ -76,7 +76,7 @@ Juror drafting is managed via a process of *stake-weighted sortition*. In order *Figure 3: Court operations are broken into Terms* -For each dispute or appeal we have a number of available *juror slots* which must be filled. Each slot can be thought of as a seat on the jury. A single juror can occupy multiple seats, but each seat is associated with an equal portion of their stake which is committed and locked until the dispute is fully resolved. +For each dispute or appeal we have a number of available *juror slots* that must be filled. Each slot can be thought of as a seat on the jury. A single juror can occupy multiple seats, but each seat is associated with an equal portion of their stake, which is committed and locked until the dispute is fully resolved. One block after the heartbeat function is executed for the term in which a dispute is scheduled, a function to draft jurors for that dispute can be called. This function can be called at any point during the term and the resulting selection of jurors will be the same. If this transaction does not happen before the term ends the dispute must be rescheduled for a subsequent court term. From 3c92d0079cd3120a20bf33754513424fd59b006c Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:17:58 -0400 Subject: [PATCH 21/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 79e9651..327d289 100644 --- a/README.md +++ b/README.md @@ -108,7 +108,7 @@ The amount of required collateral depends on the appeal round and is a multiple ### Final Ruling -A final ruling is reached if a preliminary ruling is produced and neither side appeals, or if only one side appeals, or if the maximum number of appeals are reached. When a final ruling is produced the court needs to process collateral and stake redistribution. +A final ruling is reached if a preliminary ruling is produced and neither side appeals, if only one side appeals, or if the maximum number of appeals are reached. When a final ruling is produced, the court needs to process collateral and stake redistribution. **Redistributing and Unlocking Juror Stake** From 190eff340d21a15ad8f3e07694d8ffca87dae0b8 Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:18:42 -0400 Subject: [PATCH 22/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 327d289..7b217a8 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ A final ruling is reached if a preliminary ruling is produced and neither side a After a final ruling has been decided, all the adjudication rounds in the dispute can be settled. Jurors that didn't vote for the final ruling will lose the tokens that they had at stake. All the aggregated penalties and the juror fees in a round will be distributed proportionally among the jurors that voted for the final ruling option. -In case that no juror in a round voted for the final ruling, the juror tokens will be burned and the collected juror fees for the round will be refunded to the creator of the dispute (in case that it was the first round) or to the appealing party that sided with the final ruling. +In the case that no juror in a round voted for the final ruling, the juror tokens will be burned and the collected juror fees for the round will be refunded to the creator of the dispute (in the case that it was the first round) or to the appealing party that sided with the final ruling. **Redistributing Collateral** From a1967c52d59d8ef09e81aa9b4dca99ceceec99e0 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:20:17 -0400 Subject: [PATCH 23/34] burned-->slashed --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fd6b336..566e38b 100644 --- a/README.md +++ b/README.md @@ -64,7 +64,7 @@ The staking and un-staking actions are governed by the following formulas: ![](http://latex.codecogs.com/gif.latex?c&space;=&space;b&space;*&space;\(1+s&space;/&space;t\)^{\frac{1}{r}}) -Where `s` is the resulting stake in the court and `d` is the users deposit. When un-staking, `c` is the amount of ANT returned. The other variables represent state and parameters of the staking curve. `r` is the ratio of deposits to total stake, `b` is the balance of ANT in the staking contract, and `t` is the total amount of distributed stake. +Where `s` is the resulting stake in the court and `d` is the user's deposit. When un-staking, `c` is the amount of ANT returned. The other variables represent state and parameters of the staking curve. `r` is the ratio of deposits to total stake, `b` is the balance of ANT in the staking contract, and `t` is the total amount of distributed stake. Once a prospective juror has staked they are considered *active* and eligible to be drafted to review cases. A distinction is made between a juror being *staked* and *active.* An *active* juror can *de-activate* themselves at any time, but they will not be able to *un-stake* until any pending disputes they have been involved in have completed. @@ -114,7 +114,7 @@ A final ruling is reached if a preliminary ruling is produced and neither side a After a final ruling has been decided, all the adjudication rounds in the dispute can be settled. Jurors that didn't vote for the final ruling will lose the tokens that they had at stake. All the aggregated penalties and the juror fees in a round will be distributed proportionally among the jurors that voted for the final ruling option. -In case that no juror in a round voted for the final ruling, the juror tokens will be burned and the collected juror fees for the round will be refunded to the creator of the dispute (in case that it was the first round) or to the appealing party that sided with the final ruling. +In case that no juror in a round voted for the final ruling, the juror tokens will be slashed and the collected juror fees for the round will be refunded to the creator of the dispute (in case that it was the first round) or to the appealing party that sided with the final ruling. **Redistributing Collateral** From 7489579fd52fdcaff9ee1185ddfff8bdf4f4fd2c Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:21:58 -0400 Subject: [PATCH 24/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 22867ee..476077d 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,7 @@ In case that no juror in a round voted for the final ruling, the juror tokens wi **Redistributing Collateral** -If there was any appeal rounds before the final ruling, the total amount of collateral that was deposited for triggering each round will be assigned to the appealer supporting the final ruling. +If there were any appeal rounds before the final ruling, the total amount of collateral that was deposited for triggering each round will be assigned to the appealer supporting the final ruling. In the first adjudication round of a dispute (the original round created with the dispute), the Court doesn't directly manage collateral (as there may not be collateral at all or a different token is used). In case that there was collateral at stake depending on the Court ruling, whenever the Court has a final ruling it will notify the contract being *arbitrated* with the ruling and this contract can then distribute collateral. From 8a471db804e5cb8ad82c090f405c048eae0bae3b Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:39:21 -0400 Subject: [PATCH 25/34] fixed capitalization consitency of apps in the aragon permissions section --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 22867ee..6c1996d 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,12 @@ By chaining multiple contracts together we can define complex criteria which con *Figure 1: Token Manager --> Voting --> Finance --> Vault* -The vault, which stores the organizations assets, grants the transfer role only to the finance application, which internally implements budgeting logic. The finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from Token Holders the Token Manager's associated token. +The Vault, which stores the organizations assets, grants the transfer role only to the Finance application, which internally implements budgeting logic. The Finance application's *Cre +ate Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The Voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from token holder's of the Token Manager's associated token. This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote. It's not unreasonable for a minority stakeholder to be concerned that a majority of stakeholders might decide to liquidate the organization and exclude minority stakeholders in the process. -To avoid this the organization's need a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. +To avoid this an organization needs a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. ### Proposal Agreements From 350e6fb0ffa12d912a73910248ee92997096fb14 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:41:32 -0400 Subject: [PATCH 26/34] fixed grammar --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 3209214..f04e5cf 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,8 @@ By chaining multiple contracts together we can define complex criteria which con *Figure 1: Token Manager --> Voting --> Finance --> Vault* -The Vault, which stores the organizations assets, grants the transfer role only to the Finance application, which internally implements budgeting logic. The Finance application's *Cre -ate Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The Voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from token holder's of the Token Manager's associated token. +The Vault, which stores the organization's assets, grants the transfer role only to the Finance application, which internally implements budgeting logic. The Finance application's *Cre +ate Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The Voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from token holders of the Token Manager's associated token. This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote. It's not unreasonable for a minority stakeholder to be concerned that a majority of stakeholders might decide to liquidate the organization and exclude minority stakeholders in the process. From 8eca6740142ec49669414d4aca2c51d1d9b1521b Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:42:22 -0400 Subject: [PATCH 27/34] clarify this --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f04e5cf..0c883fb 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ ate Payments* role is assigned exclusively to the Voting application so that the This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote. It's not unreasonable for a minority stakeholder to be concerned that a majority of stakeholders might decide to liquidate the organization and exclude minority stakeholders in the process. -To avoid this an organization needs a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. +To avoid a hostile liquidation scenario like this an organization needs a mechanism to impose a constraint that can be enforced by the actions of any individual within the organization rather than a majority of participants. ### Proposal Agreements From fe0671ed1a7f1e567fd76b9add8dbd8958236194 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:48:27 -0400 Subject: [PATCH 28/34] Update tax to subscription fee --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 0c883fb..68f0cdd 100644 --- a/README.md +++ b/README.md @@ -14,8 +14,7 @@ By chaining multiple contracts together we can define complex criteria which con *Figure 1: Token Manager --> Voting --> Finance --> Vault* -The Vault, which stores the organization's assets, grants the transfer role only to the Finance application, which internally implements budgeting logic. The Finance application's *Cre -ate Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The Voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from token holders of the Token Manager's associated token. +The Vault, which stores the organization's assets, grants the transfer role only to the Finance application, which internally implements budgeting logic. The Finance application's *Create Payments* role is assigned exclusively to the Voting application so that the only way to create payments is to successfully pass a vote. The Voting application's *Create Votes* role is granted exclusively to the Token Manager of the organization's native token. The Token Manager will forward actions from token holders of the Token Manager's associated token. This process effectively constrains how funds can be transferred in the organization, but the approval of a given transfer is ultimately authorized by majority vote. It's not unreasonable for a minority stakeholder to be concerned that a majority of stakeholders might decide to liquidate the organization and exclude minority stakeholders in the process. @@ -125,9 +124,11 @@ In the first adjudication round of a dispute (the original round created with th ## Fee Summary -In order for the court to operate fees must be captured from users to compensate jurors for their effort, risk, and opportunity cost of capital. The market for dispute resolution services exhibits some dynamics of a predator-prey relationship. Disputes will be more rare if there is a common expectation that the dispute resolution process is reliable and fair. The result is that as disputes become more rare, or are settled in early dispute rounds, the incentive to participate as a juror decreases. As these incentives decrease there will be less stake in the court and the court may be perceived as less reliable, resulting in more disputes and more appeals leading to overall less consistent and efficient operation. To resolve this issue, fees are captured not just when disputes occur, but also on a recurring basis from users even when no disputes occur. +In order for the court to operate fees must be captured from users to compensate jurors for their effort, risk, and opportunity cost of capital. The market for dispute resolution services exhibits some dynamics of a predator-prey relationship where the demand to participate as a juror depends on the volume of disputes, and the volume of disputes depends on the reliable presence of honest jurors. -- **Agreement Tax**: A tax is imposed on organizations which choose to use the court as an arbitration provider. Taxes must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. +Disputes will be more rare if there is a common expectation that the dispute resolution process is reliable and fair. The result is that as disputes become more rare, or are settled in early dispute rounds, the incentive to participate as a juror decreases. As these incentives decrease there will be less stake in the court and the court may be perceived as less reliable, resulting in more disputes and more appeals leading to overall less consistent and efficient operation. To resolve this issue, fees are captured not just when disputes occur, but also on a recurring basis from users even when no disputes occur. + +- **Subscription Fee**: A subscription fee is imposed on organizations which choose to use the court as an arbitration provider. Subscription fee must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. - **Dispute Fee**: Dispute fees are captured at the time a dispute or appeal occurs. And are calculated based on a flat amount times the amount of juror stake selected in the dispute or appeal round. These fees are distributed only to drafted jurors who rule in favor of winning side. This fee structure ensures that there is a consistent stream of revenue to support the operation of the court even if disputes occur irregularly. Fees are governed by the Aragon Network organization as described below. From 03bc55b94fa44a81444d63c5b4ab2b693c1b3acd Mon Sep 17 00:00:00 2001 From: Luke Duncan Date: Thu, 9 May 2019 10:49:10 -0400 Subject: [PATCH 29/34] Update README.md Co-Authored-By: John Light --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 68f0cdd..c490b86 100644 --- a/README.md +++ b/README.md @@ -129,7 +129,7 @@ In order for the court to operate fees must be captured from users to compensate Disputes will be more rare if there is a common expectation that the dispute resolution process is reliable and fair. The result is that as disputes become more rare, or are settled in early dispute rounds, the incentive to participate as a juror decreases. As these incentives decrease there will be less stake in the court and the court may be perceived as less reliable, resulting in more disputes and more appeals leading to overall less consistent and efficient operation. To resolve this issue, fees are captured not just when disputes occur, but also on a recurring basis from users even when no disputes occur. - **Subscription Fee**: A subscription fee is imposed on organizations which choose to use the court as an arbitration provider. Subscription fee must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. -- **Dispute Fee**: Dispute fees are captured at the time a dispute or appeal occurs. And are calculated based on a flat amount times the amount of juror stake selected in the dispute or appeal round. These fees are distributed only to drafted jurors who rule in favor of winning side. +- **Dispute Fee**: Dispute fees are captured at the time a dispute or appeal occurs and are calculated based on a flat amount multiplied by the amount of juror stake selected in the dispute or appeal round. These fees are distributed only to drafted jurors who rule in favor of the winning side. This fee structure ensures that there is a consistent stream of revenue to support the operation of the court even if disputes occur irregularly. Fees are governed by the Aragon Network organization as described below. From 173ddfa503c93327f616c7244722caf73aeb7d4b Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:54:00 -0400 Subject: [PATCH 30/34] updated language for voting parameters --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c490b86..b5cd29f 100644 --- a/README.md +++ b/README.md @@ -137,7 +137,7 @@ This fee structure ensures that there is a consistent stream of revenue to suppo Governance authority over the court is granted to ANT holders by way of an Aragon organization. -Initially, all votes will last 1 Month, require 50% approval and 1% approval quorum. Creating votes requires depositing 1000 ANT into a *proposal agreement* with the following terms: +Initially, all votes will last 1 Month, require 50% Support and 1% Minimum Acceptance Quorum. Creating votes requires depositing 1000 ANT into a *Proposal Agreement* with the following terms: > Proposals must be made in good faith with the intention to improve the Network's operational efficiency, quality, or breadth of service, and benefit all ANT holders in equal measure. From b32d886d46726f7fd077c1852d42b10b3966440b Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 10:55:04 -0400 Subject: [PATCH 31/34] Court capitalization fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b5cd29f..3891e39 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ In order for the court to operate fees must be captured from users to compensate Disputes will be more rare if there is a common expectation that the dispute resolution process is reliable and fair. The result is that as disputes become more rare, or are settled in early dispute rounds, the incentive to participate as a juror decreases. As these incentives decrease there will be less stake in the court and the court may be perceived as less reliable, resulting in more disputes and more appeals leading to overall less consistent and efficient operation. To resolve this issue, fees are captured not just when disputes occur, but also on a recurring basis from users even when no disputes occur. -- **Subscription Fee**: A subscription fee is imposed on organizations which choose to use the court as an arbitration provider. Subscription fee must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. +- **Subscription Fee**: A subscription fee is imposed on organizations which choose to use the Court as an arbitration provider. Subscription fees must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. - **Dispute Fee**: Dispute fees are captured at the time a dispute or appeal occurs and are calculated based on a flat amount multiplied by the amount of juror stake selected in the dispute or appeal round. These fees are distributed only to drafted jurors who rule in favor of the winning side. This fee structure ensures that there is a consistent stream of revenue to support the operation of the court even if disputes occur irregularly. Fees are governed by the Aragon Network organization as described below. From 21c1150d6804dba7c43ee23fddafb9039fd19b11 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 11:07:05 -0400 Subject: [PATCH 32/34] fixed more grammar issues --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3891e39..34f2274 100644 --- a/README.md +++ b/README.md @@ -96,13 +96,13 @@ Once jurors have been drafted the dispute enters a deliberation phase where juro Jurors are given a certain number of terms, called the *commitment period*, to submit a hash of their ruling. After the commit period ends, jurors are given a certain number of terms to reveal their ruling, this period is called the *reveal period*. If a juror reveals their vote prior to the reveal period, anyone can use this information to penalize the juror in exchange for a reward. If a juror fails to commit and reveal a vote by the end of the *reveal period* they are penalized. -After the conclusion of *reveal period*, a majority of support among drafted jurors is used as a *preliminary ruling*. The preliminary ruling is considered final if there is no appeal made during the *appeal period*. +After the conclusion of the *reveal period*, a majority of support among drafted jurors is used as a *preliminary ruling*. The preliminary ruling is considered final if there is no appeal made during the *appeal period*. ### Appeals -Each dispute is subject to a maximum number of appeal rounds. Since each dispute and appeal round has a fixed duration, the max appeal rounds also determines the maximum amount of time before a final decision is reached. +Each dispute is subject to a maximum number of appeal rounds. Since each dispute and appeal round has a fixed duration, the maximum number of appeal rounds also determines the maximum amount of time before a final decision is reached. -Appeals can be triggered after a dispute has been resolved with a preliminary ruling in favor of one outcome or the other. In order for an Appeal to occur both sides of the dispute must deposit additional collateral. If neither side deposits the required collateral to trigger the next appeal round, the preliminary ruling is finalized. If only one side deposits the required collateral the ruling is immediately finalized in their favor. If both sides deposit the required collateral then the appeal round is scheduled. +Appeals can be triggered after a dispute has been resolved with a preliminary ruling in favor of one outcome or the other. In order for an appeal to occur both sides of the dispute must deposit additional collateral. If neither side deposits the required collateral to trigger the next appeal round, the preliminary ruling is finalized. If only one side deposits the required collateral the ruling is immediately finalized in their favor. If both sides deposit the required collateral then the appeal round is scheduled. The amount of required collateral depends on the appeal round and is a multiple of the fees required to compensate selected jurors. In higher appeal rounds where more juror stake is selected to adjudicate the dispute, the base amount of collateral required will be higher. The total amount of collateral required to appeal will be a multiple of this amount, 2x the base amount for the side which is reinforcing the preliminary ruling, and 3x the base amount for side which is appealing the preliminary ruling. When the dispute is finalized the base amount is used to compensate jurors and the remainder is used to compensate the winning party for risking their appeal deposit. Appeal deposits can be crowdsourced so they do not need to be supplied by a single party. @@ -120,7 +120,7 @@ In case that no juror in a round voted for the final ruling, the juror tokens wi If there were any appeal rounds before the final ruling, the total amount of collateral that was deposited for triggering each round will be assigned to the appealer supporting the final ruling. -In the first adjudication round of a dispute (the original round created with the dispute), the Court doesn't directly manage collateral (as there may not be collateral at all or a different token is used). In case that there was collateral at stake depending on the Court ruling, whenever the Court has a final ruling it will notify the contract being *arbitrated* with the ruling and this contract can then distribute collateral. +In the first adjudication round of a dispute (the original round created with the dispute), the Court doesn't directly manage collateral (as there may not be collateral at all or a different token is used). In cases where there is collateral at stake depending on the Court ruling, whenever the Court has a final ruling it will notify the contract being *arbitrated* with the ruling and this contract can then redistribute collateral. ## Fee Summary From d9621c051b21aad962e435c9a947850fa1da5e24 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Thu, 9 May 2019 11:25:30 -0400 Subject: [PATCH 33/34] fixed more grammar issues --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 34f2274..587b36a 100644 --- a/README.md +++ b/README.md @@ -128,7 +128,7 @@ In order for the court to operate fees must be captured from users to compensate Disputes will be more rare if there is a common expectation that the dispute resolution process is reliable and fair. The result is that as disputes become more rare, or are settled in early dispute rounds, the incentive to participate as a juror decreases. As these incentives decrease there will be less stake in the court and the court may be perceived as less reliable, resulting in more disputes and more appeals leading to overall less consistent and efficient operation. To resolve this issue, fees are captured not just when disputes occur, but also on a recurring basis from users even when no disputes occur. -- **Subscription Fee**: A subscription fee is imposed on organizations which choose to use the Court as an arbitration provider. Subscription fees must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. +- **Subscription Fee**: A subscription fee is imposed on organizations that choose to use the Court as an arbitration provider. Subscription fees must be paid on a recurring basis for the agreement to remain valid. These fees are split between the Aragon Network's treasury and among all actively staked jurors. - **Dispute Fee**: Dispute fees are captured at the time a dispute or appeal occurs and are calculated based on a flat amount multiplied by the amount of juror stake selected in the dispute or appeal round. These fees are distributed only to drafted jurors who rule in favor of the winning side. This fee structure ensures that there is a consistent stream of revenue to support the operation of the court even if disputes occur irregularly. Fees are governed by the Aragon Network organization as described below. From 51e3667ec572f7bae8a7d29b86e39811a12d14e6 Mon Sep 17 00:00:00 2001 From: lkngtn Date: Fri, 10 May 2019 13:25:41 -0400 Subject: [PATCH 34/34] addressed jorges sortition comments --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 587b36a..9018657 100644 --- a/README.md +++ b/README.md @@ -86,9 +86,7 @@ To make the draft function efficient, active jurors are arranged into a tree str *Figure 4: Traversing the sortition tree to select a juror* -Due to gas constraints, the draft function can select at most 100 juror slots per call. More that 100 juror slots can be selected using multiple transactions. To minimize the number of transactions required to select a specific proportion of total stake, the required amount of stake per juror slot can be increased in subsequent appeal rounds. - -The sortition tree must be updated between terms as the proportional stake of jurors changes. Changes are queued and executed when the heartbeat function is called. +Due to gas constraints, the draft function can select at most 100 juror slots per call. More that 100 juror slots can be selected using multiple transactions. ### Juror Ruling