文章目录
本文详细解释了Arweave网络从用户提交数据到区块被全网保存的整个出块流程。我们将一步步解析这个过程,包括数据存储、矿工打包、验证与共识以及最终的数据永久保存。
1. 用户提交数据存储请求
1.1 用户发起交易
-
用户准备数据:用户使用Arweave钱包或其他与Arweave集成的应用程序上传想要永久存储的数据(例如文件、图片、文本等)。
-
打包成交易:用户提交的数据会打包成一个“交易”(Transaction),包括以下内容:
- 数据:实际要存储的内容(文件、文本、音频等)。
- 交易信息:包括交易发起者的公钥、交易费用等。
- 存储费:用户支付一次性永久存储费用(AR代币),费用根据数据大小动态确定。
-
签名交易:用户用私钥对交易进行数字签名,确保交易的合法性。
1.2 广播交易
- 广播到网络:签名后的交易被广播到Arweave网络,成为待处理交易(Unconfirmed Transaction),等待矿工打包进区块。
2. 矿工监听并打包交易
2.1 矿工监听交易池
- 矿工节点监听交易池:Arweave网络中的矿工节点持续监听未确认交易池,挑选合法的交易打包。
2.2 矿工进行工作量证明(Proof of Work, PoW)
- 工作量证明机制:矿工需要通过计算找到符合一定难度的哈希值,确保出块速度保持在每两分钟左右。
2.3 矿工选择引用历史区块(Block Weave)
-
区块依赖性链(Block Weave):矿工在创建新区块时,不仅引用前一个最近区块,还引用多个历史区块,确保数据的可访问性和安全性。
-
引用策略:矿工根据激励机制选择不同历史区块,引用较老的区块可获得更高奖励,因为这些数据可能被其他矿工抛弃。
2.4 打包交易进新区块
- 打包过程:矿工将用户交易与其他未确认交易一起打包进新区块。新区块包含:
- 区块头:包括前一区块哈希、工作量证明、时间戳等。
- 交易列表:用户提交的交易。
- 数据引用:历史区块的引用信息。
3. 新区块的验证与广播
3.1 新区块广播到网络
- 矿工节点广播新区块:矿工完成工作量证明后,将新区块广播到全网。
3.2 其他节点验证新区块
- 多层验证:
- PoW验证:其他节点验证新区块的工作量证明是否有效。
- 交易验证:验证每笔交易的签名和费用。
- 存储证明验证:检查新区块中引用的历史区块数据的有效性。
3.3 达成共识
- 网络共识:当大多数节点确认新区块有效后,新区块正式加入Arweave区块依赖性链。
4. 数据的永久存储与全网确认
4.1 区块永久存储
-
区块加入Block Weave:一旦新区块被确认,它会永久存储在Arweave的Block Weave结构中。引用机制确保历史区块数据的有效性。
-
数据不可篡改性:数据一旦存储,任何修改都会导致整个链条的哈希失效,确保数据不可篡改。
4.2 矿工获得奖励
- 矿工奖励机制:矿工成功打包区块后,获得AR代币奖励,激励矿工参与网络并维护存储数据。
5. 长期数据存取与维护
5.1 存储证明机制(Proof of Access, PoA)
- 存储证明机制:矿工需证明自己保留了过去区块的数据,未来生成新区块时展示过去区块的一部分数据。
5.2 数据的持续访问
- 用户数据的永久可访问性:一旦数据存储,任何人都可以通过交易ID在Arweave网络永久访问这些数据。
5.3 无需持续支付
- 一次性存储费用:用户只需支付一次费用,数据就会永久保存,无需持续付费。
六. 总结
Arweave通过其独特的Block Weave结构,确保用户数据从提交到永久存储的每个过程安全、不可篡改、可访问。用户只需支付一次费用,数据就能永久存储,并且通过引用历史区块,矿工参与维护数据的长期可用性,形成了一个去中心化的永久存储网络。