Links to submission:
website/app: Lintium.com
about the challenge: https://lintium.com/sbc-challenge/
How to use the app: https://lintium.com/how-to-use-the-app-2/
Overview of Wallet:
Users request payment over stellar using IOUs/encrypted hash . the stellar accounts are connected via API with fiat to settle transactions.
Features Implemented:
Stellar Account
-Stellar account plus federation addresses for email and bank account number
-Auto load of funds into stellar account for activation
Payment request/IOU
-User can request payment from another user.
The request is registered on the stellar blockchain
Bank API connect:
-User connects their bank account via API directly with the stellar account.
-The Bank API retrieves bank transaction history into wallet, bank details.
Allows for pushing payments
Encryption Hash:
-The IOU information and payments instructions is stored on multichain (private blockchain)
-This information is encrypted and created into a hash string
-Encrypted hash is recorded into memo field of stellar transactions.
-Encrypted hash is also included in the bank or fiat transfers in the description field
-The hash is tracked by the wallet in order to audit, verify, match and complete the transaction/IOU.
-It helps create a full accountable flow.
-Hash can be forwarded to pass on debt.
-Encrypted hash also keeps payments details private.
TrustLines:
-Trustlines created between the two wallets for exchange of assets
-when request is created an IOU asset is issued,
-on payment receipt IOU asset is reset.
Analytics:
App analysis encrypted hash, stellar and bank transactions to update status of payments and reset IOUs
*********** Original post******
Problem
Paying in any currency apart from XLM requires the need to use an anchor. Though this system works well this is not ideal in many situations such as:
- In many instances B2B transactions need to be settled directly between two businesses due to country regulation.
- Lack of anchors in certain markets means that either there is no way to settle using an anchor or the costs are two high due to competition
Solution:
We want to allow two wallets to settle in Fiat currency without the need for an anchor. The concept is to connect stellar accounts directly with the users fiat accounts. This allows for stellar network to act as a messaging, trust system or escrow between two wallets while the value exchange takes place P2P.
Use cases:
- Two merchants using the stellar network to agree terms and agree smart contract using stellar but want to settle in fiat.
- Freelance developers getting paid in XLM or fiat.
- Marketplaces which use stellar but need their merchants to settle in Fiat.
- Purchases made using crypto markets or using stellar as a settlement mechanism.
Under the Bonnet:
We use stellar & Open Banking API protocols to first connect a stellar accounts to bank accounts and then allow two wallets to exchange xlm or fiat currencies without the need for an anchor.
The payments process allows for full reconciliation of payments and confirmations between the wallet.
For the build challenge we will allow users
- To create a wallet that will include a stellar account
- Connect the wallet holders bank account to the stellar account (limited to a few european countries)
- Make payments requests over stellar. Attach an hash which contains payment request details.
- The hash triggers Euro payments directly from the connected bank account.
- The hash is also coded into the stellar and euro transactions allowing for a full loop confirmation and reconciliation process.
Payment process:
1.A request payment from B:
1.1 A payment request which contain amount, bank account details, description is created.
1.2 This payment detailed is hashed.
1.3 A stellar transaction is made to B containing hash in memo field.
2.1 Hash triggers a pop-up “request for payment”
2.2 B can now confirm the payment.
2.3 Payment confirmation triggers bank transfer via open banking API
3.1 Bank sends payment from B to A containing the Hash.
4.1 On receiving payment. A’s wallet detects the hash and confirms receipt with B.
4.2 This completed full loop of confirmation and payments reconciliation
**************Help from Community'*************
Whether to use xlm transactions or Trustlines to trigger payments and create IOUs?
1) Using XLM transaction
The easiest way to send an IOU to another wallet is to simple send an xlm transaction with an attached Hash with the details. This hash can easily retrieve the relevant details and trigger the payments.
Theoretically the Hash can also be passed on to another user in order for the other user to execute payment. Using transaction history we can track the hash to see where the payment request currently resides.
2) Using trust line and assets
A more complicated approach but something more inline with the SBC challenge is to create trustlines and “assets” which are exchanged between two account holders to represent IOUs before the transaction is settled in fiat.
The only we can achieve this as per our knowledge of stellar is:
When a user sign-up for the wallet we create two stellar accounts in order to issue an asset such as “EURIOU”
User A then creates a trustline with User B.
User A then sends an request for payment (example €50) to user B.
When User B accepts the payment request, the wallet automatically creates a trustline with A allowing now for A to send their EURIOU to B to create a “real” representation of the debt owed.
Once A triggers the payment to A, and A receives the payment, The Stellar network will provide the payment instructions, reconciliation, payment triggers between the wallets. The settlement in euros will be done directly between the two users.
Trustline to other wallet
SWA1 -----> SWA2 -------------------------------------------------------------SWB2 ←-- SWB2
Token Token holder Issue IOU tokens
issuing account
SWA - Stellar wallet for user A
SWB - Stellar wallet for user A
The tokens by itself apart from representing a value do not provide any security. This can only we solved by:
Creating legally enforceable IOUs
Locking in XLM (which requires maintain large balances
Also one concern I have is in relation to passing on debt between users. if debts get passed on to third parties who do the actual settlement in Fiat, this could create Anti-money laundering issues for the final payer as he technically does not know the origin of the funds but is effectively acting as a "mule".
Long Term Vision
Similar to Patchfinder, when we start connecting different payment options to a stellar account , we effectively turn those wallets into mini-Anchors. The more payment type we connect and more users from different countries we get on board we can effectively create a peer to peer network for payment flows without the need for anchors.
A simple blockchain based registry which stores the various payment options available for each user will allow for the creating of user payment graphs and the flow of payments anywhere in the world.
Compliance:
As the payments are triggered by the account holder no additional compliance process is required.