Hacker News new | ask | show | jobs
by ss248 2762 days ago
>The buyer has to pay to make the order

You mean like another lock? But what is stopping the seller from holding buyer's money hostage and force him to release the lock just to get some money back even when he did not receive the goods?

An example of evil buyer would be something like: 1. The buyer buys goods from seller with smart-contract

2. The money in buyer's wallet gets locked.

3. The seller ships the goods.

4. The buyer receives the goods, but never signs the smart-contract.

That way the buyer gets what he paid for, but the seller never receives the money.

No matter how i think about it, smart-contract idea looks abusable.

1 comments

How about this:

1) the contract is initiated by the seller (sets amount, payable accounts, etc)

2) the contract is signed by the buyer, moving (or locking) an amount of money in the contract pending one of two situations:

2.1) the seller signs a message that the product has been shipped and the buyer signs a message the product has been received

2.2) the seller signs a message that the product has been shipped and after 30 days of no further message from the buyer's side the contract releases the funds

In this case, the solution is to have a commitment from the buyer that unless they take action (sign a special message to denounce the transaction / pull out of the contract) the seller gets paid. To address the scenario where the seller is malicious, the buyer can use the on-chain commitments from both parties as evidence of malpractice and report the situation.

(edit: formatting)

You're adding pointless layers of complexity without acknowledging the core problem: there's no way for a smart contract to know the true state of the real world without having to trust someone to give it accurate information.
Also known as the oracle problem. Some platforms find solutions to this in a decentralized way, see Augur. The solutions to real world data being inputted into a blockchain is an economic one.
Not all transactions require the smart-contract to know about the off-chain world!

The "oracle problem" is what I think you are referring to but I have a strong view that the problem of low quality data can be solved with existing mechanisms and tools.

My favourite method to dealing with information quality is by providing incentives to good quality sources and having a method that allows a third-party (anyone with an account...) to submit a fraud proof.

The evil seller doesn't ship the item but signs the product shipped message anyway. Who's gonna stop them, it's not like the blockchain knows if they actually shipped it or not. Or maybe they shipped a fake or non working item. Then what?
The evil seller has a reputation to protect and the victim has an undeletable evidence of the "crime" on-chain for anyone to verify.
How could you tell who is the culprit in this event?
PKI.
Your caveat still renders the system vulnerable to malicious buyers. What if the buyer receives the product but "takes action" by denouncing the transaction or exiting the contract?
That is a good point.

On-chain, the solution is to have an oracle provide a third vote somehow. Off-chain, the solution is for the seller to report the buyer and its address to the authorities.

Both solutions rely on trusted 3rd parties then.
Not "trusted" ones per se.

I can make a contract that relies on one single third party and in that case you are correct that there is some existing trust relationship. However, the protocols are designed such that the trust you need to have on the service provider is minimised with trusted computing systems and the contract's mechanism design.

Conversely, I can also write a contract that trusts a pool of oracles, or a prediction market (here the trust would be in the prediction market protocol and not on its operator), or a token curated registry where individuals are paid to give accurate information.

Isn't this very similar to what Escrow does?