You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Maker (professional company who wants to sell or buy crypto to generate profits- professional user)
Taker (user who wants to sell or buy crypto with Fiat - casual user)
Watcher (in charge to track the Fiat payment being made between the Maker to the Taker by using API from Open Banking)
How it works
1st phase: marketplace where Maker and Taker can discovers offers.
Maker and Taker agree on a rate and a quantity to exchange some Crypto for a fiat payment.
2nd phase: settlement
Maker can be the buyer or the seller of Crypto.
The Taker declares his intent to exchange with the Maker and disclose KYC information with him.
If the Maker consider that the Taker has a valid KYC, he tells to the taker that he is ready to trade.
The Seller places the Crypto token into the smart contract with the all information need to the Buyer. This provides proof-of-funds and allows for a much safer trade.
The Buyer confirms and agrees on the terms of the transfer.
The Buyer makes a Fiat payment directly to the Seller.
Seller acknowledges that the Fiat money has been received and unlocks the escrow. The Buyer receives the crypto from the escrow.
In case of dispute, the Watcher monitors the bank ledger of the Maker and release the Crypto from the smart contract to the right party (the Maker or the Taker).
Settlement
Creating the escrow by the seller
The gas cost for creating an escrow is paid by the Seller.
Locking the escrow by the buyer
The buyer needs to lock the escrow to confirm the terms of the settle.
Making changes to the escrow
During the course of an escrow, there are a few actions each party can take.
Actions possible
Releasing crypto - Seller can release the crypto to the Buyer after he receives the fiat
Cancelling as a Buyer - Buyer can cancel at any point of time.
Cancelling as a Seller - Seller can cancel after the time window or before the buyer agrees to the trade.
Preventing the Buyer of cancelling - Buyer can tell that he sent the FIAT money and prevent the taker of cancelling
Calling a dispute - Buyer and Seller can call for a dispute after the time window.
In case of dispute
The Watcher needs to verify what happened.
After the Watcher has been able to confirm that the Fiat payment has been sent by the Broker to the Receiver, the Watcher unlocks the escrow and sends the Crypto to the correct party:
Next steps
Backend:
Build an escrow smart-contract (cf. the one we did already) on Solana respecting the spec described here
Build a database of Maker offers off-chain with Firebase? (I am a professional Maker (name of the company, country, bank account number for taker, and the bank ledger can be verify on request by an open banking api) and I am BUYING USDC at market price USDC/EUR on Binance Rate - 1% with min order of 10 euros up to 5000 euros, requirement: User needs to have a CIVIC pass in order to trade with me )
Front-end:
Build a front-end DAPP which looks like (https://www.moonpay.com/buy) that can talk with a wallet like Phantom (and later Espresso Cash via SMS protocol). The Dapp could be deployed like an iframe or be embedded directly into our wallet natively. The dapp should
Picks the best offer from the off-chain databases of Maker
Ask him to create CIVIC pass if the user doesn't have a CIVIC pass (https://docs.civic.com/)
Guide the user to buy or sell stablecoins by creating an instance of the escrow smart-contract
Give him the bank address of the maker in case of purchase or lock the USDC in case of selling
Track the status of the exchange and remind him that he needs to confirm that he received the FIAT payment in case he sold his USDC. Also propose him the possibility of dispute in case something goes wrong.
Custom applications:
Build a webserver code in Dart for watcher to verify bank transaction in case of dispute
Build a webserver to automate all TX from the maker so the taker never waits for the maker to complete his transactions manually
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
Definitions
How it works
1st phase: marketplace where Maker and Taker can discovers offers.
Maker and Taker agree on a rate and a quantity to exchange some Crypto for a fiat payment.
2nd phase: settlement
Maker can be the buyer or the seller of Crypto.
In case of dispute, the Watcher monitors the bank ledger of the Maker and release the Crypto from the smart contract to the right party (the Maker or the Taker).
Settlement
Creating the escrow by the seller
The gas cost for creating an escrow is paid by the Seller.
Locking the escrow by the buyer
The buyer needs to lock the escrow to confirm the terms of the settle.
Making changes to the escrow
During the course of an escrow, there are a few actions each party can take.
Actions possible
Releasing crypto - Seller can release the crypto to the Buyer after he receives the fiat
Cancelling as a Buyer - Buyer can cancel at any point of time.
Cancelling as a Seller - Seller can cancel after the time window or before the buyer agrees to the trade.
Preventing the Buyer of cancelling - Buyer can tell that he sent the FIAT money and prevent the taker of cancelling
Calling a dispute - Buyer and Seller can call for a dispute after the time window.
In case of dispute
The Watcher needs to verify what happened.
Next steps
Backend:
Front-end:
Build a front-end DAPP which looks like (https://www.moonpay.com/buy) that can talk with a wallet like Phantom (and later Espresso Cash via SMS protocol). The Dapp could be deployed like an iframe or be embedded directly into our wallet natively. The dapp should
Custom applications:
Beta Was this translation helpful? Give feedback.
All reactions