
先明确技术的适用范围
讨论区块链的数字货币技术,需要分别考察底层账本与应用逻辑。比特币开发者指南涉及交易验证、工作量证明和分叉;以太坊智能合约安全文档侧重权限控制与代码质量。前者的具体规则不能直接套用于所有区块链,后者主要适用于具有智能合约功能的应用。
交易有效性与重复花费
比特币全节点独立验证区块。普通交易使用未花费交易输出,即UTXO,同一个输出不能在有效链上重复花费;输入总额与输出总额的差额构成交易手续费。

应用处理账本时,需要区分交易已被发送、已被收录以及收录区块仍处于有效链上这几种状态。仅看到交易信息,不能据此认定它已经获得稳定确认。

分叉与历史记录的稳定性
比特币通过区块之间的哈希关联和工作量证明提高改写历史的成本。出现分叉时,节点在有效候选链中依据累计工作量选择链;同一高度可能对应不同区块,因此高度不能充当全局唯一标识。
“不可篡改”应理解为具有验证规则和改写成本约束。应用保存区块记录时,需要能够识别具体区块,并处理链重组导致的状态变化,不能把首次收录视为永远不会改变的结果。
合约权限与代码验证
以太坊智能合约安全文档强调访问控制、执行条件检查、测试和独立审查。多签可以要求多方共同批准敏感操作;部署后的逻辑通常难以直接修补,审计也无法保证发现全部漏洞。
权限设计需要明确谁能增发、升级或暂停,以及相关权限失陷后的影响。执行条件检查用于限制不合法操作,测试则需要覆盖正常流程之外的异常输入和状态组合。这些措施解决不同问题,不能相互替代。
常见认识误区
链上验证通过,是否意味着应用没有漏洞?验证通过只说明执行符合相应规则,业务逻辑仍可能存在缺陷。管理权限采用多签,是否就能消除风险?多签增加共同授权要求,但权限范围和合约逻辑仍需审查。
形式化验证是否能证明绝对安全?其结论受形式化规格、模型和假设约束。技术评估应明确验证了哪些性质、覆盖了哪些组件,避免把局部检查的结果扩展为整个系统的安全保证。