-
Notifications
You must be signed in to change notification settings - Fork 121
Description
There's a longstanding and ongoing problem where owners of Omni Layer smart property tokens (mainly USDT, property id 31) mistakenly send tokens to an address who's owner doesn't use the Omni Layer protocol (typically an account deposit address at an exchange). That means the tokens end up sitting at the receiving address and the sender has no way to reclaim them - because the receiving address owner won't issue an OL transaction to send them back.
This proposal describes a mechanism to prevent future instances of this problem, where tokens languish in such addresses because the address owner won't submit an OL transaction to send them back (or anywhere else). It could also be used where an OL-aware exchange chooses to accept only a particular OL smart property at each deposit address.
Introduction
The mechanism involves two new OL transaction types. The first proposed new transaction type is Send with Receipt Request. It has the same fields as Simple Send, plus a timelimit field (in blocks) that specifies how long the recipient has to generate a receipt. The recipient then uses the new Send with Receipt transaction type within the specified timelimit to acknowledge that the tokens have been accepted.
Flow
The Send with Receipt Request (SwRR) tx type moves the specified number of tokens from the sender's available balance to the sender's reserved balance (TBD: or maybe to the recipient's reserved balance, if that makes more sense). The recipient then has to submit a Send with Receipt (SwR) tx referencing that SwRR so it is processed as valid within the specified timelimit number of blocks. If the SwR tx is processed as valid, then the referenced tokens are moved from the reserved balance to the available balance of the recipient specified in the SwR. In the case of an exchange, the new recipient address will likely be the the exchange's sweep address for that property.
If there is no corresponding valid SwR tx processed within the specified timelimit number of blocks, then the tokens are moved from the reserved balance back to the available balance of the original sender. This eliminates the risk that's associated with current misdirected OL sends.
Details
The SwR transaction message can specify either the txid of the corresponding SwRR or the address of the sender and the OL property type (in order to affect multiple SwRR transactions from the sending address). If a txid is specified and the SwR is valid, then all the tokens from that txid are transferred. If the txid doesn't refer to a valid SwRR to the address submitting the tx, or the_timelimit_ in the referenced SwRR has expired, then the SwR is invalid.
If an address and OL property type are specified, then all referenced tokens in unexpired SwRR transactions from the specified address to the address submitting the SwR tx will be transferred. (TBD: if there are no unexpired SwRR tx's, is that an invalid transaction, or is it valid and the number of tokens affected is 0?)
The tokens don't have to be moved to a third address. The recipient of the SwRR transaction can specify itself as the recipient of the SwR transaction.
As with US Postal Service return receipt requests, an exchange could choose to charge a fee to generate a receipt (the txid of the related SwR tx). That fee could be paid as an additional bitcoin output to the recipient address (which could be used by the exchange to pay the SwR transaction fee). If the SwRR doesn't include the necessary additional bitcoin output, the exchange could choose to not submit the SwR tx, thereby refusing and ultimately returning the account holder's deposit.
This proposal will require OmniCore to be efficient in how it is able to retrieve data associated with unexpired SwRR transactions - for providing status feedback to users and for returning the tokens to the sender's available balance when a timelimit expires.
I expect there will be other uses for SwRR and SwR.