
先明确数据在系统中的位置
数据与区块链的关系可以从三个环节理解:数据存放在哪里、怎样核验内容、外部信息如何进入智能合约。链上记录、分布式文件存储和预言机分别承担不同职责。讨论可靠性时,需要明确所指的是记录一致性、文件可获取性,还是数据对现实情况的准确反映。
链上存储应考虑容量与成本
以太坊开发文档介绍了去中心化存储,并指出以太坊直接承载大量数据存在容量和费用约束。文档还区分了依靠区块链记录保留数据与依靠存储协议持续保存数据的方式;IPFS本身没有内置激励机制,长期保留需要额外安排。

对于大文件应用,一种常见设计是在链下保存正文,在链上保存用于校验的摘要或相关引用。评估这种设计时,要同时考虑链上写入成本和链下保存、检索成本。链上记录仍然存在,并不意味着对应文件始终能够下载。

完整性与持续可用性需要分别验证
内容摘要可用于核对取回的文件是否与登记内容一致,但不能替代文件本身,也不能单独证明内容描述的事情真实。适用于文件核验的机制,不能直接当作现实事实的证明。
持续可用性则依赖有人保存数据并提供访问。采用有期限的存储安排时,需要明确续期责任、节点退出后的副本补充和检索路径。存储证明或挑战机制用于检查保存情况,应用还应关注实际能否及时取回文件。
外部数据应关注来源和更新条件
Chainlink Data Feeds文档介绍了由去中心化预言机网络聚合多个来源并发布到链上的数据服务,也列出了更新心跳、偏差阈值等信息。这说明,合约使用外部数据时,除了读取数值,还需要理解数值的生成和更新方式。
适用于依赖外部信息的应用,需要明确数据含义、计量单位、更新时间和异常处理规则。读取到最新发布的记录,仍可能与现实状态存在时间差;多个来源也可能依赖共同的上游数据,因此来源数量不能单独证明数据质量。
常见问题:去中心化是否等于没有依赖
去中心化需要结合实际结构判断,包括数据副本由谁控制、访问是否集中于单一网关、信息提供方是否相互独立。是否要求身份验证,不能单独作为判断标准。
区块链应用可以同时依赖链上记录、链下文件和外部数据服务。适用边界应逐项说明:记录如何核验、文件如何保留、数据如何更新,以及某个环节不可用时系统如何响应。