2021-04-16 15:14 | 出处: 红中阿文
传统区块链在节点储存方面也有较大限制,除非在使用轻客户端的情况下,节点一般需要同步全网的所有交易,才能使用智能合约等功能,而节点需要同步的数据正在快速的增加。
有人提出DAG的拓扑结构来存储区块,这个时候更多还是类似侧链的解决思路,不同的链条存储不同类型的交易,这样降低出现双花的可能,在之后某个节点需要合并的时候,几个分支再归并到一个区块。
有向无环图DAG(Directed acyclic graph),是计算机领域一个常用的数据结构,因为独特的拓扑结构所带来的一些特性,经常被用到处理动态规划,导航中寻求最短路径,数据压缩等场景中。
DAG在储存方面也有优势,用户只需要维护自己跟自己有关的交易单元以及其父辈等即可,在单节点上无需拥有全网交易数据。
第一次提出DAG跟区块链结合是在Nxt社区,可以发现DAG最初出现就是为了解决区块链的效率问题。DAG不是把所有数据打包成区块,再用区块链接区块;而是每个用户都可以提交一个数据单元,这个数据单元里可以有很多东西,比如交易、消息等等。
数据单元间通过引用关系链接起来,从而形成具有半序关系的DAG,因此可以支持极大的并发量和极高的速度。就DAG架构本身而言,存在一个很大的隐患——不能完全保证交易状态的原子性和统一性。
从时间上来讲,可能存在特定节点(比如远程节点)确认某笔交易的时间无法估计;从节点上来讲,全网络节点中的某个节点可能无法更新某一时刻的交易信息,即该节点没有被广播到某一时刻的交易信息。