solidity-19-fallback

接收ETH receive和fallback

receive和callback是solidity中两个特殊的回调函数,一个处理接收ETH,一个处理不存在的函数调用。本质上就是吧fallback拆成了两个回调函数。我暂时不知道什么是fallback

fallback调用不存在的函数时会被调用也就是这个函数是不是等价于callback?

简单的部署一个合约

javascript 复制代码
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

contract Fallback{
    event receivedcalled(address Sender,uint Value);
    event fallbackcalled(address Sender,uint value,bytes Data);

    receive() external payable {
        emit receivedcalled(msg.sender,msg.value);
     }

     fallback() external payable{
        // 传入了消息的来源 消息的value 消息的数据?
        emit fallbackcalled(msg.sender, msg.value, msg.data);
     }
}

向合约内进行转账

交易成功并成功触发了事件。

如果在交易的时候calldata中添加了数据就触发了fallback而不是receive

总结下来就是一句话:

简单来说,合约接收ETH时,msg.data为空且存在receive()时,会触发receive();msg.data不为空或不存在receive()时,会触发fallback(),此时fallback()必须为payable。

相关推荐
爱思德学术2 小时前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):IEEE COMPSAC 2026
人工智能·区块链·软件工程
公链开发10 小时前
重塑链游开发:达普韦伯如何成为技术背后的坚实支柱
区块链
2501_9216494911 小时前
股指期货 API 入门指南:如何获取实时行情与构建交易系统
python·websocket·金融·区块链·restful
2503_9469718611 小时前
【FullStack/ZeroDay】2026年度全栈魔法架构与分布式恶意节点清除基准索引 (Benchmark Index)
分布式·网络安全·架构·系统架构·区块链·数据集·全栈开发
CryptoRzz11 小时前
印度交易所 BSE 与 NSE 实时数据 API 接入指南
java·c语言·python·区块链·php·maven·symfony
2503_9469718612 小时前
【P2P/Blockchain】2026年度去中心化P2P协议与不可变智能合约审计基准索引 (Benchmark Index)
网络安全·区块链·数据集·架构设计·分布式系统
DICOM医学影像12 小时前
16. web3.js结合Metemask调用合约方法
区块链·智能合约·solidity·以太坊·metamask·web3.0
WLJT12312312313 小时前
有色金属:高端制造的核心赋能材料
大数据·人工智能·区块链
hopsky2 天前
零知识证明与同态加密-基础概念
区块链·同态加密·零知识证明
2501_921649492 天前
如何获取外汇实时数据:全球货币行情对接指南
后端·python·websocket·金融·区块链