Turechain上线解读——如何实现高性能

Turechain上线解读——如何实现高性能

# 介绍:

初链是什么?从白皮书中我们可以看到这样的定义,初恋是商用去中心化应用的无需许可链,基于混合共识机制设计,旨在为社会提供高速点对点通信、价值传输以及智能合约基础设施。初链的使命是——打造一个公平透明的区块链商业世界。初链的愿景是——成为影响百年的区块链基础设施。

优势:

1支持无限节点进入
2安全性
3高性能
4免费使用

关键词

高性能

在truechain众多优势中,我接选择高性能这以方面进行解读。近阶段,公链的矛盾在于公链的性能与当前用户需求不相符,从时常堵塞的eth我们便可知一二。所以公链之间的竞争归根到底是性能的竞争。那初链是如何实现其高性能呢?

谈到公链的性能,我们往往要去关注其共识算法。我们常见的共识机制都有POW、POS、DPOS、PBFT、VRF,但是每一种共识机制都存在缺陷,如POW会白白浪费很多的电力资源,POS容易引起“巨大的贫富差距”,DPOS目前常饱受“中心化”的诟病,而PBFT和VRF一般使用在许可链中。因此,目前区块链技术发展趋势之一就是在共识方面,从单一共识向混合共识演变。而初链就是其中的一个代表,其在共识方面讲POW和PBFT相结合,而不是使用单一的共识机制。进而衍生出双链接结构:快链(fastchain)和慢链(snailchain),已达到提高性能的目的。

fastchain基于pbft可快速地打包交易,交易打包成区块后经过拜占庭委员会(PBFT)的共识即被确认慢链区块包含快链区块的内容,通过挖矿完成慢链区块的打包。慢链基于pow,可通过算力保护整个区块链和拜占庭委员会的安全,以达到去中心化。

其中慢链源于水果链。FruitChains是由康奈尔大学教授Rafael Pass,副教授ElaineShi两个人共同创建的,FruitChains是基于中本聪的比特币来做的改善,所以也是基于比特币链协议来实现的,和比特币不一样的地方在于加入了一个Fruit的概念,Fruit类似Block也需要POW,只是Fruit的计算难度比较低,并且水果是挂在最近的Blcok下面,交易信息都保存在Fruit里面。

接下来看看github里的比较具有代表性代码实现

func (v *BlockValidator) ValidateFruit(fruit, block *types.SnailBlock) error {
	//检查序号
	//
	currentNumber := v.fastchain.CurrentHeader().Number
	if fruit.FastNumber().Cmp(currentNumber) > 0 {
		return consensus.ErrFutureBlock
	}

	fb := v.fastchain.GetBlock(fruit.FastHash(), fruit.FastNumber().Uint64())
	if fb == nil {
		return ErrInvalidFast
	}

	//检查完整性
	getSignHash := types.CalcSignHash(fruit.Signs())
	if fruit.Header().SignHash != getSignHash {
		log.Info("valid fruit sign hash failed.")
		return ErrInvalidSign
	}

	// 检查新鲜度
	var blockHeader *types.SnailHeader
	if block != nil {
		blockHeader = block.Header()
	}
	err := v.engine.VerifyFreshness(fruit.Header(), blockHeader)
	if err != nil {
		log.Debug("ValidateFruit verify freshness error.", "err", err, "fruit", fruit.FastNumber())
		return err
	}

	header := fruit.Header()
	if err := v.engine.VerifySnailHeader(v.bc, v.fastchain, header, true); err != nil {
		log.Info("validate fruit verify failed.", "err", err)
		return err
	}

	// 检查这个水果的签名
	if err := v.engine.VerifySigns(fruit.FastNumber(), fruit.Signs()); err != nil {
		log.Info("validate fruit VerifySigns failed.", "err", err)
		return err
	}

	return nil
}

这段代码是用于慢区块中水果的验证,其中包括这三方面
a) 名验证区块头
b) 验证水果新鲜度
c) 验证委员会签

由于FruitChains挖Block和挖Fruit是同时进行,并且挖Fruit的难度都极低的,挖Block的难度是固定的,所以无需加入矿池,节点更加分散,独立化,就不会出现矿场胁持带来51%的攻击问题。挖掘Fruit难度非常小,提高TPS能力并提高响应速度,这样交易费用不稳定的问题也可以解决。私自挖矿问题,由于Block里面包含了Fruit并且要求Fruit是最近的(新鲜度),使得攻击者私自扣留的水果失效,无法通过分叉长度抢占区块共识,也就不会出现私自挖矿的情况。

TrueChain选择FruitChains作为混合共识中的fpow部分,通过将pbft确认交易Transaction极低难度极短时间内共识成水果Fruit。

总结

本文从truechain如何实现其高性能,高tps进行了简单的探究,认为truechain在当前公链之林中,既做到了高tps,又保证了其去中心化性,实属不易。在目前已经上线的在无许可(Permissionless)环境中运行的公链中,初链TrueChain主网Beta版的tps的性能已经非常高,在后期正式主网发布和加上Sharding分片技术的融入,TPS将达到更高的性能要求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值