-
涵盖课次
- lesson4:拍卖逻辑与时间控制(参考:
day04-AuctionHouse.sol) - lesson5:所有权与访问控制(参考:
day05-AdminOnly.sol) - lesson6:ETH 存取与账户(参考:
day06-EtherPiggyBank.sol) - lesson7:好友记账与转账方式(参考:
day07-SimpleIOU.sol)
- lesson4:拍卖逻辑与时间控制(参考:
-
核心知识点
- 流程控制与时间:用
require守卫业务前置条件;block.timestamp控制拍卖起止。 - 权限模型:
owner模式与modifier封装访问控制,分离“管理动作”和“普通用户动作”。 - ETH 流转:
payable、msg.value、余额记账;transfer/call的行为差异与错误处理。 - 账本建模:多重映射记录债务关系,余额扣减与清偿的原子性。
- 流程控制与时间:用
-
代码要点
- 拍卖行:维护最高出价者与金额,时间结束后揭示结果。
-
day04-AuctionHouse.sol:auctionEndTime+require保证竞拍窗口;highestBidder/highestBid实时更新(本实现为逻辑建模,未涉及真实 ETH)。
-
- 管理员合约:集中授权与额度,支持转移所有权。
-
day05-AdminOnly.sol:onlyOwner统一权限;approveWithdrawal+withdrawTreasure控制提取上限与一次性领取(本实现以数值抽象宝藏,并非真实 ETH)。
-
- 存钱罐:成员注册、存取款与 ETH 存入。
-
day06-EtherPiggyBank.sol:onlyRegisteredMember保护账户操作;depositAmountEther()接收真实 ETH;建议为关键变更添加事件日志。
-
- IOU 记账:好友白名单、钱包余额、债务登记与偿还。
-
day07-SimpleIOU.sol:debts[debtor][creditor]建模应付账;提供transfer与call两种转账实现,以及withdraw。
-
- 拍卖行:维护最高出价者与金额,时间结束后揭示结果。
-
安全与工程化要点
- Checks-Effects-Interactions:先校验、再更新状态、最后外部交互;在
withdraw采用先减后转更安全。 -
transfervscall:transfer固定 2300 gas 可能在现代合约失效;call需检查返回值并考虑重入保护。 - 时间与终止:
block.timestamp可被矿工微调,适合宽窗口控制;关键金融逻辑可引入“缓冲/延迟”。 - 权限扩展:为
owner转移提供函数并校验非零地址;为关键操作增加事件,便于前端与审计。
- Checks-Effects-Interactions:先校验、再更新状态、最后外部交互;在
-
设计建议与可选优化
- 统一“内部账本余额”和“真实 ETH”语义,避免混用导致双重记账风险(例如在
SimpleIOU中既向对方地址发送 ETH 又同时增加其内部余额,可能引起重复提取的业务风险;可将内部转账与链上转账两种模式区分开并分别结算)。 - 在资金相关函数增加重入保护(如互斥或引入类似 OpenZeppelin ReentrancyGuard 的模式)。
- 为拍卖与额度审批补充“取消/撤销/更新”路径,完善状态机与边界处理。
- 统一“内部账本余额”和“真实 ETH”语义,避免混用导致双重记账风险(例如在
-
自测清单
- 说出
onlyOwner的实现方式与优缺点;何时需要多签替代单一 owner? - 描述一次安全的转账流程,包括校验、记账与外部调用的顺序与失败回滚。
- 在拍卖中如何避免“最后一刻抢跑/阻塞”?你会如何改进当前实现?
- 说出
第一周·总结二:业务逻辑与权限/资金安全
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- ## 区块链智能合约: 实际应用与安全审计 **Meta Description:** 深入探讨区块链智能合约的核...
- ## 区块链智能合约: 实际应用与安全审计 **Meta Description:** 深入探讨区块链智能合约的核...
- 1. blockchain-ctf靶场 平台地址:https://blockchain-ctf.securityi...
- ## 区块链应用开发实战:智能合约与DApp构建指南 **Meta描述:** 掌握区块链应用开发核心技能!本指南详...