-
Notifications
You must be signed in to change notification settings - Fork 34
[Discuss] How to ensure receiver get the tx history? #66
Description
Successful scenario
Alice give Bob a coin. Bob get all tx history of that coin. The tx is collected into Childchain's block. Bob can verify the tx is in block with his proof and the block hash on root chain.
Issue
How to ensure Bob get the tx history when the tx is collected into block? We kind of want to make sure the event is in the following order: Alice want to start a tx --> Bob get the tx history --> tx get collected into block.
Why we need to make sure Bob get the history? Without history, the only person can challenge would be Alice who already think she gave the coin away and do not have motivation to challenge.
So Bob needs to confirm?
One way is that Bob need to confirm/reply he get the tx history.
Alice -- send tx history & wait for reply --> Bob -- reply success --> Alice --> (Alice or Bob) put tx to child chain
But how if Bob lies here:
Alice -- send tx history & wait for reply --> Bob -- reply failed but actually success --> Alice
In this case, Alice cannot sent the coin to other people otherwise Bob can challenge it. The only thing Alice can do now is probably to withdraw. So if Bob wants the coin, he need to reveal his tx to challenge or need to give up on this.
This is still safe (?), but then every tx receiver now has the power to force sender to withdraw the coin.
Can Alice and Bob use centralized service to transfer the data?
If Alice and Bob only communicate through centralized channel, operator can possibly give the wrong message purposely. eg. Alice send the tx history to Bob through centralized service. The service provider did not transfer the data to Bob but tell Alice it was succeeded. Now Alice lose the motivation to challenge the coin and Bob has no data to challenge. The centralized service can send some invalid block to root chain and then withdraw.
(PS. The centralized service might need to be or need to cooperate with operator to have the permission to write block hash to root chain.)
Real life scenario
If it is a trade/business, receiver can always wait until things get confirmed and then provide the good.
However, in situations that Alice only want to transfer money to Bob, then the above issues become a problem
So what shall the implementation be?
Currently we are planning to implement the most naive solution which relies on operator to provide communication service (@zhouer, right?). However, there might be issue as described above. What's the most simple but yet safe implement solution? And is there other ways to ensure Bob get the tx history?