数据可用性(Data Availability, DA)并不等同于永久存储。区块链没有永久存储数据的义务。本文将用通俗易懂的语言澄清外界对数据可用性层的种种误解。DA的角色是提升安全性而不是存储历史数据。
目录:
保存历史数据不等于安全性?
数据可用性是什么
数据可用性不是什么
DA:数据可用性仅确保数据完整发布
DS:数据存储与历史索引
数据可用性为什么重要
诈骗证明机制
validium逃生舱需要最新状态
数据可用性是网络安全的重要支柱
在市场争论是否将数据可用性构建在外部项目例如Celestia或是保留在以太坊的同时,其实并不是为了争论历史数据要储存在哪,还是攸关网络安全的问题。
(观点|数据可用性层(DA)竞争将呈现多元发展)
部分读者可能会有疑问:“Layer2的历史数据储存与安全性不是相同意思吗?”其实历史数据对于Layer2安全性并不是最重要的考量,Vitalik所坚持的东西并不是历史数据储存。
若有上述问题,代表对于数据可用性层的用途与定义搞错了。
(Layer2交易纪录储存位置的差异是什么?链下数据可用性(DA)发展介绍)
数据可用性并不保证所有的历史数据永久提供用户或是节点调用,数据可用性项目包含Celestia或是EigenDA提供的是一个暂时的储存空间,与Arweave永久保存数据的去中心化储存设施有根本上的不同,虽然本质上都是提供硬盘。
(Celestia(TIA)主网启动|模块化区块链未来的机会与挑战)
由于现有的主流Rollups将以太坊视为DA并将完整的交易信息压缩后上链,才会让外界误以为数据可用性代表永久储存。但其实包含近期坎昆升级(Dencun)所带来的EIP-4844,也将会开始删除过旧的Rollups交易数据,因为本来上链的目的就不是为了永久储存。
数据可用性仅保证区块被最终性(finality)确认前的调用,提供Ethereum针对有争议的区块仲裁时的评断依据。因此也有人认为要将此名称更改为数据发布(Data Publication, DP)。
例如Arbitrum上某个节点发现其他节点传输的区块有错误而发布诈骗证明,此时需要有一份正确的数据给Ethereum去运算而后仲裁,若没有DA确保数据可用性,诈骗证明机制将无法进行。
如果当一个交易已经被最终性确认,例如在以太坊网络中已经过2/3以上节点确认的区块(大约是拥有60个以上的新区块成为最长链),就会被最终性确认,被最终性确认的区块将永远不可被更改。
最终确认后网络上不会再有任何争议只有共识,相关交易的DA就再也用不到了,这也就是为什么EIP-4844决定将定期删除这些数据。因为永久储存跟目的无关。
或许会有部分的读者会觉得很奇怪,既然数据可用性的意思是确保数据有完整发布到网络上,过了一段时间后就会被删除或是不保证可以存取到,那么如果因为特殊原因要调用Rollups完整交易的历史纪录该怎么办?这时谈的才是数据储存(Data Storage)的面向。
但其实,区块链历史数据储存并不是一个非常重要的议题。
只要所有节点中有任何一方因利害关系或是其他原因,就会主动保留完整的交易数据。例如:
区块链浏览器:因为这是本业的关键资源
Rollups项目:因为这是服务用户的一个环节
热情用户:因为希望产业更好
另一方面,大多数节点的设计都会保留区块头数据(里面有交易区块Hash值),代表拿到某方提供的完整历史数据时,还可以轻松验证真实性。
综上所述,数据储存与历史索引的假设接近1/N,只要网络规模够大(N个节点),只要找得到一个节点愿意提供完整数据,几乎可以保证任何人一定可以从某个地方拿到正确的历史数据。
接下来来说明为什么DA对于Rollups或是validium非常重要,以至于L2BEAT将DA视为五大风险模型之一。
(Layer2风险模型五大指标)
上述有提到,诈骗证明机制需要仰赖完整的交易资讯才可以进行。
甚至在极端情况,所有节点都串通并停止向某诚实节点传送资讯,这时若没有确保数据可用性,诚实节点将无法辨别是网络连线不稳定或是网络正在受到攻击,也无从反击,诈骗证明的1/N信任假设将无法成立。
大多数Layer2网络都会有抗审查的提款机制,例如逃生舱(Escape Hatch),也就是当用户提款的请求被排序器长期忽略或是恶意拒绝,且强制提款函数同样被节点忽略没有收到回应几天后,用户所发起的紧急按钮。
当逃生舱功能被启动后,将暂停网络一段时间,此时网络上所有交易都无法进行,不过可以让用户依照状态树(state root)进行提款,以达到抗审查的提款机制。
不过Validium要取得最新的状态树,此时至少需要有一个节点愿意提供,为了提升用户资产安全性,若拥有可靠的DA,那么将可以让用户更确保能拿到状态树并提款。
(validium 是一种Layer2?validium受到以太坊社群的重新检视)
因此由上述两个场景,可以理解数据可用性在Layer2的生态中,就算不负责永久储存数据,仍扮演着非常重要的安全组件。
数据可用性层的功能不是为了提供完整的交易历史资讯,而是藉由提供交易被最终确认前的状态,确保网络顺利运作与用户资产安全,成为Layer2安全模型的重要关键。
若没有DA,在极端情况下,不论有多么设计精良的交易证明机制(诈骗证明、零知识证明),不论设计的多精良,基本上都无用武之地。数据可用性就是这么重要,也难怪许多以太坊开发者不认同外部DA。
(Vitalik希望2024年会有10个达到Stage 1的L2,这是什么意思?)
在项目坊大肆宣传其zkEVM、诈骗证明、生态发展的同时,也需要时时谨记这些最基础的设施是否能确保安全。