W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
<address>.balance
( uint256
)魏地址余額
<address>.code
( )bytes memory
地址處的代碼(可以為空)
<address>.codehash
( bytes32
)地址的代碼哈希
<address payable>.transfer(uint256 amount)
將給定數(shù)量的 Wei 發(fā)送到Address,失敗時恢復(fù),轉(zhuǎn)發(fā) 2300 gas 津貼,不可調(diào)整
<address payable>.send(uint256 amount) returns (bool)
發(fā)送給定數(shù)量的 Wei 到地址false
,失敗返回,轉(zhuǎn)發(fā) 2300 gas 津貼,不可調(diào)整
<address>.call(bytes memory) returns (bool, bytes memory)
使用給定的有效載荷發(fā)出低級CALL
,返回成功條件和返回數(shù)據(jù),轉(zhuǎn)發(fā)所有可用的氣體,可調(diào)
<address>.delegatecall(bytes memory) returns (bool, bytes memory)
使用給定的有效載荷發(fā)出低級DELEGATECALL
,返回成功條件和返回數(shù)據(jù),轉(zhuǎn)發(fā)所有可用的氣體,可調(diào)
<address>.staticcall(bytes memory) returns (bool, bytes memory)
使用給定的有效載荷發(fā)出低級STATICCALL
,返回成功條件和返回數(shù)據(jù),轉(zhuǎn)發(fā)所有可用的氣體,可調(diào)
有關(guān)詳細(xì)信息,請參閱地址部分。
警告
在執(zhí)行另一個合約函數(shù)時應(yīng)盡可能避免使用.call(),因為它會繞過類型檢查、函數(shù)存在檢查和參數(shù)打包。
警告
使用 有一些危險send:如果調(diào)用堆棧深度為 1024,則傳輸失?。ㄟ@總是由調(diào)用者強制執(zhí)行的),如果接收者用完 gas,它也會失敗。因此,為了進(jìn)行安全的 Ether 轉(zhuǎn)賬,請始終檢查 的返回值send,使用transfer甚至更好:使用收款人取款的模式。
警告
由于 EVM 認(rèn)為對不存在的合約的調(diào)用總是成功的,Solidity 包括extcodesize在執(zhí)行外部調(diào)用時使用操作碼的額外檢查。這確保了即將被調(diào)用的合約要么實際存在(它包含代碼),要么引發(fā)異常。
.call()對地址而不是合約實例(即、 .delegatecall()、.staticcall()和).send()進(jìn)行操作的低級調(diào)用不包括此檢查,這使得它們在 gas 方面更便宜,但也不太安全。.transfer()
筆記
在 0.5.0 版本之前,Solidity 允許合約實例訪問地址成員,例如this.balance. 現(xiàn)在這是禁止的,必須明確轉(zhuǎn)換為地址:address(this).balance.
筆記
如果通過低級委托調(diào)用訪問狀態(tài)變量,則兩個合約的存儲布局必須對齊,以便被調(diào)用合約能夠按名稱正確訪問調(diào)用合約的存儲變量。如果存儲指針作為函數(shù)參數(shù)傳遞,就像高級庫的情況一樣,情況當(dāng)然不是這樣。
筆記
在 0.5.0 版本之前,,.call只返回成功條件,不返回數(shù)據(jù)。.delegatecall.staticcall
筆記
在 0.5.0 版本之前,有一個成員調(diào)用callcode,其語義與delegatecall.
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: