簡體   English   中英

只支付合約地址還是賬戶地址?

[英]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。 雖然ownerowner2是可payable的,因此您的代碼可以向他們發送 ETH。

注意:不要將原生轉賬與 ERC-20 轉賬 function 混淆。這是兩個獨立的函數,即使它們具有相同的名稱 - 但它們接受不同的 arguments 並且是不同類型的成員函數。


合同接收者還有一個條件。 接收合約需要實現receive()或 payable fallback() 特殊函數才能接受轉賬。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM