框架

这是一个很不严谨的题目,搞技术的,居然要猜测?

央行数字货币现在已经走入千家百户(深圳的千家百户),看这执行速度马上就要普及,马上用户遍神州。但央行数字货币的技术细节,却深藏不露,鲜有人知。

只有两个途径可以一窥DC/EP的技术,其一是央行领导和学者们的论文,但论文只能看个框架;其二是看数字货币研究所的专利,但专利只是专利,技术是不是真的用上,难说。

所以只能猜测了。

从很早的论文中,就可以判断一些大概的技术和特性。比如二元体系、可控隐私、令牌与账户结合、离线应用等。

技术圈最关心的问题是:用没用上区块链啊?

各种文章中,态度大致都是:1.技术不设限,都可以;2.不一定是区块链;3.未必应用区块链。

从种种迹象看,应该没用区块链。当然,肯定用上了分布式结构,但这种分布式也不是区块链所说的“点对点环境下的分布式”,而是中心控制,业务分多机构,分多服务器运行和存储的分布式。

技术圈第二关心的问题是:有没有智能合约可以玩啊?

从领导们的发言可以看到的可能是:1.没有智能合约,不许玩;2.有,只许玩支付相关的。

但综合判断,一个彻底开放的智能合约接口,大概率不会提供。毕竟风险过大。

专利情况

央行数字货币研究所从2016年3月25日开始申请专利,至今共计公开88项专利,其中大部分还未授权,只有少部分得到授权。

  • 2016年申报23个专利
  • 2017年申报47个专利
  • 2018年申报4项专利
  • 2019年申报12项专利
  • 2020年申报1项专利

其中,2018年3月26日至2019年8月5日之间,约一年半的时间中,无专利申请。所以,所有的专利,都可用这个空窗期为界,划分为两期,一期为前期,一期为后期。

分析

央行数字货币的流通体系

肯定是二元体系,“央行-商业银行”,这个毋庸置疑,从未动摇。

不过,这个二元体系是可以变化为三元体系的,即“央行-发钞行-账户行”。其中,发钞行得到央行授权,可以发钞,并提供数字货币登记和交易中心服务。在专利里,以“港币”作为发钞行的例子,可见,这是为了国际化所留的铺垫。

虽然是二元体系,但结构是三层,或者说是四层。三层是:央行-商业银行-应用服务商;四层则是:央行-商业银行-应用服务商-用户

央行数字货币的经济关系

如纸钞一样,DCEP是央行发行,是央行的负债。当前的电子货币,几乎都是商业银行发行,是商业银行的负债,如果DCEP在电子支付领域份额越来越大,对商业银行领域的改变还是有的。

DCEP的数字形态

传统的网银、第三方支付都是余额制,余额制的余额仿佛是个池子,进去的钱就混而不分了。

而纸钞则是单品管理,每张纸钞有唯一编号,只是纸钞跟踪很难。

比特币则摆脱了余额制,但比特币也不是单品管理,它是复试记账模式,某地址拥有的比特币体现为其他地址支付来的记账,账目左边是“输入”,右边是“输出”。而未花费掉的“输出”,就是UTXO,类似一张数字纸钞。但比特币系统中,价值记录在所有节点中的账目里,拥有者并没有一个字符串代表比特币。

央行DCEP在设计上希望模拟纸钞,用数字化的字符串代表纸钞,拥有DCEP也就是拥有一个所有者是自己的字符串。

在前期版本的专利中,DCEP的字符串格式可能为:

而在后期版本的专利中,DCEP字符串可能的格式为:

两种格式最大的区别是“额度控制位”,其背后的理念也颇有差异。

价值持有方式

在余额制的银行体系中,货币的持有,记录在余额字段中。

在纸钞模式下,货币的持有,体现在对实体货币的持有上。

在比特币中,价值持有记录在分布式账本上,也就是UTXO。

在DCEP的前期专利中,其“一币两库三中心”模式中有一个核心是“登记中心”,这个登记中心实际上,就是交易处理的数据库,每个地址拥有多少DCEP,全在这里。(另外两个中心是认证中心和大数据中心,认证中心用来实名认证,大数据中心用来做数据分析)。而登记中心,是央行的。

在DCEP的后期专利中,引入了“额度控制系统”这样一个概念,由“央行中心系统”对“额度控制系统”进行授权和控制。“额度控制系统”和“数字货币投放系统”一道,对DCEP的日常所有权、转移交易等进行控制(额度发放和回收,则需要央行中心系统控制)。而“数字货币投放系统”是商业银行系统。

由此分析,前期和后期两个版本的专利,价值持有方式和交易方式是不同的。后期版本中,商业银行处理的事务更多。

价值转移模式

在余额制的银行体系中,价值转移,也就是交易由商业银行执行,扣减支付方余额,增加收款方余额。

在纸钞模式下,交易在“点对点”模式下执行,支付方交付实体纸钞,收款方接收实体纸钞。

在比特币的UTXO,交易在“点对点”模式下执行,支付方构造交易,交易左边是输入,右边是输出到收款方地址,提交交易到所有矿机,矿机验证交易并打包,在交易账本中实现支付。

DCEP是实体的字符串,其转移模式是登记,前期的“登记中心”,和后期的“数字货币投放系统”,都是中心化的,所以不存在双花问题。

但DCEP的价值转移,并非对字符串进行转移,而是对旧串销毁,生成新字符串。可以理解为,每一次支付过程,都销毁了原来的DCEP,生成了新的DCEP。

这种模式与乔姆的eCash以及哈尔芬尼的RPOW类似,都是交易即“销毁和生成”。比之每次更改固定字符串的所有者,这种模式在交易时,更加灵活。

而销毁的方法,并非简单的写一个字段,而是采用两种方式:如通过记录输入数字货币转换为输出数字货币的形式完成对输入数字货币的注销,或将输入数字货币转换为输出数字货币的记录上报给管理数字货币投放系统的中心管理系统。这两种方式,一种需要央行系统支持,一种则不需要。

一次完整的交易流程如下图:

额度控制系统

在后期版本的专利中,多了一个额度控制系统。后期版本中的几个系统为:央行中心管理系统、数字货币投放系统、额度控制系统。

央行中心管理系统统一管理数字货币的额度申请、审批,以及控制额度发放的规则。

商业银行货币投放系统是商业银行所运行的数字货币管理系统,是真正记录数字货币产权,并执行交易的系统。用户的数字货币字符串,记录在货币投放系统中,发生交易时,新字符串的生成也由投放系统处理。

额度控制系统的作用,较为难解。一个商业银行可以发放数字货币的额度,由额度控制系统维护。增加额度和销毁额度的时候,货币投放系统从央行中心管理系统处申请,获得审批凭证后,发送到额度控制系统存储。而日常交易中,额度控制系统承担着重要任务,每一个数字货币字符串中都有一个“额度控制位”,这个额度控制位中有金额信息、唯一加密编码等信息,是数字货币字符串的核心,只是额度控制位不带拥有者信息。所以额度控制位才是一张数字化的钞票,而数字货币则是带数字拥有者身份的钞票。交易发生时,生成新的货币字符串,就要从额度控制系统申请,并有额度控制系统生成额度控制位。

额度控制系统与商业银行货币系统是配对的,每一个商业银行货币系统配备一个额度控制系统。

分布式

在前期专利中,分布式体现为发钞行登记系统统一控制下多个账户行系统的分布式。DCEP的权属登记在发钞行登记系统,而账户行对DCEP交易和权属要与发钞行登记系统一致,用户钱包中所存储的DCEP字符串也要与发钞行登记系统一致。

在后期专利中,分布式体现为“央行中心管理系统”对“额度控制系统”的管控,并间接实现对“数字货币投放系统”的控制。而交易和货币权属信息,则保存在“商业银行数字货币投放系统”和“额度控制系统”中。

支付

在支付环节,DCEP交易可以支付方发起,也可以收款方发起。由于用户的数字钱包中就可以保存DCEP字符串,所以构造的交易可以是完整的交易信息,也可通过数字钱包发起申请至“商业银行货币投放系统”中,请求投放系统构造交易,投放系统中存有各位用户的DCEP信息,可在服务器端构造交易。

由于用户钱包中就包含DCEP字符串,所以可以执行双离线,也即构造一个完整交易发送到收款方,但暂时并不提交至商业银行的货币投放系统,待上线后再提交结算。双离线的安全是建立在信任和事后追责上的。

结算

DCEP的结算是中心化的,在前期版本的专利中,依托央行的登记中心结算。在后期版本中,依托“商业银行数字货币投放系统”和“额度控制系统”结算。

发行模式

DCEP的发行是中心化的。在前版本中,发行在央行进行,发行的数字货币存储在央行数字货币库,转移到商业银行则存储在商业银行数字货币库。

在后期版本中,发行依托“央行中心管理系统”和“额度控制系统”,“央行中心管理系统”对“额度控制系统”进行控制和管理。DCEP的生成,则由“额度控制系统”和“商业银行货币投放系统”完成。

智能合约

在前期版本的专利中,涉及了智能合约的模式,也谈及了智能合约的应用场景。

智能合约的部署,基于应用服务商的系统,但部署后,需要执行合约转移到商业银行数字货币系统和央行数字货币系统。且在智能合约运行时间,上下层之间要调用。

智能合约的几个应用场景:

由于DCEP并非比特币的账本模式,所以其溯源并非顺着“输入-输出”上溯交易。DCEP的溯源需要基于智能合约,在发行货币的时候,指定追溯智能合约,对货币走向进行记录。

即数字货币走向指定的账户和地址类型。

  • 数字货币控制流向和时间点
  • 数字货币根据利率投放
  • 数字货币按条件支付
  • 数字货币的P2P支付

与银行账户的关系

DCEP在架构和业务上依托当前商业银行的账户体系。如下图所示,数字货币系统与账户核心系统平行。

数字货币钱包与银行账户之间的关系,通过双向关联挂钩。即银行账户的字段上指定数字货币钱包,数字货币钱包指定账户。

实名与隐私

DCEP要实行“可控隐私”、“前台匿名,后台实名”,这个是定论。但如何可控,如何隐私,前台在哪?后台在哪?则并未明确指出。一篇央行的论文曾经指出,实名信息只在央行,商业银行并不留存,如果这样,则变革极大。早期的模式“一币两库三中心”也有一个认证中心,看似是为实名认证而设。

但在前后期专利中,都能看到,实际上用户信息依然必须存在商业银行系统。所以,前台匿名,当指用户钱包和商家收款终端,在这二者的支付交互中,商家无法获得用户的实名信息,仅能收到数字货币字符串、拥有者标识、数字签名等。后台实名,则包括商业银行系统和央行系统。

公私钥

DCEP系统中大量使用数字签名和哈希算法,主要是国密SM2和SM3。

在保证信息来源正确,以及跨层授权商,DCEP主要依靠SM2签名。而身份验证,则依靠基于公私钥的证书。

用户的公私钥可由商业钱包生成,提交公钥至商业银行数字货币系统,获得认证并完成数字货币钱包认证。

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

  1. 制打印如下所示的n行数字金字塔_一日一技:在Python中实现阿拉伯数字加上中文数字...

    在Python 3里面,中文是可以作为变量名的,而运算符又可以重载,基于这两个特性,我们可以实现阿拉伯数字与中文数字的四则运算. 首先我们定义一个类 Num: class Num(object): d ...

  2. 本题要求实现函数输出n行数字金字塔。_练习5-3 数字金字塔 (15分)

    本题要求实现函数输出n行数字金字塔. 函数接口定义: void pyramid( int n ); 其中n是用户传入的参数,为[1, 9]的正整数.要求函数按照如样例所示的格式打印出n行数字金字塔.注 ...

  3. pythonprint字节按照16进制输出_对python以16进制打印字节数组的方法详解

    对python以16进制打印字节数组的方法详解 一.问题描述 如果直接用print打印bytes的话,有时候会直接显示ascii对应的字符,看起来很蛋疼. 二.运行效果 上面一行是直接用print打印 ...

  4. Java黑皮书课后题第5章:*5.20(打印2到1000之间的素数)修改程序清单5-15,打印2到1000之间(包括2和1000)的所有素数。每1行显示8个素数,数字之间用一个空格字符隔开

    *5.20(打印2到1000之间的素数)修改程序清单5-15,打印2到1000之间(包括2和1000)的所有素数.每1行显示8个素数,数字之间用一个空格字符隔开 题目 题目概述 程序清单5-15(非本 ...

  5. ## 编写一个从1到150的循环,并在每行打印一个值,另外在每个3的倍数行打印“foo“,在5的倍数行打印“biz“,在10的倍数行打印“baz“;

    编写一个从1到150的循环,并在每行打印一个值,另外在每个3的倍数行打印"foo",在5的倍数行打印"biz",在10的倍数行打印"baz" ...

  6. 从一循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出“foo“,在5的倍数行打印biz,在7的倍数行打印baz

    从一循环到150,并在每行打印一个值,另外在每个3的倍数行上打印出"foo",在5的倍数行打印biz,在7的倍数行打印baz for (int i = 1; i <= 150 ...

  7. 要求实现编译器的以下功能: (1) 按规则拼单词,并转换成二元式形式 (2) 删除注释行 (3) 删除空白符 (空格、回车符、制表符) (4) 列表打印源程序,按照源程序的行打印,在每行的前面加上行号

    目录 目录    2 1 实验目的··· 3 2 实验内容··· 3 2.1 TINY计算机语言描述··· 3 2.2 实验要求··· 3 3 此法分析器的程序实现··· 4 3.1 状态转换图··· ...

  8. C语言>>打印以下的杨辉三角形(10行)

    使用工具: Dev-C++ 5.11 解题思路: 分清楚该图像有特殊和普通的列,先处理特殊的,再编写双层循环实现普通的列: 参考代码: //打印以下的杨辉三角形(10行) #include<st ...

  9. Java黑皮书课后题第6章:**6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数。编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开

    6.27(反素数)反素数(反转拼写的素数)是指一个非回文素数,将其反转之后也是一个素数.编写程序,显示前100个反素数,每行显示10个,并且数字间用空格隔开 题目 题目描述 破题 代码 题目 题目描述 ...

最新文章

  1. 内涵! 程序员才懂的动图... | 节日出行注意安全~~
  2. Android提醒:Dialog,Toast,Snackbar
  3. Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?
  4. Java基本数据类型的传值
  5. python粘性拓展_如何将tkinter小部件置于粘性框架中
  6. 教你一招轻松入门python,不收藏等于错失了一个亿!
  7. Ubuntu 16.04 开机自动锁定数字键盘
  8. 用AutoML找到更小、更快、更好的模型,谷歌开源Model Search
  9. 关于查询MySQL事务阻塞信息,你还可以这样玩?
  10. 自己实现java I/O中的BufferedReader对象中的raedLine方法
  11. Emacs下使用Stardict
  12. 高频小信号谐振放大器设计-课程设计Multisim仿真
  13. java .jar怎么打开_jar文件怎么打开,教您如何打开jar文件
  14. 华为程序员频交 Linux 内核补丁遭质疑,管理员后续回应:承认贡献,但请不要琐碎提交
  15. FMCW激光雷达科普(上):基本概念、技术路线、优势及争议和误解
  16. php java 私钥 转换格式,php公钥私钥 3 ---非标准格式转换为标准格式
  17. C Primer Plus (第6版) 读书笔记_Chapter 2
  18. 学生奖罚管理系统Java_学生管理系统
  19. java filewriter_Java IO: FileReader和FileWriter
  20. 密码暴利破解工具Hydra(海德拉)使用详解

热门文章

  1. matlab接口编程配置,MATLAB与外部程序接口编程
  2. EMC测试仪器_智芯文库 | 单片机系统EMC测试和故障排除
  3. 从博客复制程序到VS里面出现span style=font-size:24px;strong
  4. python安装mysqldb模块_Python的MySQLdb模块安装
  5. pytorch 测试每一类_2D UNet++ VGGBlock脑胶质瘤分割BraTs + Pytorch实现
  6. 最近两周的前后端交互
  7. java操作mysql数据库实例_jdbc操作mysql数据库实例
  8. import python file in currently folder
  9. git .gitignore file does not work
  10. dell 虚拟linux,戴尔:Linux是轻松构建虚拟主机的关键