区块链学习入门简介(一)

         区块链入门简单记录,参照了很多网上的资源,本篇目的是了解区块链是在做一个什么样的事情以及其特点。

 

近年来,区块链技术正在经历快速发展,由于其具有:去中心,无需信任系统(第三方),开放性,不可篡改等特点使其在金融,电子商务,存在证明,身份验证,文件存储等多个领域具有非常广泛的应用前景。自2015年9月,13家顶级银行达成比特币技术,支持金融部署区块链就能够看出一些端倪。区块链将成为新时代的一大金融新契机。加之区块链金融峰会的举办,更是将这种可能推上了新的高度,自从2016年1月20日,中国人民银行在数字货币研讨会上表示高度重视区块链(Blockchain)等技术带来的新机遇和挑战,并争取早日推出央行发行的数字货币以来,区块链的概念在国内越发火热,吸引了金融机构空前的关注。

 

什么是区块链?

         谈到区块链就要从比特币开始说起,区块链(Blockchain)是比特币的底层技术,像一个数据库账本,记载所有的交易记录。首先,不要把比特币当成一种货币,而是一个总账。它是个电子总账,网络上的每个参与者的电脑都有一份总账的备份,并且所有的备份都是实时的持续的更新、对账以及同步着。而这个总账相当于我们现在的数据库的功能,存储着相应的信息,在比特币网路中它存储着交易记录。这个总账是由一个个数据块(称之为区块)串接起来的(相当于数据结构中的一个单链表),每个数据块中包含了一次比特币网络交易的信息,通过使用密码学方法进行计算与加密,用于验证其信息的有效性(防伪)和生成下一个区块。而由一个个这样的区块串联起来的数据块链我们称之为区块链。而这个区块链中记录着我们所有的信息,他并不是又某个人或某个团体进行维护,而是全网每个节点都遵循一种共识机制共同去维护。

         区块链是一种类似于NoSQL(非关系型数据库)这样的技术解决方案统称,并不是某种特定技术,能够通过很多编程语言和架构来实现区块链技术。并且实现区块链的方式种类也有很多,目前常见的包括工作量证明,权益证明,股份授权证明机制等。


区块链相关名词和概念:

 

区块(Block)是区块链中的一条记录,包含并确认待处理的交易。

 

挖矿(Mining)指通过计算形成新的区块,是交易的支持者利用自身的计算机硬件为网络做数学计算进行交易确认和提高安全性的过程。以比特币为例:交易支持者(矿工)在电脑上运行比特币软件不断计算软件提供的复杂的密码学问题来保证交易的进行。作为对他们服务的奖励,矿工可以得到他们所确认的交易中包含的手续费,以及新创建的比特币。

 

共识机制

 

顾名思义,就是在一个问题上达成共识的一套方法。在区块链中,共识机制也是区块链的底层技术,也是最为重要的技术。它的存在就是为了完成节点间信息同步,交易的确认,网络运行等重要任务。

 

HASH值

 

通过哈希函数运算,从而映射成的二进制的值称为哈希值。任何文件都可以被映射(生成)为一段哈希值,比如一段文字,视频,文件,照片等等。强调下,哈希运算不是一种加密手段,因为它是不可逆的运算过程,无法解密。

 

数字签名

 

加密的签名是一个让人可以证明所有权的数学机制。就像日常生活文件中的手写签名一样,即能证明所属权的唯一标识。在区块链中,普遍用私钥进行签名。

 

私钥(Private Key)是一个证明你有权从一个特定的钱包消费电子货币的保密数据块,是通过数字签名来实现的。

 

去中心化

由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。

 

开放性

系统是开放的,除了交易各方的私有信息被加密外,区块链的数据对所有人公开,任何人都可以通过公开的接口查询区块链数据和开发相关应用,因此整个系统信息高度透明。

 

自治性

区块链采用基于协商一致的规范和协议(比如一套公开透明的算法)使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。

 

信息不可篡改

  一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。


 

区块链的大体工作流程:

 

拿比特币来说大体的流程是:

第一步:每一笔交易为了让全网承认有效,必须广播给每个节点(node:也就是矿工);

第二步:每个矿工节点要正确无误的给这十分钟的每一笔交易盖上时间戳并记入那个区块(block);

第三步:每个矿工节点要通过解SHA256难题去竞争这个十分钟区块的合法记账权,并争取得到二十五个比特币的奖励(头四年是每十分钟五十个比特币,每四年递减一半);

第四步:如果一个矿工节点解开了这十分钟的SHA256难题,ta将向全网公布ta这十分钟区块记录的所有盖时间戳交易,并由全网其他矿工节点核对;

第五部:全网其他矿工节点核对该区块记账的正确性(因为他们同时也在盖时间戳记账,只是没有竞争到合法区块记账权,因此无奖励),没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块单链,也就是比特币支付系统的总账--区块链。

一般来说,每一笔交易,必须经过六次区块确认,也就是六个十分钟记账,才能最终在区块链上被承认合法交易。

 

区块链解决的重要问题:

 

1 “双花”问题:

所谓“双花”难题,是指在区块链加密技术出现之前,加密数字货币和其他数字资产一样,具有无限可复制性,如果没有一个中心化的媒介机构,人们没有办法确认一笔数字现金是否已经被花掉。因此,在交易中必须有一个可以信贷的第三方来保留交易总账,从而保证每笔数字现金只会被花掉一次。中本聪通过使用区块链盖时间戳并发布全网的方式,保证每笔货币被支付后,不能再用于其他支付。当且仅当包含在区块中的所有交易都是有效的且之前从未存在过的,其他节点才认同该区块的有效性。

 

拜占庭将军问题

拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。

为了解决这个问题,数学家设计了一套算法,让将军们在接到上一位将军的信息之后,加上自己的签名再转发给除自己之外的其他将军。在这样的信息连环周转中,将军们可以在不找出叛徒的情况下达成共识,从而保证得到的信息和作出的决策是正确的。

区块链通过为发送信息加入了成本,也就是基于计算一个随机哈希算法得到遗传64 位的随机数字和字母组成的字符串的“工作量证明”,并加入了一个随机元素以保证在一个时间只有一个将军可以进行广播,解决了这个问题。

尽管单个哈希值用现在的计算机可以几乎即时的计算出来,但只有一个前13个字符是0的哈希值结果可以被比特币系统接受成为“工作量证明”。这样一个13个0的哈希值是极其不可能与罕见的,并且在当前需要花费整个比特币网络大约10分钟的时间来找到一个。在一台网络中的机器随机的找到一个有效哈希值之前,上十亿个的无效值会被计算出来,这就是减慢信息传递速率并使得整个系统可用的“工作量证明”。那台发现下一个有效哈希值的机器(或者说在我们类比中的城邦),把所有的之前的信息放到一起,附上它自己的,以及它的签名/印章/诸如此类,并向网络中的其他机器广播出去。只要其他网络中的机器接收到并验证通过了这个13个0的哈希值和附着在上面的信息,他们就会停止他们当下的计算,使用新的信息更新他们的总账拷贝,然后把新更新的总账/区块链作为哈希算法的输入,再次开始计算哈希值。哈希计算竞赛从一个新的开始点重新开始。如此这般,网络持续同步着,所有网络上的电脑都使用着同一版本的总账。最后,在个人向网络输入一笔交易的时候,他们使用内嵌在比特币客户端的标准公钥加密工具来同时他们的私钥以及接收者的公钥来为这笔交易签名。这对应于拜占庭将军问题中他们用来签名和验证消息时使用的“印章”。因此,哈希计算速率的限制,加上公钥加密,使得一个不可信网络变成了一个可信的网络,使得所有参与者可以在某些事情上达成一致(比如说攻击时间、或者一系列的交易、域名记录、政治投票系统、或者任何其他的需要分布式协议的地方)。

 

 

你可能感兴趣的:(区块链学习入门简介(一))