Solidity

如何在不使用關鍵字“payable”的情況下將乙太坊發送到智能合約地址?

  • March 31, 2021

我嘗試使用以下程式碼將乙太坊從我的錢包發送到智能合約地址:

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 加入智能合約有兩種非標準方式:

  1. 將 ETH 發送到另一個合約,並且selfdestruct該合約以目標地址作為您要將 ETH 發送到的地址。
  2. 挖一個區塊並將 ETH 獎勵發送到您想要發送 ETH 的地址。

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