My Used Car Sale Experience
I finally decided to sell my used car. Selling a used car is never a simple task: I found a buyer who liked the car, he took it for inspection and even forgave me for a small mark left by a bumper to bumper accident from a couple of years ago. We negotiated a fair price and were finally ready to make the transaction. He came from a-far, both of us were already short of time.
The procedure to transfer the car ownership in the ministry of transportation database requires a visit to the post office. The post office verifies the identity of the seller as owner of the car, and the identity of the buyer, then submits the transaction and charges a fee.
Then there’s the issue of the actual payment
So we were sitting in the long slow queue to the post office desk and I contemplated the issue of the payment with myself. The buyer did not make up his mind before making the one hour journey to my house. We did not even negotiate the final price until today. So clearly he did not bring cash money. He also did not prepare any form of guaranteed payment like a bank note. This all was understandable and he seemed like a nice guy - I didn’t want to lose a good buyer after trying to sell my car for several months.
But then I remembered the guy who tried to sell me his house last year, he also seemed like a nice guy, but his home turned out to be a modern version of Potemkin Village. After I somehow figured this out at the last moment, he turned ugly and threatened to sue me.
I’m sure that the buyer thought the same. Should I transfer the money to Lior now while we are waiting at this annoying queue to save time? I really need to head back home to pick my daughter up from the day care. This Lior guy seems like a nice guy. But wait a minute, I read he is dealing with blockchain and crypto, these guys only care about their Lambos so surely can’t be trusted.
Maybe we should get a lawyer to serve as an escrow? We both thought, but rejected this option immediately when remembering the amount of paperwork, time and fees involved.
Can we make the payment and ownership change simultaneous?
A naive answer would be, sure, the ministry of transportation will manage all car registries on a blockchain that the post office computers will use to transfer ownership using their private key. The identities of the buyer and seller would also be registered on this same blockchain by the government. The buyer and seller will develop and deploy a smart contract that only makes the payment to the car seller once ownership is transferred to the buyer.
Seriously? I think that a Michio Kaku prediction would place the time when the Israeli ministries of transportation and interior would start managing vehicle registry and identities on the blockchain, somewhere between the time humans will learn how to warp space time and the time humans will start using Star Trek like teleportation something like 20,000 to 100,000 years from now.
Can we design a practical blockchain based solution?
Assuming that the seller would be willing to accept his payment in Ignis or AEUR (the Ardor Euro peg child chain), we can actually use a lightweight contract now to implement such semi-atomic swap without requiring all parties to use a blockchain. From the buyer and seller perspective this swap requires very little effort and minimal trust. If you would like to understand one way of implementing this, read on.
The contract itself is rather simple. The buyer will first ask the contract to generate a secret and return the hash of the secret to the buyer. The buyer would then submit a payment to the seller as a phased transaction by the hashed secret provided. This transaction will also trigger the contract and supply the vehicle registration number, the seller id and the buyer id as parameters. The contract would start monitoring the ministry of transportation vehicle registry API every block for the car ownership change. Assuming such API exists, lightweight contracts are designed to interface with external systems for example by issuing Http requests. If some private information is required to complete the request, it can be stored in the contract runner configuration off-blockchain. Once the contract identifies a car ownership change, it will submit an approval transaction revealing the secret and causing the Ignis/AEUR payment to execute. If the ownership change does not take place during the next 24 hours, the payment is cancelled and the Ignis/AEUR amount is returned to the buyer.
The seller still has to trust the contract to work correctly by approving the transaction on time so that he receives the payment. This can be mitigated for example by using more than one contract runner. The payment transaction can define an “or” condition between two hashed secrets when submitting the transaction. Another approach is to require that the contract runner is managed by a known entity which both the buyer and seller trust.
As we can see, lightweight contracts provide a pragmatic solution to day-to-day problems. It does not take away trust issues completely but it isolates them into known entities and provides as much redundancy as required.