![](/img/trans.png)
[英]Send and transfer are only available for objects of type address payable , not address
[英]Is the payable only for contract address or also for account address?
我正在通過官方文檔學習可靠性,我不確定的一件事是應付地址概念僅適用於合同地址? 因為我認為作為 msg.sender 的帳戶地址可以自動接收令牌,不是嗎?
順便說一句,如果 payable 是合約地址,那么下面的代碼就沒用了,對吧?
address private _owner = 0x617F2E2fD72FD9D5503197092aC168c91465Eab2;
address payable owner = payable(_owner);
address immutable owner2 = payable(msg.sender);
它可以同時用於合約地址和賬戶地址。
address payable
類型( address
類型的擴展)允許調用該類型的原生.transfer()
function,以將原生代幣(以太坊上的 ETH,Poylgon 上的 MATIC,...)轉移到指定地址。
文檔: https://docs.soliditylang.org/en/v0.8.17/types.html#address
因此,在您分享的示例中, _owner
不可payable
,您的代碼無法向其發送 ETH。 雖然owner
和owner2
是可payable
的,因此您的代碼可以向他們發送 ETH。
注意:不要將原生轉賬與 ERC-20 轉賬 function 混淆。這是兩個獨立的函數,即使它們具有相同的名稱 - 但它們接受不同的 arguments 並且是不同類型的成員函數。
合同接收者還有一個條件。 接收合約需要實現receive()
或 payable fallback()
特殊函數才能接受轉賬。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.