如何防止超级节点“同谋”作恶?

9月21日,Trias在香港大学举办了技术分享会。此次分享会以“基于TEE的高速区块链共识原理及应用”为主题,CTO魏明博士出席此次活动并发表了主题演讲。

魏明博士介绍到,想要加入Trias的共识网络成为TEE超级共识节点,都必须经历诞生传播天梯变化四个部分。

诞生:

首先需要按照Trias的社区要求,对自己要加入的共识节点运行环境进行配置或安装。条件是你得有TEE的基础,比如SGX、TrustZone、TXT等。如果没有的话,我们可以提供模拟的方式,但是不推荐,因为安全系数较低。如果每个新的待加入的共识节点安装好对应的环境,并按要求接入了Trias的网络,它会立刻自动的开始玩一个小游戏。我们暂时称之为“上帝掷筛子”。

为什么要玩这个游戏呢?传统的中心化系统中,为了每个节点的安全,它不断的隐藏自己,不让别人知道自己到底在什么地方,甚至通过物理隔离的方式来保证安全。但是在Trias的公链中,如果想当选这个网络中的超级TEE共识节点,你就需要让大家都认可你的安全能力。就像丛林法则,你必须要比其它人更优秀才能成为这里的领导。一旦一个人想在某个武林派系中当大师,那么他就要经受住所有挑战者的挑战。而新加入的节点得通过“上帝掷筛子”的游戏,根据全网的算力情况,不断的制造各个面都是完全平衡的筛子(默认是6个面筛子)。

制作的原理是首先通过贝叶斯随机制造出一个分布,然后使用尾数随机的方法,不断的进行6面筛子的重量随机数质量制造。直到6面的质量分布都属于同样的贝叶斯分布区间就证明是可以使用的公平筛子。

传播:

新加入的节点会随机的在网络中广播消息,代表着请求其他节点来证实自己状态的一个“挑战”,从而解决了网络中证实发起的问题。各节点间的证实信息采用gossip协议来在全网进行广播,将节点可信信息传播开来。

天梯:

网络中的任何节点都可能会出现被恶意攻击的可能性,如果当前共识节点中的某个共识节点已遭到攻击并被控制,那么网络中的参与证实该节点的其他节点将会发该问题并记录到Kernel中,如果该问题被多个节点发现存在问题,那么该节点将会被认为是恶意节点,并被动态的从共识节点集合中移除。此时,将通过这一周期发布的天梯,顺序选择出一个排名最高且安全的非共识节点,来替换这一存在问题的节点。

变化:

动态改变共识节点其实需要修改的是ValidatorSet,目前Trias是基于天梯发榜,获取新共识节点的列表,通过列表获取每个节点的公钥,然后构造Validator List通过RPC Client请求EM的RPC Server,EM收到请求更新内存中的Validator List。TM生成块发送EndBlock给EM时,EM会返回Validator List给TM,TM更新本地Validator List。

节点共识动态变更过程

在共识的最后阶段调用ConsensusState的finalizeCommit函数,通过调用ApplyBlock。ApplyBlock会先ValExecBlock->execBlockOnProxyApp->EndBlockSync获得EndBlock,并从其中获取validators,然后通过State的SetBlockAndValidators来更新block和validators。最后通过ConsensusState的updateToState将新的validators更新到ConsensusState的validators。

最后,魏明博士还演示了TEE天梯的形成及变化。他介绍到,现在大部分的公链项目,每个共识节点的运行环境安全是无法保证的,所以需要很多共识节点一起来达成共识来提高安全性,这样就造成如下问题:

1.安全性无法确定;

2.性能会随着节点数增多下降;

有部分的项目靠少数超级节点,但是每个节点的运行环境怎么保证的呢?如果超级节点一起同谋放入恶意程序干坏事怎么办?每个超级节点的确定就是靠人为投票决定?

为了解决这些问题,Trias以TEE为基础来保证共识环境的可信度,让每个共识节点都很难做恶。举个例子,把干活的人一直放在一个X光的安检房间里面工作,旁边有一堆人盯着它干活,他只能做1,2,3,4…的事情,哪怕做了1个字节不属于1,2,3,4…的事情。我们立刻就会发现并惩罚他,不让他有作恶的机会。假设你获得了一个超级共识节点的管理员权限和所有的密码,然后在上面利用权限临时编写一个恶意的脚本。如果一旦运行,TEE共识环境会立刻发现它,然后把它踢出TEE超级共识节点,同时根据TEE共识的算力成绩自动选出最好的候选人成为新的TEE超级共识节点。

Trias CTO魏明博士

演讲结束后,来自香港大学的同学们就Trias的共识机制、TEE技术、节点选举等与魏明博士进行了深入的交流。Trias团队始终以技术为本,以让全人类相信机器为使命,欢迎更多区块链技术爱好者加入我们!

猜你喜欢

转载自blog.csdn.net/triaslab/article/details/82855331