最近央行动作在数字货币领域动作频频,在2019年下半年,大有加快数字货币研发的趋势,有可能正式推出央行数字货币CBDC。虽然目前还不确定央行数字货币的具体技术架构,但是从央行数字货币研究所前所长姚前,以及谢平等人的观点来看,央行数字货币投放将采用两层结构,即央行将数字货币配发给商业银行或运营机构,由商业银行或运营机构负责公众服务,商业银行和运营机构各自维护自己的账本,央行维护统一的账本。对于商业银行和运营机构的技术选型不做要求,可以采用区块链或分布式账本技术,也可以采用传统账户模型,但是要求性能必须达到30万笔/秒。从目前区块链解决方案,即使采用分片区技术,目前TPS最高也只能达到1万笔/秒,显然很难达到这一指标。
本文将探讨采用相对比较异类的区块链技术架构DAG技术,来探讨达到这一技术指标的可行性。DAG是计算机数据结构中的有向无环图,而传统的区块链技术,可以视为数据结构中的链表,直观来看,图比链表的功能会强大一些。DAG技术是为解决区块链并性性能差而提出的技术,改变了区块链只有一条主链,无法并行计算的缺陷,同时最小单位是交易,直接跳过了交易打包成区块的步骤,另外就是采用Gossip和HashGraph共识算法,极大提高了系统的并发性。DAG区块链最著名的案例是IOTA,其TPS可以达到1万笔/秒,新秀InterValue所称可以达到10万笔/秒,而DAG领域的标杆项目Hedar HashGraph,其TPS可以达到25万笔/秒,这一性能如果在做一些改进,还是非常有希望达到央行数字货币所设定的30万笔/秒的技术门槛的。
下面我们详细讨论一下DAG区块链中HashGraph共识协议。关于HashGraph协议在网上有一些比较好的资料,如http://www.swirlds.com/downloads/SWIRLDS-TR-2016-02.pdf,但是这些资料只是从宏观上描述了一下共识算法的流程,缺少各种实现细节,本文将以此为基础,补充协议的实现细节,使大家可以自己动手实现这个神奇的算法。

系统初始状态

我们假设系统中有四台机器,同时有四个用户,初始时每个用户钱包中将分别有1000、2000、3000、4000的余额,因此我们需要四个发币事件,我们来看第一个发币事件:

我们以给赵一发1000元币为例,其形成事件1。在系统中,每个事件由timestamp、交易tx、本机父事件、其他机器父事件构成,由于这是系统第一个事件,因此其本机父事件和其他机器父事件均为空,交易采用传统的UTXO格式,由特殊钱包将钱转入到赵一的钱包中,赵一账户的余额就变成了1000元。
重复上述过程,为上图的4个用户充值,形成了如下图所示的初始状态:

在这种情况下,四台机器上分别记录着这四个用户的余额,我们需要使用HashGraph共识算法,将这些信息同步到所有网络节点中来。

Gossip协议

Gossip协议是指网络中所有节点,随机的向其他节点发送消息,接收到信息的节点,通过产生新的事件,使自己与其他节点的信息保持同步。
我们假设华南给华北发消息,因为华西从来没给华北发过消息,所以华西知道事件2是华北所不知道的,因些将事件2的信息发送给华北,华北产生事件5,并更新自己机器上的状态(表格中黄色行):

如图所示,华西机器将e2发送给华北,如下所示:

{“eventId”: e2,“timestamp”: t2,“txs”: [{“txId”: x2,“vin”: [{“acct”: 00000, “amt”: 2000}]“vout”: [{“acct”: w2, “amt”: 2000}]}],“hash": "e2_hash",“selfParentHash”: “e0_hash”,“otherParentHash”: “e0_hash”
}

华北机器收到后,首先执行e2中的交易,此时钱二的余额就会成功变为2000元,其同时生成新的事件e5,如下所示:

{“eventId”: e5,“timestamp”: t5,“txs”: [],“selfParentHash”: “e4_hash”,“otherParentHash”: “e2_hash”
}

接着华北机器将e4、e2、e5发送给华西机器。华西机器识别出事件e2是已知事件,不做任何处理,先执行事件e4,即向李四发币4000元。然后生成事件e6。如下图所示:

到此为止,就完成了一次消息的同步操作。接下来,华西机器随机选择向华东机器同步消息,内容为事件6、事件5、事件2、事件4为参数。华东机器接收到消息后,会执行事件2、事件4,同时生成事件7,如下图所示:

华东机器会给华西机器回复信息,内容包括事件7、事件1、事件6、事件2、事件5、事件4。华西机器识别出事件6、事件2、事件5、事件4已经处理过,不做任何处理,仅执行未见过的事件1,即给赵一发币1000元,并生成事件8,如下所示:

华西机器收到消息后,识别出事件7、事件6、事件5、事件2、事件4为已处理事件,只需执行事件1,向赵一发币100元,并生成事件8。
假设华南随机向华北发送消息内容为事件3,如下所示:

华北机器接收到消息后,执行事件3,然后生成事件9,然后向华南机器发送回执信息,内容包括:事件9、事件5、事件2、事件4、事件3,如下所示:

华南节点接收到消息之后,执行未见过的事件2、4,即向钱二发币2000元,向李四发币4000元。
接下来假设华东节点向华南节点发送消息,内容包括事件[7,1,6,2,5,4],如下所示:

此时其只需要执行事件1,即向赵一发币1000元。接着华南节点向华东节点发送回执信息,内容包括事件[10, 3, 9, 5, 3, 4],如下所示:

华东节点发现只需执行事件1,即向赵一发币1000元。
接下来我们假设华东向华西发送消息,内容包括事件[12, 7, 11, 1, 10, 3, 9, 5, 4, 2],如下所示:

华西节点发现只需执行事件3,即向孙三发币3000元。接下来华西节点向华东节点发送回执信息,内容包括事件[13, 8, 12, 11, 7, 10, 6, 5, 4, 2, 3, 1, 9],如下所示:

华东节点发现没有未知事件,所以不需要更新。
接下来我们假设华北节点向华南节点发送消息,内容包括事件[],如下所示:

华南节点发现没有新事件需要执行,接着向华北节点发送回执信息,如下所示:

华北节点执行新事件1,即向赵一发币1000元。至此系统开始的四个事件,经过节点间Gossip协议的对话机制实现了节点内容的一致,这是HashGraph共识算法最基本概念。
在本节中,我们详细描述了HashGraph共识算法的最基础部分,可以实现节点间信息的同步。在下一节中,我们将探讨HashGraph共识算法的高阶特性,如Round、Witness等。

央行数字货币技术架构---HashGraph共识算法1相关推荐

  1. 地方政府争夺试点,互联网巨头参与测试,央行数字货币指日可待

    "后期数字货币应用的场景将会更加下沉,会更多地贴近百姓生活的各方面,如支付.连锁商超.医院.公交系统等等." 本文谨代表作者个人观点,不代表火星财经立场,该内容旨在传递更多市场信息 ...

  2. 详解央行数字货币和数字票据交易平台架构(多图)

    独家披露:详解央行数字货币和数字票据交易平台架构(多图) 暴走时评:央行推动的基于区块链的数字票据交易平台已测试成功,由央行发行的法定数字货币已在该平台试运行.作为一种创新的货币和全新的支付体系架构, ...

  3. 制打印如下所示的n行数字金字塔_关于央行数字货币的技术猜测

    框架 这是一个很不严谨的题目,搞技术的,居然要猜测? 央行数字货币现在已经走入千家百户(深圳的千家百户),看这执行速度马上就要普及,马上用户遍神州.但央行数字货币的技术细节,却深藏不露,鲜有人知. 只 ...

  4. IMF:央行须变得更像苹果公司以保证央行数字货币处在技术前沿

    2月19日,国际货币基金组织(IMF)发布了题为<数字时代公共货币和私人货币可共存>(Public and Private Money Can Coexist in the Digital ...

  5. 央行数字货币突然“赛马”试点!但其走过的“长征路”却鲜为人知

    据<财经>消息,由人民银行牵头,工.农.中.建四大国有商业银行,中国移动.中国电信.中国联通三大电信运营商共同参与的央行法定数字货币试点项目有望在深圳.苏州等地落地. 本文来源:52CBD ...

  6. 朋友圈都在说的央行数字货币,究竟跟你有什么关系

    文 :王也 出品 :Odaily星球日报(ID:o-daily) 10 月 28 日,黄奇帆宣告:中国人民银行很可能是全球第一个推出数字货币的央行. 中国金融四十人论坛(CF40)学术顾问.中国国际经 ...

  7. 央行数字货币研究报告:法定数字币势在必行,或先应用于票据领域

    近年来,数字货币热潮兴起,与之相关的一些底层技术,如区块链技术以及分布式记账方法,也显示出广阔应用前景.数字货币从理论走向现实,其必要性.可行性和安全性正在接受市场检验. 近日,最新一期<中国金 ...

  8. 都在说DCEP,央行数字货币究竟跟你有什么关系?

    黄奇帆指出,DCEP 使得交易环节对账户依赖程度大为降低,有利于人民币的流通和国际化. 文 | 王也  运营 | 盖遥  编辑 | 卢晓明 出品 | Odaily星球日报(ID:o-daily) 10 ...

  9. 重磅!中国央行数字货币DCEP——全球第一大主权数字货币

    目前我国央行推出的数字货币(DCEP)是基于区块链技术推出的全新加密电子货币体系.DCEP将采用双层运营体系,即人民银行先把DCEP兑换给银行或者是其他金融机构,再由这些机构兑换给公众.并且,央行的全 ...

最新文章

  1. android运行过程简书,Android系统的启动流程
  2. linux java开发配置_Linux-Java开发环境配置
  3. 2_指令集、体系架构、微架构
  4. 串口调试助手-打开报错
  5. 【原创】backbone1.1.0源码解析之Events
  6. 浅析epoll – epoll例子以及分析
  7. 在 IntelliJ IDEA 中部署应用到服务器(Eclipse)
  8. 在命令行上启用 64 位 Visual C++ 工具集
  9. 怎么把VC++的注释语句调成其他颜色,只调注释语句
  10. python画彩色城墙_只需 45 秒,Python 给故宫画一组手绘图!
  11. 华硕天选3笔记本电脑WiFi功能消失
  12. 沈园恋之沈园诗,自创诗
  13. 费雪耶兹(Fisher–Yates) 也被称作高纳德( Knuth)随机置乱算法
  14. 关键字const——const char*和char* const
  15. 应用运筹学基础:线性规划 (1) - 极点与基可行解
  16. RISCV MMU 概述
  17. ScriptX.cab与Smsx.cab打印代码
  18. 安装OpenCV时遇到的几种错误
  19. 双隐藏层BP网络的matlab仿真,求遗传算法优化含有两个隐含层的BP神经网络的matlab程序...
  20. 2011年国家质监局公布女生禁用以下化妆品系列,女生一定要...

热门文章

  1. MCU--低功耗处理流程
  2. python seek函数whence_file.seek(offset[, whence])
  3. 使用Nordic芯片的手环OTA(android)
  4. 算是我看源码时的一个小技巧吧~
  5. 微信小程序标题栏放logo 搜索框
  6. 服务器系统可以重装系统,服务器上可以重装操作系统吗
  7. 软件调试高级研习班庐山秀峰站(2017-06)
  8. 程序员软技能:职场、学习、生活,代码之外生存之南
  9. SSM框架中实现地图查询及ECharts直方图功能
  10. 高仿拼多多源码/拼单商城系统源码/拼团商城源码