Solidity
我如何發送乙太幣
大家好,我是 Solidity 的初學者。我編寫了一個函式並嘗試在混音帳戶上發送乙太幣並檢查該帳戶的餘額。但是我無法連接我認為的帳戶,因為當我檢查我的第一個帳戶功能的餘額時返回給我 0
我該怎麼辦?誰能幫我?
這是程式碼:
{ address myaddress; mapping (address => uint256) public balances; constructor() public { myaddress = msg.sender; } //uint amount =0; function send(address from_address,address to_address, uint amount) public { require(amount <= balances[msg.sender], "Insufficient balance."); balances[msg.sender] -= amount; balances[to_address] += amount; //emit Sent(msg.sender, receiver, amount); } }
您發布的程式碼看起來類似於 ERC20 代幣轉移,而不是乙太幣轉移。這兩種類型的傳輸在可靠性上的處理方式不同。
要轉移 ETH,您需要使用send() transfer()函式(請參閱 smarx 的註釋以了解刪除線的說明)。使用此功能時,合約中必須已經存在適當數量的 ETH,或者使用者必須在交易中發送適當數量的 ETH。
如果選擇後一種方法,該函式將需要
payable
修飾符。此外,發送到的地址也必須是payable
。另一方面,ERC20 代幣轉移更多的是映射狀態變化,而不是實際轉移。當您發送 ERC20 令牌時,EVM 會減少您的目前值
balance
並增加接收者的balance
. 在wiki 頁面中閱讀有關 ERC20 的更多資訊。