DAG Blockchain之Byteball原理解析

Posted 披萨Coin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DAG Blockchain之Byteball原理解析相关的知识,希望对你有一定的参考价值。

Byteball的网络结构

从节点功能角度来讲,Byteball网络节点可以分为中继节点(Relay)、中枢节点(Hub)、播报节点(Oracle)、见证人节点(Witness)、钱包节点(Wallet):

  • 中继节点(Relay):负责向与其连接的节点转发单元,存储整个Byteball区块链数据库,但它本身不保存任何私钥,也不发送任何单元;

  • 播报节点(Oracle):负责不间断地向Byteball网络播报数据,数据可以是时间、价格、甚至是Bitcoin交易;

  • 钱包节点(Wallet):负责与用户交互,收发交易、消息等。

下图给出了Byteball网络结构的示意图:

轻节点及其验证过程

  • 跳跃列表:假设直接位于主链上的球的MCI为i,如果imod10=0,则该球具有跳跃列表(skiplist_balls),跳跃列表中的值指向之前的球;对于i尾数具有的每一个0,跳跃列表中都有一个MCI值与之对应;跳跃列表中的MCI值等于在保持尾数0个数相同的情况下最接近i的MCI,比如i=3000时,对应的跳跃列表为[2990,2900,2000]。

  • 跳跃距离:对于跳跃列表中的MCI值,它与当前球的MCI值的差值称为跳跃距离。

  • 最近的球:当前节点已知的距离当前时刻最近的球(last_ball),每个单元在发送时必须包含其已知的最近的球。

  1. 沿着主链回溯,当已收集到轻节点给定见证人列表中的绝大部分见证人时停止(这是寻找见证人的过程),记录这些主链上的单元,记作单元集合C;

  2. 选择单元集合C中时间最早的单元(也是MCI最小的单元),获取其last_ball;

  3. 从last_ball这个单元开始沿着主链回溯,直至遇见包含skiplist_balls的球停止,记录这些主链上的球,记作球集合B;

  4. 使用skiplist_balls继续沿主链回溯,跳转到skiplist_balls中跳跃距离最大的球(这是不断加速跳跃的过程);

  5. 重复步骤4,当下一次跳跃超过目标单元时,减小跳跃距离(这是降速跳跃的过程,极限情况下,不使用skiplist_balls回溯,只利用父单元进行回溯),直到目标单元停止。

对于轻节点而言,全节点给出的证据链是可信的,主要有以下两个原因:

  1. 证据链开始的那些单元包含了轻节点信任的见证人发出的单元;

  2. 证据链中的连接使用的是parent_units(寻找见证人过程)、last_ball、skiplist_balls、parent_balls。

因此,通过证据链的方式,轻节点可以判断某个单元是否有效。

端到端加密通道

假设发送消息的设备记作sender,接收消息的设备记作receiver,receiver所连接的Hub为hub。那么,当sender想要与receiver进行通信时,它需要进行以下操作:

  1. sender与receiver进行配对,可以使用扫描二维码、配对字符串、或者使用byteball://起始的链接。
    所有设备之间的通信均采用了端到端加密(ECDH+AES)和数字签名(ECDSA)。作为通信的唯一中间人,Hub也无法查看或者修改消息内容,为了提高转发的安全性,设备会生成一个临时私钥,并将对应的公钥上传至它连接的Hub上。同时,设备可以定时地更换临时私钥和公钥。

因此,sender在向receiver发送消息时,它需要完成以下步骤:

  1. 与hub连接;

  2. 从hub获取receiver的临时公钥;

  3. 生成一次性的密钥对;

  4. 根据一次性私钥和receiver的临时公钥生成ECDH密钥;

  5. 使用ECDH密钥对消息进行AES加密;

  6. 添加一次性公钥;

  7. 使用设备私钥对整个消息进行签名;

  8. 将消息发送给hub

  9. 对于receiver,它首先需要验证消息的签名,然后使用sender的一次性公钥和本地的临时私钥解密消息,从而获得消息的内容。

基于Hub的设备端到端加密消息通道可以用于设备之间通信,设备之间相互发送的消息不存入Byteball数据库中。用户可以利用该通道来发送加密文本消息、多签名交易、隐私资产(比如blackbytes)等。

以上是关于DAG Blockchain之Byteball原理解析的主要内容,如果未能解决你的问题,请参考以下文章

技术研究:架构未来物联网的新技术——Blockchain与DAG的比较分析国脉区块链研究团队

大数据之Spark:Spark 底层执行原理

[COGS 2353 & 2356] 有标号的DAG计数 容斥原理

死磕以太坊源码分析之blockChain分析

3500N - DAG优化(编译原理)

通过blockchain_go分析区块链交易原理