Chainlink: Use Chainlink oracles to make a some sort of state change on the blockchain
SecretPay uses Chainlink oracles and Textile Mailboxes to transmit and in an encrypted manner facilitate Paypal and Revolut P2P transfers between parties in a trade. Users create a payment link / invoice page on either Paypal or Revolut. This invoice ID is sent to all parties participating in the trade (being the buyer, seller and auditor Chainlink nodes) through Textile's encrypted mailbox system. All parties receive the invoice ID and payment platform. Textile keys are generated using the user's Metamask account, which means no extra keys are required for using Textile. Chainlink nodes read the invoice received and transmit it to the buyer to confirm that they received the same invoice ID, before paying this invoice. Once the details of the contract are confirmed to be correct through the distribution of invoice ID between all parties, the buyer can engage in paying the FIAT invoice and once this is complete, the Chainlink job run can be initiated to execute the escrow payment from seller to buyer of ETH. A set of decentralised Chainlink nodes send their response whether it was paid or not, and the release of ETH is decided upon by a 50%+ majority of the nodes' responses.
How It's Made
React is used for the front end. Users interact with the solidity contract on the frontend. Users exchange their SecretPay agreement offchain and in a side channel. Users pay FIAT payments through Revolut or Paypal. Textile mailboxes are used for sending encrypted invoice IDs between nodes, seller and buyer. Chainlink oracles for verification of payment/invoice IDs of Revolut or Paypal. Ethereum blockchain for ledgering of contracts, public keys and details. (This was originally going to be on Matic, however due to time constraints and the requirement of deploying a Chainlink node on Matic, this had to be put aside) Metamask is used for web3 interaction and Textile public/priv key generation.