做DeFi合约开发这几年,接触过不少从零搭建借贷协议的团队,也审计过十余个借贷类项目。一个很普遍的现象是:很多团队能快速搭出存、借、还的基础流程,但一到清算逻辑就容易出问题——要么抵押率计算精度出错,要么清算条件触发不对,要么留下了可被利用的安全漏洞。借贷协议的本质是风控,而清算机制是整条风控线的最后一道闸门。清算逻辑写不好,轻则出现坏账,重则被攻击者利用直接掏空合约。这篇文章我们从最基础的超额抵押模型讲起,用Solidity手写一个可运行的极简借贷合约,重点拆解清算逻辑的实现细节,再结合审计经验讲清楚常见的安全坑点。一、超额抵押:借贷协议的风控基石和传统信用借贷不同,链上借贷没有身份和征信体系,全部依赖超额抵押来控制风险。用户存入抵押品后,只能借出低于抵押品价值的资产,一旦价格下跌导致抵押率不足,就会触发清算。1.1 四个核心风控参数理解借贷协议,先搞懂四个最核心的参数,所有清算逻辑都是围绕它们展开的:LTV(贷款价值比):用户最大可借款额度与抵押品价值的比例。比如LTV=75%,意味着存入价值1000美元的ETH,最多只能借出750美元的稳定币。这个值决定了资金利用率,越高资金效率越高,安全缓冲越小。清算阈值:触发清算的临界抵押率。比如清算阈值=80%,当用户债务价值 / 抵押品价值 ≥ 80% 时,仓位就进入可清算状态。清算折扣(清算激励):清算人替用户偿还债务后,可以以低于市场价的比例兑换抵押品,相当于清算的收益。比如5%的