diff --git a/developer/arbitration-by-example/twopartyarbitrable.sol.md b/developer/arbitration-by-example/twopartyarbitrable.sol.md index 307ae72..5853a05 100644 --- a/developer/arbitration-by-example/twopartyarbitrable.sol.md +++ b/developer/arbitration-by-example/twopartyarbitrable.sol.md @@ -5,7 +5,7 @@ pragma solidity ^0.4.15; import "./Arbitrable.sol"; /** @title Two-Party Arbitrable - * @dev A contract between two parties which can be arbitrated. Both parties has to pay for the arbitration fee. The winning party will get its fee refunded. + * @dev A contract between two parties which can be arbitrated. Both parties have to pay for the arbitration fee. The winning party will get its fee refunded. * To develop a contract inheriting from this one, you need to: * - Redefine RULING_OPTIONS to explain the consequences of the possible rulings. * - Redefine executeRuling while still calling super.executeRuling to implement the results of the arbitration. @@ -32,14 +32,14 @@ contract TwoPartyArbitrable is Arbitrable { enum Party {PartyA, PartyB} - /** @dev Indicate that a party has to pay a fee or would otherwise be considered as loosing. + /** @dev Indicate that a party has to pay a fee or would otherwise be considered as losing. * @param _party The party who has to pay. */ event HasToPayFee(Party _party); /** @dev Constructor. Choose the arbitrator. * @param _arbitrator The arbitrator of the contract. - * @param _timeout Time after which a party automatically loose a dispute. + * @param _timeout Time after which a party automatically lose a dispute. * @param _partyB The recipient of the transaction. * @param _amountOfChoices The number of ruling options available. * @param _arbitratorExtraData Extra data for the arbitrator. @@ -79,7 +79,7 @@ contract TwoPartyArbitrable is Arbitrable { require(status < Status.DisputeCreated, "Dispute has already been created."); // Make sure a dispute has not been created yet. lastInteraction = now; - // The partyB still has to pay. This can also happens if he has paid, but arbitrationCost has increased. + // The partyB still has to pay. This can also happen if he has paid, but arbitrationCost has increased. if (partyBFee < arbitrationCost) { status = Status.WaitingPartyB; emit HasToPayFee(Party.PartyB); @@ -102,7 +102,7 @@ contract TwoPartyArbitrable is Arbitrable { require(status < Status.DisputeCreated, "Dispute has already been created."); // Make sure a dispute has not been created yet. lastInteraction = now; - // The partyA still has to pay. This can also happens if he has paid, but arbitrationCost has increased. + // The partyA still has to pay. This can also happen if he has paid, but arbitrationCost has increased. if (partyAFee < arbitrationCost) { status = Status.WaitingPartyA; emit HasToPayFee(Party.PartyA); @@ -155,8 +155,8 @@ contract TwoPartyArbitrable is Arbitrable { arbitrator.appeal.value(msg.value)(disputeID,_extraData); } - /** @dev Execute a ruling of a dispute. It reimburse the fee to the winning party. - * This need to be extended by contract inheriting from it. + /** @dev Execute a ruling of a dispute. It reimburses the fee to the winning party. + * This needs to be extended by contract inheriting from it. * @param _disputeID ID of the dispute in the Arbitrator contract. * @param _ruling Ruling given by the arbitrator. 1 : Reimburse the partyA. 2 : Pay the partyB. */ diff --git a/developer/guide-for-preparing-transactions.md b/developer/guide-for-preparing-transactions.md index 3b838fc..056a1bf 100644 --- a/developer/guide-for-preparing-transactions.md +++ b/developer/guide-for-preparing-transactions.md @@ -92,7 +92,7 @@ Javascript Court: /ipfs/Qme15AUfpvLX3iwEtqswe26PQHMmKnF4eWGywBPqbkdqcD/xDai-Java ### Presenting Transactions: -* Make a copy of this [template](https://docs.google.com/document/d/1av-IU5aKwRFzKhktdVNAlkt12sozows6uBapj1T-lq8/edit?usp=sharing) and fill in the necessary informaton. +* Make a copy of this [template](https://docs.google.com/document/d/1av-IU5aKwRFzKhktdVNAlkt12sozows6uBapj1T-lq8/edit?usp=sharing) and fill in the necessary information. * If submitting through **Discord** tag @xpriment626 and share the link to your doc. * If submitting through **Telegram** tag @clesaege and share the link to your doc. * If submitting through **Slack** share the link to your doc on the public #dev channel. diff --git a/developer/light-curate.md b/developer/light-curate.md index 4b56905..e387ef9 100644 --- a/developer/light-curate.md +++ b/developer/light-curate.md @@ -8,9 +8,9 @@ Light Curate is a new version of the contract that significantly decreases costs ## Development -This section will be devided into 3 sections: +This section will be divided into 3 sections: -1- Fetching Parameters: Your UI needs to display some important information to the users such as, what is the bounty for successfuly challenges and how long do items stay in the challenge period. 1- Item Submission: Here you will learn how to build a button to submit an item to the UI. 2- Fetching Items: How to view items and item details. 3- Item Interaction: This includes challenging, submitting evidence and crowdfunding appeals. +1- Fetching Parameters: Your UI needs to display some important information to the users such as, what is the bounty for successful challenges and how long do items stay in the challenge period. 1- Item Submission: Here you will learn how to build a button to submit an item to the UI. 2- Fetching Items: How to view items and item details. 3- Item Interaction: This includes challenging, submitting evidence and crowdfunding appeals. ### Fetching Parameters @@ -166,7 +166,7 @@ async function jsonStreamToPromise(stream) { } ``` -The JSON file for the object is composed of the its metadata and fields. +The JSON file for the object is composed of its metadata and fields. * Metadata \(columns\): An array describing each of the items columns \(what's its type, name, description, etc.\) * Values \(values\): An object mapping the column name to the value. @@ -247,7 +247,7 @@ const tx = await gtcr.addItem(ipfsEvidencePath, { > We break down this section into two as list views and details view have different requirements. -Fetchin items is best done via the subgraph we provide. If you deployed an list using the factory, it already has a subgraph deployed and available \(here\)\[[https://thegraph.com/explorer/subgraph/kleros/light-curate-kovan](https://thegraph.com/explorer/subgraph/kleros/light-curate-kovan)\]. +Fetching items is best done via the subgraph we provide. If you deployed a list using the factory, it already has a subgraph deployed and available \(here\)\[[https://thegraph.com/explorer/subgraph/kleros/light-curate-kovan](https://thegraph.com/explorer/subgraph/kleros/light-curate-kovan)\]. #### List diff --git a/integrations/industry-use-cases/blockchain-wallets.md b/integrations/industry-use-cases/blockchain-wallets.md index c0fe523..4aed761 100644 --- a/integrations/industry-use-cases/blockchain-wallets.md +++ b/integrations/industry-use-cases/blockchain-wallets.md @@ -8,9 +8,9 @@ description: Secure and decentralized data sources for blockchain wallets With the number of smart contract exploits and hacks getting higher than ever, it is more important than ever to be able to provide wallet users with reliable and meaningful contract information before they perform any transaction. -The number of deployed smart contracts on Ethereum alone number in the millions, and wallet providers often have have to rely on data sources sourced from centralized parties, or turn to crowd-sourced but insecure public lists. +The number of deployed smart contracts on Ethereum alone number in the millions, and wallet providers often have to rely on data sources sourced from centralized parties, or turn to crowd-sourced but insecure public lists. -Kleros solves this problem with it's fully trustless and permissionless data registries built specially for blockchain wallets. +Kleros solves this problem with its fully trustless and permissionless data registries built especially for blockchain wallets. ## **How Kleros can be used** diff --git a/pnk-token.md b/pnk-token.md index 24fbb58..e15bfba 100644 --- a/pnk-token.md +++ b/pnk-token.md @@ -67,11 +67,11 @@ So far, this would still be true if we had potential jurors stake ETH instead of ### PNK makes an attack hard -If would-be jurors were drawn based on how much ETH they had staked (rather than PNK), it would be much more viable for an attacker to try to buy enough ETH to outspend the rest of the market. If an attacker wants to obtain 51% of PNK, market liquidity will dry up. As the attacker buys PNK , it will start to become scarce and each additional PNK will cost more and more. The attacker may not even be able to find 51% of PNK for sale on the open market at any given time. +If would-be jurors were drawn based on how much ETH they had staked (rather than PNK), it would be much more viable for an attacker to try to buy enough ETH to outspend the rest of the market. If an attacker wants to obtain 51% of PNK, market liquidity will dry up. As the attacker buys PNK, it will start to become scarce and each additional PNK will cost more and more. The attacker may not even be able to find 51% of PNK for sale on the open market at any given time. In contrast, consider the situation of an attacker who wants to buy enough ETH to make a stake that is greater than whatever would be already staked in Kleros courts at a given time. There is a lot of ETH floating around, and Kleros will presumably only represent a part of the broader Ethereum ecosystem. -[Current 24 hour market volumes for ETH are hovering around 2–3 billion USD with all time highs near 10 billion.](https://coinmarketcap.com/currencies/ethereum/) If someone wanted to buy enough ETH to overwhelm whatever is staked in Kleros, it probably wouldn’t take them all that long. Moreover, the market for ETH is much [deeper](https://en.wikipedia.org/wiki/Market\_depth) than the market for PNK will be. So, while a large purchase of ETH might move the price of ETH a bit, market liquidity effects woudn’t come to Kleros’ defense in the same way as they do by having a native token. +[Current 24 hour market volumes for ETH are hovering around 2–3 billion USD with all time highs near 10 billion.](https://coinmarketcap.com/currencies/ethereum/) If someone wanted to buy enough ETH to overwhelm whatever is staked in Kleros, it probably wouldn’t take them all that long. Moreover, the market for ETH is much [deeper](https://en.wikipedia.org/wiki/Market\_depth) than the market for PNK will be. So, while a large purchase of ETH might move the price of ETH a bit, market liquidity effects wouldn’t come to Kleros’ defense in the same way as they do by having a native token. ### PNK makes an attack expensive diff --git a/products/court/README.md b/products/court/README.md index 283a7ee..bb9a235 100644 --- a/products/court/README.md +++ b/products/court/README.md @@ -28,7 +28,7 @@ The Kleros court process works in the following way: * Once a Dapp sends a dispute, the system randomly picks jurors in a court specified for the case in question. * The case enters the evidence submission period where all interested parties (disputing parties, jurors, challengers, and any external agent) are able to submit their evidence. -* After the evidence period is finished, jurors are able to vote on the case. For now, Kleros jurors can vote 'Yes', 'No' and 'Refuse to Arbitrate'. The third option is available in cases of an invalid submissions, illegal or morally unacceptable content or evidence. +* After the evidence period is finished, jurors are able to vote on the case. For now, Kleros jurors can vote 'Yes', 'No' and 'Refuse to Arbitrate'. The third option is available in cases of an invalid submission, illegal or morally unacceptable content or evidence. ![](../../.gitbook/assets/kleros-arbitration.png) diff --git a/products/court/famous-kleros-cases.md b/products/court/famous-kleros-cases.md index 3f707ff..578f725 100644 --- a/products/court/famous-kleros-cases.md +++ b/products/court/famous-kleros-cases.md @@ -85,7 +85,7 @@ Baer Chain was then classified as a Ponzi scheme by the Chinese government a few ![](<../../.gitbook/assets/image (62).png>) -Proof of Humanity is a Sybil-resistant list of humans using social vouching and Kleros arbitration to endure no fake/duplicate/incorrect profiles make it into the regisrty. [Kevin Owocki](https://twitter.com/owocki?lang=fr), the founder of [Gitcoin](https://gitcoin.co), submitted his [profile ](https://app.proofofhumanity.id/profile/0x00de4b13153673bcae2616b67bf822500d325fc3?network=mainnet)into PoH but got challenged because the policy asked for a "front-facing picture" and he provided one where he was looking at an angle from the photograph. Long debates ensued to clarify what a front-facing picture meant and what would an acceptable angle be. The profile was finally rejected but Kevin Owocki was of course able to submit another one and make it into the registry. +Proof of Humanity is a Sybil-resistant list of humans using social vouching and Kleros arbitration to endure no fake/duplicate/incorrect profiles make it into the registry. [Kevin Owocki](https://twitter.com/owocki?lang=fr), the founder of [Gitcoin](https://gitcoin.co), submitted his [profile ](https://app.proofofhumanity.id/profile/0x00de4b13153673bcae2616b67bf822500d325fc3?network=mainnet)into PoH but got challenged because the policy asked for a "front-facing picture" and he provided one where he was looking at an angle from the photograph. Long debates ensued to clarify what a front-facing picture meant and what would an acceptable angle be. The profile was finally rejected but Kevin Owocki was of course able to submit another one and make it into the registry. {% hint style="info" %} **Examples of evidence material:‌** diff --git a/products/proof-of-humanity/poh-faq.md b/products/proof-of-humanity/poh-faq.md index 5cd314f..e652b56 100644 --- a/products/proof-of-humanity/poh-faq.md +++ b/products/proof-of-humanity/poh-faq.md @@ -38,13 +38,13 @@ If your profile isn’t challenged during this period or the challenges are not If you are challenged, you will either go back to “Pending Registration” phase or be “Removed” depending on the ruling of Kleros Court. -Once you are “Registered”, your profile can either expire after a year (if you don’t reapply) or someone can make a request for removal which will move it to the “Pending removal” phase during when anyone can challenge the removal. +Once you are “Registered”, your profile can either expire after a year (if you don’t reapply) or someone can make a request for removal which will move it to the “Pending removal” phase during which anyone can challenge the removal. If your profile is “Expired”, “Removed” or about to expire soon, you can reapply for submission which will bring you back to the “Vouching Phase” ![Simplified phase transitions of a profile in PoH (without appeals).](https://lh6.googleusercontent.com/b\_2pVuJKBR1w-SxU95uvjJ27NVynA3jWtO4lF2DGYlLYNT39-xez\_YNySzUMTYkzgvHke4S6M-1IJbWXWNuGm1WAIxlNOuqudpzrBsOngx59AfSot93wAAvddJ8CQtPC0ViSycpg) -You can learn more about how the challenge and the dispute resolution system works in Kleros Court [documentation](https://kleros.gitbook.io/docs/products/court). +You can learn more about how the challenge and the dispute resolution system work in Kleros Court [documentation](https://kleros.gitbook.io/docs/products/court). ## Why should I vouch for someone? What's in it for me?