当前位置: 首页 > 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.xdnf.cn/news/1255591.html

相关文章:

  • ansible-playbook之获取服务器IP存储到本地文件
  • 一文读懂 C# 中的 Bitmap
  • GPT-5 将在周五凌晨1点正式发布,王炸模型将免费使用??
  • 【R语言】 高清美观的 MaxEnt 刀切图(Jackknife)绘制——提升论文质量
  • 从Text2SQL到Text2Metrics:衡石指标管理技术跃迁
  • 网页前端CSS实现表格3行平均分配高度,或者用div Flexbox布局
  • 92-基于Django的豆瓣图书推荐系统的设计与实现
  • 六边形架构模式深度解析
  • 解锁高效开发:AWS 前端 Web 与移动应用解决方案详解
  • 探究 ASGI 的技术优势:现代 Web 开发的新方向
  • Docker可用镜像(长期免费)
  • 从Centos 9 Stream 版本切换到 Rocky Linux 9
  • C++ - 仿 RabbitMQ 实现消息队列--案例
  • SQL注入攻击基础
  • HashMap寻址算法
  • FPGA学习笔记——SPI通讯协议简介
  • 【数据结构】排序(sort) -- 交换排序(冒泡快排)
  • 使用 Tauri 开发 Android 应用:环境搭建与入门指南
  • SkyWalking-1--SkyWalking是什么?
  • 快速搭建开源网页编辑器(vue+TinyMCE)
  • 【RabbitMQ面试精讲 Day 13】HAProxy与负载均衡配置
  • 深度学习的视觉惯性里程计(VIO)算法优化实践
  • 七、Linux Shell 与脚本基础
  • C语言memmove函数详解:安全高效的内存复制利器
  • 使用Spring Boot + Angular构建安全的登录注册系统
  • 自动化办公革命:3小时完成8小时工作量
  • 每日算法刷题Day58:8.7:leetcode 单调栈5道题,用时2h
  • Python 基础详解:数据类型(Data Types)—— 程序的“数据基石”
  • 超高车辆如何影响城市立交隧道安全?预警系统如何应对?
  • 鸿蒙网络编程系列61-仓颉版基于TCP实现最简单的HTTP服务器