Replies: 3 comments 6 replies
-
Adding to this proposal, I believe that something that needs to be agreed on between the two parties is also the network where the transactions is going to be broadcast to (e.g. mainnet, testnet, signet, sidechains etc). We surely do not want the payee to monitor a different blockchain from the one where the Bitcoin transaction has been sent to. |
Beta Was this translation helpful? Give feedback.
-
This is more detailed workflow which includes also Storm nodes (storm is a protocol for Lightning network [Bifrost specifically] for storage; it works alike torrent here). Storm node may be run by payee, payer - or by wallet provider. Advantage of the storm comparing to centralized server is the fact that (a) it is interoperable protocol, (b) re-uses LN connectivity, (c) minimizes amount of data transfer, (d) may include storage incentivization with LN payments. Invoice should contain:
Payment slip is a compact data structure providing payee with the following information:
sequenceDiagram
participant payee as Payee
participant payer as Payer
participant blockchain as Bitcoin blockchain
participant storm as Storm nodes<br>(trusted)
payee -) +payer: Invoice
payer ->> payer: Prepare consignment
payer ->> payer: Compose witness tx
payer -) +storm: Upload consignment manifest
storm -) payer: Missed chunks
payer -) storm: Upload missed consignment chunks
payer -) storm:
payer -) storm:
storm -) -payer: Confirmation of complete upload
payer ->> -payee: Payment slip
activate payee
payee -) storm: Request storm manifest
storm -) payee: Consignment manifest
payee -) storm: Download consignment chunks
storm -) payee:
payee -) storm:
storm -) payee:
payee -) storm:
storm -) payee:
payee ->> payee: Verify consignment
payee ->> -payer: Singature
activate payer
payer ->> payer: Sign witness tx
payer -) blockchain: Publish witness tx
activate blockchain
blockchain -) payee: Mempool notification
activate payee
payee ->> payee: Include consignment into stash
payer -) -blockchain: RBF witness tx
blockchain -) -payee: Block header notification
payee ->> -payee: Update contract state
|
Beta Was this translation helpful? Give feedback.
-
@fedsten which key should be used by the beneficiary to sign the consignment? The simple answer "the same as was used in creating invoice" is not a good one: a malicious sender (or a man-in-the-middle) may re-do the invoice with his own signature and than sign the consignment, claiming that the beneficiary has accepted it, while it had not. In fact, invoice signatures and receipts require identity system. A simple solution might be to use the same bitcoin key as in the UTXO which receives the payment, but currently we hide the UTXO from the payee to preserve the privacy, so this will also not work. |
Beta Was this translation helpful? Give feedback.
-
Motivation
When you perform a payment, it is important to be able to prove to third parties that the payment was indeed finalized correctly. This is relevant for example in case of disputes between parties or when dealing with service providers such as centralised exchanges. With normal Bitcoin transactions, you always have the blockchain as a source of truth to testify that a specific transaction did indeed occur as agreed between the parties and was finalised. However, in RGB there is the consignment data which is transferred off-chain, with no on-chain record to prove that the consignment was truly delivered to the payee.
Proposal
To address the issue, an interactive protocol is needed, with the requirement for the payee to provide a signed receipt of received consignment before the payer proceeds to perform the Bitcoin transaction to close the single-use-seal. Specifically, the protocol should include the following steps:
Beta Was this translation helpful? Give feedback.
All reactions