比特币 Bitcoin 与区块链技术

比特币可以说是大家耳熟能详的虚拟货币之一,其中背後所运用的技术核心为区块链,甚至有比特币造就了区块链一说。

不过也有人对此提出不同看法,认为区块链是从拜占庭将军问题衍伸而成的一个系统机制。

不论怎麽看,比特币与区块链技术,可说有着密不可分关系。

比特币创始人至今仍是一个谜,只知道它是一个名为中本聪的不具名作者,在 2008 年所创造了比特币这项专案,直到 2009 年时,才开始发布使用,而比特币运作原理,与拜占庭将军问题,还有区块链可说不知鸡生蛋,还是蛋生鸡。

比特币与拜占庭将军问题

比特币与拜占庭将军问题

要深入了解比特币前,势必要先理解一下什麽是拜占庭将军问题,会比较容易理解为什麽比特币这套系统,要进行这样子设计。

拜占庭将军问题是指,拜占庭将军率军出征,在包围城镇状态下,部队都四散各地,为了能够达到统一指令效果,因此使用投票方式来进行协议,票多者作为後续行动方针。

在传递这些投票讯息,多半由信使担任,但只要信使有叛徒,或将军本身是叛徒,那麽将可分裂大家行动结果,如假设各两个部队,分别要进攻与撤退,最後关键一票,势必左右全军动向,如果中间出现叛徒,便会发生告诉要进攻的两个部队要继续进攻,因为有三票是进攻,而对於撤退部队也如法炮制,这样便能让行动结果出现分歧,造成整个大部队四分五裂,达到破坏效果。

同理在一个分散式电脑系统,也有可能出现像拜占庭将军问题这样的情况,藉由故意传递错误讯息,造成系统瘫痪,或间接控制系统趋向某种结果,而比特币本身也是使用分散式系统,倘若出现这样的情况可在预料之内,毕竟只要有心人士恶意窜改了某些纪录,势必对整个系统造成不利影响。

比特币为了解决拜占庭将军问题,采用了工作量证明(Proof-of-Work)来解决,如此一来就能避免有心人士破坏,造成比特币区块链中的纪录遭到篡改,下面将介绍区块链运作原理,而区块链也可说为比特币运作核心。

区块链与比特币关系

区块链主要运作原理,核心技术是使用了分散式帐本技术(Distributed Ledger Technology)来达成。

什麽是分散式帐本技术呢?

可以想像成一家银行将所有完整的交易纪录帐本,分散出去给各个存户保管,假设有十万存户,这些存户每个人手上,所拥有帐本中纪录是一样的,大家彼此都可以透过帐本进行对帐,如果万一银行这本主要帐本不幸遭窜改,大家便可用手中的副本帐本来对帐,看一笔记录有问题。

区块链去中心化机制

可以发现区块链的分散式帐本技术,可以达到去中心化作用,而去中心化概念,可以想成我们原本都需要仰赖向银行这样的脚色,银行蒐集了客户所有交易纪录集於一身,而我们都只知道自己与自身相关交易对象纪录,倘若纪录没有及时到银行补摺,这中间若发生一些争议事件,如资料遭窜改、盗领,若中心端不认帐,可能会求助无门、死无对证。

因为有心人士只要将银行这个中心化脚色的防线攻破,便可为所欲为,尽管现在各种防御机制、资料备份...等相关措施都十分齐全,但倘若发生万一,纪录的资料要恢复原貌,便会花去不少时间,且追溯金流走向较为耗时。

而采用了去中心化机制的区块链,万一发生任何窜改事件,因为去中心化关系,尚有其它副本可供对照与追溯,如果要不被发现纪录遭到窜改,就得一次攻破这些副本,否则很快就会被察觉,这也就是区块链中,所谓具备了不可窜改之特性。

比特币透过区块链去中心化机制,在每个使用者交易纪录,遍布整个比特币网络情况下,想要透过修改交易纪录方式盗取比特币,可说相对不易。

区块链运作机制

区块链技术与比特币运作机制,可说息息相关,毕竟比特币技术核心就是区块链技术,而区块链技术的运作机制可分成三个部分,分别为区块、节点还有矿工,我们常说比特币挖矿,就是因为大家抢着担任了矿工这个脚色来牟利。

区块 (Blocks)

区块链之所以会这样称呼,就是因为它由区块所串接而成,而区块的内容物,包含了资料(Data)、随机数(Nonce)还有杂凑值(Hash),可想成当交易记录资料,在要保存至区块时,为了安全,会把资料上锁,而随机数与杂凑值,便分别扮演了钥匙与锁的脚色。

而想要解开这道锁,便需要寻找出正确随机数这把钥匙,才能查看区块中的资料,而锁的产生,则是根据当下区块资料,与前一个杂凑值这道锁,两者共同运算出来,倘若资料遭到窜改,势必也影响到後续杂凑值结果,杂凑值这道锁一改变,其原本的随机数这把钥匙,也就无法使用了,因此形成了连锁状态,触一发动全身。

节点 (Nodes)

而节点则通常作为一个区块链存放地点,日常生活中,电脑通常被用於当成节点的主要装置,当然只要能够连上网路,且拥有足够储存空间,基本上就能作为一个节点运作,节点主要用於接收整个区块链上的相关异动资讯,且副本越多,想要窜改整个区块链中交易资料也相对不易。

区块链节点又有许多种类,每一个种类也都分别扮演不同脚色,这边介绍常见两个节点类型,主要常见节点类型分为完整节点(Full Nodes)与轻量节点(Lightweight Nodes),完整节点在这个区块链分散式网络中,有如服务器脚色,主要用於与其它节点维持区块链网络中彼此共识,还有验证交易,并储存整个区块链作为副本。

而轻量节点则用於日常生活交易操作,且十分仰赖完整节点提供必要资讯,通常会询问完整节点,哪一个区块是最後的区块,并通知大家要开始进行交易流程,完整节点与轻量节点,两者所需要资源,与所扮演脚色并不相同,当然还有其它脚色节点,有兴趣朋友可自行参阅。

矿工 (Miners)

矿工在区块链中,是负责开疆辟土,创造区块的脚色,它们提供自身运算能力,为了取得所谓的「区块链帐本纪录权」,与取得後所发放的奖励,无不使出浑身解数运算,最後胜出者,便能获该区块链一定数量的虚拟货币做酬劳,随着虚拟货币对上现实货币价值水涨船高,也吸引了不少人投入当矿工的行列。

比特币挖矿

其实比特币挖矿,就是矿工利用区块链特性,寻找出区块中随机数这把钥匙,不过要找到这把钥匙十分不简单,因为钥匙与锁,光排列组合就高达了四十亿以上,且解开了一题,还有後面一题,直到最後全部解完,才能取得「区块链帐本纪录权」,这样的行为,就是一种工作量证明(Proof-of-Work)机制的应用。

而比特币会针对挖矿者多寡,调节挖矿难度,避免交易产生时,却没有区块可写入交易资料的窘境,如果想要窜改像比特币这种工作量证明机制的区块链资料,必须获得整个比特币网络运算量百分之五十一,才能获得多数节点承认运算结果,这样的代价十分高昂,通常不易实现。

比特币使用工作量证明缺点

可以发现,比特币使用了区块链技术作为後盾,再搭配工作量证明机制,可说让这一套加密货币在运作上,架构相对单纯且可靠,而且人人都可以投入挖矿行列,只要投入越多运算能力,相对可以获得报酬也就相对越高。

也因为比特币的这一点,所耗用运算能力越高,背後代表着消耗电力资源也越高,有人统计过比特币网路一年耗用能源,已经高於挪威,直追纽约州的用电量,无论是在环境生态、还是电力网路,可说一场浩劫。

此外也有技术专家针对比特币挖矿,设计了专用型晶片,针对比特币挖矿演算法,可有效提高运算能力,并藉此垄断比特币网络运算量,让其原本诉求去中心化设计理念背道而驰,反而经由这样垄断,发起 51% 攻击以修改资料,此外也有人为了提高获利,开发出特制携带型比特币挖矿装置,利用窃电方式,藉此牟利。

比特币对於世界贡献

其实各界对於比特币问世,可说褒贬不一,不过就比特币对於电脑科技在推动上,可说有着显贡献,特别是背後所运用的区块链技术,让後面许多加密货币,还有其它相关运用,如雨後春笋般冒出,也更促使金融资讯技术改革路上,向前迈进了一大步,可说功不可没。


<<:  Excel中Subtotal函数经典用法

>>:  Day31 参加职训(机器学习与资料分析工程师培训班),tf.keras & Pytorch

[Day12] 第十二章-完成注册API 修改route,controller,model(使用passport认证)

前言 昨天把passport套件安装完 今天试者把model,route,controller设定完...

Day19 - 写出更有品质的程序码,信 eslint 得永生

前言 俗话说:「一千个人,就有一千种程序码的写法」,而且我们身在 JavaScript 的世界中,一...

<新手复习向> <CSS学习第1集/>:{简单介绍与常见属性;}

CSS是啥? 全名为(Cascading Stylesheets),谷哥中文是阶层样式表,是一种风...

Day15 这什麽水平

Histogram 我们在看一组资料时常会以统计观点来评断,例如最大最小值、平均值、标准差等,以图...

Neo4j 综合应用 & 来读个 CSV 吧

前情提要 还记得第 16 篇的时候提过下面这个 嗯... 看到标题就知道,没东西写了呢,反正剩三篇就...