区块链基本原理概述

2023-06-03 0 329

​1. 概要

计算机程序链本质上是两个由若干计算机程序构成的广域网,这条广域网被分散保存到多个计算机控制系统结点。这些计算机控制系统结点互相独立,互相勿须信赖,没有两个权威的中心结点,因此计算机程序链被指出是两个“去交互式化”、“去信赖”的控制系统。在这三个基本概念中,“去交互式化”是方法,“去信赖”是目的,前者需要透过前者来化解;许多人强调前者,但前者才是根本。“去信赖”是指除去服务器端信赖,买卖两方不经过可靠的服务器端而直接买卖。不过,计算机程序链本身并不要求买卖两方中美关系,买卖统计数据容许存有作假和蒙骗,由此导致在比特币的下层可能同时存有数条计算机程序链,但透过“一致意见监督机制”、“奖赏”、“作假惩处”等措施,最终计算机程序链为比特币创建了一套可靠的、可靠赖的化解方案。不过,在许多小型应用应用领域中,“一致意见监督机制”和“奖赏”并不能关键在于化解“去信赖”或统计数据作假难题。当前合作开发的许多计算机程序链应用应用领域,某种意义上都创建在“信赖”的基础上,与比特币的计算机程序链有较大区别;即使如此,其中的一些控制系统仍能化解其它控制技术所难以化解的难题,并具备较高应用应用领域商业价值。责任编辑重点阐述比特币的计算机程序链的基本基本概念,并为基于计算机程序链控制技术合作开发应用应用领域提供更多许多独断建议。

2. 计算机程序链与比特币

2.1 计算机程序链发展历史

比特币是下层应用,计算机程序链是比特币的下层同时实现应用软件。计算机程序链的发展经历了三个阶段,分别是1.0、2.0、3.0。

计算机程序链1.0是以比特币为代表者的交互式汇率时代,同时实现了汇率的去交互式化与支付手段,涌现了大量的山寨币等。计算机程序链1.0全力支持三个人之间的交互式汇率买卖,无法普及化到其它金融行业。

计算机程序链2.0多了智能化合同的基本概念。两个买卖容许多个人共同亲笔签名后发送到自己。智能化合同给金融创新应用领域提供更多了更加广泛的应用应用领域情景,例如多方合同下的商品买卖。计算机程序链2.0的代表者是镜像坊,全力支持智能化合同并提供更多程式设计USB,用户可以合作开发自己的交互式汇率。计算机程序链2.0通常应用应用领域于金融创新应用领域。

计算机程序链3.0则将计算机程序链应用应用领域于金融创新金融行业之外的其它金融行业。计算机程序链3.0被称为互联网控制技术之后的新要佣金。

比特币从诞生之日,具备浓重的投机,且缺乏服务器端监管。像人民币、美元、欧元都是依赖国家信用风险和黄金储备等而作为流通汇率,但比特币的信用风险却是许多微积分演算法。由于不具备明确的商业价值基础,因此在中国被指出是不法行为。

比特币至少可以透过三种途径赢得。一是从许多买卖网站上购买赢得;二是自己透过比特币应用软件提款而赢得;三是透过比特币应用软件矿机赢得。“矿机”是计算机程序链的核心基本概念之一,在后续将逐步对其展开描述。责任编辑不讨论非法买卖,只是对计算机程序链的基本基本概念进行探讨研究。

3. 三个微积分演算法

计算机程序链采用了三个基础的微积分演算法:非对称加密和哈希函数。透过这三个演算法对统计数据进行加密和解密,并使得统计数据很难被服务器端破解。

3.1 非对称加密演算法

对称加密只有两个密钥,加密和解密都使用它。例如,用“123456”作为密码压缩两个文件夹,在解压时也同样使用该字符串。

非对称加密则有三个不同的密钥:公钥和私钥。如果用公钥对统计数据进行加密,只有用对应的私钥才能解密;如果用私钥对统计数据进行加密,那么只有用对应的公钥才能解密。通常将公钥发给其它人,私钥自己留着;其它人可以透过公钥进行加密,但只有自己才有私钥解密,因此安全性较高。

3.2 哈希演算法

微积分中的模运算(取余数)是一种极简单的哈希演算法。例如1,2,3,4,5,6,7,10001除以4后的余数分别为1,2,3,0,1,2,3,1。以另一种形式”hash(key)=value”可以写成:hash(1)=1, hash(2)=2, hash(3)=3, hash(4)=0, hash(5)=1, hash(6)=2, hash(7)=3, hash(10001)=1。可以看出,在哈希演算法中,不同的key可能有相同的value。

科学家们创建了许多更复杂的哈希演算法,例如MD5、SHA1、SHA256等。下表列出了字符串key为“Hello World!”所对应的各个哈希演算法的取值。

哈希演算法哈希值(value)二进制位数MD5ED076287532E86365E841E92BFC50D8C128SHA12EF7BDE608CE5404E97D5F042F95F89F1C232871160SHA2567F83B1657FF1FC53B92DC18148A1D65DFC2D4B1FA3D677284ADDD200126D9069256

这些哈希演算法具备这样的特点:

给定两个字符串key(这里是”Hello World!”),容易计算其哈希值value;给定两个哈希值value,很难推出对应的key。

虽然从理论上来说,可能有多个key对应同两个value,但实际上概率很低。因此,可以近似地指出key与value是一一对应的,value被称为key的统计数据指纹。统计数据指纹意味着很难作假,两个value在有限时间内几乎只能找到两个匹配的key。

4. 计算机程序链逻辑结构

4.1 链表

计算机程序链由“计算机程序”和“链”三个词组成。“计算机程序”用于保存统计数据。对于比特币来说,大约每10分钟产生1个计算机程序,由其存放10分钟内的所有买卖。买卖存放的是汇率所有权从两个人到另外两个人的流转信息。每个买卖都需要一定的佣金,在计算机程序链中被称之为“汽油”。

  计算机程序链的“链”指广域网。在计算机控制系统中,广域网有正向链、反向链、双向链之分。

正向链。全力支持从链表的头向后搜索。反向链。全力支持从链表的尾部向前回溯搜索。双向链。全力支持双向搜索,是一种效率较高的统计数据结构。

  计算机程序链采用反向链,便于从后向前追溯;但不能从前向后搜索计算机程序。对比几种链表结构,有下列结论。

  命题1. 高性能不是计算机程序链考虑的根本因素。

另外,计算机程序链中的第两个计算机程序被称之为“创世计算机程序”。

4.2 去交互式化

命题2. 计算机程序链不能太大。

对于比特币来说,世界上任何人都可以参与矿机。计算机程序链太大可能导致普通电脑无法保存整个计算机程序链,导致许多人无法参与。10多年以来,当前的计算机程序链只有300g之多,能够为一般电脑所保存。

  命题3. 计算机程序链不要更新太快。

再次强调,这里是指比特币的计算机程序链。两个计算机程序需要包括一段时间之内的几乎所有的买卖。由于买卖在互联网的所有结点之间进行传递,如果更新太快,则可能有些买卖不能被打入计算机程序链;另外,由于所有结点都可以矿机,互联网上会存有多个不一致的计算机程序链。

4.3 矿机

  计算机程序链由多个计算机程序组成,所谓矿机是指生成两个新计算机程序的过程。

两个计算机程序由计算机程序头和计算机程序体组成,区块体包含10分钟内的所有买卖。如果在计算机程序体中添加、删除、修改某两个买卖,则默克尔根就会变化。

计算机程序头主要包括6个要素:hash(parent)、版本、默克尔根、时间戳、难度目标、随机数。所谓矿机,就是确定这6个值。

  在前两个计算机程序也包含这6个要素,它们的hash值即为hash(parent)。由此可知,如果某两个计算机程序作假,则需要修改它后面所有计算机程序的hash(parent),难度很大。

为了使得每10分钟生成两个计算机程序,设置了难度目标值。随着计算机控制系统的性能越来越高,该值是动态变化的。如下面公式所示,控制系统每隔2016 个计算机程序会根据上一周期的矿机时间来调整矿机难度。对于两个具体的计算机程序而言,该值是固定不变的。

DifficultyTarget = 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF/Difficulty

从这里可以查到,第674000计算机程序的难度为21,448,277,761,059.70。从674001计算机程序查到第674000计算机程序中6个要素的哈希值如下。这个哈希值前面有19个0,要满足这个条件就必须进行大量的计算,求出其它的几个要素。

00000000000000000007f8d1652e3bf35c9d2672be4834fef6ebc6f1c407bd8c

在6个要素中,hash(parent)、版本、默克尔根、难度目标都是固定的。时间戳表示计算机程序生成的时间,随机数是可变的。在分布式控制系统中,不要求每个计算机控制系统的时钟完全一致,时间戳的变化对自己而言意义不大;因此为了简化矿机难度,时间戳也可以事先确定。这样,在6个要素中只需要求出随机数。

  随机数通常从0开始两个个地尝试,看6个要素的哈希值是否满足难度。如果某个随机数满足难度,就表示矿机成功。新的计算机程序生成后被广播到相邻的其它结点。

第674000计算机程序的随机数为4,275,554,107,可见矿机的工作量挺大。在计算机程序链中,把这样的工作量叫做工作量证明POW。

从事矿机的人(或人操作的机器)称为矿工。由于第1个矿机成功的人会有比特币奖赏,并且能收获所有买卖的佣金,因此矿工都在想方设法提高矿机效率。

命题4. 高性能是矿工追求的因素。

4.4 一致意见监督机制

若同一时段只有两个合法计算机程序被生产出来,而没有与之竞争的其它合法计算机程序,该计算机程序将会被接收;若存有竞争计算机程序,则51%以上的结点确认,累计难度最大且最长的链最终会被接收,没有被接收的其它合法计算机程序则成为孤块,被淘汰出局。

  所谓一致意见监督机制,即指得到大多数(51%以上)结点确认。

4.5 去信赖

在互联网中,结点之间没有绝对的信赖。实际上,如果大多数结点都作假,则计算机程序链将没有商业价值。为了防止作假,除了去交互式化外,计算机程序链至少还采用了下面几项措施。

当两个结点收到另两个结点的计算机程序后,会透过哈希值对计算机程序链进行检查确认,如果计算机程序链作假或者不是最长的计算机程序链,则丢弃。矿机成功会有奖赏,并且能赢得该计算机程序中所有买卖的佣金。自从中本聪创建第1个计算机程序并赢得50枚比特币后,每挖出21万个计算机程序(大约4年)后,奖赏减半。当没有奖赏后仍能赢得佣金。作假代价很大。对于计算机程序1、计算机程序2、…、计算机程序n构成的计算机程序链。如果计算机程序1作假,则需要重新计算该计算机程序的随机数;从而导致计算机程序2中的hash(parent)变化,又需要重新计算计算机程序2的随机数;进而需要计算后续所有区块的随机数。实际上,如果作假者的算力超过全网51%矿机结点的算力,则作假成功。

  命题5. 计算机程序链作假代价很高。

5. 计算机程序链类型

  计算机程序链分为三种类型:公有链、私有链、联盟链。

5.1 公有链

比特币的计算机程序链是一种公有链,它有如下特点。

  1)公有的、全开放的、去交互式化;

  2)统计数据全网公开,不适合银行、政府、证券等;

  3)不能篡改统计数据;

  4)处理买卖速度慢、效率低:全网结点共同参与,每个结点都参与决策(判断真伪);

5)如果发行电子汇率,则是各国政府所不能全力支持的行为。

  私有链、联盟链就是对公有链的开放性、效率进行改进的结果。

5.2 私有链

私有链不对外开放,只有被授权结点才能参与,是部分“去交互式化”的计算机程序链。主要用户有金融机构、大型企业、政府部门等。例如央行发行的数字汇率,只能由央行进行记账,个人不能参与。另外,阿里、百度、京东等大型公司也会构建自己的私有链,侧重计算机程序链的统计数据安全。

5.3 联盟链

联盟链也称金融行业链,是公司与公司、组织与组织之间构建的计算机程序链。通常选定多个结点参与计算机程序一致意见决策,其它结点仅参与买卖而不参与决策,这是一种“多交互式化”的计算机程序链。用户群体包括银行、证券、保险、集团企业等。

6. 计算机程序链应用应用领域

6.1 应用应用领域合作开发考虑

  随着计算机程序链控制技术的发展,越来越多的计算机程序链应用应用领域开始出现。确定采用计算机程序链控制技术合作开发应用应用领域之前,需要从下面几个方面来综合考虑。

传统方法。两个应用应用领域如果能够采用传统方法来同时实现,则不必采用计算机程序链控制技术。去中心化。去交互式化只是意味着统计数据的多个副本,不是采用计算机程序链的绝对理由。统计数据库MySQL、Oracle、MongoDB以及分布式存储控制系统Ceph等都全力支持多副本,并且具备很高的性能。去信赖。去信赖意味着需要防止统计数据作假,这是采用计算机程序链的两个理由。可追溯。计算机程序链可以对统计数据作假进行追溯,统计数据库一般不具备可追溯特点,这也是采用计算机程序链的两个理由。性能。如果应用应用领域频繁更新,采用计算机程序链意味着统计数据量很大,需要很大的存储设备,对于许多不具备条件的应用应用领域则不适合。另外,在计算机程序链中检索统计数据极不方便,效率极低。

6.2 融合传统统计数据库的合作开发方法

  在确定采用计算机程序链控制技术合作开发应用应用领域之后,需要考虑两个难题:是否将所有统计数据都保存到计算机程序链?

计算机程序链在性能、统计数据检索等方面都不如传统统计数据库;另外,如果所有统计数据都保存到计算机程序链,则会特别大。一种可行的方法是在应用应用领域中采用“计算机程序链+统计数据库”的方式来保存统计数据。那些防止作假需要追溯的重要信息可放到计算机程序链,其它信息则放到统计数据库。在计算机程序链应用应用领域方面,统计数据通常保存有多处。因此统计数据库应具备性能高、全力支持多备份的特点;甚至可以采用高性能、高可用、高可扩展的Ceph分布式存储控制系统来保存统计数据。

7. 总结

计算机程序链具备“去交互式化”、“去信赖”、“去服务器端”的特点,本质上是两个分布式统计数据存储控制系统。将计算机程序链保存到多个计算机控制系统结点,透过“一致意见监督机制”、“奖赏”、“作假惩处”等措施,最终计算机程序链为比特币创建了一套可靠的、可靠赖的化解方案。然而,计算机程序链也存有许多缺点,包括性能较差、检索困难等,进而出现了公有链、私有链、联盟链等适合不同应用应用领域场合的类型。私有链和联盟链在某种意义上已经不再是“去交互式化”、“去信赖”的计算机程序链。在合作开发应用应用领域时,应综合考虑多种因素来确定是否有必要采用计算机程序链控制技术;在许多计算机程序链应用应用领域中,可以采用“计算机程序链+统计数据库”的方式来保存统计数据,即将需要追溯的关键信息保存到计算机程序链,而其它信息保存到统计数据库或分布式存储控制系统。

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务