首页 > 资讯 > 应用 > CITA:面向企业级应用高性能区块链内核
CITA 的 valid_until_block 有什么作用?
2019-11-01 14:04:10作者:CITA来源:CITA
在公网上,用户发送交易到节点处理时,首先链会返回一个交易的哈希作为交易的 ID。实际交易处理的时间,会因为节点的处理能力,以及节点选择交易的算法而受影响,可能出现长时间不能被打包入块(入块指打包成 Block 并共识成功)的情况。此时,用户不能确认交易依然是在某个节点交易池中排队,还是交易已经被完全丢弃,用户没有办法针对这种情况作出正确的判断。
CITA 采用的是先共识后处理的方式对交易进行处理。交易发送成功后,会返回交易哈希给用户。此时只是表明交易格式,签名等验证正确,并成功进入交易池,至于何时打包入块,同样取决于链的处理能力以及交易的选择算法。在交易中的 valid_until_block 表示交易最终的超时时间。举例来讲,用户在高度100时发送交易,且 valid_until_block 填写的 200,则在 201 块之前交易如果能成功打包入块都可以。如果到了出 201 块时,交易依然未打包入块,此时无论交易是否在交易池中,在出块阶段都会把此交易当作非法交易。由此,valid_until_block起到一个超时的作用。在一定时间交易未打包,用户就可以完全确定交易不会再打包。在 CITA 中默认的 valid_until_block 最大只能比当前高度大 100,这个参数用户可以根据实际情况来调整,最大值的配置也可以根据实际情况来调整。
节点与节点之间的同步是怎么同步的?全量同步还是增量同步?使用的是什么技术,如何保障一致性。节点间是以块为单位,按块高度增量同步的。节点块高度变化之后会广播自己的高度。其他节点收到之后跟自己的高度比较。如果自己的高度低,就会主动发起同步请求。收到同步过来的块会进行详细的 hash 和签名的验证,发现有问题就直接丢弃。