mirror of https://github.com/status-im/swarms.git
Initial micropayment doc (#169)
* Start with micropayment * More µRaiden details * More SWAP details * More SWAP details and start of Orchid * Add information about Raiden * Initial ideas about pluggable API
This commit is contained in:
parent
c005b2be9c
commit
252dc99fa8
|
@ -68,6 +68,7 @@ Description:
|
|||
|
||||
## Artifacts
|
||||
|
||||
- [Information about Micropayment](micropayment.md)
|
||||
- [Logfile](log.md)
|
||||
- [Links](links.md)
|
||||
|
||||
|
|
|
@ -0,0 +1,112 @@
|
|||
## Micropayment
|
||||
|
||||
### Existing Solutions
|
||||
|
||||
#### Raiden
|
||||
|
||||
##### Concept
|
||||
|
||||
- Off-chain solution for ERC20-compliant token transfers on Ethereum
|
||||
- Designed for many-to-many solutions
|
||||
- Transfer of tokens without global consensus
|
||||
- Previously setup on-chain deposits and *balance proofs*
|
||||
- Payment channels for bidirectional transfers between two participants as long as deposit isn't exceeded
|
||||
- Transfers require no fees
|
||||
- Funds can be added to existing channels
|
||||
- Blockchain isn't involved during transfers, only for channel creation and potential closing
|
||||
- As binding as on-chain due to smart contract containing tokens only accessable to both participants
|
||||
- Closing leads to payments to both participants based on balance
|
||||
- *Network* of channels with routing allow transfers between all peers, secured by *hash-locks*
|
||||
- Scaling with the number of peers
|
||||
- RESTful API
|
||||
|
||||
##### Links
|
||||
|
||||
- https://raiden.network/
|
||||
- http://raiden-network.readthedocs.io/en/stable/
|
||||
- https://medium.com/@raiden_network/
|
||||
|
||||
#### µRaiden
|
||||
|
||||
##### Concept
|
||||
|
||||
- Like Raiden but only between two parties: *sender* (client) and *receiver* (service provider)
|
||||
- Designed for many-to-one solutions
|
||||
- Creation of channel and settling leads to µRaiden Smart Contract and a *deposit*
|
||||
- Smart Contract enforces payment of deposit
|
||||
- Signing payments with balance-proofs between sender and receiver allows off-chain transactions
|
||||
- Once channel gets closed deposit is payed to receiver based on *balance proofs* and rest to sender
|
||||
- Typically only two on-chain transactions for opening and closing
|
||||
- If deposit of sender gets low it can increase it with an on-chain transaction
|
||||
- Own ERC20 and ERC223 compliant token
|
||||
- RESTful API
|
||||
|
||||
##### Links
|
||||
|
||||
- https://raiden.network/micro.html
|
||||
- https://github.com/raiden-network/microraiden
|
||||
- https://microraiden.readthedocs.io/en/docs-develop/
|
||||
|
||||
#### SWAP
|
||||
|
||||
##### Concept
|
||||
|
||||
- Swarm Accounting Protocol
|
||||
- Generic *peerwise* accounting
|
||||
- Long-term exchange of data chunks balanced by data chunks preferred
|
||||
- Relies on reputation system
|
||||
- Open for payment systems with issue and receive function
|
||||
- Issue results in a 3rd party proveable promise of payment
|
||||
- Issued *cheques* will be accumulated in *cheque book*
|
||||
- Only last one will be cashed in
|
||||
- Peer decides how often to cash in
|
||||
- Transactions costs motivate to minimize their number
|
||||
- Trust to peers grows with good behavior
|
||||
- SWAP^2 provides API to set triggers for automatic payments
|
||||
- SWAP^3 reduces transaction cost by debt swap
|
||||
|
||||
##### Links
|
||||
|
||||
- https://github.com/ethersphere/swarm/wiki/Swap
|
||||
- https://github.com/ethersphere/swarm/wiki/Swap-demo-instructions
|
||||
|
||||
### API
|
||||
|
||||
#### Client
|
||||
|
||||
##### Query Conditions
|
||||
|
||||
Ask service provider about pricing and model (bandwidth, CPU, etc.).
|
||||
|
||||
##### Establish Business Contract
|
||||
|
||||
Establish a payed connection with an initial deposit.
|
||||
|
||||
##### Check Balance
|
||||
|
||||
Check balance of the deposit to increase fund early enough before
|
||||
connection potentially is dropped.
|
||||
|
||||
##### Increase Fund
|
||||
|
||||
Increase fund to keep connection with higher quality level. If
|
||||
fund is spent connection may not be dropped but changed into
|
||||
free connection. That may be dropped later.
|
||||
|
||||
##### Close Contract
|
||||
|
||||
Close contract so that used deposit is spent service provide and
|
||||
rest is refunded.
|
||||
|
||||
#### Service Provider
|
||||
|
||||
##### Book Token
|
||||
|
||||
Book a token based on provided service. If all tokens of deposit
|
||||
are used with a booking then close contract.
|
||||
|
||||
##### Close Contract
|
||||
|
||||
Close contract to retrieve used deposit and transform connection
|
||||
into a free connection.
|
||||
|
Loading…
Reference in New Issue