一文盘点Starcoin十大亮点

* 本文由Westar实验室原创

2021年5月18日,Starcoin公开举办了一场Starcoin主网启动的活动,邀请到一批加密行业的领跑者、建设者和创新人员一起见证Starcoin主网的诞生。Starcoin主网上线之后短短几个月,在业内赢得了很多的目光,积累了一批忠实的粉丝。那么对比其他的公链,Starcoin究竟有什么样的优势呢?本文盘点出Starcoin的十大亮点和创新设计,供大家参考。

增强的PoW

Starcoin共识是中本聪共识的增强版本。Bitcoin的中本聪共识中,有两种方式提高网络吞吐,增加区块大小或短出块间隔。这两种方式都会增大网络中出现叔块或者孤块的概率,而叔块和孤块的增加又会加重网络的拥塞,进而减低双花攻击的难度,从而威胁网络的安全。为了解决这个问题,平衡好吞吐量和网络拥塞的情况,最大限度地利用网络,Starcoin共识在Bitcoin共识的基础之上,进行了优化和增强:

  1. Starcoin共识引入叔块率等运行期数据,探测网络的拥塞情况,进而自动动态的调整出块时间、难度、出块奖励,在吞吐量和网络拥塞之间寻找一个平衡点,降低网络的安全风险,提升用户体验;
  2. Starcoin共识能够比较敏锐地捕获算力的波动,及时调整难度,降低算力攻击的风险;
  3. 共识相关的参数可通过社区治理,安全地升级;

自举的经济模型

STC是Starcoin网络的原生Token,发行总量为 3,185,136,000个STC,总量恒定,被锁定在Treasury模块中。一部分奖励那些守护Starcoin网络安全的诚实节点,另一部分通过提款权以线性释放的方式,进入链上生态。通过激励链上生态,让整体应用繁荣。有了繁荣的链上生态应用,链上的基础生态收益,最后通过一些方式让流通的STC再次回归到Treasury模块中。

starcoin_economy

明确的所有权

在以Solidity为智能合约语言的公链里面,以ERC20为例,虽然钱包显示某个ERC20属于某个账户,但是,在账户的数据存储中并没有这部分数据。这些数据在哪呢?这些数据被统一存储在该ERC20的合约实现的账户下,通过类似于Map的数据结构,以Address进行标记区分。这种集中存储数据的方式,一方面数据的所有权并不归对应的账户所有,另一方面,存在安全隐患。

在Starcoin的账户模型中,任何合约产生的数据,都可以分散地存储在用户各自的账户数据下。用户需要操作自己的数据时,从自己账户下把数据拿出来,传给合约进行操作。一方面,明确了这部分数据是属于哪个账户,另一方面降低了数据的安全隐患。

starcoin_account

状态收费

状态爆炸是很多公链面临的问题,很多数据,被写到链上,即便不再有任何的价值和意义,也要长期保存,也要被其他节点同步。这其实是很浪费资源的事情,一个只增不减的分布式系统,长期来看,很难持续维护,这是早晚要面对的问题。

Starcoin在设计之初,就重点考虑了状态爆炸的问题,通过巧妙的设计,为状态收费做了长远的准备,逐步淘汰哪些没有价值的数据。淘汰无价值数据,为更多的价值数据提供增值空间,这是一个良性的发展规律。

线性逻辑的智能合约语言Move

在DeFi时代,安全问题频频发生,例如TheDAO漏洞、Parity钱包漏洞、PolyNetwork漏洞等等,每年动辄数亿美元的损失。产生这些漏洞的原因是多种多样的,但是大部分常见的漏洞,只是开发设计的时候被忽略了,例如溢出问题。一方面,谁也没法完全保证不出漏洞,另一方面,安全是计算机行业一个非常专业的细分领域,通常有专门的从业人员,与智能合约开发通常不是一批人。实际上,这是对智能合约开发者有更高的安全方面的要求,变相提高了开发门槛。

Starcoin期望选择一个更安全的语言作为其智能合约语言,从语言的层面解决大部分常见的漏洞,例如溢出漏洞,降低开发人员的门槛,降低智能合约的安全风险,从而减少漏洞的产生。出于这样的初衷,Starcoin最终选择Move作为智能合约语言。

Move是一门线性逻辑的智能合约语言,面向资源编程,有非常良好的安全特性。智能合约开发者同样在只关注业务逻辑的情况下,能够轻松地写出符合一定安全要求的合约来,可以极大限度地避免溢出、无限增发等常见的安全隐患。

starcoin_resource_vs_info

形式化验证

形式化验证是一项比较前沿的技术,通过数学的手段来证明程序的安全性。以Ethereum为首的公链一直在探索通过形式化验证来提升智能合约的安全性,已经探索了多年,一直没有找到很好的可落地的方案。

Move在面向资源编程提升安全性的基础上,已经支持了一套成熟的形式化验证工具,使用者只需编写SPEC就能通过数学手段来为程序的安全性提供证明,轻松地避免由于疏忽而引起的很多安全隐患。

starcoin_move_spec

Stdlib

Starcoin有一个非常有意思、其他公链没有的特性:Stdlib。

Starcoin通过Stdlib的方式,实现官方订制和发布一些通用的合约,方便其他用户使用,开箱即用,非常方便。Starcoin主要发布两类合约:

  • 基础的合约,例如浮点数操作合约;

  • 订制通用的协议,例如Token协议、NFT协议、Oracle协议等等;

Starcoin的Stdlib是已经实现的合约。因为已经提供官方实现,基于Stdlib的基础协议,用户能够非常方便的设计自己的应用,例如NFT应用或者Oracle应用,无需再根据协议自己去实现,只需要实现业务逻辑合约代码。

链上治理DAO

Starcoin在Stdlib中定制了一套非常通用的链上治理DAO合约,开箱即用。任何人都可以使用,任何合约层的决策都可以以链上治理的方式完成。同时,社区的任何人都可以以投赞成票或者反对票的方式,参与社区的治理。

这是一个通用的DAO,支持任何类型的Token投票。投票有有效时间,只有在规定的时间内,投票数达到Token流通量的4%的阈值之后,投票才有效。如果赞成票多余反对票,则投票通过,否则,反对票多余赞成票,则投票未通过。

starcoin_dao

安全的智能合约升级方案

Starcoin崇尚法律即代码。在某些极特殊的情况下,Starcoin也希望有一种安全升级智能合约的方案。

Starcoin的合约通过Module名来标记唯一性,Ethereum的合约通过HashCode来标记唯一性。所以Starcoin的智能合约能够在保证兼容性的情况下,进行升级。然后,通过与链上治理DAO进行结合,对合约的升级进行投票,在全体社区成员的监督下,达到安全升级智能合约的目的。Starcoin的Stdlib就使用这种方式安全的升级。

starcoin_upgrade

可扩展的二层

Starcoin是分层的智能合约与DeFi网络,这意味着Starcoin不仅仅有一层网络,也会设计和实现自己的二层。Starcoin的二层致力于安全地连接每一个人,将区块链技术渗透到日常生活场景中,让用户享受到区块链的红利和便捷。

Starcoin的二层将是一个通用的方案。通过寻找一种安全的算法,让一层和二层更native地结合,让数据能够在两层之间安全、自由、便捷地流通。

starcoin_logo

Starcoin的更多特性

除了上面提到的十个亮点,Starcoin有意思的亮点还很多,例如一等公民Resource、双MerkleAccumulator、双层状态树、两阶段提交、天生的NFT类型、更安全的Token、Oracle协议、便捷的合约账户等等,有时间再慢慢补充。

Starcoin不仅仅是一条公链,从一层出发,囊括了为DeFi而生的智能合约Move、可扩展的二层,跟其他公链对比,各个层面都有很多优秀的设计和创新。