• https://www.365seal.com/y/eMnPOAmZpJ.html
  • https://solidity-cn.readthedocs.io/zh/develop/solidity-by-example.html#id7

value是商品价格。买卖双方在达成交易前,都要向合约质押两倍value的保证金

  1. 卖方创建合约constructor时,要将2倍value的以太币交给合约锁定。
  2. 买房调用合约confirmPurchase,质押自己2倍value的以太币。
  3. 卖方发货给买方。
  4. 买方确认收到商品,调用confirmReceived,将value的保证金退还买方,剩余的钱(卖方保证金+商品买款=3*value)都打给卖方。

这样做的好处是

  • 如果不论买方恶意不确认收货,买方无法取回自己抵押的保证金2*value,买方仍然无法弥补自己的亏损。
  • 如果买方恶意不购买,卖方可以调用abort终止本次买卖。
  • 如果买方提交保证金后,卖方恶意不发货,买方可以不确认收货,使得卖方无法取回自己的保证金2*value,卖方无法弥补亏损。