TX_CERT a protocol to certify the originality and the transfer of ownership of a product and/or collectible.Author:
@gbianchi 1GbianchiJ6EeBU8ua77719Ur7qwLZVk3x
Revision 0.7 dated February 12th 2023
AbstractThe purpose of this protocol is to use the Bitcoin network to certify the originality of a product, from production to the subsequent passage between users.
It could be applied to several real-use-cases (likewise a collectible or a valuable product), and also ensuring the chain of ownership transfers between the manufacturer and all subsequent customers.
AbbreviationsPrefix
P = Manufacturer (producer of collectibles/product)
C1 = direct customer of the manufacturer
C2 = customer of C1
...
Cx = customer of Cx-1
Cx+1 = customer of Cx
Suffix
k = Private Key
a = bitcoin address
Symbols
TX_CERT Certification transaction from P to C1
cc = optional paper certificate
la = last address of the payment chain verifiable on blockchain starting from TX_CERT
NSats = amount initially charged
:selling_CTOC = label
IntroductionMy first proposal was a multisig protocol to continue having a "physical" link in the object (the sealed private key)
to be used to spend the address linked to the object.
https://bitcointalksearch.org/topic/m.61596485But I've received several plausible criticisms:
1) Generating and understanding multisig keys requires a skill that not everyone has. It’s not the best method for “average Joe”.
2) the system was complicated and not easy to be followed
3) it only protected the passage P->C1 well and not C2 ... Cx
4) P and C1 could have agreed (or be the same person) and scam C2.
After further reflections, I realized that it was not essential that the object contained a "physical link" (sealed key) with usability. this less invasive approach allows
a recursive evolution of the protocol with subsequent tracking of the passages from this starting address to all subsequent ones up to the last (and therefore current) address
that holds the funds associated with the object, with "notarization" on the Bitcoin blockchain of such steps.
This new version of the protocol, which embeds a Bitcoin transaction and an OP_RETURN in a transaction type we will call
TX_CERT,
makes it equally secure for all customer levels the passage of funds linked to the collectible.
The management of security during the exchange of money/transfer of the object (between the various subjects involved P->C1, C1->C2 etc.)
is not the subject of this protocol. These aspects as strongly suggested, will be managed through escrow, insurance, etc.
------------- Production ---------------------
Producer P must publicly declare a bitcoin address
Pa.
Through this address it will be known to all that company
P initiates the chain of certification of ownership of its objects
from address Pa with a
TX_CERT transaction.
To facilitate public recognition, it would be desirable (but not mandatory) for
Pa to be a vanity address
with explicit reference to the name of
PC1 wants to buy a collectible from
PC1 produces
C1k and
C1aC1 sends
C1a to
P and payment due for the collectible.
P produces the collectible
P prints
C1a outside the collectible
P generates a
TX_CERT transaction from
Pa of
NSats to
C1aP has the option to generates paper certificate
cc with
TX_CERT id (as another layer to certify originality of the product)
P sends bitcoin-themed collectible to
C1 accompanied by
ccC1 receives the item.
Now
C1 has an object associated with its address
C1a, with an associated
TX_CERT transaction.
Note: the loading of an amount
NSats on
C1a by
P it is important because it will allow to keep the chain of passages from
Cx to
Cx+1 "documented" in the blockchain
------------ Selling the items from
C1 to
C2 (and so on)-------------------
:selling_CtoCC2 wants to buy from
C1, but wants proof of ownership:
C1 sends
C2 a photo of the bitcoin-themed collectible with printed address
C1aC1 optionally sends
C2 a photo of cc (and then
TX_CERT id).
C2 he can therefore see from the object and the certificate that the object is initially bound to the address C1a.
C2 check with an explorer the movements of NSats starting from
TX_CERT, until you get to the last address
la which will contain NSats - fees of the various passages
C2 asks C1 to sign a message with [la] to prove that you really are the ultimate owner of the item
C1 proves to
C2 that it can sign a message with address
la (then prove it have the private key of
la)
C2 is certain that C1 is the last owner of the object, and therefore can proceed with the purchase
If
C1 and
C2 agree
C2 produces
C2k and
C2aC2 sends
C2a to
C1C2 send payment for item to
C1C1 performs a transaction from
la to
C2a of ALL UTXO (- tx fee)
C1 sends bitcoin-themed collectible to
C2 accompanied by
ccC2 receives the item.
Now
C2 has an object associated with its address
C2a, and it is the last address
la of the chain of transaction ad addresses which starts from
TX_CERT-------------- Subsequent selling from
Cx to
Cx+1: --------------
go to
:sellig_CtoCwith
C1->
Cx,
C2->
Cx+1
TX_CERT description: Input:
- one or more UTXO from
Pa for a total amount
NSats declared by the producer + transaction fee
Output:
-
NSats to
C1a (vout index 0)
- optional change to
Pa (If the input UTXO exceeded the NSats+fee value)
- OP_RETURN DATA: TX_CERT,
,,[,OPT]
"TX_CERT" indicates the beginning of a TX_CERT OP_RETURN, so that they can be easily identified and eventually collected quickly in a certification database with a blockchain parser
manufacturer name
descriptive name of the product
a unique code that identifies the product together with other data
[OPT] an optional self-descriptive field. If the field does not exist, not even the relative separating comma should be placed.
The set of mandatory values (and possibly OPT) must form a unique identification of the product.
This product certification, unchangeable on the blockchain, sanctioned the product certification, the date of issue, the real issue by P and the first transfer of ownership from P to C1.
The issue of any paper certificate cc remains at the complete discretion of the manufacturer P. In case P issues the paper certificate cc
it will have to indicate above the id of the TX_CERT transaction
Rules for the generation of a TX_CERT transaction, and subsequent transfers of ownership of an object:
In the controversial case where there are multiple TX_CERT type transactions in the blockchain that refer to the same product,
this simple rule applies: the first transaction of type TX_CERT (i.e. the one in the oldest block) that refers to the product is the valid one.
In the case that within the same block there are 2 or more TX_CERT transactions that refer to the same product,
the transmission with progressive number within the lowest block is valid
The subsequent transfers of ownership between Cx and cx+1 take place through normal transactions that take place from Cx to Cx+1
as described by the protocol. To avoid confusion or indeterminate cases, the following rules apply:
1) When Cx wants to sell to cx+1 in order to correctly pass ownership he must pass THE TOTAL of UTXOs[/i] that are in Cxa[/i].
it is therefore desirable that the destination address Pa->C1a C1a->C2a etc.. is empty at the time of acquisition of the property
because if it already contains some UTXO these will become an integral part of the sum to be transferred when Cx wants to sell at Cx+1.
A non-empty Cxa (E.G. one that already contains UTXO) does not invalidate the property per se, but it can lead to a condition that Cx did not want.
2) If when Cx has to transfer ownership to Cx+1 in CXa there are not enough funds, i.e. the fees of the various transfers have eroded
the initial amount of the TX_CERT, Cx can integrate the amount with a transaction towards Cxa.
So the upload of an amount by Cx to a Cxa holding the property does not invalidate the certification of ownership.
the important thing is that when Cx passes to Cx+1 you pass ALL the content of Cxa (- the fees) following first rule.
3) If the customer Cx breaks the chain of formal transfer of the TOTAL UTXO (- the fees) contained in Cxa to Cx+1
(for example, he had previously spent part of the UTXO) has in fact not transferred ownership correctly and has therefore "invalidated"
the certification of ownership of the object. The object obviously remains intact but its certification chain is invalidated.
To be clear, dividing the UTXO of Cxa is equivalent to opening the seal of a casascius
This rule makes Cx responsible for carefully carrying out the transfer of ownership to Cx+1 through a single transaction.
References
[1] https://en.bitcoin.it/wiki/Casascius_1000_BTC_gold_coin
[2] https://bitcointalksearch.org/topic/info-breached-or-scam-coin-makers-list-3315347
[3] https://bitcointalksearch.org/topic/--5434506
[4] https://www.blockcerts.org
Acknowledgments
I thank @bitbollo for the fundamental contribution, the constructive exchange of ideas and the patience.