2017 年是比特币大爆发的一年。在潜水这么多年之后,比特币的价格一下子从 1000 美元左右飞涨至将近 20000 美元。多少人摇身一变,成了“密码学货币交易专家”。
赶上好时候确实可以狠赚一笔,不过醒醒吧,盛宴已散。
尽管让人们肾上腺素爆棚的主要还是飞速攀升的市值,但这波热潮最初还是由技术掀起的。区块链技术依然有巨大潜力。现在正是业务开发人员、企业家和个人爱好者怀着一腔热血上车的时候。不过热血翻涌之余,首先还是应该增进一下对区块链技术的了解。
只可惜,目前讲解区块链技术的文章不是涉及太多复杂的技术术语,就是太过肤浅,缺乏深度。这两种类型的文章都不便于读者清楚地理解文章内容。怎么办呢建议你不妨就从这篇文章开始。只要 10 分钟,就能了解区块链技术为什么这么具有颠覆性了。花这点时间还是物超所值的。祝阅读愉快。
引言
首先,区块链是一种电子化数据的存储方法。数据是以区块的形式出现的,想象一下有很多存储着数字化数据的区块。这些区块都链接在了一起,为其内部数据赋予了不可变性。当一个数据块被链接到了这条链上,其内部数据就再也无法更改了。一旦某个区块被添加到了链上,里面的数据对任何人都是公开可见的。这项技术具有非凡的革新意义,可以用来记录我们能想到的几乎所有数据(例如,产权、身份、余额、病历等等),同时不存在被篡改记录的风险。假设我买了一套房子,把产权证拍照上传到了区块链上,我就可以证明我在那个时刻享有这套房产的所有权。一旦这个信息上链,就没人能够更改它(好吧,还是有办法更改的,这里有一篇进阶阅读材料,我建议你稍后阅读)。因此,区块链是一种存储数据且保证数据不被篡改的方法。这听上去不错,不过随之而来的问题是: 我们是怎么实现这样的技术的/p>
第一阶——交易数据
24 日,已经积累了 57.3 万个区块,总数据量约 250 GB。)
第二阶——(通过哈希运算)链接区块
想象有三个存储着交易数据的区块(如图一所示)。
这三个区块内都存有一些交易数据。这没什么特别的。就好比是三个独立的 word 文档,里面描述了交易的内容和余额变化情况。文档 1 会按照时间顺序从第一笔交易开始记录,直到数据量达到 1 MB 为止,之后的交易会记录在文档 2 中,直到数据量达到 1 MB 为止,以此类推。这些文档就是数据块。它们一个接着一个联系(链接)在一起。为此,每个区块会根据其内部数据串生成一个特殊的(数字)签名。如果这个区块中的数据发生任何变动,即使只改变了一个数字,这个区块的签名也会发生改变。这是如何实现的知详情,请阅读步骤三中的 哈希运算 部分。
假设区块 1 中记录了两笔交易,分别是交易 1 和交易 2 。这两笔交易的总数据量达到了 1 MB (实际上一个区块中包含的交易笔数远不止这点)。根据这个区块内的数据串会生成一个签名。假设这个签名是 “X32” 。如下图所示:
请记住,即使区块 1 中存储的数据改动了一个数字,也会得到一个完全 不同的签名 !只要将区块 1 的签名添加到区块 2 中,就可以将区块 1 的数据与区块 2 关联起来。区块 1 的签名也包含在区块 2 的数据串内,因此这个签名与区块 2 中的其它数据一样,成了区块 2 签名的数据基础。如下图所示:
正是这些签名将区块链接在了一起,形成了一条区块链。现在加上区块 3 ,整条链的情况如下图所示:
现在,假设区块 1 中的数据被 更改 了。比方说 Damian 和 George 之间的交易被更改了。Damian 向 George 发送了 500 个而非 100 个比特币。由于区块 1 中的数据串改变了,其签名也相应改变了。更改过数据之后,区块 1 的签名不再是 “X32” ,而是变成了 “W10” ,如下图所示:
-请访问 r/BlockchainSchool 查看更多关于区块链的科普知识-
这样一来,区块 1 的新签名 “W10” 跟之前添加进区块 2 数据串的旧签名 “X32” 产生了冲突。区块 1 和区块 2 之间的链接就断了。这条链上的其他用户就会知道区块 1 中的数据被更改了。为了维护区块链的不可变性,其他用户会拒绝同步更改后的交易信息,依旧维持原有的交易记录(即 Damian 向 George 发送 100 BTC )不变,整条链依旧保持完整。这就意味着,要想不露痕迹地篡改交易,必须将区块 2 数据串中区块 1 的旧签名替换成新签名。然而,一旦区块 2 中的数据串发生变化,区块 2 的签名也会随之发生变化。假设区块 2 的签名从 “9BZ” 变成了“PP4” 。那么区块 2 和区块 3 之间的链接就断了!
区块链上的区块对所有人都是可见的。因此,如果篡改者真想要不露痕迹地篡改交易,就必须保证篡改之后的区块仍然都联系在一起(否则人们就很容易发现哪个区块跟其他区块并不相连,进而判断出该区块已经被改过了)。也就是说,改掉一个区块必须为后续的所有区块计算新的签名。可以认为这几乎是不可能的,但要理解这是为什么,请看下文。
第三阶——生成签名(哈希值)
那么,我们以区块 1 为例再画一个示意图。假设区块 1 只记录一笔交易,即 Thomas 向 David 发送 100 BTC 。需要根据这个数据串生成一个签名。在区块链上,这个签名是通过密码学哈希函数生成的。密码学哈希函数是一个极其复杂的数学公式:将任意数据串作为输入值代入公式,可以得到一个独一无二的 64 位输出值。例如,你可以将 “Jinglebells” 一词代入这个哈希函数(哈希函数的种类有很多,这只是其中一例),得到的输出为:
761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868
只要这个输入中有一个字符发生变化,包括改变大小写或是增加空格和标点,就会得到截然不同的输出。如果你在这个输入后面加上一个句 变成了“Jinglebells.”,得到的输出就变成了:
B9B324E2F987CDE8819C051327966DD4071ED72D998E0019981040958FEC291B
如果我们把句 去掉,还是能得到跟之前一样的输入:
761A7DD9CAFE34C7CDE6C1270E17F773025A61E511A56F700D415F0D3E199868
对于同一个密码学哈希函数来说,相同的输入必定会得到相同的输出,不同的输入必定会得到不同的输出。比特币区块链就是利用哈希函数为区块生成签名的,将区块中的数据作为输入,得到的输出就是区块的签名。我们再来看看只含有一笔交易( Thomas 向 David 发送 100 BTC )的区块 1 示意图。
假设区块 1 中的 数据串 如下所示:
Block 1 Thomas -100 David +100
将这个数据串输入哈希函数,得到的输出(签名)如下所示:
BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF
这个签名会被添加进区块 2 的中。再假设现在 David 向 Jimi 转了 100 BTC ,这笔交易被打包进了区块 2 。那么如下图所示:
区块 2 的数据串如下所示:
Block 2 David -100 Jimi +100 BAB5924FC47BBA57F4615230DDBC5675A81AB29E2E0FF85D0C0AD1C1ACA05BFF
将这个数据串输入哈希函数,得到的输出(签名)如下所示:
25D8BE2650D7BC095D3712B14136608E096F060E32CEC7322D22E82EA526A3E5
这就是区块 2 的签名。每一个区块都会通过这个密码学哈希函数生成一个数字签名。哈希函数种类繁多,比特币区块链用的是 SHA-256 哈希算法。
但是,(仅有上述措施显然还不够)如果有人想篡改区块中的数据,TA 可以在篡改之后生成新的签名,塞下一个区块中,然后逐个逐个区块生成新的签名,这些改动后的区块还是形成了一条链,他人就没法分辨出数据已经被更改过了。如何防止这种情形呢/p>
答案是只有符合特定要求的哈希值(签名)才会被区块链接受。这就是第四阶中介绍的挖矿。
第五阶——区块链的不可变性是如何是实现的/h2>
正如第三阶中所述,更改某个区块会导致它的签名改变,与后续区块记录的对不上,从而与后面的区块断开链接。要想让 络中的其他参与者接受这个被更改过的区块,就要把它跟后面的区块重新链接起来。也就是说,一个区块的签名变了,跟在它后面的所有区块的签名都要改变,才能让别人觉得这是一条前后一致的链。
你想起什么事没有/p>
如第四节所述,签名必须符合要求!虽然更改所有区块的签名看似可行,但是要花费很多成本和时间,因此被认为是不可能的,原因如下:
假设有一个矿工 恶意 篡改了某个区块内的交易,然后根据哈希运算为这个区块连同跟在它后面的所有区块生成了新的签名,以此让 络中的其他参与者都接受被篡改过的交易。问题在于, 络中的其他矿工也在原来的链上不断为新的区块计算签名。随着新的区块不断上链,作恶的矿工也要重新计算这些区块的签名。他必须保证所有区块都链接在一起,包括不断被添加到链上的新区块。除非这个矿工拥有的算力超过全 其他人的总算力,否则他永远赶超不了其他矿工。
如今有数百万用户在比特币区块链上挖矿,由此可以推定某个恶意参与者或实体的算力是不可能超过全 剩余算力的。这就意味着 络中的其他参与者不可能接受任何对区块链的修改,从而实现了区块链的不可变性。一旦数据被添加到区块链上,就无法再修改了。
只有一种例外,就是恶意参与者的算力真的超过全 其他人的算力总和。从理论上来说,这种情况下是有可能篡改区块链的(即改变大家共同认可的历史记录)。这就叫做 51% 攻击(我写了另一篇文章来解释这种情形),过去也有很多区块链遭受过这种攻击。
实际上,对比特币区块链发动 51% 攻击所能获得的收益远抵不上高昂的攻击成本。要想获得足够多的算力,除了要负担硬件、冷却设备和存储空间方面的成本,还要承担被千夫所指的风险,更重要的是,会对被攻击区块链的生态系统造成极大的损害,攻击所得的收益也会大幅贬值。51% 攻击实际上就是以一己之力对抗区块链上的其他用户。这也就是为何参与挖矿的用户人数越多,整条链的安全性就越高。
恭喜你已经又进了一阶!现在,你应该已经理解(大型)区块链被认为具有不可更改性的原因了吧。不过现在又出现一个很重要的问题:如何防止矿工将伪造的交易数据添加到区块链上技术上来说是做不到的。关于区块链交易的详细解释可参见这篇文章。
第七阶——这些对密码学货币有何意义/h2>
密码学货币从本质上来说都是比特币的变体。绝大多数加密货币都是按照自己的区块链协议搭建的,遵循不同于比特币的规则。比特币应当被归类为一种货币,也就是说它明确具备货币功能。门罗币也是一种具有相同功能的加密货币,不过它的区块链协议还增加了一些规则来增强隐私性(提高交易溯源的难度)。
不过,用区块链发行的资产可以被赋予很多种不同的用途,这点由发行方决定,如此发行的资产一般被称为“代币”。这些代币可以赋予其所有人某种权利,例如博彩执照、 交媒体渠道、 水电等等。所有这些资产交易都记录在不同的区块链上,并且可以通过币安之类的交易所进行线上交易。
代币其实是一种新型互联 货币,可能会影响到一部分行业,其中一个典型的例子就是股票市场。在未来,公司股份之类的产权很有可能会以代币的形式存储到区块链上。区块链不仅限于以代币的形式代表实物价值,也可以安全地记录病历、身份、历史记录、纳税记录等数据。这就是区块链技术的伟大之处,还不提区块链的另一个重要特性:去中心化。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!