Solidity
如何在不使用關鍵字“payable”的情況下將乙太坊發送到智能合約地址?
我嘗試使用以下程式碼將乙太坊從我的錢包發送到智能合約地址:
pragma solidity >=0.6.10; contract NoUsePayable { function getBalance() public view returns (uint) { return address(this).balance; } } contract selfDestruct { function kill(address payable addr) public payable{ selfdestruct(addr); } }
但是,這種方式仍然使用
payable
關鍵字。誰能幫我解決這個問題?
為了讓智能合約從任何類型的賬戶接收乙太幣,它必須具有支付功能,否則它將無法接收硬幣。
一般來說,不能將 ETH 發送到沒有
receive
功能或payable
功能的智能合約。將 ETH 加入智能合約有兩種非標準方式:
- 將 ETH 發送到另一個合約,並且
selfdestruct
該合約以目標地址作為您要將 ETH 發送到的地址。- 挖一個區塊並將 ETH 獎勵發送到您想要發送 ETH 的地址。