想知道更多关于区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!
定义与原理
一、定义
公认的最先关于区块链的描述性文献是中本聪所撰写的文章《Bitcoin:A Peer-to Peer Electronic Cach System》,但该文献重点在于讨论比特币系统,实际上并无明确提出区块链的定义和概念,在其中指出,区块链是用于记录比特币交易帐目历史的数据结构。
另外,Wikipedia上给出的定义中,将区块链类比为一种分布式数据库技术,经过维护数据块的链式结构,能够维持持续增加的、不可篡改的数据记录。
区块链技术最先的应用出如今比特币项目中。做为比特币背后的分布式记帐平台,在无集中式管理的状况下,比特币网络稳定运行了八年时间,支持了海量的交易记录,而且从未出现严重的漏洞,这些都与巧妙的区块链结构分不开的。
区块链技术自身仍然在飞速发展中,目前相关规范和标准还在进一步成熟中。
二、基本原理
区块链的基本原理理解起来并不复杂。首先,区块链包括三个基本概念:
交易(transaction):一次对帐本的操做,致使帐本状态的一次改变,如添加一条转帐记录;
区块(block):记录一段时间内发生的全部交易和状态结果,是对当前帐本状态的一次共识;
链(chain):由区块按照发生顺序串联而成,是整个帐本状态变化的日志记录。
若是把区块链做为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中交易致使状态改变的结果进行确认。
在实现上,首先假设存在一个分布式的数据记录帐本,这个帐本只容许添加、不容许删除。帐本底层的基本结构是一个线性的链表,这也是其名字“区块链”的来源。链表由一个个“区块”串联组成,后继区块记录前导区块的哈希值(pre hash)。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法,能够经过计算哈希值的方式快速检验出来。任意维护节点均可以提议一个新的合法区块,然而必须通过必定的共识机制来对最终选择的区块达成一致。
三、以比特币为例理解区块链工做过程
以比特币网络为例,能够具体看其中如何使用了区块链技术。
首先,比特币客户端发起一项交易,广播到比特币网络中并等待确认。网络中的节点会将一些收到的等待确认的交易记录打包在一块儿(此外还要包括前一个区块头部的哈希值等信息),组成一个候选区块。而后,试图找到一个nonce串(随机串)放到区块里,使得候选区块的哈希结果知足必定条件(好比小于某个值)。这个nonce串的查找须要必定的时间去进行计算尝试。
一旦节点算出来知足条件的nonce串,这个区块在格式上就被认为是“合法”了,就能够尝试在网络中将它广播出去。其余节点收到候选区块,进行验证,发现确实符合约定条件了,就认可这个区块是一个合法的新区块,并添加到本身维护的区块链上。当大部分节点都将区块添加到本身维护的区块链结构上时,该区块被网络接受,区块中所包括的交易也就获得确认。
固然,在实现上还会有不少额外的细节。这里面比较关键的步骤有两个:
一个是完成对一批交易的共识(建立区块结构);
一个是新的区块添加到区块链结构上,被你们承认,确保将来没法被篡改。
比特币的这种基于算力寻找nonce串的共识机制称为工做量证实(Proof of Work,PoW)。目前,要让哈希结果知足必定条件,并没有已知的快速启发式算法,只能进行尝试性的暴力计算。尝试的次数越多(工做量越大),算出来的几率越大。
经过调节对哈希结果的限制,比特币网络控制平均约10分钟产生一个合法区块。算出区块的节点将获得区块中全部交易的管理费和协议固定发放的奖励费(目前是12.5比特币,每四年减半),这个计算新区块的过程俗称为挖矿。
实际上,比特币网络中存在大量(据估计数千个)的维护节点,并且大部分节点都是正常工做的,默认都只认可所看到的最长的链结构。只要网络中不存在超过一半的节点提早勾结一块儿采起恶意行动,则最长的链将很大几率上成为最终合法的链。并且随着时间增长,这个几率会愈来愈大。
固然,若是整个网络中大多数的节点都联合起来做恶,能够致使整个系统没法正常工做。要作到这一点,每每意味着付出很大的代价,跟经过做恶获得的收益相比,得不偿失。html
未经容许,拒绝转载。https://www.liankexing.com/no...算法