W3C

Web 中文兴趣组会议

2022年9月6日

题目:Web3 下的存储及基于存储的计算

讲者:xiaojay (EverFinance)[演示文稿]

现场纪要

xiaojay:

大家好,我是来自Web3领域的一个创业者,很高兴来这里和大家分享来自我们领域对下一代Web的一些看法。

刚才鲍捷老师非常深入浅出的向我们介绍了Web3整个概念的来龙去脉和历史沿革,我受益匪浅。目前区块链领域所说的“Web3”也是在上一代语义网的基础上开始发展,而且目前这个领域的一些概念和定义也在飞速发展,一直在迭代。

今天我分享的是当前我们在区块链的实践,也是一家之论,欢迎大家讨论和指正!

首先,我先说一下Web3的一些历史和来龙去脉。当然,只是我们这边粗浅的划分。我们都知道Web是Tim在瑞士欧洲研究所发布的一个研究项目,很快就成为了网络基础设施和信息分发的标准。但是,当时发布的Web1一些典型案例,比如像雅虎,只能发布一些消息和新闻之类的产品,而用户只是被动的接受发布消息,只是可读,用户只能读。

随着Web的发展,到了Web2阶段,用户可以发布自己的消息,典型的产品比如说Twitter和Facebook等social network,用户可以发布一些消息,这时候用户可以写入数据,普通用户可以写数据和大家分享。

到了Web3,我们认为是能读、能写、能拥有的网络!

Web3用户能拥有什么呢?首先是用户产生的一些数据,比如一些行为数据,在网上发布的一些文章、评论、生活动态、图片……首先,用户可以明确拥有数据,也就是这个Web能记录发布的时间,能永久存储一些数据。数据慢慢也会有一些原生资产,能够在Web上发布!

刚才哔哩哔哩的同学说了原生数据,比如NFT等一些比较火热的资产,还有一些加密货币之类。

Web3能够拥有你的数据和资产呢?首先,我们引入了两个关键的技术:一个是DID,去中心化的身份标志,它是基于公私钥体系,然后每个在Web3的用户有一个统一的账户,统一的账户都是基于公私钥,也就是产生了一个公私钥的账号,账号只有你所有,不是依赖于在Web3应用上的一些应用,也就是说每个应用都会支持账户,而不是在每个应用上创建账户。

然后,这边在应用创建一些数据,都是证明是你本人在产生的行为,这样你的账户只是由你控制,而不是由平台控制,有依赖于目前Web2领域的一些密码之类的体系。

有了统一的去中心化的身份账户,我们的这些行为都可以记录在BlockChain区块链上的无法篡改的数据,Data就可以记录发行的时间,比如确定你的所有权。在这个基础上,就可以发展出一些数据的交易或者资产交易平台。

服务于Web3应用的一些存储,目前应该有以下若干特性(当然不限于),我提炼出了主要的:

首先是去中心化。存储并不是依赖于大公司的存储,例如AWS、阿里云等大的云计算平台,不只是在这些云平台,应该有更多的选择。

第二,无许可。数据的上传或者下载都不需要得到许可证,每个人都可以上传或下载。

第三,不需要信任,不需要信任某一个实体的公司。

这样的Web3公司是否存在呢?接下来我会介绍一些向这个目标发展的情况。

2014年发展的一个项目“星际网络文件”系统,简称IPFS。[多媒体演示]从左图可以看到目前的HTTP是一个主从架构,用户从服务器上获取数据,IPFS就是每个人都可以run一个节点,发布数据是通过P2P的形式传输到世界。

下面介绍一下原理。比如一个用户在本地,添加一个文件,IPFS系统会计算出文件的内容哈希,把内容哈希发布在网上。

内容哈希就是这串数字就是唯一发布的内容,这串数字发布在网站上DHP的分布式闪列表。

相当于分布式列表可以看到你这台电脑拥有这些数据,如果用户需要得到这些数据,需要在闪列表里寻找数据的来源,比如是你的电脑,也可能是其他节点会存储这部分内容,它就会通过闪列表连接到存储数据的主机或节点上,然后获得这部分数据。

但是,IPFS有一些问题。首先,因为节点本身是无偿、纯公益性质在运行,数据很有可能因为本身的原节点下线无法获取到了。第二,它缺少全局性的时间线,就无法形成一些共识。

再介绍一下2019年相关存储领域新的进展,它是Arweave永存的区块链。它是把数据存储在区块链上。为什么它能实现“永存”呢?它能保证数据存上去以后,一次存储,会永远保存在这个区块链上。

但是,为什么能实现?这个模型为什么能work呢?它是基于以下假设:我们都知道存储成本逐年下降,就像下面的曲线一样[多媒体演示],所以它能通过一些计算,根据这个模型计算出几百年以后某份文件根据目前容量的存储价格,它会达到一定的价格。

为什么区块链上的节点会愿意存储这些数据呢?它有个既定模型,这个模型是根据区块链上常见的Proof of Access(POA)模型,是根据出块的概率和保存的区块量成正比,这样各个节点倾向于保存全部的数据,也就解决了IPFS的机率问题。这是Web3领域存储的一些发展。也就是说我们拥有了一条永远存储的区块链。

[多媒体演示]这是目前每个GB的费用。

现在我们存在了一条永远存在的公链,数据就会永远存在了。如果数据永远存在的话,我们会发生什么呢?当然会把NFT的一些图片或者一些动画之类的,存在这条链上。但是,我们想到更好的方法,可以产生一种基于存储的计算。比如以太坊目前遇到比较大的问题,就是它虽然可以保证去中心化,能够自动运行一些合约,但运行成本非常昂贵,像一些代币的转移操作在高峰的时候都需要几美元。

为什么它需要这么贵的费用呢?因为它所有的计算和验证是在链上每个都要重新计算一遍,以保证状态的正确性。但是,如果现在有了一条永存的数据链,就可以把程序、程序的代码以及对代码的调用,比如每一次交易的调用都存在链上,但是不在链上计算它。而且从数据链上下载这些数据,再链下直接计算,我们提出了“链下计算”的模型。

这样的好处是不是每个节点都计算,可以很大程度上提高它的性能,只要对程序状态改变的交易都在链上存储,就可以得到一个正确的状态。

举个例子来说,比如是一个账户程序,用户A和用户B有一点资产,比如用户A资产是3,用户B的资产是2,这就是一个程序的状态。首先,我们把这个状态存储在链上,然后再把资产转移程序的代码也存在链上,当用户A用私钥进行操作,私钥是放在链上的,A用自己的私钥签名了一个交易,发送给B,资产是1,这样把这个操作也存储在链上。如果需要知道自己的余额,或者需要知道某个人的资产,只要把这个程序和状态能够下载下来,本地按照时间线。因为我们知道区块时间戳不变,交易顺序也不变,这样就可以很容易计算出每个人的正确资产状态。这就是链上存储,好处是交易成本比较低,程序不需要限制于某一个编程语言。

这就是我们提出基于存储的计算范式。我们可以看到Block相当于记录交易和程序的大账本,它又能按照时间顺序不断运行下去。用户可以通过自己的一些签名,证明自己的一些操作上传到区块链,验证程序也是根据链的运行下载数据,然后计算出程序本身的一些状态。这样我们就可以把所有Web2程序进行Web3化,也就是永存化。

这是一个非常简单的架构。如果是Twitter,我们知道Twitter是比较广泛应用的social network,如果在Web3情况下,或者刚才提出的存储计算范式下的Twitter应该怎么做呢?我们可以定义它的交易类型,可以简化,[多媒体演示]这是非常简化的模型。

我们定义它的交易类型,用户只有两种交易类型,Publish可以发表自己的一些内容,可以上传一些图片,但发表都要经过自己的私钥签名。第二个交易类型就是关注,A用户可以关注B,B用户可以关注C,同样也需要经过自己的签名。有了这两个交易类型,以及永存的区块链,我们就可以实现Web2的Twitter功能。

[多媒体演示]看上图,Block1,A用户发了“Hello”,用户B用手机APP或者浏览器上,可以通过发售交易,比如要关注A,发出这个交易类型,这些交易类型都打包存储在Arweave的区块链上,手机上的APP可以关注数据的记录。它会计算出状态,比如用户已经关注了A用户,所以A发表的内容都会从链上存储下来,另一个时间点A发表了“Hello B”,这时候就会在链上传输到B的APP状态。这样就实现了不需要一些中心化的服务器,它是基于一条链能够实现Twitter。

有人可能会认为如果把所有的数据都放在区块链上,会不会有新的问题,或者交易成本会怎么样?因为Arweave的存储成本非常低廉,一些重要的数据还是可以存在链上,从而实现完全去中心化的Twitter运用。

[多媒体演示]这是我们在做的支付协议,也是基于这个范式做的支付协议。

这个交易类型主要是运用于实时支付,这里交易类型分为了四种,像Twitter只有两种交易类型,四种交易类型是Mint、Transfer、Bundle、Burn,不同的程序都是在Arweave链上实现不同的交易状态的账户余额,能够实现快速的支付的应用。

我的分享就到这里,谢谢大家!

提问:老师好,我也是一个Web3的创业者。我想请问一下关于IPFS的储存,如果数据的内容有改变,是储存一个新的区块还是覆盖原来的区块?还是这样的修改根本就不被允许呢?

xiaojay:IPFS不是去中心化系统,因为它没有全球化的共识,因为存储的内容改了,对应的哈希内容就会改变,这就相当于另外一条内容了。如果在Arweave上,修改了数据,需要重新上传,因为它内容不会改变,它是区块链的系统,原来的数据是无法篡改,如果新的,就是重新上传一遍。

提问:第二个问题,现在很多项目都会被攻击,您做ever pay是如何考虑的呢?

xiaojay:我们是基于存储区块链上的上层应用,只要交易记录的底层网络不被攻击,我们就没有问题。因为我们的交易记录都是唯一确定的,只要从区块链上下载交易记录,重新跑遍程序,所有的余额就是确定的。

线上提问:如果保证数据是Arweave是可信快速,如果用信任采用挖矿,IPSF是否更应该聚焦于数据的赋能和可靠性上?

xiaojay:Arweave和IPSF本身不计算上传的数据内容,只是存储了数据,并不像以太坊的智能合约一样会重新计算遍区块链里的数据,它只需要保证上传的数据是一致的,因为上传需要支付一定的代币,它只需要计算账户里有代币的余额,它计算和以太坊的链上计算是不同的。这是我的回答。


返回[会议总结页面]获取其他话题的会议纪要。

若您对上述内容有任何疑问或需进一步协助,请联系 W3C 北航总部 <team-beihang-events@w3.org>。