-
涵盖课次
- lesson8:多币种打赏 TipJar(参考:
day08-TipJar.sol) - lesson9:智能计算器与合约间调用(参考:
day09-SmartCalculator/Calucator.sol,day09-SmartCalculator/ScientificCalculator.sol) - lesson10:活动追踪与事件(参考:
day10-ActivityTracker.sol)
- lesson8:多币种打赏 TipJar(参考:
-
核心知识点
- ETH 接收与计价:
payable、msg.value、以“汇率 × 金额 → wei”实现法币到 ETH 的映射(本课以静态汇率模拟)。 - 合约间交互:静态类型调用(接口/合约类型)与低级调用(
address.call+ ABI 编码)的权衡与安全检查。 - 事件与日志:用
event+emit记录关键状态变更,indexed便于前端过滤与链下订阅。
- ETH 接收与计价:
-
代码要点与启发
- TipJar(多币种打赏):
-
conversionRates存储汇率,supportedCurrecies列表配合keccak256(bytes(..))做字符串等值判断,避免线性字符串比较陷阱。 -
tipInEth()与tipInCurrency()分别支持直接打赏与“法币计价 → ETH 支付”,并分别累计到tipsPerCurrency与totalTipsReceived。 -
withdrawTips()统一结算到owner;transferOwnership()支持所有权转移。 - 设计建议:
- 将不同币种的累计值统一归一为 wei 便于统计(当前
tipsPerCurrency["ETH"]记录 wei,但法币分支记录原始法币金额)。 - 增加事件(TipReceived、Withdrawn、RateUpdated),并考虑接入预言机源维护汇率的可信度与时效性。
- 对外部转账使用 Checks-Effects-Interactions 顺序并评估是否需要重入保护。
- 将不同币种的累计值统一归一为 wei 便于统计(当前
-
- SmartCalculator(合约间调用):
- 主合约
Calucator通过设置的地址与ScientificCalulator进行函数调用,分别展示了强类型调用与低级call+abi.encodeWithSignature的用法与差异。 - 设计建议:
- 优先使用强类型接口/合约(编译期检查签名一致性);低级调用需严格校验
success并解码返回值。 - 校验被调用合约地址非零且为已部署合约;为外部依赖提供 setter 的同时加入
onlyOwner与事件日志。 - 统一函数签名类型(例如
squareRoot的参数类型在签名编码与目标函数处需一致)。
- 优先使用强类型接口/合约(编译期检查签名一致性);低级调用需严格校验
- 主合约
- ActivityTracker(事件驱动的行为记录):
- 用
struct建模用户信息与训练记录;mapping(address => WorkoutActivity[])维护历史;多事件(注册、更新、记录、里程碑)驱动前端。 - 里程碑示例:累计训练次数/距离达到阈值触发
MilestoneAchieved,展示“链上进度 → 前端徽章”的事件模式。 - 设计建议:
- 为数组型历史记录提供分页读取接口,避免一次性返回过大数据。
- 里程碑阈值应常量化或可配置;对体重变化等计算做好整数除法的精度处理。
- 用
- TipJar(多币种打赏):
-
安全与工程化要点
- 汇率与精度:统一以 wei 为最小单位,避免浮点;引入“汇率精度常量”并在 UI 层做展示换算。
- 外部调用:低级调用失败要回滚;避免在外部调用前后留下不一致状态;必要时使用重入保护。
- 事件设计:为关键路径添加事件,涵盖输入参数与必要的索引字段,平衡 Gas 与可检索性。
-
自测清单
- 你会如何把现实世界的法币价格安全地引入链上?预言机接入的信任/成本/延迟如何权衡?
- 写出一次安全的跨合约调用流程:地址校验 → 强类型接口/低级调用 → 检查 success → 解码返回值 → 更新状态。
- 如果要在前端分页读取海量训练记录,你会如何设计只读接口与事件过滤?
第二周·总结一:支付、合约交互与事件
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- ## 区块链智能合约: 实际应用与安全审计 **Meta Description:** 深入探讨区块链智能合约的核...
- ## 区块链智能合约: 实际应用与安全审计 **Meta Description:** 深入探讨区块链智能合约的核...
- # 区块链智能合约安全:Foundry测试框架检测ERC-20代币的重入漏洞 ```html ``` ## 引言:...
- # 区块链智能合约安全:Foundry测试框架检测ERC-20代币的重入漏洞 ```html ``` ## 引言:...