TICK: Tiny Client for Blockchains

TICK: Tiny Client for Blockchains

Zhang W , Yu J , He Q , et al. TICK: Tiny Client for Blockchains[J]. IEEE Internet of Things Journal, 2020, PP(99):1-1.

WHY

当前的比特币中的轻量级客户端存在以下问题

  • 虽然只存储所有区块的块头,但其所占用的存储空间也很大
  • 轻量级客户端无法验证当前交易是否是UTXO
  • 虽然有提出将所有的UTXO生成一个UTXO的Merkle树,来解决某一交易是否有效,但效率低

虽然最新的论文中提出将所有的UTXO汇总到一个Merkle树中,但是更新Merkle很慢

传统轻节点只能验证交易是否存在,无法验证输出是否被其他事物引用,只要记录在区块内就确定是有效的

WHAT

本文提出TICK,Tiny Client for Blockchains,该客户端能够有效地验证事务,而不必下载所有的区块链数据或信任一个完整的节点。使用AVL hash树来存储所有UTXO。

此外,TICK不要求改变目前的区块链结构。在TICK中,轻型客户端的大小较小且保持不变,而不是线性增长。

同时TICK减少了采矿者在采矿前需要下载的数据量。

HOW

PS:轻客户端无法验证交易是指一个交易,轻客户端因为没有所有的记录,所以无法验证交易是否引用的是UTXO,所以无法验证交易是否合法,他只能事后验证这个交易是否记录在主链来确定这个交易是否存在

思路

存储过程

  1. 将整个区块链交易遍历,生成UTXO集合。
  2. 将所有的UTXO按照规则生成AVL hash 树,这棵树的root hash存储在coinbase中
  3. 将本次区块收集的所有交易生成tx tree
  4. 将tx tree root hash存储block header中

image-20210124145222161

AVL hash 树

自平衡树,插入和删除元素很快,有序数据结构,UTXO的hash大于其左子树的hash,小于其右子树的hash

一个AVL树的节点包含Hash(ui)和Hui

Hui由以下组成:

  • Hash(ui):当前这条UTXO的hash
  • Height(ui):由ui确定的子树的高度。
  • DiffH:左子树与右子树的差
  • hl:ui左子树标签的hash
  • hr:ui右子树标签的hash

H u i = H a s h ( H a s h ( u i ) , 0 , 0 , n u l l , n u l l ) H_{u_i}=Hash(Hash(u_i),0,0,null,null) Hui=Hash(Hash(ui),0,0,null,null)

例如

UTXO u2在AVL hash tree 中的节点的标签为
H a s h ( u 2 ) , H a s h ( H a s h ( u 2 ) , 1 , 0 , H u 1 , H u 2 ) Hash(u_2),Hash(Hash(u_2),1,0,H_{u_1},H_{u_2}) Hash(

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值