NEO都去哪儿了?

“ 很多NEO的用户并没有完全意识到他们对资产进行转账时如何储存在链上,下面的五张照片将让你们更清晰的了解这个过程。”

图一

这个笑脸使用它最喜欢的钱包软件来签名并发起一笔名为Tx A的交易(例如,我们想象一个简单的GAS转账交易,A将GAS发送给他的朋友)。但Tx A如何提交给网络?有两种不同的协议可以中继转账信息:远程过程调用(RPC)或点对点(P2P)。有许多开放节点提供公共RPC访问(通过“sendrawtransaction”RPC调用的最常见方式),它们是下图中的红色节点。

用户通过公共RPC节点调用“sendrawtransaction”提交Tx A

 

图二

RPC节点(红色节点)存储整个区块链(目前为几千兆字节),因此他们知道如何验证它并通过P2P协议将其传播到其他P2P节点(蓝色节点)。

Tx A通过P2P协议传播到其他节点

图三

但为什么要将交易发送到整个网络?是为了将交易发送给“特殊”节点,也就是共识节点(绿色)。这些节点通过投票(每个NEO持有者都有投票权)被选中,并且他们的公钥对整个网络公开。但是,为避免被攻击,他们的位置是未知的。这就是为什么每个人都在不断重复提交交易信息。

交易不断重新提交,直到达到共识节点(绿色)

图四

目前,有七个被选中的共识节点,它们共同努力,以便就允许将某些交易放在下一个区块达成共识。dBFT的协议中没有详细描述一下细节,但它包含三轮消息(通过网络中继),即使其中三分之一的共识节点产生故障,也能保证网络完全正常运行。每15秒,一个新的共识节点提出一个新的块,称为广播节点(七个节点之一)。该方案能够保证没有任何一个共识节点比其他节点更强大。

广播节点通过P2P协议提出了一个包含Tx A的新块

 图五

最后,在15秒(或更长时间,如果事务需要更长时间才能到达共识节点)之后,用户可以再次使用公共RPC调用来获得关于最新块的信息。NEO 区块链确保一个区块即最终确认(One Block Finality),这是非常了不起的,并且很独特,其他已知公链都没有这一特性,因此用户只要收到包含其交易的区块,就可以放心他的交易永远不会被撤销回滚或失效。

用户通过RPC调用“getblock”请求来自特定块的信息

希望这有助于理解Neo网络的底层结构,但是如果你想深入挖掘,你可以随时查看NEO Docs ,NEO  github 代码 或社区黄皮书(NEO Network上有一个有趣的草案章节,包括RPC和P2P协议:https://github.com/NeoResearch/yellowpaper/blob/master/sections/02_Network.md )

*以上为NEO Research最新发布的技术博客


发表评论

Top