I attempted a more formal description also adding new types Trade and Swap.
AbstractDefinition of the Coin Trace (CT) rule set to map lifecycle events of digital assets to Bitcoin transactions. The rules aim for simplicity and backward compatibility with Bitcoin wallets that can only deal with transfers between addresses.
DefinitionsWe trace nominal holding of a digital asset through CT compliant Bitcoin transactions, CTTs.
The trace of an address is the net of nominal trace credited and debited to it by CTTs.
A marker address is a Bitcoin address associated with the trace, it acts as the unique reference to the trace.
CTTs are a subset of valid Bitcoin transactions that match a definition in this document. Non-CTTs are ignored for the purposes of this protocol.
Digital asset lifecycleCT supports following lifecycle events of the digital asset
- Funding the marker address
- Issue trace
- Transfer trace
- Trade a trace
- Swap traces
- Destroy trace
FundingAny address can be a marker address. Transactions that credit the marker address are Funding CTTs until there is no Issue CTT observed on the marker address.
IssueThe Issue CTT is the first transaction with input only from the marker address. Outputs of the issue transaction that are not sending to the marker address credit nominal amounts of the trace to their target addresses. Subsequent spends of the marker address holding are not CTTs.
TransferA trace can be transferred to another addresses with Transfer CTTs. A Transfer CTT has an output to the marker address and only input addresses having trace of the same marker address. A transaction is not a Transfer CTT if any of its inputs consumes more of an address than the trace of that address.
TradeA Trade CTT exchanges a trace on an address for traceless Bitcoins. The Trade CTT has an output to the marker address and a matching pair of input and output addresses. Only one of the input addresses has the trace of the marker output in at least the amount of that input. Trade CTT output to a non marker address is not more than the amount of input on the other address.
SwapA Swap CTT exchanges traces of a pair of addresses. The Swap CTT has two outputs to two marker addresses and a matching pair of input and output addresses. Input addresses have the trace of one of the marker addresses in at least the amount of that input. Swap CTT output to a non marker address is not more than the amount of input on the other address.
DestroyA trace is destroyed if transferred to the marker address.