P2P Escrow as a Service
Details
Creator
User: Koush eMail: kousha@bitcoinabc.org Telegram: @e_Koush
Overview
The escrow module is meant to be an external service, that can be integrated in any eCash service that has a use for it. Be it a wallet, tipping platform or a p2p exchange or our eBounty platform, anyone should be able to hook up their service to the escrow module.
Some services might just need a simple time-lock (Webtipper), others will need dispute resolution (eBounty) and therefor there should be a dashboard for our moderators to access a contract and make a decision on which of the two eligible parties will get paid out / paid back.
Optimally I would have this module be provided as an escrow as a service which further platforms, wallets and services in the ecosystem can hook up to easily.
How this is done the best and most secure way is basically up to you and can be discussed further. What is important to me however, is that it is able to take a fee in a non-custodial way from every escrow created. A first iteration of this service would be a simple time-lock escrow used for a tipping mechanism, reverting funds back to the sender if the recipient doesn’t redeem it in time.
Concept
This blogpost from localcryptos which utilizes p2p escrow on BTC and BCH also gives you a nice overview of the concept behind implementing Bitcoin based smart contract escrow for the purpose of powering a non-custodial exchange. The escrow is intended to take a fee for the service provided in order to maintain itself and to be able to provide dispute resolution services.
It would be preferable if you have some knowledge on how such covenants work and what type of structure and features are viable/sensible. Also it would be helpful if you tell me what further details and info you would need from me as a developer.
Notes
Many of my conceptualized services and tools (Webtipper, Cashsuite, Commerce Map and eBounty) would have a need for a simple p2p escrow module enabling transaction dynamics that are impossible with most other crypto services as well as legacy finance. Adding eToken functionality (for stabletoken support) would be a nice to have if possible, but has low priority for the first iteration.
User-Story
(eBounty)
1. User Alice choses from available options for desired escrow service 2. User Alice sends funds to the escrow and locks it, which notifies user Bob 3. User Bob completes tasks, which notifies user Alice 4a. User Alice reviews and confirms the completion of task 5a. escrow unlocks funds and takes predetermined % of fees
Alternatively:
4b. User Alice reviews completion of task and rejects the unlocking of funds 5b. If User Bob disputes the rejection, third party moderators gets notified and resolves the dispute, eventually sending funds to either Alice or Bob 6. Escrow unlocks and sends funds to one party and takes predetermined % of fees
(WebTipper / UberChat)
- User tips youtube channel
- During Livestream: A chat message is generated: “💸Uberchat Donation💸: $amount in XEC - visit out uberchat.cash to claim your p2p donation”. A copy of the message is sent as email
- “Offline”: An email is sent to the content creators channel mail account: “💸Uberchat Donation💸: $amount in XEC - visit out uberchat.cash to claim your p2p donation”
- Plugin checks database for corresponding youtube account being signed up already:
- If yes, the money will be sent to the corresponding wallet address of the content creator
- If not, an escrow address will be generated and linked to the youtube account and the money will be sent there
- If content creator is not signed up already, he gets a message in youtube channel discussion inbox and per email from uberchat.cash with the username of tipper and the amount tipped to the escrow address related to his channel - “[..]visit out uberchat.cash to claim”
- Content creator signs up channel on uberchat.cash (webwallet generated with wallet linked to youtube channel)
- Once corresponding channel is signed up on uberchat database, the XEC donation will be sent from escrow into user custody (web wallet)
Development
Features
- Custom Time Lock (from minutes to years, sent back to payer upon expiration) - Ability for users to communicate before and during the escrow process - Simple Logs - Ability for moderators to communicate with users during dispute - Moderator ability to send funds to either party to resolve disputes - eToken support (specific token IDs), essential for BUX - ability to take service fees (non custodial) The MVP escrow can have less of these features, but I’d like the wireframe to be set up with those in mind.
Tools
Tools and documentation are based on BCH but should be easy to apply on eCash as well. Comment from eCash dev Ethan about the escrow implementation: "It should be via this version (spedn) that can run with bch-js": https://spedn.readthedocs.io/en/latest/bchjs.html documentation on script: http://reference.cash overview on spedn covenants by tendo pein: https://read.cash/@pein/bch-covenants-with-spedn-4a980ed3
Head Hunter Premium
If you forward this Project to a developer and he turns out to complete the main task or subtasks, I am happy to pay you 10% of that given task on top. Please get in touch with me to be eligible for this Head Hunter Reward. https://t.me/e_Koush
Sponsorships
This Project is intended to be fleshed out with a solid development plan to get sponsored by the GNC. Additional to 30M XEC for the first set of tasks. If you want to contribute to this project as an individual sponsor, shoot me a message over telegram. https://t.me/e_Koush
Tasks
Main Task
Subtasks active
Subtasks inactive
Reward
If you are interested in working on this project, I would suggest starting with the Research-Subtask (10M XEC), so we can go forward with more solid documentation to assess costs and have a chance for sponsorship to increase the reward beyond current 30M XEC.
Update
Developer Sam Rock has started work on creating and maintaining Escrow templates and is now working on a webapp to apply a base escrow that could be used be individuals/businesses for p2p trading.