Contract-Debugging

為什麼在這個拍賣範例中使用“+=”運算符?

  • August 20, 2016

**這是來自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。

引用自:https://ethereum.stackexchange.com/questions/8174