Contract-Debugging
為什麼在這個拍賣範例中使用“+=”運算符?
**這是來自blog.ethereum.org**的拍賣程式碼
contract auction { address highestBidder; uint highestBid; mapping(address => uint) refunds; function bid() { if (msg.value < highestBid) throw; if (highestBidder != 0) refunds[highestBidder] += highestBid; highestBidder = msg.sender; highestBid = msg.value; } function withdrawRefund() { uint refund = refunds[msg.sender]; refunds[msg.sender] = 0; if (!msg.sender.send(refund)) refunds[msg.sender] = refund; } }
退款
$$ highestBidder $$+= 最高出價;
使用“+=”而不是“=”的原因是什麼?
- 投標人發送 100,投標 1。
- 投標人出價超過 110,投標 2。100 應退還。
- 投標人出價 120,出價 3。這是新錢,還欠 100。
- 投標人再次出價,130,投標 4。現在欠 220。
- 投標人撤回 220。