paint-brush
我们如何开发 Exa 协议和达尔文区块链经过@exaprotocol
375 讀數
375 讀數

我们如何开发 Exa 协议和达尔文区块链

经过 Exa Protocol7m2023/08/11
Read on Terminal Reader

太長; 讀書

这个故事讨论了名为 Exa Protocol 的去中心化文件存储网络的开发,该网络利用移动设备上的免费存储空间。我们面临现有第一层协议的挑战,并使用并行区块链方法设计了一个名为 Darwin 的新协议。 Darwin 的目标是通过独立的子链实现高吞吐量和可扩展性。测试网已经建成,提供了一种新的去中心化方法,使个人能够参与维护网络并作为互联网的骨干基础设施。
featured image - 我们如何开发 Exa 协议和达尔文区块链
Exa Protocol HackerNoon profile picture

我仍然记得谷歌决定撤销其“谷歌照片”应用程序上的免费无限存储空间的时候。对于像我这样自称摄影师的人来说,这是一个可怕的消息,而且它只表明一件事——购买 Google Storage 订阅。这让我想:“哦,又一个生活在这个星球上的订阅。通过向政府支付我收入的一部分来订阅政府还不够吗? (又名税收)”


像这样的时刻让你想知道是否有什么办法可以解决这个问题。我的脑子里有这些想法:


  • “让我们建立一个免费的无限照片存储服务,并将其提供给人们,以便人们使用它,然后你去找投资者,这样你就可以购买和运行更多的服务器,然后当你亏损时,你说——我建立了一家独角兽”——实际上,建立一项要求投资者为你的照片存储付费的服务。
  • “但是如果我收取服务费用怎么办?!”然后现实的砖块击中了我的头——“那么你想再建一个 Dropbox 吗?”
  • 所以没有 SaaSy 服务。还有什么?

值得庆幸的是,Web3 世界中有一个答案

如今的智能手机与两年前的 PC 一样强大(计算能力),但在相当长的时间内处于休眠状态,什么也不做,或者更糟糕的是,在观看 TikTok 或 Reels 时使用最少的计算资源。如果这款休眠手机可用于利用手机上的免费可用存储空间创建海量存储基础设施,会怎样?


粗略计算表明,每年通过新的移动设备向这个世界添加大约 80 EXA 字节的存储空间。该协议旨在向公众提供一些空间。因此我们称之为 EXA…协议。


我们的想法是这样的:“让我们在以太坊上构建一个代币,并将其内在价值设置为人们在手机上共享的存储量。每当有人从手机中存储或检索文件时,他们都会获得本机令牌的补偿。”通过移动优先的方法,那些没有办法利用去中心化和区块链力量的人将能够第一次做到这一点。这将是真正意义上的区块链技术的民主化。


我不会否认,在研究这个问题时,我想起了 Joe Vitale 的这句话——



“一个目标应该让你有点害怕,同时又让你非常兴奋。”

乔·维塔莱



构思

我记得Arpan Garg和我( Saurabh Singh )在白板上工作了好几个月,但仍然对如何解决问题感到困惑。该解决方案的最早版本是——“我们将使用以太坊并部署一个智能合约,每当用户允许人们使用他们的移动存储时,该合约就会用我们的代币补偿用户。”这充满了重大问题:


  1. 以太坊提供的 TPS 有限为 12(在 PoS 分叉之前)。如果只有 1 万名用户,平均每天进行 100 次交易(由于分片的原因,一个文件请求可能意味着 50 个请求——如上所述),我们的以太坊网络就会陷入瘫痪。这将产生级联效应,并推动天然气价格飞涨以执行交易! – 这不会扩展!

  2. 我们如何说服人们将数据保存在别人的手机上?

  3. 手机会时断时续,两年后就报废了。如何保证手机死机时数据安全?


首先,我们解决了问题2和3:


  1. 允许用户在将文件发送到其他节点进行存储之前使用 AES 256 加密来加密文件,这提供了足够的安全性。
  2. 一旦文件被加密,我们就可以共享该文件并将其存储在不同的设备上。使用多个设备来存储分片以实现冗余和场景 - “当其中一个设备离线时会发生什么,我将丢失所有数据!?”。是的,我们经常被问到这个问题……

图1:文件被分解为分片,由客户端加密并链接,并保存在网络中的多个节点上。一个分片可以存储在多个节点上,以在一个节点离线时提供冗余


平心而论,上面的方案是经过尝试和测试的,我们对于解决这个问题特别冷静。主要问题在于第一层协议。他们很慢。就像真的很慢www。他们提供的吞吐量甚至不足以维持我们存储网络上的 1000 个用户。如前所述,我们很容易就会阻塞网络。 L2 也没有带来任何希望。


因此,我们决定设计一个新的第 1 层,可以在移动设备上本地扩展和运行。我们称我们的 L1 为——达尔文。

解决方案

一个晴朗的早晨,我和阿尔潘坐在办公室里讨论、争论新的区块链架构。我们问自己这个问题:“如果不是 1 个区块链,而是多个并行运行的区块链会怎样?


听起来不错,但是你会如何管理它呢?


就像我们通过允许国家、州和城市独立运作来管理它们一样。


让我们想一想;当这个星球上只有少数人类的时候,整个世界对于他们来说就是一个大国。”


” “对了。


当人类越来越多时,他们就分割了土地并创建了不同的国家。


是的。


我们对移动节点也做同样的事情怎么样?


我们可以试试……


我们确实尝试过!我们花了整整一周的时间在白板上通过与现实世界的类比来设计 L1。我们的白板过去看起来像这样,弄清楚并解决架构的细节:


图 2:从白板上的树木图案到创建达尔文。


一个半月后,我们最终确定了架构,并将其命名为“达尔文”。


达尔文的建筑就像文明随着时间的推移而演变并创造了我们所知道的城市、国家和国家一样。达尔文没有将所有节点视为整个区块链的一部分,而是将它们分割成多个链,以实现更好的治理并提高网络性能。

图 3:对于早期人类来说,完整的土地可以被视为一个完整的国家。随着越来越多的人类出现,土地被分成更小的部分,称为国家,拥有自己的治理。


文明不断发展并创造了城市等群体;随着更多节点添加到网络中,达尔文也在不断发展。达尔文链的演化将其拆分为多个子链,以将邻近的节点分组,从而提高网络性能。


文明还拥有健全的治理体系,使其能够正常运转。达尔文使用定期审核子链的服务器节点进行治理。

达尔文如何工作?

随着网络的发展,达尔文链不断发展以提高 TPS,并且动态地对链进行分片和优化,以创建独立工作的并行子链,并拥有自己的一组完整节点来验证交易。这些节点形成节点链,可以以低延迟彼此进行交易,并且当每个链匹配某些条件时,每个链会被分成不同的链——称为突变。

图 4:随着全节点数量的增长和相互交易,达尔文链中的突变表示。这里显示的化石块是每个子链的创世块。


当一条链发生变异时,每个子链都会独立增长,并拥有自己的独立节点来验证交易。通过算法将节点分布在子链之间,以减少每个子链中的通信和交易延迟。由于每个子链独立工作来创建和验证交易,因此链吞吐量呈指数级增长。


由于节点是根据更接近的距离进行分组的,因此资源的可用速度更快,就像托管在距离服务器流量最大的区域更近的服务器上的 Web2 应用程序的情况一样。达尔文链在创建子链时还使用节点的计算能力、共享存储空间和网络可用性/声誉等因素。


创建 Darwin 为我们解决了最大的瓶颈:一个可以支持去中心化存储基础设施并在移动设备上本地运行的 L1。

Darwin 性能(理论最大值):~ 780 万 TPS。


这一切都已在我们的黄皮书中正式规定,可在我们的网站上找到。

但这真的有效吗?

图5:达尔文链浏览器截图。树中的每一行都是一个独立工作的区块链。


是的,它确实!


我们最近通过将理论转化为实际代码构建了一个测试网。在上面的屏幕截图中,您可以看到达尔文区块链的外观。树结构保存着每个独立的区块链。

下一步

Darwin 目前只是第 1 层,可以交易我们的原生代币。我们的下一步是集成 DFS(分布式文件系统)逻辑,这将实现我们使用移动设备建立真正去中心化存储基础设施的目标。


考虑到链的可扩展性,通过创建兼容 EVM 的虚拟机来实现智能合约部署可能是集成 DFS 后的下一步。


对于某些人来说,它可能只是另一个区块链;对我们来说,我们看到了一种全新的去中心化方法。当中本聪撰写比特币论文时,他设想了一个像你我这样的人可以参与网络并维护它的世界。十多年过去了,维护网络的权力似乎掌握在少数人手中(我说的是超大型矿场)。


通过达尔文,我们打算让人们(不是公司,也不是少数富人)来保管去中心化系统,该系统可以实现加密资产转移,并将作为互联网的骨干基础设施。


你愿意和我们一起参加这个旅程吗?


那天阿尔潘(左)和我最终确定了达尔文架构。


也发布在这里