Solidity
Solidity <address>.send() 不會創建單獨的事務?
我是乙太坊的新手,我部署了一個
Ganache
具有如下功能的合約:function withdraw(uint256 amount) public payable returns(bool) { require(accounts[msg.sender].balance >= 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
。我理解
<address>.send()
錯了嗎?
這個答案是從其他人那裡引用的。
transfer()
orsend()
orcall()
函式不會導致事務。它會導致由外部帳戶發起的原始交易內部的消息呼叫。無論程式碼中有多少或呼叫,區塊鏈都將記錄單個 事務。transfer()``call()``send()
我只是把連結放在這裡供參考。