
一、先区分账本安全与应用安全
区块链风控不是单一技术。比特币开发者指南讨论共识与交易记录,以太坊智能合约安全文档关注权限和程序行为,两者对应不同的风险层次。账本按规则接受一笔交易,不代表交易涉及的合约没有漏洞,也不代表调用者的操作符合业务预期。
二、双花、共识与链重组
双花是试图重复花费同一笔资金。比特币的UTXO指未花费交易输出,可作为交易输入;已花费输出不能再次被有效花费。共识规则则是节点验证区块和交易所依据的规则。

比特币节点在有效候选链中依据累计工作量选择链,短暂分叉后的切换可能改变交易的收录状态,这涉及链重组。因此,“已经广播”“已被区块收录”和“后续又有区块确认”不能混为一谈。这些解释适用于比特币的工作量证明机制,不能直接套用于所有区块链。

三、访问控制、多签与单点故障
访问控制回答“谁能执行敏感操作”。所有者模式集中授权给指定地址,角色控制按职责分配权限,多签则要求达到规定签名门槛后才能执行操作。
角色数量多,不等于控制权真正分散。如果多个账户仍由同一主体控制,风险可能依旧集中。理解多签时也要区分“多人共同批准”与“操作本身正确”:签名门槛约束授权过程,并不自动验证业务逻辑。
四、回滚、不变量与形式化验证
在Solidity中,require常用于检查输入或前置条件,revert用于主动终止执行并回滚相应状态变化,assert用于检查本应始终成立的内部条件。不变量就是程序执行过程中应保持成立的性质。
测试检查具体输入下的表现;模糊测试通过生成输入探索异常;形式化验证针对明确的规格与模型证明性质。它们的结论都有范围:证明某条性质成立,不等于证明所有风险不存在;回滚也不意味着撤销此前已经完成的独立交易。
五、常见问题:审计通过是否等于安全
不等于。审计是独立检查,漏洞赏金是鼓励外部研究者报告问题的机制,二者都不能保证发现全部缺陷。阅读安全结论时,关键是确认它覆盖哪个代码版本、哪些权限和哪些假设。
“不可篡改”也不等于“不会出错”。记录难以修改,保护的是历史完整性,不会自动纠正错误授权或程序缺陷。理解任何安全术语,都应追问它防范什么、依赖什么条件,以及还留下哪些风险。