
先明确概念的适用范围
这里的“高层”指对区块链整体机制的理解。比特币开发者指南讨论区块验证、工作量证明与分叉;以太坊智能合约安全文档讨论权限、测试和审查。前者解释账本如何形成一致记录,后者解释应用如何减少漏洞,两类问题需要分别判断。
误区一:不可篡改意味着历史绝对不能改变
比特币通过区块间的哈希关联与工作量证明提高修改历史的成本,后续区块增加会进一步强化这种保护。但竞争分支与链重组仍可能发生。因此,“不可篡改”应理解为特定机制和条件下的抗修改能力,不能解释成任何情况下都无法改变。
误区二:共识就是多数节点投票,最长链必然有效
比特币全节点独立验证区块;在有效的候选链之间,累计工作量是选择依据,不能只比较区块数量。工作量也不能让违反验证规则的区块变得有效。理解共识时,应先问记录是否符合规则,再问有效分支之间如何取舍。
误区三:去中心化意味着应用没有管理权限
以太坊上的合约可以设置所有者、角色和多签管理。底层网络的分布式运行,并不直接说明应用权限如何分配。判断一个应用的控制结构,需要查看谁能执行敏感操作,以及这些操作需要哪些授权。多签能够增加授权门槛,但仍需考察签名方是否独立。
误区四:合约自动执行,所以代码天然安全
自动执行也会执行有缺陷的逻辑。访问控制、输入检查和异常处理都会影响合约安全。所谓减少信任依赖,并不免除对代码和管理权限的检查;执行结果符合程序,也不等于程序符合设计者的预期。
常见问题:通过审计或形式化验证就足够了吗
审计提供额外审查,不能保证发现全部漏洞。形式化验证的结论受所定义的性质、模型和假设约束,也不能扩大为整个应用绝对安全。测试、分析和独立审查各有覆盖范围,评估时应明确检查的是哪个版本、哪些行为,以及哪些外部条件仍未覆盖。