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),每个单元在发送时必须包含其已知的最近的球。
沿着主链回溯,当已收集到轻节点给定见证人列表中的绝大部分见证人时停止(这是寻找见证人的过程),记录这些主链上的单元,记作单元集合C;
选择单元集合C中时间最早的单元(也是MCI最小的单元),获取其last_ball;
从last_ball这个单元开始沿着主链回溯,直至遇见包含skiplist_balls的球停止,记录这些主链上的球,记作球集合B;
使用skiplist_balls继续沿主链回溯,跳转到skiplist_balls中跳跃距离最大的球(这是不断加速跳跃的过程);
重复步骤4,当下一次跳跃超过目标单元时,减小跳跃距离(这是降速跳跃的过程,极限情况下,不使用skiplist_balls回溯,只利用父单元进行回溯),直到目标单元停止。
对于轻节点而言,全节点给出的证据链是可信的,主要有以下两个原因:
证据链开始的那些单元包含了轻节点信任的见证人发出的单元;
证据链中的连接使用的是parent_units(寻找见证人过程)、last_ball、skiplist_balls、parent_balls。
因此,通过证据链的方式,轻节点可以判断某个单元是否有效。
端到端加密通道
假设发送消息的设备记作sender,接收消息的设备记作receiver,receiver所连接的Hub为hub。那么,当sender想要与receiver进行通信时,它需要进行以下操作:
sender与receiver进行配对,可以使用扫描二维码、配对字符串、或者使用byteball://起始的链接。
所有设备之间的通信均采用了端到端加密(ECDH+AES)和数字签名(ECDSA)。作为通信的唯一中间人,Hub也无法查看或者修改消息内容,为了提高转发的安全性,设备会生成一个临时私钥,并将对应的公钥上传至它连接的Hub上。同时,设备可以定时地更换临时私钥和公钥。
因此,sender在向receiver发送消息时,它需要完成以下步骤:
与hub连接;
从hub获取receiver的临时公钥;
生成一次性的密钥对;
根据一次性私钥和receiver的临时公钥生成ECDH密钥;
使用ECDH密钥对消息进行AES加密;
添加一次性公钥;
使用设备私钥对整个消息进行签名;
将消息发送给hub
对于receiver,它首先需要验证消息的签名,然后使用sender的一次性公钥和本地的临时私钥解密消息,从而获得消息的内容。
基于Hub的设备端到端加密消息通道可以用于设备之间通信,设备之间相互发送的消息不存入Byteball数据库中。用户可以利用该通道来发送加密文本消息、多签名交易、隐私资产(比如blackbytes)等。
以上是关于DAG Blockchain之Byteball原理解析的主要内容,如果未能解决你的问题,请参考以下文章
技术研究:架构未来物联网的新技术——Blockchain与DAG的比较分析国脉区块链研究团队