您需要了解的区块链:技术演进史、到底是什么

分享到:
141
下一篇 >
1.区块链技术演进史;2.区块到底是什么?3.区块链5大关键技术;4.区块链运作原理大剖析

老杳推出个人微信公共平台,主推原创及重大突发事件分析,欢迎搜索公共号:laoyaoshow

1.区块链技术演进史;

区块链源自比特币,不过在这之前,已有多项跨领域技术,皆是构成区块链的关键技术;而现在的区块链技术与应用,也已经远超过比特币区块链

要追溯区块链(Blockchain)是怎么来的,不外乎先想到比特币(Bitcoin),比特币是**个采用区块链技术打造出的P2P电子货币系统应用,不过比特币区块链并非一项全新的技术,而是将跨领域过去数十年所累积的技术基础结合。

比特币区块链所实现的基于零信任基础、且真正去中心化的分散式系统,其实解决一个30多年前由Leslie Lamport等人所提出的拜占庭将军问题。

1982 年Leslie Lamport把军中各地**彼此取得共识、决定是否出兵的过程,延伸至运算领域,设法建立具容错性的分散式系统,即使部分节点失效仍可确保系统正常运行,可让多个基于零信任基础的节点达成共识,并确保资讯传递的一致性,而2008年出现的比特币区块链便解决了此问题。

而比特币区块链中*关键的工作量证明机制,则是采用由Adam Back在1997年所发明Hashcash(杂凑现金),为一种工作量证明演算法(Proof of Work,POW),此演算法仰赖成本函数的不可逆特性,达到容易被验证,但很难被破解的特性,*早被应用于阻挡垃圾邮件。

在隐私**方面的技术,可回溯到1982年David Chaum提出注重隐私的密码学网路支付系统,具有不可追踪的特性,成为比特币区块链在隐私***上的雏形,之后David Chaum也基于这个理论打造出不可追踪的密码学网路支付系统eCash,不过eCash并非去中心化系统。

在区块链中每笔交易,采用椭圆曲线数位签章演算法(Elliptic Curve Digital Signature Algorithm,ECDSA),可追溯回1985年Neal Koblitz和Victor Miller分别提出椭圆曲线密码学(Elliptic curve cryptography,ECC),**将椭圆曲线用于密码学,建立公开金钥加密的演算法。相较于RSA演算法,采用ECC好处在于可以较短的金钥,达到相同的**强度。到了1992年,由Scott Vanstone等人提出ECDSA。

区块链*早源于比特币,但区块链的应用却不仅于此。

过去几年也陆续出现许多基于区块链技术的电子货币(统称为Altcoins),不过随着比特币持续备受争议,各国政府与金融机构纷纷表态,直到近1、2年,大家才终于意识到区块链的真实价值,远超过于电子货币系统。

区块链可结合认许制,以满足金融监管需求

若要将比特币与区块链技术分开来看,*大的不同之处在于,由于比特币为虚拟货币应用,因此面临各国法规的限制,但区块链现在已经可结合认许制或其他方式来管控节点,决定让哪些节点参与交易验证及存取所有的资料,并提供治理架构(Governance Structure)及商业逻辑(Business Logic)两大关键特性。

目前区块链可分为非实名制和实名制两种,前者如比特币区块链,后者如台大地的GCoin区块链。现在的区块链已经可结合认许制 (Permissioned),来配合金融监管所需的反洗钱 (AML) 与身份验证 (KYC) 规范。

而银行和金融机构想采用的都是实名制的区块链。

区块链演进4阶段

区块链技术随着比特币出现后,经历了几个不同的阶段,常见的分法将比特币视为Blockchain 1.0,为数位货币(Currency)应用,Blockchain 2.0开始出现如智慧资产(Smart Assets)、智慧契约(Smart Contracts)等货币以外的应用,Blockchain3.0则是指更复杂的智慧契约,将区块链用于政府、医疗、科学、文化与艺术等领域。

区块链新创DTCO执行长李亚鑫基于现有的分法进行补充,他认为,Blockchain 2.0以彩色币(Colored Coin)为代表,在区块链上运行Open Assets Protocal,可传递货币以外的数位资产,如股票、债券等。

而从Blockchain 2.0之后,可再分出一类属于Blockchain 2.5的应用,包括代币(货币桥)应用、分散式帐本(Distributed Ledgers)、资料层区块链(Data Layers Blockchain)、结合人工智慧(Artificial Intelligent),以及无交易所的国际汇款网路,以Ripple为代表,资料层、分散式储存则以Factom、MaidSafe为代表,Blockchain3.0则以Ethereum为代表。

他表示,Blockchain2.5跟Blockchain3.0*大的不同在于,3.0较强调是更复杂的智慧契约,以2.5则强调代币(货币桥)应用,如可用于金融领域联盟制区块链,如运行1:1的美元、日圆、欧元等法币数位化。

由于区块链协议几乎都是开源的,因此要取得区块链协议的原始码不是问题,重点是要找到好的区块链服务供应商,协助导入现有的系统。而银行或金融机构得对区块链有一定的了解,才能知道该如何选择,并应用于适合的业务情境。

去年金融科技(Fintech)才刚吹进台湾,没想到才过几个月,一股更强劲的区块链技术也开始在台引爆,全球金融产业可说是展现了****的决心,也让区块链迅速成为各界切入金融科技的关键领域。

尽管现在就像是区块链的战国时代,不过,以台湾来看,银行或金融机构要从理解并接受区块链,到找出一套大家都认可的区块链,且真正应用于交易上,恐怕还需要一段时间。

这次台湾只比国外晚了半年,引爆点可从台大释出一套自行开发的开源区块链协议GCoin,并宣布将成立金融科技暨区块链中心说起,短短一周的时间,便引发各界高度关注,接着研讨会不断,不过,由于区块链具有较高的技术门槛,大家都知道它拥有许多特性跟好处,但却迟迟处于观望阶段,就连台湾做区块链的新创业者,也非常**。银行业目前也还卡在门口,除了少数金控开始分享这个议题之外,多数金融业者仍处于试图理解技术面的阶段。

技术演进:区块链是怎么来的

》1982年

拜占庭将军问题

Leslie Lamport等人提出拜占庭将军问题(Byzantine Generals Problem),把军中各地**彼此取得共识、决定是否出兵的过程,延伸至运算领域,设法建立具容错性的分散式系统,即使部分节点失效仍可确保系统正常运行,可让多个基于零信任基础的节点达成共识,并确保资讯传递的一致性,而2008年出现的比特币区块链便解决了此问题。

David Chaum提出密码学网路支付系统

David Chaum提出注重隐私**的密码学网路支付系统,具有不可追踪的特性,成为之后比特币区块链在隐私***的雏形。

》1985年

椭圆曲线密码学

Neal Koblitz和Victor Miller分别提出椭圆曲线密码学(Elliptic Curve Cryptography,ECC),**将椭圆曲线用于密码学,建立公开金钥加密的演算法。相较于RSA演算法,采用ECC好处在于可用较短的金钥,达到相同的**强度。

》1990年

David Chaum基于先前理论打造出不可追踪的密码学网路支付系统,就是后来的eCash,不过eCash并非去中心化系统。

Leslie Lamport提出具高容错的一致性演算法Paxos。

》1991年

使用时间戳确保数位文件**

Stuart Haber与W. Scott Stornetta提出用时间戳确保数位文件**的协议,此概念之后被比特币区块链系统所采用。

》1992年

Scott Vanstone等人提出椭圆曲线数位签章演算法(Elliptic Curve Digital Signature Algorithm,ECDSA)

》1997年

Adam Back发明Hashcash技术

Adam Back发明Hashcash(杂凑现金),为一种工作量证明演算法(Proof of Work,POW),此演算法仰赖成本函数的不可逆特性,达到容易被验证,但很难被破解的特性, *早被应用于阻挡垃圾邮件。Hashcash之后成为比特币区块链所采用的关键技术之一。

Adam Back于2002年正式发表Hashcash论文。

》1998年

Wei Dai发表匿名的分散式电子现金系统B-money

Wei Dai发表匿名的分散式电子现金系统B-money,引入工作量证明机制,强调点对点交易和不可窜改特性。不过在B-money中,并未采用Adam Back提出的Hashcash演算法。Wei Dai的许多设计之后被比特币区块链所采用。

Nick Szabo发表Bit Gold

Nick Szabo发表去中心化的数位货币系统Bit Gold,参与者可贡献运算能力来解出加密谜题。

》2005年

可重复使用的工作量证明机制(RPOW)

Hal Finney提出可重复使用的工作量证明机制(Reusable Proofs of Work,RPOW),结合B-money与Adam Back提出的Hashcash演算法来创造密码学货币。

》2008年

Blockchain 1.0:加密货币

数位货币与支付系统去中心化

比特币

Satoshi Nakamoto(中本聪)发表一篇关于比特币的论文,描述一个点对点电子现金系统,能在不具信任的基础之上,建立一套去中心化的电子交易体系。

》2012年

Blockchain2.0:智慧资产、智慧契约

市场去中心化,可作货币以外的数位资产转移,如股票、债券。如Colored Coin便是基于比特币区块链的开源协议,可在比特币在区块链上发行多项资产

》2014年

Blockchain 3.0:更复杂的智慧契约

更复杂的智慧合约,将区块链用于政府、医疗、科学、文化与艺术等领域

》2016年

Blockchain 2.5:金融领域应用、资料层

Blockchain2.5:强调代币(货币桥)应用、分散式帐本、资料层区块链,及结合人工智慧等金融应用

Blockchain 3.0:更复杂的智慧契约

更复杂的智慧合约,将区块链用于政府、医疗、科学、文化与艺术等领域ithome

2.区块到底是什么?

区块链(Blockchain)顾名思义就像是由无数个区块(Block)所组成,这整个区块链就像是一个共享的分散式总帐,这些一个一个的区块到底是什么?如何让这些区块被串在一起,又如何确保它们无法被窜改?

每个区块的Block Header都会包含一组Previous Block Hash值,这是将前一个区块的Block Header进行Hash Function而得到的值,因此每个区块之间,都会藉由这个无形的链条与先前的区块环环相扣。

区块链(Blockchain)顾名思义就像是由无数个区块(Block)所组成,以比特币的区块链来说,目前已经产生超过40万个区块,这整个区块链就像是一个共享的分散式总帐,由多个参与比特币交易的运算节点来共同维护,每个节点也各自拥有一份完整的帐本备份(完整个区块链资料),而其中的每个区块,就像是帐本中的其中一页,记录好几笔不同的交易资讯,这些纪录都无法经由其中一个节点来窜改。不过,这只是个比喻,实际上,这些一个一个的区块到底是什么?如何让这些区块被串在一起,又如何确保它们无法被窜改,得先从分析每一个区块所包含的资讯说起。

在比特币区块链中,每一个区块(Block)所包含的资讯,包括区块的容量大小(Block Size)、区块头(Block Header)、该区块包含的交易数量(Transaction Counter),以及每一笔被包含在这个区块中的交易资讯(Transactions)。其中,这些交易资讯都是已经Hash过的值,而Block Header则是*重要的一个部分。

每个区块中的Block Header大小固定为80 Bytes,包含用来追踪区块链协议升级的版本号(Version),以及三组区块中继资料(Block Metadata)。

**组资料为固定32 Bytes的Hash值,从前一个区块中的Block Header所计算出来(Previous Block Header Hash),这么做可让每一个区块与前一个区块资料产生无形的连结,并能确保区块序列及历史纪录的正确性,这也是形成区块“链”*关键的连结。

实际产生的过程,则是当区块链网络中的其中一个节点完成工作量证明时,该节点会将这个新区块广播给其它节点,其他节点会进行验证,确认这个新区块的正确性及有效性,并将这个新区块接上区块链,这个过程就像是让这本大家共同维护的帐本资讯同步,此时,各个节点便会将这个新区块的Block Header进行Hash,得到的Hash值会被放进下一个产生的区块中,进行下一回合的工作量证明。

这么做可让这些被验证完的交易区块一个串接一个,形成区块链,一旦这个Hash值不正确,便会立刻被其他节点验证出来,也因此,让区块链具有无法轻易窜改的特性。

**组是与进行工作量证明相关的中继资料,由Difficulty Target、Timestamp及Nonce值所组成,Difficulty Target是在工作量证明演算法过程中,Nonce则用来表示工作量证明演算法进行的次数。这个困难值每2016个区块会调整一次。*后第三组则是用来汇整多笔交易纪录的资料结构Merkle Tree Root,这是一个由数笔被放进区块中的交易记录Hash值,经由Merkle Tree演算法所算出来的Hash值。ithome

3.区块链5大关键技术;

比特币区块链的关键核心技术,包括用Hashcash演算法来进行工作量证明,且交易过程采用椭圆曲线数位签章演算法来确保交易**,并在每笔交易与每个区块中使用多次Hash函数以及Merkle Tree,同时也使用时间戳来确保区块序列

比特币区块链的关键核心技术,包括采用Hashcash演算法来进行工作量证明,让区块链中的各节点有机会参与验证,达到公正性,且交易过程采用椭圆曲线数位签章演算法来确保交易**,并在每笔交易与每个区块中使用多次Hash函数以及Merkle Tree,不只是为了节省储存空间,更重要的是藉由将前一个区块的Hash值加入新区块中,让每个区块环环相扣,也因此做到所谓的可追踪且不可窜改的特性,同时也使用时间戳来确保区块序列,以下便依序解释这些关键技术。

关键技术 1

采用工作量证明达到去中心化及公正性

首先,*关键的便其工作量证明机制(Proof of Work,POW),这是一个可以让每个参与的节点可共同参与交易验证的方式,来实现一个能多方共同维护的单一系统,并共享同一份记录交易的帐本,以形成一个基于零信任基础,却能实现去中心化的P2P网路系统。

工作量证明是让任一运算节点,花费时间和运算资源来计算出一组数学公式的结果,且要完成一次有效的工作量证明,需经过一连串地尝试与失败。不过,一旦这个数值被算出来后,其他参与节点也可用相关的数学公式,便能很容易去验证这个值是否有效。

比特币区块链采用Hashcash演算法(杂凑现金演算法)作为工作量证明,让各节点经由POW计算来产生每一个有效的新区块,再经由其他节点验证并接受。

进行POW计算的过程也被称作挖矿,很多人用解一道数学题、或是解一个数独来形容,不过,怎样才是真的算出一个有效的新区块,这些节点到底在算什么?

由于每个区块中Block Header会包含许多固定的值,其中只有Nonce值为一随机值,因此每个节点进行POW计算时要算的就是,藉由不断替换这个Nonce值,来让这个区块的Block Header Hash值,小于一个被设定好的难度目标值(Difficulty Target),至于为什么要小于这个目标值,则是因为这个难度值意味着每个区块在理论上应该要被产生完成。

这里提到的难度值(Difficulty)是指,节点要运算出低于困难度目标值的Hash值,平均需花多久时间,也就是平均要完成一次POW的时间。而比特币区块链目前设定为,大约每10分钟会有节点成功算出新的区块,不过这10分钟只是基于理论值,实际每个新区块产生的时间,有可能只需要17秒(第407062个区块的实际产生时间),也有可能需要20分钟以上(第407068个区块的实际产生时间)。

Difficulty可动态调整,目前每产生2016个区块会调整一次难度,以每10分钟产生一区块估算,大约是每两周会调整一次Difficulty。 由于POW具有一定的难度,因此无法预期哪个运算节点可以*快算出新区块,藉此来确保交易验证的公正性。

关键技术 2

每笔交易采椭圆曲线数位签章演算法加密

比特币区块链便采用椭圆曲线数位签章演算法(ECDSA),与另一种RSA演算法,都属于公开金钥加密演算法(Public Key Cryptography),公开金钥加密技术在1970年代被发明,也称为双金钥密码**系统,每个使用者会拥有公开金钥(Public Key)与私密金钥(Private Key)这两把钥匙,公开金钥可让其他人知道,而私密金钥则只有本人知道。当A要传送一笔讯息或交易给B时,需使用B的公开金钥来将这份交易加密,而这这个加密过的讯息或交易,只有使用B的私密金钥才能解开。

在比特币区块链中,比特币区块链便采用椭圆曲线数位签章演算法,每一个比特币区块链中的节点使用者,会同时拥有这两把金钥,以及一次性使用的比特币位址(Address),公开金钥可让区块链网络中的其他人知道,而私密金钥则须自行保管,可用来接收货币、进行电子签章或是发送货币,而Address就像电子邮件一样可用来当作存取比特币的地址,使用者可重复取得新的Address,且可以在离线状态下产生,不过,每个Address只能使用一次。

在比特币区块链中,每一枚电子货币被视为一串数位签章,使用者要进行比特币交易时,必须将前一笔交易以及收款方的公开金钥经由Hash产生数位签章,加到电子货币那串数位签章的后方。

RSA 加密演算法是一种非对称的加密演算法,利用两个质数作为加密与解密用的两把钥匙,金钥长度约在40个位元到1024位元。不过比特币所采用的ECDSA能算出更短的金钥长度,也就是能够使用相对较少的资源,做到与RSA相同的**性。在ECDSA演算法中,由私密金钥算出公开金钥很容易,但要从公开金钥推回私密金钥却很困难。

关键技术 3

Hashcash演算法及多种Hash函数确保资料不被窜改

前面提到比特币区块链采用Hashcash演算法来进行工作量证明,Hashcash可将任意长度的资料经由Hash函数转换为一组固定长度的代码,原理是基于一种密码学上的单向杂凑函数 (One Way Hash Function),这种函数很容易被验证,但是却很难破解,还回推出原本的值。先前Hashcash演算法也被用来做阻挡垃圾邮件的机制。

常使用的单向杂凑函数包括MD5、SHA-1、SHA-256、SHA-384及SHA-512等,MD5的Hash值长度为128位元,虽然广为使用,但因长度不够较容易破解,SHA-1的Hash值长度有160位元,虽比MD5好但仍然不够**,因此美国国家**局(NSA)又提出多种更复杂的SHA- 2演算法,包括224、256、384、512位元长度的Hash值算法。

Hashcash*早在1997年由Adam Back提出,并于2002 正式发表一篇描述杂凑现金系统的论文。比特币区块链采用Hashcash来建立一套几乎无法被窜改的电子现金系统,每个区块的Block Header都会被Hash成一串很难被回推的代码后,放进下一个区块中,来确保区块的正确性。

关键技术 4

经由Merkle Tree将大量讯息缩短成一个Hash值

在比特币区块链中,每笔交易产生后,都已经被Hash成一段代码才广播给各节点,不过这样做还不够,因为在各节点的区块中,可能包含数百笔到数千笔的交易,因此,为节省储存空间并减少资源耗费,比特币区块链的设计原理采用Merkle Tree机制,让这些数百到数千笔的交易Hash值,经由两两一组形成一个新Hash值的方式,不断重复进行,直到*后产生一组*终的Hash值,也就是 Merkle Tree Root,这个*终的Hash值便会被记录到Block Header中,只有32 Bytes的大小。Merkle Tree机制可大幅减少资料传输量与运算资源消耗,验证时,只需验证这个Merkle Tree的Root值即可。

关键技术 5

用时间戳伺服器(Timestamp Server)确保区块序列

比特币采用时间戳伺服器机制(Timestamp Server),将每个区块Hash后加上一个时间戳(Timestamp)并发布出去,这个时间戳用来证明资料在特定时间的有效性,每一个时间戳章会与前一个戳章一起进行Hash,这个Hash值会在与下一个时间戳章进行Hash,因此而形成一个用来确保区块序列的链条。

ithome

4.区块链运作原理大剖析

为什么区块链被称作信任机器?将多种Hash函数、Merkle Tree,椭圆曲线数位签章、以及时间戳等技术结合Hashcash工作量证明,正是实现区块链的关键

区块链(Blockchain)显然已经被许多人神化,好像各行各业都可以用区块链技术,不过某种程度上,它却像个黑盒子,大家都知道区块链具有许多特性跟好处,却不清楚它到底怎么做到。

区块链并非单一**技术,而是将许多跨领域技术凑在一起,包括密码学、数学、演算法与经济模型,并结合点对点网路关系,利用数学基础就能建立信任效果,成为一个不需基于彼此信任基础、也不需仰赖单一中心化机构就能够运作的分散式系统,而比特币便是**个采用区块链技术而打造出的一套P2P电子现金系统,用来实现一个可去中心化,并确保交易**性、可追踪性的数位货币体系。

不过,区块链究竟是如何运作,其中又包含了哪些关键技术,使其被称作信任机器(Trust Machine),一笔交易到底要如何在一个彼此互不信任的P2P网路中,不经由传统的信任机构(如银行、证券交易所、第三方机构等中心化机构),就能完成交易验证?

要搞懂区块链运作原理,可先区分出交易(Transaction)与区块(Block)两个部分,这里我们分别从区块链中一笔交易产生到完成验证的流程,以及图解一个区块,来了解区块链的运作原理,并进一步拆解5大区块链关键技术,看它到底怎么做到大家口中的基于零信任基础、去中心化、可追踪又不可窜改。

从一笔交易看区块链运作流程

在比特币区块链中,当一笔交易经由某个节点或钱包产生时,这笔交易需要被传送给其它节点来作验证。做法是将交易资料经由数位签章加密并经由Hash函数得出一串代表此交易的**Hash值后,再将这个Hash值广播(Broadcast)给比特币区块链网络中的其它参与节点进行验证。

产生一笔新交易

一笔新交易产生时,会先被广播到区块链网络中的其它参与节点

各节点将数笔新交易放进区块

每个节点会将数笔未验证的交易Hash值收集到区块中,每个区块可以包含数百笔或上千笔交易

决定由谁来验证这些交易

各节点进行工作量证明的计算来决定谁可以验证交易,由*快算出结果的节点来验证交易,这就是取得共识的做法。

取得验证权的节点将区块广播给所有节点

*快完成POW的节点,会将自己的区块广播给其他节点

各节点验证并接上新区块

其他节点会确认这个区块所包含的交易是否有效,确认没被重复花费且具有效数位签章后,接受该区块,此时区块才正式接上区块链,无法再窜改资料。

交易验证完成

所有节点一旦接受该区块后,先前没算完POW工作的区块会失效,各节点会重新建立一个区块,继续下一回POW计算工作。ithome

你可能感兴趣: 业界新闻 图片 容错 医疗 金融
无觅相关文章插件,快速提升流量