Solidity

Solidity <address>.send() 不會創建單獨的事務?

  • April 5, 2019

我是乙太坊的新手,我部署了一個Ganache具有如下功能的合約:

function withdraw(uint256 amount) public payable returns(bool) {
   require(accounts[msg.sender].balance &gt;= amount);
   accounts[msg.sender].balance -= amount;
   bool r = msg.sender.send(amount);
   if (!r){
       accounts[msg.sender].balance += amount;
   }
   return r;   
}

然後,我使用Truffle console發送交易呼叫函式withdraw。我預計應該有兩筆交易:一筆是呼叫函式withdraw,另一筆是合約向發送者發送乙太幣,這是msg.sender.send(amount).

但是我在 Ganache 中只有一筆關於呼叫函式的交易withdraw

我理解&lt;address&gt;.send()錯了嗎?

這個答案是從其他人那裡引用的。

transfer()or send()orcall()函式不會導致事務。它會導致由外部帳戶發起的原始交易內部的消息呼叫。無論程式碼中有多少或呼叫,區塊鏈都將記錄單個 事務。transfer()``call()``send()

我只是把連結放在這裡供參考。

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