在存储赛道,除了绝对的龙头Filecoin,还有Storj、Crust、Sia等项目也都按照各自的节奏在发展。最近Arweave被讨论得比较多,存储数据在过去三个月来增长了10倍,人气非常旺。
然而Arweave并不是存储赛道刚冒出来的新势力,其实在2017年就已经创立了,并于2018年6月上线主网。也就是说,这是一个老牌项目,只是最近开始被广泛关注,尤其是其永久存储的概念,值得深入探讨。
2021年10月28日,在第三期BeWaterLive上,everFinance创始人熊炜,在腾讯会议直播间,为大家带来了《Arweave生态技术概要》的分享。
这场深度且系统的分享,核心内容:
AR原生介绍:
1、为什么永久存储在经济上可行
2、如何确保矿工储存所有数据
3、Blockweave技术
4、隐性激励机制
Smartweave和存储共识范式:
1、相对共识和绝对共识
2、trustedapp
3、everpay架构设计
PoW+PoS数据激励:
1、KYVE设计
2、KOII设计
3、一些应用
大家好,我在18年进入区块链圈加入imToken开发DEX Tokenlon,经历了Tokenlon几代的迭代。这之间一直在研究DeFi,是Uniswap和Compound的早期用户和研究者。在imToken和使用DeFi过程中,我们遇到了非常多问题,比如助记词管理,矿工费等问题,对用户而言很难理解。过去几年中我一直在推荐一些阿里以及银行的朋友使用去中心化轻钱包,但效果不太理想,钱包的入门门槛太高。
直到去年7月份在星火的一个分享会上,听喵叔讲到Arweave的Smart Contract——SmartWeave,以及曾汨对Arweave这个永存区块链项目的讲解,让我看到了降低用户门槛的新方向。过去以太坊或者公链的基础设施在基因层面就无法为普通用户提供良好的体验,就算产品做得再牛也无法规避区块链的用户门槛,Arweave则可能是一种新范式的基础,可以真正为普通用户打开区块链世界的大门。
在Arweave上进行一个永存文件,数据会被几百个节点进行存储,同时你的文件可以Arweave网关或者任何一个节点进行访问。在进入区块链行业之前,我先研究IPFS,学习了使用分布式Hash Table进行去中心化全网检索数据,但是,IPFS也有它的缺陷–没有文件数据存储的激励层,通常来说我的服务器关闭后,我的文件可能并没有被网络同步,这个文件就消失了。
Arweave建立了一个新的机制,一个永存的机制,Arweave和Filecoin不同的是,它是一个一次性付费,永久存储。那么他为什么能做到这个永久存储,它有一套自己的理论模型。
为什么永久存储在经济上可行?
首先说这个永久存储为什么在经济上是可行的,根据官方统计存储的成本,其实成本一直在降低,它其实是符合摩尔定律规律的,每年可能下降30%的成本。这个存储成本的下降计算了一个未来的存储成本,其实因为存储成本下降,它会变成一个收敛的值,最终这个存储的成本就会变成一个常数,那么,它就是根据这个常数来进行一定的加权来存储大家的数据,进行永存。
2、如何确保矿工储存所有数据?
Arweave如何保护这些文件不丢失?Arweave是做了数据的staking,当我们把数据打包到Arweave之后,这些数据就成为有效的数据,矿工可以staking任何有效数据,数据量可以是10M,也可以是全网20TB的数据。对矿工而言,存的数据越多,他挖出来AR就越多,所以说AR是靠经济激励,让矿工去存。
Blockweave技术
在技术上,Arweave使用了blockweave技术。什么是blockweave,简单说就是在出下一个新区块的时候,实际上需要一个随机的历史回忆数据,这样对矿工而言,就是我存的越多,那么我挖出新块概率越高。如果矿工没有这个数据,也可以出块,但是出块的算力则需指数级别的提高。因此存储更多数据才是出块的最优最经济的选择。
隐性激励机制
另外,Arweave也有一个隐性的激励机制,使得文件不会丢失。当一个文件数据变成稀有数据时,新的区块需要这份稀有数据时,存有稀有数据的矿工会更具备出块优势,其他矿工没有这个文件,那么他们就需要更高算力去解决POW问题。稀有数据让矿工出块更快,而没有这个数据矿工,则会为了提升自己的出块竞争力而去同步稀有数据,让稀有数据就变得不稀有。最终你的文件会分布式的存到整个网络中,极大的降低了文件丢失的可能性。
Smartweave
下面我们会探讨永久存储和共识计算。去年7月份在meeting现场听到Arweave时,直觉告诉我这是一个非常具有颠覆性的底层链。如果说有这个永久存储的区块链,或者说永久存储的网盘,它完全可以认为是一条图灵机的纸带。我们知道图灵机包含一个状态机和一条无限长的纸带,Arweave则可以扮演这个纸带的角色。当我们有了Arweave这样的链,我们可以编写任意的程序,这个程序可以进行任何的图灵演算,所有的数据包括程序本身都可以放在Arweave上。
我们在个人的电脑上可以编辑文件,当我们把excel的报表发给第三方的时候,别人没有办法确认我的报表真实性,现在我们把电脑的硬盘换成存储型的区块链,所有操作数据的内容全部写到区块链上,每一个独立的客户端都可以做分布式的计算,这个时候就可以达到可信。因此我们认为只要存储可信了,整个计算的过程都是可信的。
比特币的账本是不断用POW方式挖出来,让会计帐本形成一个共识。我们的个人计算机,如果说把我们的硬盘直接换成AR,计算机上每一个操作,每一个步骤都会在AR这条链上记录下来,那么当前的所有状态都是可以被可追溯可认证的。这是一个颠覆性的新模型,但又是一个古典的回归到计算机本质的“经典模型”,因此我们不需要像以太坊那样进行链上计算。每个文件都可追溯,不可篡改。将一个确定性的程序上传AR,任何人可以下载这个程序,程序会自动加载AR上的数据,这时程序的运算结果具备了客观事实的特性,或者说具备共识的特性。在这个基础上,我们就可以看一下Smartweave是如何实现的。
Smartweave是一套链下运行的虚拟机,它从AR上读取应用程序的running code,然后再去加载AR上的所有程序入参,在本地执行代码需要的每笔交易。当每一笔交易的执行完成之后,Smartweave跟上了AR最新区块,这个链下虚拟机就能生成一个最新的确定状态。
智能合约代码的执行完全不在链上发生,AR可以保障代码的真实客观性,或者说某个AR交易所存储的代码就是一个Token合约,这个合约的状态和它所有的执行操作都是后续用户发给AR交易来产生的结果。
听起来很完美,但是Smartweave也会有它的问题,它不能避免数据ddos攻击。数据ddos攻击是什么,就是黑客可以发巨量无效的、会执行失败的交易数据,由于Smartweave需要执行后才能判断数据是否真实有效,因此Smartweave客户端需要不断加载这些数据才能算出最终结果。Smartweave在运算之前并不知道这些数据是无效的,如果有几个GB的错误交易,就会导致Smartweave的可用性非常低,不过这并不会影响它的安全性和共识。
存储共识范式
这个图里边第一个是BTC模型。BTC转账的时候,我是需要在个人电脑上跑一个BTC的全节点,或者是一个轻节点,我是需要自己把整个BTC的账本算完,才能进行转账。
但是从17年后就是metaMask和imtoken的代理模式,这样应用方会部署好了以太坊和BTC节点。我只是请求一下他们节点的数据,然后发交易。刚才提到的Smartweave模型,则更倾向是左边的BTC模型,是用户自己计算,自行进行交易发送。中间图示的代理模式,metaMask完全可以为用户展示一个错误的余额,但是代理机构并不能改变共识:指定的BTC程序加上BTC共识数据所计算出来的结果一定是唯一一致的,任何人只要跑节点计算出来的状态就不可能有差错。Smartweave也是一样的,他只要算出来,就是确定的结果。
再深入这部分,我们发现其实用户将来无需再和链交互,用户只需要访问应用方的后端服务就可以了。刚才的那个Smartweave那个展示的方式,他的那个链下计算的那一方,其实就是一个应用端,这个应用端完全可以在自己的server上运行,拥有永久存储的区块链后,就会让这个server就变成是一个确定性的,可追溯的,或者说具备区块链特性的一个程序。
相对共识和绝对共识
为什么用户无需再访问链,这里有一个叫做相对共识和绝对共识的概念。用户现在在用metaMask的时候,如左图所示eth节点是在imtoken部署的,我发的交易其实也通过metaMask的网关提交到eth节点,在这里用户所观察到的都是相对共识,用户完全的信任了一个可以伪造数据的第三方机构。如果用户完全不信任任何第三方,就必须自己部署节点跑完所有交易,才可以获得不相信任何第三方的绝对共识。
用户现在目前的代理模式中,可以使用很多DeFi产品。在做流动性挖矿时,这些产品有一个年化收益率。如果用户要知道真正的年化收益率,他必须亲自计算,才能获得真实可靠的年化收益率。更进一步,既然年化收益率这些稍微抽象一点的数据都需要一些中心化节点提供计算。第三方服务器完全能提供虚假的年化收益率,但是这些第三方是无法改变转账的共识的。再进一步的思考,是不是我们的余额这些转账其实的基本信息也可以由三方的节点来计算,为用户提供一个体验非常棒的api就可以了。
所以我们就做了Trusted APP模型,这个APP背后才是区块链,Trusted APP就把用户和区块链进行了一个解耦。这是降低用户门槛的一个关键,也是提高TPS的一个关键。
TrustedAPP
这个模式的好处如下:
组合性:Trusted APP所提供的是数据分片后的组合性。在进行组合性的时候,应用A可以把B应用的数据从存储型区块链上下载下来,按照B应用的业务规则去校验,就可以达到这个多个账本之间校验。我们关心哪个应用,才会去集成他的数据并进行校验。这种模式用blockchain极大的提升了传统业务组合能力。
我以前是在银行是做多方会对账,传统对账非常痛苦,每天发个TXT给你,然后用自己的账本和第三方机构账本对,这样半手工的对账很可能出现出错,出错之后,就需要账务冲正等操作。如果把数据在AR进行共识存储,那么各方对帐时都可以用程序去自动处理,这个账本其实就已经和比特币就非常接近了。所有的defi应用或者传统金融应用都可以使用这个方式来进行组合,我们可以把传统每日一对账提高到一个区块打包一对帐。
开发者门槛很低:当我们使用存储范式开发时,门槛非常低。之前我演示过Smartweave的JS合约真的是非常简单,一个JS的属性state可以任意定制,任何开发者都可以自己想象一下,一个应用的余额就是state.balance,邮箱的注册状态就是state.registed,一个永久存储的文件状态state.file_id。存储范式开发来说非常的简单和灵活,并且没有任何的语言限制。
AR上的PST有像ERC20一样的标准,会有一些state的通用接口。但是对于我们做web,或者web3.0应用,其实是没有任何限制的,开发者可以灵活的发挥Smartweave的优势。
更重要的是,我们并不一定要使用js去写智能合约,不是一定需要Smartweave。我认为Smartweave存储共识范式的子集。通过永久可信的存储去计算出当前的共识,AR成为图灵机的纸带,让我们可以构建任何图灵完备的应用。把Smartweave换成自己的后端程序,使用AR进行永久存储,也能让我们的程序具备区块链的各种优良特性。
由于Smartweave无法避免数据ddos攻击,我们对它的模型进行来改造。通过使用一个高性能的后端服务器来接收用户的交易,就不会存在的ddos。当然这个模型也有一些劣势,这个独立的后端服务器可以过滤用户的交易,可以审核用户交易。我们只能认为这个后端无法改变客观事实状态,因为用户上链的交易都是自己签名的。通过这个模式就可以解决Smartweave的那个ddos的弊端,甚至让开发模式完全变得和web2.0一样。
“无限”的TPS:同时,应用的TPS也是“无限的”,服务器可以接收1万笔、10万笔交易,然后再批量的rollup到AR上。可能有一个临时的状态会在这里进行排序,但是每隔五到十分钟,数据被rollup到AR之后,所有状态都会在AR上确定下来。不论程序运行在什么的服务器上,加上AR这个永久存储的网盘,就能实现可信的web3.0的应用。
将模型进一步抽象,一个存储性区块链,加上我们阿里云或者谷歌云就可以打造web3.0应用。确定的业务程序,把AR当做硬盘,最终AR保障了文件的不可篡改和可追溯特性,让业务程序产生确定性的唯一结果。
我们怎么来做defi?Trusted APP的API提供实时的数据验证和上链。defi需要在多方之间进行一个交易账本验证,如果有一个项目做了dex,而别人做了一个token,或者像compond这样的借贷的协议。那么dex在集成他们的时候,就是从AR上下载他们的业务程序和历史数据。比如将Smartweave的js业务代码集成到dex中进行运算和数据验证。你可以用任何的语言来写程序,比如golang或者rust,将其他应用的确定性规则转化成你使用的语言,使用其他应用的SDK就可以将它们和你开发的应用集成和组合。
无限扩容的web3.0时代
存储范式可以创造一个无限扩容的一个web3.0时代:图左边是everPay(代币支付结算协议),右边是一个AMM程序,下面是一个SNX合成资产。这些应用用自己存储型区块链去存储业务数据,每个应用的共识都可以由检测者这样的业务程序计算出来。所有的应用可以用HTTP进行实时通信,通信交互的结果可以事后进行校验和冲正:由于everPay有amm的共识检查程序,everPay能获得所有amm数据,因此everPay可以完整计算出amm的最终状态。当amm最新的数据rollup到存储区块链之后,多方应用的所有状态都会归为一致。
everypay知道其他应用是确定性的,并且没有作弊。这些应用会实时的用传统的web2.0的接口进行交互,一旦上链之后,整个状态就归结到一个确定状态,所以交互的临时状态也会归集成一个统一的状态。存储范式下,甚至不需要每个应用使用同一个存储链,每个应用可以是AR或者其他的存储形态,各方也可以实现组合。比如amm用另外一个存储链,那么everypay想要验证他,其实就直接去另一条链上读取它的数据,进行运算和验证就可以达到组合性的目标。
everpay
everpay是以太坊的dapp,也是Arweave的dapp。在使用everPay的时候,我们可以直接用以太坊的metaMask进行连接,也可以用AR钱包ArConnect连接。everPay将来会支持更多的链,比如solana,near都可进行集成。灵活的链下计算,让我们可以用golang实现各种密码学。目前everPay更像是一个Layer2应用,使用everPay可以体验实时的代币转账以及Arweave和以太坊跨链。
使用everPay之前需要进行交易充值。everPay的资产由DAO进行管理,DAO成员在以太坊和AR上都有一个多签合约。用户将资产充到DAO的管理地址后,这个交易就会发给everpay,它会检查AR那边是不是在15个区块之前的充值,如果交易没有问题就会在everpay1:1的映射出这个token。资产映射到everPay后用户的充值的地址就会持有ever上的对等代币,并使用原有钱包操作这些资产。
进行转账时,比如转移1个AR,收款可以是太坊地址,也可以是AR地址,所有的以太坊和AR地址都是everPay的有效账户。转账时,用户需要使用metamask对交易进行签名。上图是转出的token,还有手续费,这笔交易会直接发给服务器。现在,我们切换一下钱包,使用收款的AR的钱包来连接everPay,可以看到这个地址和以太坊地址是完全不一样的结构。这时在我的交易记录里边就能看到刚才那笔转入交易。
everPay链下计算可以支持非常大的并发。everPay的后端可以理解成就像支付宝、微信一样,利用各种后端构建出强大并发应用程序。但是,everPay所有交易数据都会rollup到AR上的,因此这整个账本都是具备区块链的特性。
everpay架构
这里有一张图就是everpay的整个架构,架构中有三个角色:
一个是coordinator,和zkrollup他们的排序器是一样,所有的用户交易都是发给这个coordinator,该角色会进行计算并且是实时计算,按照先到先执行的原则,对用户交易进行执行和持久化。用户的交易不存在pending状态,发给coordinator就confirm了。用户交易发送成功的,交易就会进入待上链的池,如果不成功,则会返回一个错误给前端,同时交易也不会进入待上链。Coordinator会每隔5-10分钟就将待上链的交易批量打包到Arweave。
所有的角色都运行一致的业务程序,包括watchman和detector。每个角色都会独立的从AR上加载数据,并进行独立的计算和验证。
detector职责就像是infra,部署后可以提供所有转账和余额信息,用户可以通过detector自己可以拿到账本的终极状态。
watchman是跨链时的多签治理角色,它是一个带私钥的detector。当watchmen检测到有AR上有提现数据时,会生成提现proposal;如果某个用户要区块以太坊上的原生token,watchem校验用户的交易后就会进行一个单独的proposal签名,当watchmen签名超过51%之后,交易才能在以太坊或者AR链执行。
watchman、detector和coordinator之间没有任何的P2P通信,都是完全通过AR这个永久硬盘进账本同步,所有角色进行全账本验证。watchmen则在验证后进行提案签名。
使用Arweave这样的存储基础设施,通过SCP(存储范式)构建的应用,可能才是真web3.0会做的事情。everPay是一个web3.0的典型应用,能满足高TPS体验接近传统web2.0并以DAO的方式运作。那另外的例子就如mirror.xyz,我们今天刚把everPay light paper放在mirror上。使用mirror时,虽然它是中心化服务器运行,但所有的文件数据存在AR上,同时mirror的NFT是发到以太坊上,这完全符合SCP的模型。
存储范式的关键就是文件永久存储,像以太坊一样的链会成为一个服务的大后端。我们的应用并没有必要完全运行在链上或者完全的去中心化。去中心化存储带来了另一个真相:用户需要存储的文件并不一定要用户自己发交易存上去,通过中心化的服务将用户的文件进行永存能获得同样的效果。
更进一步资产转移或许也可以考虑用新的模式去构建。everPay对于价值的流动做了进一步拓展,用户的交易也不需要他自己发到链上去,我们可以使用everyPay这样的服务,和其他链进行映射,为用户解决掉区块链难用的大问题。
当前everpay支持AR和以太坊,将来任何链都可以集成。在everPay上转账都是实时,体验和传统转账几乎一致。我们将来会支持智能合约账户,智能合约账户做在链上是非常贵的,但是做链下就很便宜了,everPay的智能账户具备去中心化的安全性,在较低的共识成本前提下保证用户体验。
存储范式经过这大半年的迭代和更新后,我们发现,范式最核心问题是数据验证。Smartweave没有解决数据验证问题,无法抵抗数据ddos攻击。链上数据的有效性是一个核心问题,只有数据有效正确,应用的可用性才能得到保障,应用的共识才更易于扩展。
everPay使用coordinator的方案解决数据验证,数据验证可以进一步的拓展到一些去中心化的方案上。
去中心化数据验证方案在Arweave社区项目中非常常见,这些项目都符合SCP,这个实践中,Smartweave也是SCP的一个子集。AR上的其他一些项目,比如KYVE,预言机redstone,链数据KYVE,本质上和everPay的SCP完全一致。
KYVE设计
从KYVE架构图可以看到,它会通过一个validator,将数据验证后上传到AR上。使用Staking Tokne进行罚没的机制,保证了数据上链的正确性,剔除了无效数据,从而让客户端无需加载那些无效的数据。
koii设计:pow+pos
koii他们创造了一个具备高扩容能力的,完全去中心化的共识网络。它在AR上再创建了一套PoS,AR是PoW的,koii的POS这个之上再创建的一层模型。进入koii网络前,需要先staking代币,才具备数据验证的资格。作为节点如果没有staking数据,那么进行了数据验证也是无效的。
对于staking并且进行数据验证的节点,如果传了错误的数据,根据这一套PoS的共识,就会对进行错误验证的节点进行罚没。罚没一定的token后,节点会被踢出这个网络。通过这套机制,koii创造一个完全分布式的任务分发器,该网络中可能有100个koii节点,每个节点都可以进行简单的任务计算,而任务的发放方就像传统智能合约开发者编写solidity一样,开发者提供任务脚本,脚本会发给这些各方去计算。运行这些任务的节点,将验证后的数据上链,就可以拿到新增发的代币奖励。
在koii网络中,100个节点,开发者发了一个任务,只需要有三四个节点在抢着进行这个任务就足够,并不需要全网所有节点计算。比如某个开发者做了应用A,有人做了应用B,A和B在koii网络上由不同的节点进行不同的计算。一个任务在整个网络中只需要有一个节点进行计算,就可以保证任务的正确计算和验证。
使用PoW+PoS的存储范式还具备另一优势。加入网络的节点进行了PoS代币质押,但节点无法改变你的程序共识,无法篡改你的执行结果。共识是由存储链的达成的,正如存储范式所描述:通过永久的存储计算出来的共识,是无法被任何个别第三方篡改的。因此节点在做数据验证的时候,哪怕只是staking了100万美金的代币,高达1亿甚至10亿美金的项目也可以在koii网络中正常运行,因为staking仅仅是为项目提供了数据校验能力,并不提供基础的共识保护。
共识最终还是通过SCP达成。直观的说,koii节点只是一个会计,拿不到实际资产,他也改变不了链的共识,他能做的就是帮助算账。这个模式和传统的PoS相比就具备很大优势,传统的PoS是100亿staking,才能运行10亿的项目。存储计算范式的PoS上就反过来了,这个PoS根本不需要质押多少代币,但是上边运行的项目却可以具备无限大的价值。
总结
模型总结就是一个:Arweave是一个把永久存储PoW做为一层,PoS的模式作为二层的一个去中心化应用方式。
一些应用
AR的项目涉猎广泛,包含了传统web2.0的方方面面,DeFi反而只是一小部分应用场景。
AR上有像ardrive这样的网盘。我们可以自己支付AR把我们的图片,上传并可以下载。
AR上的预言机,redstone。他的目标就是将那些正确的价格验证后放到AR上,同everPay、koii、KYVE都是一样的,redstone把各种代币的价格通过staking token的方式验证后存到AR上,任何人都能在AR上取得正确的价格,成为web3.0的一个预言机,web3.0的chainlink,所有通过SCP构建的应用,都是链下计算,他们在使用预言机时,可以直接去读存储器区块链上的数据。而这些数据会被redstone的经济机制来保证正确性。
最终,所有的线下计算的业务程序,都能提供非常好的用户体验,极高的TPS;同时SCP的应用也具备去中心化特性:可追溯、不可篡改以及去信任化。
以上,谢谢大家。
本文来自投稿,不代表果核3.0立场,如若转载,请注明出处:https://www.guohe3.com/926