原副标题:计算机程序链控制技术基本原理如是说
01
基本知识如是说
2008年,一位表弟中本聪的人在加密控制技术电子邮件条目中发表比特币绿皮书《比特币:一类文件共享的电子零件现金控制系统》,学术论文详述了如何建立一套去虚拟化的电子零件买卖管理体系,这套管理体系主要化解了通过控制管理手段同时实现买卖市场主体间一致意见机制建立的难题,单纯来说,是不历经任何人中介,同时实现将一大笔钱支付给另外一个人。
计算机程序链?先来看一下表述:
计算机程序链是一类借助块拉艾统计计算机程序来校正与储存统计数据、分布式控制系统结点一致意见演算法来聚合和预览统计数据、信息论方式保证统计传输和出访的安全可靠、由智能化化JAVA标识符共同组成的智能化合同来程式设计和操作统计数据的一类崭新的分布式控制系统虚拟化与计算本体论 。
简而言之,计算机程序链是由计算机程序和链共同组成的,计算机程序负责贯穿统计数据(对比特币来说是买卖统计数据),链将计算机程序镜像起来,而且这种镜像并非单纯的镜像,对每个计算机程序来说,他在链上的前计算机程序的哈希值,会作为该计算机程序内容的共同组成部分,这样做能提升整个链的防盗用能力。
为了同时实现不历经任何人中介同时实现货币互换,计算机程序链必须具备以下两个特点:
a) 去虚拟化,各结点间完全公平,控制系统统计数据由结点共同维护;
b) 高度自治权,无需中介信用科东俄,所有结点能在去信赖的环境自由安全可靠的互换统计数据;
c) 统计数据不可盗用,统计数据永久性储存,只能新增不能预览和删掉;
d) 非官方,使用DES,买卖时无需提供真实身份。
根据以上几个特点,能很容易推断计算机程序链的适用情景:
a) 销售业务开展须要跨市场主体协同,在销售业务合作方间相对独立公平的跨市场主体销售业务协同的情景下,借助计算机程序链的共有统计数据、 防盗用、分布式控制系统和网络化合同的特点,能把一些以往需要在销售业务微观协调化解的难题,放在控制技术微观来化解,使得难题的化解过程更高效率、灵巧以及更具客观性。
b) 须要合作方间建立低成本信赖,计算机程序链结合了信息论基元和数字签名,以计算机程序链的形式将统计数据的变更历史按时间先后链在一起,并通过一致意见协议使得参与的各方都共同拥有这些统计数据。
c) 存在长买卖、长周期链,计算机程序链从控制技术上保证整个长买卖、长周期链的各参与市场主体身份真实,统计数据可信,同时实现信用的多级传递,促进销售业务链扁平化,提升销售业务效率 。
对京东来说,计算机程序链可适用但不仅限于以下情景:商品防伪追溯、贸易融资、金融领域等。例如目前已上线的京东智臻链防伪追溯平台,可同时实现品牌商、渠道商、零售商、消费者、监管部门、第三方检测机构间的信赖共享,全面提升品牌、效率、体验、监管和供应链整体收益。将商品原材料过程、生产过程、流通过程、营销过程的信息进行整合并写入计算机程序链,同时实现精细到一物一码的全流程正品追溯。
而从性质上讲,计算机程序链能分为三类:
a) 公有链,完全去虚拟化的、不受任何人机构控制的计算机程序链。世界上任何人个体或者团体都能发送买卖,且买卖能获得该计算机程序链的有效确认。
b) 联盟链,由某个群体内部指定多个预选的结点为记账人,每个块的聚合由所有的预选结点共同决定,其他接入结点能参与买卖,但不过问记账过程,其他任何人人能通过该计算机程序链开放的API进行限定查询。
c) 私有链,是指存在一定的虚拟化控制的计算机程序链。仅仅使用计算机程序链的总账控制技术进行记账,能是一个公司,也能是个人,独享该计算机程序链的写入权限。
自2008年比特币问世以来,计算机程序链也随之一起成长,到目前为止,大概分为以下两个阶段:
a) 计算机程序链1.0,中本聪发布比特币学术论文,以比特币为代表的加密货币百花齐放。
b) 计算机程序链2.0,以智能化合同为依托的以太坊作为典型代表,也是可程式设计计算机程序链。
c) 计算机程序链3.0,各种行业分布式控制系统应用落地,目前仅处于概念阶段。
02
控制技术基本原理详解
因比特币是目前为止基于计算机程序链控制技术构建的最成功应用,以下将以比特币为例,对计算机程序链的基本控制技术基本原理作单纯如是说。
比特币使用UTXO模型来记录买卖,区别于传统记账模型(例如银行卡)记录每个账户余额,比特币并不直接记录账户的剩余金额,而是通过记录全网所有买卖,通过买卖推算出每个账户的余额。UTXO模型表述如下:
(Unspent Transaction Outputs,未使用过的买卖输出),比特币不记录余额,每次发生买卖,实际是将买卖记录写到比特币网络账本中,待网络确认后即可认为买卖完成。所以比特币网络实际上是一个公共记账本,记录了全网所有买卖。
所以,我们经常说的比特币钱包余额,实际上是一个钱包地址的UTXO集合。
那么什么是比特币的钱包地址呢?在比特币中,收款地址实际上由非对称DES聚合的公钥和私钥共同组成。通过非对称DES聚合一对公钥和私钥后,公钥历经一系列 Hash(HASH160,或先进行 SHA256,然后进行 RIPEMD160)及编码运算后聚合的 160 位(20 字节)的字符串,作为比特币收款地址。私钥由用户自己保存,用于证明对公钥的合法拥有,失去私钥,等同于失去公钥对应地址上的所有比特币。一个自然人能拥有不限制数量的收款地址,其掌握的私钥,是唯一证明其对该收款地址资产的合法性证明,而校正过程是基于数学基本原理之上,和自然人的社会身份无任何人关联,这也是比特币非官方的基本原理所在。
有了账户以后就能开始交易,基本知识如是说中有提到过,比特币的买卖,会存放在计算机程序中,一个计算机程序是由若干笔买卖共同组成,每一大笔买卖主要包含以下信息:
a) 买卖参考的版本,通过版本号字段,能明确本次买卖参照的规则,结点按照对应规则校验买卖有效性。
b) 一个或多个输入,每个输入包括了引用买卖的基元及索引,同时也包含了解锁JAVA,以证明对其使用的合法性。
c) 一个或多个输出,每个输出包含了输出的金额,以及锁定JAVA,用来限定谁能使用该笔交易输出。
d) 其他信息,记录买卖时间戳,计算机程序高度等买卖必须的其他信息。
当一大笔买卖信息按照以上信息组织好以后,进行全网广播,矿工接收到买卖信息后,将其记录到计算机程序中,在记录前,矿工须要校正以下难题:
a) 买卖是否已被处理过?
b) 买卖的输入值之和是否大于输出之和?
c) 地址是否合法,发起买卖者是否是输入地址的合法拥有者,是否是UTXO?
a、b很容易校正,如何校正c?这时须要用到买卖中,输入信息中的解锁JAVA和输出信息中的锁定JAVA。假设买卖为A转账给B,则买卖由A发起,A须要提供之前其他人向A转账且未使用过的买卖(UTXO),同时提供解锁JAVA,证明其对这笔买卖输出的使用合法性。而输出为B,包括B的收款地址(能理解为B的公钥),以及附上一个锁定JAVA,用来限定这笔买卖日后只能被B使用。以上说的解锁JAVA和锁定JAVA,实际上是一类类ForthJAVA语言,是一类非图灵完备堆栈的执行语言,矿工收到买卖后,取出脚本执行,即可校正买卖,过程大概如下:
如果最终结果为true,说明买卖合法,矿工将其加入计算机程序中,广播后,其他结点将该计算机程序同步到自身链中,买卖完成。
这就完了吗?当然没有,可能有人会问,矿工不止一个,大家都在广播计算机程序,这样下去,岂不是乱套了,所以还有一个很重要的概念,那是工作量证明。在计算机程序中,有个随机值,矿工在全网广播前,须要做如下计算:Hash(计算机程序+随机数)< 目标基元,由于基元计算不能逆向计算,所以矿工须要反复更换随机数,使得等式成立,这一过程是常说的挖矿。比特币网络中通常10分钟左右产生一个计算机程序,控制系统每2016个计算机程序(大概是两周)会自动调整难度(即目标基元),使得整个网络的计算机程序产生速度控制在10分钟左右。
第一个计算出随机数的矿工,会得到全网的认可并将其计算机程序加入到计算机程序链的末尾,作为奖励,比特币规定,每个计算机程序记录的第一大笔买卖为控制系统向挖矿者收款地址的转账,奖励初始值为50个,每四年减半,比特币总量2100万个即由据此计算而来。挖矿是非常耗费资源的操作,记账成功后的比特币奖励,使得矿工有动力投入资源参与记账,也使得恶意记账的动力减少,因为恶意记账的成本,其实要远大于诚信挖矿(记账)带来的收入。当所有比特币被挖出后,每笔买卖的输入减去输出,剩余部分称为买卖费,买卖费将替代奖励,维持控制系统正常运转。
不像传统软件的升级,一个分布式控制系统一致意见控制系统的升级是非常困难的,须要协调好所有的控制系统参与者。每次升级可能会伴随着计算机程序链的一致意见规则改变,这会导致整个网络中升级了软件的结点与未升级软件的结点运行在不同的规则下,于是分叉就产生了。比特币中分叉通常分为硬分叉和软分叉。
a)硬分叉,如果计算机程序链软件的一致意见规则被改变,并且这种规则改变无法向前兼容,旧结点无法认可新结点产生的计算机程序,即为硬分叉。这时候旧结点会拒绝新规则的计算机程序,于是新结点和旧结点会开始在不同的计算机程序链上运行(挖矿、买卖、校正等),由于新旧结点可能长期存在,这种分叉也可能会长期持续下去。
b)软分叉,如果计算机程序链的一致意见规则改变后,这种改变是向前兼容的,旧结点能兼容新结点产生的计算机程序,即为软分叉。软分叉通常刚开始并不会产生两条计算机程序链,因为新规则下产生的块会被旧结点接受,旧结点只是无法识别新规则的真实意义。所以新旧结点仍然处于同一条计算机程序链上,对整个控制系统的影响也就较小。
以上全文从控制技术视角对计算机程序链的基础基本原理做了单纯如是说,想必大家也对计算机程序链有了些许控制技术上的发掘,届时各行各业都会从中收益。