链上与链下数据解析:区块链存储指南 | Quicknode您可以在终端、代码或 AI 代理中管理 Quicknode。现已支持 CLI、管理 API、MCP 和 SDK。
开始构建 答案>了解区块链基础知识>链上数据与链下数据:有什么区别? 简而言之:链上数据直接存储在区块链上,因此具有永久性、透明性,且任何人都可以对其进行验证。链下数据则存储在区块链之外,通常存储在传统服务器、IPFS 等去中心化存储网络或私有数据库中。大多数实际应用都会将两者结合使用:将关键状态保存在链上,同时将体积较大或非关键的数据存储在链下,以节省成本并提升性能。
简明解释
每个区块链的存储空间都是有限的。将数据存储在链上,意味着将其写入交易或智能合约状态中,这些数据会被永久记录在网络中的每个节点上。这使得数据具有防篡改性且可被普遍访问,但同时也伴随着一定的成本。在以太坊上,仅存储32字节的数据,根据gas价格的不同,可能就要花费几美元。若要在链上存储整张图片或整份文档,其成本将高得令人望而却步。
这就是链下数据发挥作用的地方。开发者不必将整张图片存储在区块链上,而是将其存储在IPFS(一个去中心化的文件存储网络)中,然后仅将IPFS内容的哈希值存储在链上。区块链记录证明了数据应有的内容,而链下存储则实际保存着这些数据。这种混合方案既具备区块链的可验证性,又兼具传统或去中心化存储系统的可扩展性。
不妨把它想象成一份房产证。房产证本身(一份小巧但至关重要的所有权证明)会登记在县书记官办公室。但实际的房屋、建筑图纸、验房报告和照片都存放在其他地方。房产证只是指向该房产。区块链的工作原理与此相同:它存储关键的证明和指针,而更大的数据集则存放在链下。
什么算作链上数据
链上数据包括所有永久记录在区块链状态或交易历史中的内容。这涵盖交易记录(发送方、接收方、金额、时间戳)、智能合约代码和状态变量(代币余额、所有权记录、治理投票)、智能合约发出的事件日志,以及区块元数据(如时间戳和验证者信息)。
通过 SOC 2 II 类认证 · ISO 27001
当用户在去中心化交易所进行代币兑换时,整个交易过程——包括交易金额、涉及的地址以及由此产生的状态变化——都会被记录在链上。当铸造 NFT 时,代币 ID、所有者地址以及元数据 URI 都会存储在智能合约的链上状态中。这些数据一旦确认,便不可篡改,这意味着任何人都无法事后对其进行修改。
链上数据赋予了区块链其核心价值主张:无需信任的验证。任何运行节点或查询 RPC 端点的用户,都可以独立验证任何链上数据,而无需依赖第三方。这是网络中唯一的权威数据源。
什么算作链下数据
链下数据是指存在于区块链之外,但被链上活动引用或与链上活动相关的任何数据。 这包括存储在IPFS或中心化服务器上的NFT图像和元数据文件、去中心化应用(dapps)使用的海量数据集(用户资料、订单历史、分析数据)、将现实世界信息(价格、天气、体育赛事比分)引入区块链的预言机数据源、在第二层(Layer 2)交易数据被批量处理并结算至第一层(Layer 1)之前的数据,以及与智能合约交互的应用程序前端和API。
最常见的模式是在链上存储一个指向链下数据的內容哈希或URI。例如,大多数NFT智能合约都会存储一个tokenURI,该URI指向托管在IPFS或Web服务器上的JSON元数据文件。该JSON文件包含图片URL、描述和属性。区块链知道该指针,而链下系统则存储有效载荷。
像Chainlink这样的预言机是链上与链下世界之间至关重要的桥梁。智能合约无法原生访问外部数据。它们无法查询股价、验证天气事件,也无法确认现实世界中的货物运输情况。预言机负责获取这些链下数据,并以可验证的方式将其传递到链上,从而使智能合约能够对现实世界中的事件作出反应。
权衡取舍
关于将哪些数据存储在链上还是链下,最终取决于成本、速度、持久性以及信任要求。链上存储虽然成本高昂,但具有永久性和无需信任的特点。 链下存储成本低且速度快,但会对外部系统产生依赖。如果一个 NFT 的图片存储在中心化服务器上,而该服务器发生故障,该 NFT 虽然在链上仍然存在,但其所代表的艺术作品将无法访问。如果图片存储在 IPFS 上且无人对其进行固定,同样的情况也会发生。
IPFS 和 Arweave 等去中心化存储协议旨在通过将文件分布在节点网络中,而非依赖单一服务器,来解决这一问题。IPFS 采用内容寻址存储方式,这意味着文件是通过其加密哈希值而非服务器位置来引用的。只要网络中至少有一个节点将该文件固定下来,该文件就始终可访问。Arweave 则更进一步,通过一次性费用模式对永久存储提供激励。
对于开发生产级应用的开发者而言,其架构通常包括:将所有与财务相关的关键状态(余额、所有权、授权)保存在链上;将较大体积的资产存储在IPFS等去中心化存储中;为提升性能,将频繁访问的数据缓存到链下数据库中;以及利用索引器和数据管道,使链上数据可供查询。
链上数据和链下数据有什么区别?
链上数据和链下数据在存储位置和所提供的保障方面存在差异。链上数据被写入区块链的账本中,并由每个节点进行验证;而链下数据则存储在外部系统中,区块链仅对其进行引用。下表从最重要的几个属性对两者进行了对比。
属性 | 链上数据 | 链下数据 |
|---|
位置 | 存储在区块和合约状态中 | 服务器、IPFS 或数据库 |
成本 | 高,按每字节燃气支付 | 低廉、标准的存储价格 |
速度 | 受区块时间限制 | 快速、近乎瞬时的读写操作 |
永恒 | 一旦确认即不可更改 | 除非被固定或归档,否则可变 |
透明度 | 公开的,任何人都可以验证 | 私有或受访问控制 |
信任模型 | 无需信任,由共识保障 | 取决于主机或存储网络 |
最适合 | 余额、所有权、证明 | 图片、大文件、缓存的分析数据 |
何时应将数据存储在链上,何时又应存储在链下?
经验法则很简单:凡是必须具备“无需信任”、“不可逆”和“可公开验证”特性的内容,都应保留在链上;其余内容则移至链下,以节省成本并提高速度。下表将常见的数据类型与通常最适合的存储层进行了对应。
数据类型 | 推荐地点 | 为什么 |
|---|
代币余额与持有情况 | 链上 | 必须是无需信任且不可逆的 |
智能合约逻辑 | 链上 | 执行过程必须可验证 |
NFT 媒体和元数据 | 链下(IPFS) | 体积过大且存储成本过高,无法在链上存储 |
分析与搜索索引 | 链下 | 需要快速查询,基于链数据重建 |
真实世界数据源 | 通过预言机进行链下操作 | 链无法获取外部数据 |
执行这些规则的逻辑运行在智能合约中,而链下部分通常依赖区块链索引,将原始的链上事件转换为可快速检索的记录。如果您正在考虑如何在大规模环境下读取状态,不妨看看各团队是如何处理区块链数据查询的。
第二层和Rollup交易是在链上还是链下进行的?
第二层交易最初在链下进行,一旦结算即转为链上。第二层区块链为提高速度,会在一个独立的层上执行交易,随后Rollup将其中许多交易进行批量处理,并将压缩后的数据及证明发回第一层。因此,交易执行在链下进行,但最终数据和安全锚点则位于链上。两种主要设计——乐观Rollup和零知识Rollup——在证明批量处理的链下工作是否有效的方式上存在差异。
预言机是如何将链下数据与区块链连接起来的?
智能合约无法自行连接互联网,因此需要依赖预言机将链下信息引入链上。 预言机网络会获取资产价格或事件结果等外部数据,就其数值达成共识,并将其写入合约中,供其他合约读取。正是通过这种方式,DeFi 协议才能对市场价格作出反应,保险合约也能对现实世界中的事件作出响应,同时确保最终用于执行的数值始终保存在链上且可验证。
常见问题解答
链下数据安全吗?
确实可以,但保障机制有所不同。链下数据的安全性取决于其存储位置,因此集中式服务器会成为单点故障;而像 IPFS 或 Arweave 这样的内容寻址网络则会将副本分散存储在多个节点上。将链下数据的加密哈希值存储在链上,可让任何人验证链下有效载荷是否遭到篡改。
如果 NFT 的链下图片无法访问,该 NFT 会怎样?
该代币本身仍然存在于链上,但如果托管服务器消失且无人将文件固定下来,它所指向的艺术作品可能会无法访问。这就是为什么严肃的项目会将 NFT 媒体存储在 IPFS 或 Arweave 上,并将内容的哈希值保存在链上,而不是使用易失性的网页 URL。
智能合约能否直接读取链下数据?
不。智能合约是确定性的,且与外部世界隔离,因此无法发起网络调用。它们需要依赖预言机,将链下数据以可验证的形式传递到链上,才能使用这些数据。
IPFS 是在链上还是链下?
IPFS 属于链下系统。它是一个去中心化存储网络,将文件存储在区块链之外,而区块链通常只存储指向这些文件的 IPFS 内容哈希值。
如何访问历史链上数据?
从任何节点读取最新状态都很简单,但要获取完整历史数据,通常需要存档节点或补全管道。有关常见方法及其权衡,请参阅“访问历史区块链数据”。
Quicknode 的作用是什么
处理链上和链下数据都需要可靠的基础设施。Quicknode 的Core API为您提供低延迟的 RPC 访问,支持读取和写入 80 多条区块链上的数据。QuicknodeStreams 允许 您捕获实时区块链事件,并将它们路由到链下目标(如 webhooks、PostgreSQL 数据库或 S3 存储桶),从而轻松构建连接链上与链下世界的数据管道。 在去中心化存储方面,Quicknode 的IPFS 固定 服务和专用网关让您无需管理自己的 IPFS 节点,即可存储和检索链下内容。
延伸阅读