[CS] 区块链技术概述

参考:
区块链技术原理
厉害了!区块链是下一个黑科技?
区块链的未来之路


1. 什么是区块链

1.1 前世

“区块链”技术最初是比特币(一种数字货币)而设计出的一种特殊的数据库技术,它基于密码学中的椭圆曲线数字签名算法(ECDSA)来实现去中心化的P2P系统设计。

1.2 今生

从数据的角度来看:区块链是一种分布式数据库,这里的“分布式”不仅体现为数据的分布式存储(可以存储在所有参与记录数据的节点中,而非集中存储于中心化的机构节点中),也体现为数据的分布式记录(可以由系统参与者集体记录,而非由一个中心化的机构集中记录)。

区块链技术概括起来是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术。简单的说,区块链技术就是一种大家共同参与记录信息、存储信息的技术,可以让互不信任的人,在没有权威中间机构的统筹下,还能愉快地进行信息互换与价值互换。

1.3 总结

该技术将数据分区块存储,每一块包含一部分内容,每一个区块都会记录着前一区块的id,按时间顺序形成一个链状结构,并以密码学方式保证数据不可篡改,因而称为区块链技术。

1.4 关键点

  • 去中心化(Decentralized)
  • 去信任(Trustless)
  • 集体维护(Collectively maintain)
  • 可靠数据库(ReliableDatabase)
  • 时间戳(Time stamp)
  • 非对称加密(AsymmetricCryptography)

1.5 本质

互联网协议
这里写图片描述

2. 意义

区块链技术重新定义了网络中信用的生成方式:在系统中,参与者无需了解其他人的背景资料,也不需要借助第三方机构的担保或保证,区块链技术保障了系统对价值转移的活动进行记录、传输、存储,其最后的结果一定是可信的。

3. 拜占庭将军问题

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

将该问题延伸到互联网中:在缺少可信任的中央节点和可信任的通道的情况下,分布在网络中的各个节点应如何达成共识。

区块链技术解决了闻名已久的拜占庭将军问题——它提供了一种无需信任单个节点、还能创建共识网络的方法。

3.1 区块链技术要解决的三个核心问题

问题一:如何建立一个严谨的数据库,使得该数据库能够存储下海量的信息,同时又能在没有中心化结构的体系下保证数据库的完整性

问题二:如何记录并存储下这个严谨的数据库,使得即便参与数据记录的某些节点崩溃,我们仍然能保证整个数据库系统的正常运行与信息完备?

问题三:如何使这个严谨且完整存储下来的数据库变得可信赖,使得我们可以在互联网无实名背景下成功防止诈骗?
针对这三个核心问题,区块链构建了一整套完整的、连贯的数据库技术来达成目的,解决这三个问题的技术也成为了区块链最核心的三大技术。此外,为了保证区块链技术的可进化性与可扩展性,区块链系统设计者还引入了“脚本”的概念来实现数据库的可编程性。我们认为,这四大技术构成了区块链的核心技术。

4. 区块链的核心技术

4.1 核心技术一:区块+链

4.1.2 区块

在区块链技术中,数据以电子记录的形式被永久储存下来,存放这些电子记录的文件我们就称之为“区块(block)”。区块是按时间顺序一个一个先后生成的,每一个区块记录下它在被创建期间发生的所有价值交换活动,所有区块汇总起来形成一个记录合集。

4.1.3 区块结构

区块主体实际上就是交易信息的合集。每一种区块链的结构设计可能不完全相同,但大结构上分为块头(header)和块身(body)两部分。块头用于链接到前面的块并且为区块链数据库提供完整性的保证,块身则包含了经过验证的、块创建过程中发生的价值交换的所有记录。

区块结构有两个非常重要的特点:第一,每一个区块上记录的交易是上一个区块形成之后、该区块被创建前发生的所有价值交换活动,这个特点保证了数据库的完整性。第二,在绝大多数情况下,一旦新区块完成后被加入到区块链的最后,则此区块的数据记录就再也不能改变或删除。这个特点保证了数据库的严谨性,即无法被篡改。

区块链的整体结构可以描述为:人们把一段时间内生成的信息(包括数据或代码)打包成一个区块,盖上时间戳,与上一个区块衔接在一起,每下一个区块的页首都包含了上一个区块的索引数据,然后再在本页中写入新的信息,从而形成新的区块,首尾相连,最终形成了区块链。”这个结构的神奇之处:区块(完整历史)+链(完全验证)=时间戳

4.2 核心技术二:分布式结构——开源的、去中心化的协议

4.2.1 如何让所有节点都参与记录

构建一整套协议机制,让全网每一个节点在参与记录的同时也来验证其他节点记录结果的正确性。只有当全网大部分节点(或甚至所有节点)都同时认为这个记录正确时,或者所有参与记录的节点都比对结果一致通过后,记录的真实性才能得到全网认可,记录数据才允许被写入区块中。

4.2.2 如何存储下“区块链”这套严谨数据库

构建一个分布式结构的网络系统,让数据库中的所有数据都实时更新并存放于所有参与记录的网络节点中。这样即使部分节点损坏或被黑客攻击,也不会影响整个数据库的数据记录与信息更新。

4.2.3 分布式记账

区块链设计者没有为专业的会计记录者预留一个特定的位置,而是希望通过自愿原则来建立一套人人都可以参与记录信息的分布式记账体系,从而将会计责任分散化,由整个网络的所有参与者来共同记录。

4.3 核心技术三:非对称加密算法

4.3.1 非对称加密的原理

在“加密”和“解密”的过程中分别使用两个密码:
(1)加密时的密码(在区块链中被称为“公钥”)是公开全网可见的,所有人都可以用自己的公钥来加密一段信息(信息的真实性);
(2)解密时的密码(在区块链中被称为“私钥”)是只有信息拥有者才知道的,被加密过的信息只有拥有相应私钥的人才能够解密(信息的安全性)。

公私密钥对满足以下两个条件:
(1)对信息用其中一个密钥加密后,只有用另一个密钥才能解开——公钥;
(2)其中一个密钥公开后,根据公开的密钥别人也无法算出——私钥。

4.3.2 所有权验证机制

该机制的基础就是非对称加密算法。
区块链技术中,所有的规则事先都以算法程序的形式表述出来,人们完全不需要知道交易的对手方是“君子”还是“小人”,更不需要求助中心化的第三方机构来进行交易背书,而只需要信任数学算法就可以建立互信。区块链技术的背后,实质上是算法在为人们创造信用,达成共识背书。

4.4 核心技术四:脚本

脚本可以理解为一种可编程的智能合约。有了脚本之后,区块链技术就会使系统有机会去处理一些无法预见到的交易模式,保证了这一技术在未来的应用中不会过时,增加了技术的实用性。一个脚本本质上是众多指令的列表,这些指令记录在每一次的价值交换活动中,价值交换活动的接收者(价值的持有人)如何获得这些价值,以及花费掉自己曾收到的留存价值需要满足哪些附加条件。

5. 全民记账的区块链

首先没有一本中央大账本了,所以无法摧毁。每个节点都仅仅是系统的一部分,每个节点权利相等,都有着一模一样的账本。摧毁部分节点对系统一点都没有影响。其次,无法作弊,因为除非你能控制系统内大多数人的电脑都进行修改,否则系统会参照多数人的意见来决定什么才是真实结果,结果会发现修改自己的账本完全没有意义(因为别人不承认)。其次,由于没有中心化的中介机构存在,让所有的东西都通过预先设定的程序自动运行,不仅能够大大降低成本,也能提高效率。而由于每个人都有相同的账本,能确保账本记录过程是公开透明的

6. 区块链在金融业

区块链技术能够通过防篡改和高透明的方式让整个金融系统极大的降低成本。

金融行业目前由于防止单点故障和系统性风险,需要进行层层审计来控制金融风险,但由此也造成高昂的内部成本。并且由于不断增加的监管法规出现,特别是2008年金融危机导致对于金融管控门槛不断升高,而反恐战争导致反洗钱和反恐怖主义融资的范围也让监管的广度和深度逐渐扩大,导致整个金融系统的监管成本急剧增加

传统金融机构在结算和清算时都依靠中央结算所来完成,而由此造成的问题就是效率低下。传统的跨国结算就是因为要通过类似于Swift这样的机构,所以跨国电汇往往是按天来计算的。但是比特币在使用区块链技术时,在完全没有中心化运营机构的情况下,完美的运行了七年,不仅能够实现实时结算和清算,而且没有出现过任何一笔账目错误。

7. “挖矿”

比特币中的“挖矿”实际上就是记账的过程,比特币的运算采用了一种称为“工作量证明(Proof of Work,PoW)”的机制,系统为了找出谁有更强大的计算能力,每次会出一道数学题,只有最快解出这道题目的计算机才能进行记账。而抢到记账权的计算机会获得25个比特币的奖励。通常把这个行为称为“挖矿”,把获得的比特币视为挖矿成功获得的奖励。

并非所有的区块链项目都会采用类似于比特币这样的“工作量证明”(“挖矿”)方式,这更多出现在早期的区块链项目中。如果采取其他的证明机制,如“权益证明(Proof of Stake,PoS)”、“股份授权证明机制(DPoS,Delegate Proof of Stake)”都是不需要采取这样的挖矿方式。