这个以太坊杀手不太sui
今天和大家聊聊一个公链赛道的项目——sui。
前言
公链赛道可谓web3行业最基础和底层的基石。不夸张的说,公链就是整个行业的造物主,比特币的出现则是拉开的行业创世纪的篇章。公链的开发难度极高,开发时间动辄一两年,长则两三年,虽然没有其他板块拥挤,但是竞争同样激烈。
20年大牛市,我们看到很多公链项目如春笋一般出涌现我们的视线里,solana、polygon、Avex、fantom、BSC、Polkadot...
任何一条公链出现大众视野时,都宣称自己是“以太坊杀手”。(但以太坊却越来越强大,生态越来越繁荣,并在8月份马上要进行beaconchain与layer1的合并,正式转到POS算法。难道说,凡事杀不死以太坊的,都会让以太坊越来越强大吗?)
回归正题,虽然每家“以太坊杀手”的技术方案、共识算法、经济模型、治理五花八门,但其实所有问题都指向一个核心——“不可能三角”问题(吞吐量、安全、去中心化)。
(以太坊杀手们)
我们会直观的以为,限制整合行业发展的,是吞吐问题(也称性能问题)而忽略另外两个“角”。去年的明星项目solana性能极高,但其实是很大程度牺牲了去中心和安全的基础为前提的,发展期间,也的确经常出现宕机事件而被行业诟病。
因此,在我看来,最好的公链解决方案其实是,尽可能不牺牲去中心化和安全的前提下,大幅提升性能。这个是我看公链项目的大逻辑。
带着这个大逻辑,我们一起审视一下马上要上测试网的明星团队项目——sui。
背景
先简单介绍一下sui项目的背景。
不知大家还记不记得,现在一门心思all in元宇宙的Meta(前Facebook)公司,在19年发起了一个名为Libra项目(后更名为Diem),因为监管等原因,项目停滞,前前后后花费2千万,因为没有投入实际应用,大部分钱都投入在基础研发上,因此积累了大量的技术基础。项目的核心开发者在项目叫停后,分叉出了两个创业团队——Aptos和sui。因为Web3不缺热钱,Aptos很快拿到了2亿美元的投资(估值20亿)。而sui团队也在积极融资,并在不久推出测试链。
顶尖的项目开发团队与常人不同,他们执拗于强科技,而不是在现有解决方案上进行修修补补。
性能!性能!性能!
我们具体看看sui的技术方案。先说说sui如何解决前文说到的公链核心之一的性能问题。
在聊这个问题之前,我们看另外一个事情:
区块链在最初设计的时候,把数据结构定义为线性的链式结构,矿工为了获得奖励而争抢出块的权利,把最新的区块拼接到最新的链上,而改变整个系统数据库的状态。因此,整个系统的工作模式是单线程的。
任何搞计算机行业的人都知道单线程的局限。相比“多线程”(小白也可以简单理解为并行),速度慢,资源利用率低。区别于其他公链,sui团队将他们的公链设计成了多线程的出块方式。
直观来看,这样的方式简单明了,效率很高,在传统计算机技术上也很成熟,其他公链设计者不可能没有想到,之所以没有实现,是因为这种方式会出现很多衍生的问题,而影响整个公链的生态安全。
最直接的比如“双花”问题。假设某个公链采取了多线程的出块方式,当用户同时发起二笔交易,在两个线程中同时被接受,如果两个线程都被矿工打包并出块确认,则这笔钱就将花费两次。如果为了解决双花而将两个线程的交易信息进行比对,则又会造成比对成本或者回滚风险,反而增加了矿工的工作成本。
而sui链是如何在避免安全问题的前提下实现多线程工作的呢?
首先他将交易分成了两个类型:
1、独立交易2、依赖交易
举个例子,假设我们钱包有USDT,在compound里有一部分ETH。 我想做如下操作:
2、把compound里的ETH取出来。 我们会发现,这里的操作1和操作2是互相独立没有关系的。这就是sui链中的“独立交易”。
假如我想要把compound里的ETH取出来,取出的ETH在uniswap兑换成USDT。这里我们会发现,这两个交易是有关系的,存在着依赖,而这就是sui链中的“依赖交易”。
理解了这两个概念,也就能很好的理解sui的多线程操作方式,首先,他们会把独立交易放到不同的线程里执行,而将依赖交易放到同一个线程里执行,有点像mysql中的“事务”操作。
并且,两种交易类型所采取的共识算法也是不同的,以此保证两类交易的安全性。
如果能实现多线程工作,公链的性能能够极大的提升(据团队成员介绍,sui在Mac笔记本上运行,处理简单的事务,TPS能够达到12万/秒)。至于会不会带来其他问题,我这里打个疑问,需要时间去检验,毕竟sui是这个解决方案的先驱。
Move合约语言
除了多线程外,sui还在语言层面进行了升级。
他们发明了全新的合约语言——move,这是一个全新的语言范式,是基于rust基础上进行改进的。这里给不懂技术的小伙伴交代一个背景,Rust运行速度是能够媲美C的语言,且能够进行全栈开发,是得到业界公认的有很大潜力的语言。此外,不同于solidity以账户为中心的存储模式,move的存储是围绕对象进行设计的。对象与地址之间存在着映射关系,一般情况下不会改变,特殊需求下,一个对象也可以由多个地址共享。Move合约里的函数,也能够接收对象为输入与输出。
Move language介绍链接:https://medium.com/mysten-labs/recap-sui-ama-move-programming-language-with-todd-nowacki-damir-shamanaev-bfc24cc7f0f
GAS费
由于整个区块链网络需求的动态变化,GAS费也常常处于不稳定状态,甚至在以太坊我们经常看到恶意竞争抬价的现象。
针对这个问题,sui进行了全新的设计。
首先,sui定义了epoch,每个epoch为24小时,一个epoch开始时,所有矿工会对进行本次epoch的gas费进行投票,投票结束后,整个epoch都会按照最初投票的gas进行执行,直到下一个epoch。循环往复。
你可能会问,如果这段期间,网络需求暴涨怎么办呢?
这个时候,sui激活通胀系统发放更多的sui为奖励,以激励更多矿工进行计算工作。因为是多线程工作,所以新增工作的矿工不会影响原来的矿工。注意,此处矿工获取的奖励不来自与用户,而来自于链本身的发行。
经济模型
最后再聊聊sui的经济模型。SUI 代币的总供应量为100亿。它将在创始团队、投资者、公开发售、sui基金会和矿工之间进行分配。这里表达一个观点,sui链成不成功另说,从他发行的代币数量来看,他是有一个相对宏远的规划和野心的。
Sui 的代币有 4 个作用:
质押/安全(可以看出sui将采取pos的共识算法出块)
交易费用(gas费)
治理
记账单位/交易媒介
并且sui会尝试用经济模型去解决“状态爆炸”的问题,什么是状态爆炸?我们都知道区块链的数据都是不可篡改的链式结构,因此数据量会跟着时间的推移越来越多,矿工想要接入节点的成本也会越来越高,比如,当前以太坊的数据量为810G。这里边其实会有大量的垃圾数据,比如废弃的智能合约或者data。而sui为了解决这一问题,采用了抵押存储的方式,除了必要的数据外,用户为了在链上存储任何数据,都需要用sui进行抵押,当不需要这些数据的时候,则将代币取回,sui链会对数据进行释放,从而在链上留下的都是必要的数据。
总结
1、sui公链团队来自前libar团队,阵容豪华
2、通过定义交易类型,实现多线程出块工作
3、尝试解决gas不合理以及“状态爆炸”问题
4、代币总发行100亿,具体分配细节
5、使用新的合约语言Move
6、即将上测试链,参与节点测试,可以获得早鸟奖励
最后再谈谈我对这个项目的整体看法,由于公链项目的特殊性,开发难度极高,工程难度极大,加上安全问题等因素,短期很难马上投入实产。sui团队在公链底层有很多改进和创新,理论和思路上来讲的确令人耳目一新,但是实际投入之后的效果,并不仅仅是一个因素决定的,比如sui的多线程出块有安全性或其他衍生问题,再比如sui采用的新的move合约语言,是否能够得到市场认可,开发者愿不愿意在原来基础上进行迁移,都不得而知。sui后续会如何发展,我会持续关注,让我们一起拭目以待。
微信扫描关注公众号,及时掌握新动向
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场
2.本文版权归属原作所有,仅代表作者本人观点,不代表比特范的观点或立场