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),这是非常了不起的,并且很独特,其他已知公链都没有这一特性,因此用户只要收到包含其交易的区块,就可以放心他的交易永远不会被撤销回滚或失效。