当前位置: 首页 > news >正文

合约收款方式,转账与问题安全

合约收款方式

payable修饰符
function funcName() public payable() {}

 receive() 函数

 用途

当合约收到纯 ETH 转账(例如 address(this).transfer() 或 address(this).send())且没有调用数据(data为空)时,会调用 receive() 函数。

语法
receive() external payable {     // 收款逻辑 }
  • external:只能被外部调用。

  • payable:允许接收 ETH。

  • 不能有参数,也不能返回值。

  • 每个合约只能有一个 receive() 函数

使用场景
contract MyContract {event Received(address sender, uint amount);receive() external payable {emit Received(msg.sender, msg.value);}
}

 fallback() 函数

用途
  • 当调用合约函数时,找不到对应函数签名

  • 或者调用时带有数据,但合约中没有 receive() 函数可调用

会触发 fallback() 函数。

语法(两种)
1. 允许收款:
fallback() external payable {     // fallback 收款逻辑 }
2. 不收款,仅响应错误调用:
fallback() external {     // fallback 非 payable,不能接收 ETH }
使用场景

contract MyContract {event FallbackCalled(address sender, uint amount, bytes data);fallback() external payable {emit FallbackCalled(msg.sender, msg.value, msg.data);}
}

 receive vs fallback 对比总结

特性 receive() fallback()
http://www.dtcms.com/a/318869.html

相关文章:

  • 怎么进行专项分析项目?
  • 上证50期权持仓明细在哪里查询?
  • C语言(08)——整数浮点数在内存中的存储
  • LINUX-批量文件管理及vim文件编辑器
  • 浅析 Berachain v2 ,对原有 PoL 机制进行了哪些升级?
  • AutoMQ-Kafka的替代方案实战
  • JAVA第六学:数组的使用
  • 【C++】哈希表原理与实现详解
  • 基于langchain的两个实际应用:[MCP多服务器聊天系统]和[解析PDF文档的RAG问答]
  • 智能制造的中枢神经工控机在自动化产线中的关键角色
  • 行业应用案例:MCP在不同垂直领域的落地实践
  • 二叉树算法之【中序遍历】
  • OpenAI重磅发布:GPT最新开源大模型gpt-oss系列全面解析
  • SpringBoot请求重定向目标地址不正确问题分析排查
  • 六类注定烂尾的甲方软件外包必看!这类甲方不要理-优雅草卓伊凡
  • 上门家教 app 用户端系统模块设计
  • 区块链简介
  • C++位图(Bitmap)与布隆过滤器(Bloom Filter)详解及海量数据处理应用
  • java excel转图片常用的几种方法
  • 分布式接口限流与防重复提交实现方案
  • 快速搭建vue3+flask实现一个异物检测项目
  • RP2040下的I2S Slave Out,PIO状态机(四)
  • MT信号四通道相关性预测的Informer模型优化研究
  • 此芯p1开发板使用OpenHarmony时llama.cpp不同优化速度对比(GPU vs CPU)
  • 掌握工程化固件烧录,开启你的技术进阶之路-FPGA ISE(xilinx)
  • 微软推出“愤怒计划“:利用AI工具实现恶意软件自主分类
  • Daemon Tools for Mac —— 专业虚拟光驱与磁盘映像工具
  • 手机控制断路器:智能家居安全用电的新篇章
  • Casrel关系抽取
  • 如何快速开发符合Matter标准的智能家居设备?