district0x / district-proposals

Proposals for new districts to be built by the district0x Team.
https://vote.district0x.io/
213 stars 36 forks source link

Escargot - A simple escrow service. [DP#67] #67

Open SovereignPleb opened 7 years ago

SovereignPleb commented 7 years ago

screen shot 2017-07-29 at 8 42 33 pm

Escargot is a simple escrow service that enables commerce executed via smart contracts. It connects transacting parties with a market of reputable third party arbiters. Arbiters resolve disputes that arise between transacting parties based on previously established terms and conditions. Arbiters earn a fee when their services are utilized and disputes are successfully resolved.

[ Looking for community feedback! ]

Purpose

Smart contracts are revolutionizing the way business is done, but real interactions between human beings cannot always be resolved in code. Smart contracts allow guaranteed execution of transactions according to predefined terms, but real life is not always black and white. Disputes will continue to arise that require human discretion to resolve.

Introducing Escargot. Escargot is a practical solution to the gray areas that exist in smart contracts. It does this along two pillars. First, it defines a simple escrow-enabled transaction structure that enables a predefined third party arbiter to resolve disputes. Second, it creates a district0x marketplace of reputable arbiters who wish to provide their services. Business transacted in the Escargot marketplace will comply with simple escrow enabled transaction structure, allowing for seamless execution of smart contracts. Disputes are resolved and fees are paid directly in the Escargot marketplace.

Arbiters are subject to evaluation using a special reputation model. The model encourages all community members to retrospectively evaluate arbiter decisions, which maintains a high level of quality in the market.

Es-crow, noun, A contractual agreement in which monetary disbursements are withheld pending conditions agreed to by the transacting parties

Functionality

Escargot relies on three underlying technologies:

1) d0xINFRA - Escargot operates as a marketplace built on district0x framework. The district0x technology framework is called d0xINFRA. d0xINFRA is in turn powered by Ethereum, Aragon, and IPFS. Learn more at district0x.io.

Escargot utilizes the four core features of d0xINFRA:

2) Escargot Reputation Model (EgRM) - The collective input from the entire Escargot community must ultimately determine an arbiter’s reputation in the marketplace. In order to faciliate this, the EgRM allows all community members to evaluate past disputes and provide feedback to the arbiters. If the community at large agrees with the decisions of a given arbiter, he will enjoy a strong reputation on the platform. If the community rejects his decisions, his reputation will suffer. Community members are incentivized to participate in EgRM, ensuring a critical mass of careful evaluations.

EgRM will evolve and grow over time. In future implementations of Escargot, staking of ERC20 tokens may be considered to support an arbiter’s reputation. Private circles may be created to connect smaller, “ultra high quality” networks within the broader community.

[ Looking for developers with experience in building reputation systems to join the team or provide feedback on our proposal ]

3) Simple Escrow Enabled Transactions (SEET) - In order for an independent third party to influence the outcome of a transaction on Ethereum, a special type of smart contract must be used. The smart contract must create an temporary escrow which requires subsequent mutual confirmation before funds are finally disbursed. If both sides do not send confirmation, a third party is called upon to decide the outcome of the contract. The decision criteria and possible outcomes that the third party may execute are predefined in the smart contract.

SEET is a feature of a smart contract rather than a specific contract code. It is a flexible criteria that can be implemented in both simple or complex transaction types. As long as a smart contract is subject to the two-step process using specific parameters, it is considered a SEET.

[ Looking for developers with experience in smart contract writing to join the team or provide feedback on our proposal ]

See the diagram below for a breakdown of how the process works:

eg overview

Real life applications

Escargot is a simple, practical solution that enables commerce transacted on Ethereum today. The service can be adapted for multiple markets and economies. The service is immediately useful for the following cases:

Short term and long term plans

Check out Google Doc: https://docs.google.com/document/d/1Ocyofbsnph4g5ZULsZXQBFWXIZ8vcGHQD_RVYnPl_YU/edit?usp=sharing

screen shot 2017-07-29 at 8 39 43 pm

cutiebear commented 7 years ago

I like this proposal!

ghost commented 7 years ago

Swarm City's smart contracts would be perfect for SEET, because what you are describing is exactly what they already do, to some extent.

Specifically: https://github.com/swarmcity/sc-dappcontracts/blob/master/contracts/SimpleDeal.sol For an example of a contract that implements something appropriating "SEET"

quantumdwayne commented 7 years ago

Great work. District0x definitely needs a service like this. Ethtrade would benefit a lot from Escargot.

SovereignPleb commented 7 years ago

@joshuam10o Do you have any reference material that explains that script in plain english? <--- Not a coder :-)

Or a use case of how it would play out?

ghost commented 7 years ago

@okmrponcho, it works almost exactly how you've described Escargot,

1) User creates a deal, 2) User specifies the total amount (their part of escrow, plus their counterparty), 3) User funds the deal, (only their part) 4) User communicates with the counterparty "off chain" 5) User specifies counterparty to the deal contract. 6) Counterparty funds the rest. (skin in the game) 7) Services/goods are provided 8) User releases deal funds to counterparty.

At any point before the counterparty is specified, the user can cancel/withdraw At any point after the counterparty is specified, but before payout, either party can put the deal into "dispute" If the deal is put into dispute, the arbitrator decides what portion of the funding goes to the counterparty, and the rest is refunded to the initial party (this allows any arbitrary distribution). It's implied both parties submit evidence "off chain".

ssinsan commented 7 years ago

Hi guys! I also feel like ditrict.Ox would need that kind of service! Do you know about https://kleros.io/ ?

Alexand0x commented 7 years ago

This is the kind of thing I can see being implemented more as a plug-and-play module for all districts to utilize rather than an outright district in its own right. Really useful for bringing value to the entire network!