می توانید اتر را به قراردادهای دیگر ارسال کنید
انتقال
(گاز 2300 خطای پرتاب)ارسال
(بنزین 2300، قرقره برگشتی)زنگ زدن
(تمام گاز یا گاز تنظیم شده را فوروارد کنید، بول را برمی گرداند)یک قرارداد دریافت کننده اتر باید حداقل یکی از عملکردهای زیر را داشته باشد
دریافت () خارجی قابل پرداخت
fallback() خارجی قابل پرداخت
دريافت كردن()
اگر نامیده می شود msg.data
خالی است وگرنه بازگشتی ()
نامیده میشود.
زنگ زدن
در ترکیب با گارد ورود مجدد، روش توصیه شده برای استفاده پس از دسامبر 2019 است.
از ورود مجدد توسط
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
contract ReceiveEther {
/*
Which function is called, fallback() or receive()?
send Ether
|
msg.data is empty?
/ \
yes no
/ \
receive() exists? fallback()
/ \
yes no
/ \
receive() fallback()
*/
// Function to receive Ether. msg.data must be empty
receive() external payable {}
// Fallback function is called when msg.data is not empty
fallback() external payable {}
function getBalance() public view returns (uint256) {
return address(this).balance;
}
}
contract SendEther {
function sendViaTransfer(address payable _to) public payable {
// This function is no longer recommended for sending Ether.
_to.transfer(msg.value);
}
function sendViaSend(address payable _to) public payable {
// Send returns a boolean value indicating success or failure.
// This function is not recommended for sending Ether.
bool sent = _to.send(msg.value);
require(sent, "Failed to send Ether");
}
function sendViaCall(address payable _to) public payable {
// Call returns a boolean value indicating success or failure.
// This is the current recommended method to use.
(bool sent, bytes memory data) = _to.call{value: msg.value}("");
require(sent, "Failed to send Ether");
}
}