第四周·总结一:VRF 随机、借贷、托管与 AMM 基础

  • 涵盖课次

    • lesson22:去中心化彩票与 Chainlink VRF(参考:day22-DecentralizedLottery.sol
    • lesson23:去中心化借贷(参考:day23-LendingPool.sol
    • lesson24:托管 Escrow(参考:day24-DecentraliseEscrow.sol
    • lesson25:自动化做市商 AMM(参考:day25-AutomatedMarketMaker.sol
    • lesson26:NFT 市场与版税(参考:day26-NFTMarketplace.sol
  • 核心知识点

    • 随机性与公平性:Chainlink VRF 提供可验证随机数,避免区块属性伪随机的可预测性与操纵风险。
    • 借贷三件套:存款(流动性)、抵押与借款、基于时间的利息累积;抵押系数与可借上限的关系。
    • 条件支付:Escrow 状态机(待支付/待收货/完成/争议/取消)、仲裁、超时取消与事件追踪。
    • AMM 恒定乘积:x*y=k 定价、滑点与 0.3% 费率、LP 份额铸销与储备更新。
    • NFT 市场:上架/购买/下架流程,版税与平台费分润,ReentrancyGuard 防护转账链路。
  • 代码要点与启发

    • VRF 彩票(day22-DecentralizedLottery.sol):
      • 通过 VRFConsumerBaseV2Plus 发起 requestRandomWords,在 fulfillRandomWords 中选取 winnerIndex = random % players.length,将奖池余额转给赢家。
      • 设计建议:
        • 管理权:startLottery/endLottery 需要 onlyOwner 或治理控制;当前代码引用了 onlyOwner 但未实现 Ownable,可补充权限基类。
        • 生命周期:开奖后需清空 players(当前 players = new address payable ; 语句非法),正确做法是 delete players;
        • 安全性:校验玩家数 > 0;加入 enter 时的事件,追踪参与与开奖。
        • 运营:入口费 entryFee 可事件化/可配置;考虑多轮开奖与订阅资金管理。
    • 借贷(day23-LendingPool.sol):
      • 存款、取款、抵押与借款,按基点利率、线性时间累积利息;calculateInterestAccrued 基于 lastInterestAccrualTimestamp 计算应还款。
      • 设计建议:
        • 清算与健康度:当前仅限制抵押比,缺少清算流程与折价拍卖;可引入健康因子与清算奖励。
        • 利率模型:固定利率示范可进一步扩展为利用率 U 的曲线利率(kink/双段线性)。
        • 风险隔离:本实现以 ETH 为资产,未引入 ERC20 借贷与多资产池;生产中需引入 Oracle、隔离池与抵押白名单。
    • Escrow(day24-DecentraliseEscrow.sol):
      • 买家存款进入 AWAITING_DELIVERY,买家确认转给卖家;争议由仲裁者裁决;超时买家可取消并退款。
      • 设计建议:
        • 加强身份:为买家/卖家/仲裁方引入可更新权限与事件;对超时逻辑加入 Grace Period。
        • 资金安全:当前使用 transfer 路径简单直观;也可使用 call 并检查返回,保留 CEI 顺序。
    • AMM(day25-AutomatedMarketMaker.sol):
      • 以 LP 作为 ERC20(继承 OpenZeppelin ERC20),首次铸造 sqrt(a*b) 份额,其后按储备比例铸造;兑换采用 amountIn*997/1000 收费的恒定乘积公式,更新储备并发事件。
      • 设计建议:
        • 价格预言机:K 值不是价格;外部价格查询需用 TWAP/预言机避免操纵。
        • 滑点保护:保留 minOut 检查;前端需做路径与价格预估。
        • 费用分配:考虑铸造部分 LP 到协议地址作为协议费;或将手续费计入储备让 LP 捕获收益。
    • NFT 市场(day26-NFTMarketplace.sol):
      • 上架时检查 ownerOf 与批准,购买时按平台费与版税拆分,剩余给卖家,最后 safeTransferFrom NFT 并删除上架。
      • 设计建议:
        • 版税标准:可对接 EIP-2981 读取版税,降低手工输入差错。
        • 防重入:已使用 ReentrancyGuard;同时确保状态变更在外部调用前完成(已符合)。
        • 订单有效期/批量:可加入过期时间与批量上架/撤单接口;对同一 tokenId 再上架前做更严谨检查。
  • 安全与工程化要点

    • VRF 与外部依赖:确保订阅、keyHashcallbackGasLimit 正确配置;处理请求失败/超时的应急策略。
    • 借贷风险:利率与抵押比需治理管理;加入紧急暂停、隔离故障资产的开关。
    • Escrow 审计点:状态机不可逆/不可达状态检查;全路径事件覆盖,便于前端与审计追踪。
    • AMM 与 MEV:交易须有 minOut 防滑点;考虑延迟撮合与防三明治策略。
    • NFT 市场:强制使用 safeTransferFrom;防“授权后转移”导致交易失败的竞态问题(成交时再次校验所有权与批准)。
  • 自测清单

    • 如何在 VRF 彩票中设计多轮开奖与奖池管理?fulfillRandomWords 应该有哪些前置校验?
    • 借贷平台如何设计清算人激励与折价参数,防止坏账?
    • Escrow 需要哪些状态与事件来覆盖完整交易生命周期?
    • AMM 中 LP 代币如何代表占比?兑换公式与手续费如何影响 k 值与价格?
    • NFT 市场中如何同时满足平台费、版税与卖家收益的结算顺序与原子性?
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容