-
涵盖课次
- 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)
- lesson22:去中心化彩票与 Chainlink VRF(参考:
-
核心知识点
- 随机性与公平性: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 捕获收益。
- 以 LP 作为 ERC20(继承 OpenZeppelin ERC20),首次铸造
- NFT 市场(
day26-NFTMarketplace.sol):- 上架时检查
ownerOf与批准,购买时按平台费与版税拆分,剩余给卖家,最后safeTransferFromNFT 并删除上架。 - 设计建议:
- 版税标准:可对接 EIP-2981 读取版税,降低手工输入差错。
- 防重入:已使用
ReentrancyGuard;同时确保状态变更在外部调用前完成(已符合)。 - 订单有效期/批量:可加入过期时间与批量上架/撤单接口;对同一
tokenId再上架前做更严谨检查。
- 上架时检查
- VRF 彩票(
-
安全与工程化要点
- VRF 与外部依赖:确保订阅、
keyHash与callbackGasLimit正确配置;处理请求失败/超时的应急策略。 - 借贷风险:利率与抵押比需治理管理;加入紧急暂停、隔离故障资产的开关。
- Escrow 审计点:状态机不可逆/不可达状态检查;全路径事件覆盖,便于前端与审计追踪。
- AMM 与 MEV:交易须有
minOut防滑点;考虑延迟撮合与防三明治策略。 - NFT 市场:强制使用
safeTransferFrom;防“授权后转移”导致交易失败的竞态问题(成交时再次校验所有权与批准)。
- VRF 与外部依赖:确保订阅、
-
自测清单
- 如何在 VRF 彩票中设计多轮开奖与奖池管理?
fulfillRandomWords应该有哪些前置校验? - 借贷平台如何设计清算人激励与折价参数,防止坏账?
- Escrow 需要哪些状态与事件来覆盖完整交易生命周期?
- AMM 中 LP 代币如何代表占比?兑换公式与手续费如何影响 k 值与价格?
- NFT 市场中如何同时满足平台费、版税与卖家收益的结算顺序与原子性?
- 如何在 VRF 彩票中设计多轮开奖与奖池管理?
第四周·总结一:VRF 随机、借贷、托管与 AMM 基础
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- ## 区块链智能合约: 实际应用与安全审计 **Meta Description:** 深入探讨区块链智能合约的核...
- ## 区块链智能合约: 实际应用与安全审计 **Meta Description:** 深入探讨区块链智能合约的核...
- 涵盖课次lesson27:收益农场 Yield Farming(参考:day27-YieldFarming.sol...
- 涵盖课次lesson19:基于签名的入场验证(参考:day19-EventEntry.sol)lesson20:重...