这是一篇根据实际经验整理的「微信公众号网页授权配置」开发踩坑记录。希望能帮你绕开我走过的那些坑。
Engineering Notes
孟斌的小站
技术博客与学习记录
题目描述
找出同时满足以下4个条件的所有三位数(即000-999):
课程结构
第一部分:基础入门(第 0-2 课)
- 第 0 课:搭建开发环境(Remix / Foundry / Hardhat)
- 第 1 课:部署第一个合约
- 第 2 课:合约交互(view/pure vs 状态修改)
第二部分:语言核心(第 3-12 课)
- 第 3-4 课:事件与错误处理
- 第 5 课:外部调用与重入防护
- 第 6 课:存储布局(storage/memory/calldata)
- 第 7-8 课:函数可见性、继承与接口
- 第 9-12 课:事件日志、fallback、错误处理、ABI 编码
第三部分:高级特性(第 13-22 课)
- 第 13-14 课:低级调用(call/delegatecall)、代理模式
- 第 15-18 课:库、支付模式、权限管理、Diamond 标准
- 第 19-20 课:安全专题(常见攻击与防御)
- 第 21-22 课:Gas 优化、ERC20 实现
第四部分:实战项目(第 23-35 课)
- 第 23 课:NFT(ERC721/ERC1155)
- 第 24 课:众筹合约
- 第 25-26 课:DEX、借贷合约
- 第 27 课:DAO 治理
- 第 28-31 课:安全审计案例(The DAO、Parity、Nomad)
- 第 32-36 课:DeFi 基础、多签钱包、DEX 实战
第五部分:DeFi 进阶(第 37-48 课)
- 第 37-39 课:资金池、利率模型、清算机制、aToken
- 第 40-42 课:风险控制、协议费、多市场支持
- 第 43-45 课:清算进阶、利率曲线、复利机制
- 第 46-48 课:跨链借贷、治理代币、前端 DApp 集成
核心知识点
Solidity 基础
- 数据类型、存储位置、函数类型、可见性、继承、错误处理
安全编程
- 重入防护、权限控制、CEI 模式、Pull 支付、Gas 优化
设计模式
- 代理模式(透明代理、UUPS、Diamond)、访问控制、可升级合约
标准协议
- ERC20、ERC721、ERC1155、ERC165、EIP-2535
DeFi 核心
- 资金池、利率模型、清算机制、价格预言机、DAO 治理
实战项目
- HelloWorld / Counter 合约
- ERC20 / ERC721 / ERC1155 代币
- 众筹合约 / DEX / 借贷池
- 多签钱包 / DAO 治理
- 完整 DeFi 协议(借贷、清算、治理)
工具链
- 开发:Remix IDE、Foundry、Hardhat、VSCode
- 测试:Foundry Test、Hardhat Test
- 部署:forge script、hardhat deploy、Anvil
- 前端:ethers.js、React、MetaMask
学习路径
- 初学者:第 0-2 课 → 第 3-12 课 → 第 13-16 课 → 第 22-24 课
- 进阶:第 17-21 课 → 第 25-27 课 → 第 28-31 课 → 第 32-36 课
- 专业:第 37-48 课(完整 DeFi 协议开发)
安全原则
- 最小权限原则
- CEI 模式(Check-Effects-Interactions)
- Pull 支付模式
- 输入验证
- 重入防护(ReentrancyGuard)
- 避免时间依赖
- 外部调用谨慎处理
- 重要操作记录事件
- 上线前代码审计
常见陷阱
- 开发:存储槽冲突、函数选择器碰撞、delegatecall 陷阱、Gas 限制
- 安全:重入攻击、整数溢出、权限绕过、时间依赖
- 部署:代理合约构造函数、初始化函数、升级兼容性、事件索引限制
推荐资源
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
腾讯云开发者社区:孟斯特
鸽了大半个月,终于收尾了
1、学习目标
通过本课你将掌握:
1、学习目标
- 理解跨链借贷的几种常见体系结构(lock-mint、liquidity pool、atomic swap、debt-on-destination);
- 了解主流跨链通信/桥的安全/设计要点(finality、reorg、replay、watchers、relayers、attestation);
- 掌握跨链借贷带来的关键挑战:延迟、清算、oracle 一致性、双花、流动性碎片化、信任边界;
- 实现一个教学级别的跨链借贷原型(MockBridge + ChainA 抵押管理 + ChainB 借贷/信用管理),并用 Foundry 测试关键流程(存抵押 → 跨链消息 → mint vToken → 借款 → 价格下跌 → 跨链清算);
- 学会如何把教学实现替换成生产桥(LayerZero / Axelar / Wormhole)时需要注意的改动。
2、概念与设计详解
跨链借贷把「抵押在链 A、借款在链 B」或「在某链上开仓并在另一链上获得流动性」变为可能,但也带来了复杂性。下面尽量详尽列出设计要点与工程权衡。
1、学习目标
- 清楚区分 利息计算的几种方法(简单利息 / 离散复利 / 指数连续复利)及各自的利弊
- 理解并掌握 index-based(借款/存款指数) 的利息会计方法(可扩展到多资产)
- 从零实现:借款指数(borrowIndex)/ 存款指数(supplyIndex)、按秒累积利息、按比例分配协议储备(reserve)
- 使用 Foundry 测试:模拟时间流逝、验证借款人负债、存款人收益、协议储备累积与还款行为
2、概念介绍
在现实的借贷协议里,利息并不是“每个用户单独按时间往账上写利息”,而是用**公用索引(index)**高效记录利息增长,然后按需用索引换算账户余额。这样做能极大节省 gas 并避免对每个用户频繁写状态。
1、学习目标
- 理解 资金利用率(Utilization Rate, U) 概念
- 掌握 动态利率模型(线性 / 分段 / 曲线)
- 通过代码实现利率自动调整机制
- 编写 完整测试 验证资金利用率、借贷利率、存款收益随资金变化的联动
- 对比 Compound / Aave 的利率曲线模型
2、资金利用率 (Utilization Rate)
借贷协议的核心指标:
1、学习目标
- 深入理解多资产抵押下的 清算路径 与策略选择(顺序清算 vs 拍卖)
- 明确 清算参数:
closeFactor、liquidationBonus、liquidationThreshold、maxLiquidationSize等的含义与取值权衡 - 实现并测试:
- 支持多资产、可选择性清算(指定要拿走哪种抵押物)
- 基于折价直接清算(快速清算)
- 一个简易拍卖(auction)示例,适合处理流动性差或高价值抵押品的场景
- 掌握清算相关的 安全与经济风险(闪电贷清算、预言机操纵、清算人经济激励)及缓解措施
2、概念梳理
2.1 为什么需要「进阶清算」?
在单一资产、简单系统里,清算可以用“偿还债务 → 扣押抵押物(按折扣)”快速结束。但在多资产系统和真实市场中,会遇到多种复杂情形:
1. 学习目标
- 理解为什么借贷协议必须支持多种资产而不是单一代币。
- 掌握**市场(Market)**的概念:每个资产拥有独立的借贷池、利率模型、抵押参数。
- 学习 跨资产借贷 的关键逻辑:抵押物与借款资产之间的价值评估。
- 实现一个多市场借贷平台原型,允许用户用 A 代币抵押,借出 B 代币。
2. 背景与概念
2.1 为什么需要多资产支持?
单资产借贷(例如只能抵押 ETH 借出 ETH)意义不大。现实需求是: