42 lines
2.3 KiB
Markdown
42 lines
2.3 KiB
Markdown
|
|
# Use Case 5: Payment Cluster
|
||
|
|
|
||
|
|
## Abstract case (no external integrations)
|
||
|
|
|
||
|
|
1. Node1 is initialized, with a data store and 100 tokens.
|
||
|
|
2. Node2 starts up.
|
||
|
|
3. Node1 sends 1 token to Node2 by signing a transfer statement.
|
||
|
|
a. if Node1 is honest, it will update its own store to 99 tokens
|
||
|
|
b. Node2 will always update its internal store. It also has proof that Node1 has transferred 1 token.
|
||
|
|
4. Node3 shows up. It asks the other two nodes for state.
|
||
|
|
a. Node2 will send correct state
|
||
|
|
b. if Node1 is honest, it will send correct state
|
||
|
|
c. if Node1 is dishonest, it will send 100 tokens as its state.
|
||
|
|
d. Node3 asks Node2 for proof. Node2 sends it.
|
||
|
|
|
||
|
|
So far, it kind of works. Alternately there could be two ways to go:
|
||
|
|
|
||
|
|
1. all nodes send all history to newcomers or,
|
||
|
|
2. if all nodes send the same state, there may be no need for anybody to request the total state. Processing can start from this point.
|
||
|
|
|
||
|
|
There are a lot of questions here. As soon as a node goes offline, others can play dishonesty games, obviously.
|
||
|
|
|
||
|
|
Are there ways of
|
||
|
|
|
||
|
|
(a) checkpointing to some outside system
|
||
|
|
(b) checkpointing internally
|
||
|
|
(c) playing some economic game where some "core" nodes are always up and notionally have some kind of financial incentives?
|
||
|
|
|
||
|
|
We can make it pretty decentralised, but still, the system would need to have *somewhere* that new nodes could look up where they could start interacting, and also get some notion of who was currently connected (so that they would be able to broadcast messages to all nodes).
|
||
|
|
|
||
|
|
As long as there is 1 honest node does the system work?
|
||
|
|
|
||
|
|
Maybe not. There could be like 99 dishonest nodes that broadcast messages to each other, but not to the 100th (honest) node. In such a case, how could anybody tell what the "real" history was?
|
||
|
|
|
||
|
|
Could a system of acks fix this?
|
||
|
|
|
||
|
|
Only if there was a way of determining who was "in" and who was "out".
|
||
|
|
|
||
|
|
So like maybe there is a core node for the cluster that people pay fees to? And those fees could go into a big pot and be paid out periodically. If anybody comes up with proof that a core node has behaved dishonestly, they get the fee pot. There could be even maybe 4 "core" nodes per cluster so that there was some redundancy available.
|
||
|
|
|
||
|
|
Enforcement against a core node, or any other node that had "misbehaved" would be an interesting question...
|