【转】【区块链之技术进阶】扒一扒某乎上面对于区块链的理解(二)

摘要:在上一篇文章中,咱们扒了扒某乎上关于区块链技术的诸神的回答,并且从中选取了来自 COO 妹子的侧重于金融角度的理解,看了这么多,你是不是压抑不住内心的洪荒之力了呢?急于学习区块链,出任 CEO 呢?但是,技术呢?莫慌,本文就为你分享来自程序员妹子对区块链的理解。

在前面的一篇文章《【区块链之技术进阶】扒一扒某乎上面对于区块链的理解(一)》里,咱们通过镁铝 COO 妹纸(据说萌萌哒)从金融的角度(当然也带了些技术角度)为大家分享了关于区块链的理解,人家妹纸写的文章自带卖萌属性,以故事开头,并且以故事结尾,加上那张关于 “ 看上去屌炸了 の 工作原理 ” 的大图(这张图基本涵盖了区块链技术的所有技术要点,不知道大家有木有仔细看),介绍了创始块、区块、挖矿数学以及目标数、随机数等等这些概念,当然妹纸也以区块链行业从业者的角度告诉我们,区块链的研究目前还在瓶颈区,还有很多东西需要探索。

本文是【区块链之技术进阶】的第五篇文章,这篇文章咱们继续去扒一扒某乎上面关于区块链的讨论。本文选取的是来自一个程序员妹纸的回答(又是自带卖萌属性的),文章中还用到了 “ 岳母 ” 来类比矿工的 “ 挖矿 ” 工作,真是对单身汪造成一万点伤害。而且妹子会以图的形式为大家介绍什么是 “ 区块分叉 ” ,对了,还聊了 “ 共识攻击 ” 的概念,我理解的意思这基本就和公司股份的原理一样,超过 “ 51 %(相当于公司控股)就可以篡改数据了,但是随着区块链上的节点越来越多(这里涉及极限的思想),你总不能让大多数人都帮你撒谎吧(这就是区块链信任大多数人的原则)。好了不多说了,文章中有妹子一言不合就放的自拍 … 赶快去围观吧!

本文技术要点:

本文技术要点
本文技术要点

本文转载自 知乎,作者 玲珑邪僧

你们肯定想不到这种干货题我都能强势却又和谐圆润地融入自拍!

最近在研究区块链和比特币的相关技术,看到这道题就想着写点东西供大家参考。

如果哪里有说的不对的地方还希望前辈们多多指教。

前方多图多图多图

通俗一点地说,区块链是一个收录所有历史交易的总帐,每个区块中包含若干笔交易记录。如果说区块链是账本,那么区块就是账本的每一页。交易的细节都被记录在一个网络上任何人都可以看得到的公开账簿上。

公开账薄
公开账薄

区块就是很多交易数据的集合,它被标记上时间戳和之前一个区块的独特标记。有效的区块在获得全网络的共识认可以后会被追加到主区块链中。区块链是包含了交易信息的区块从后向前有序链接起来的数据结构。

在这里,我用比特币相关知识举个栗子解释一下。

在比特币领域中,存在 “ 矿工 ” 这样一个概念。矿工是指通过不断重复哈希运算来产生工作量的各个网络节点(每个节点都是路由、区块链数据库、挖矿、钱包服务的功能集合)。

矿工们需要竞争完成一种基于加密哈希算法的数学难题,答案存在于新的区块中,谁优先解出这个答案,谁就能在 P2P 网络中广播声明自己已经获得的这个区块,其他的矿工就会意识到在这局里已经输了,就会立马开始下一个区块的挖掘工作。每个矿工在他的区块中都有一笔特殊的交易,他们会将新生成的比特币(当前每块 25 个比特币,2016 年也就是今年减半)作为报酬,然后支付到自己的比特币地址中。一旦这个区块被认可被验证,也就是被添加到区块链中,他的这笔报酬就可以变为可用可消费的状态。

在比特币体系中,平均每十分钟就可以发现一个新的区块, 在完全去中心化的比特币网络中(即不受任何第三方控制),每个完整节点中独立自动发生难度调整,让新区块的产出速率维持在平均每十分钟一个。

一个 block 产生的产生时间 = 难度值 x 2^{32} / hashrate( hashrate 是每秒运算的 hash 数量)

难度值 difficulty = 最大目标值 / 当前目标值

我来拟人化地解释一下。

单身汪们要找女票,国民岳母说我有好多女儿,这样吧我给你们出点题目,解出一个就给其中一个姑娘的微信号。

单身汪们疯狂竞争,想破脑袋去解题。只要其中一只汪解出一道题,就立马得意洋洋地昭告天下,示威全部单身汪,这个姑娘是我的啦,你们放弃吧。其他单身汪们即使不服也没有办法,惆怅懊恼也不是个事儿啊,还是麻溜地立马去解下一道题目吧。这只喜赢姑娘的幸运小汪被岳母认可后还能得到 25 个货币单位的彩礼,简直人生赢家。

岳母会通过解题的速率去调整题目的难度,有时候吧,出的太难了,好久没小伙子有能力来上门提亲,她一寻思,这可不行,这女儿不能砸手里啊,得把题目难度降一点。有时候难度太简单,不到 10 个时间单位就嫁出去一个,这更不行,赶紧使用难度提升技能。对了今年就是 2016 年,岳母的礼金还会减半 …

.. 不闹了 .. 回到正题 ..

上面所描述的其实就是 “ 挖矿 ” 的概念

所谓挖到矿就是要猜到一个 nonce 值让该区块的哈希值小于一个会根据难度而线性调整的目标值,这也是所谓的工作量证明。简单一点说,就是重复计算区块头的哈希值,不断地改变随机数,直到符合相关要求的一个过程。

当节点创建一个候选区块的时候,那矿工就准备开始进行挖矿。矿机开始超高速运行 SHA256 算法,这些硬件会通过 USB 连接到挖矿节点的服务器上,然后挖矿节点会将区块头信息传给这些硬件,让它们进行非常高频的 nonce 测试。

当一笔交易被区块收录的时候,可以被认为是一次确认。在此区块之后每产生一个区块,此笔交易的确认数就再加一。当确认数目达到六次以上的时候,通常就能认为此笔交易是比较安全并且不可逆转的。那么现在,这笔交易已经在比特币网络上传播开,但只有通过验证且加到一个区块中的时候,这笔交易才能成为区块链的一部分。

新的交易不断地涌入比特币网络,当节点们看这些交易的时候,会将这些交易临时放到自己各自维护的一个临时的交易池中,当矿工创建出一个区块以后,便可以把这些交易从交易池中拿出放到这个新区块中,然后通过解决一个难度很大的问题去证明这个区块的合法性。

下图是我在 www.blockchain.com 网站上随机截取的一个区块

区块 #396237
区块 #396237

一般来说,个体矿工自己一个人独立进行挖矿在这样一个充满竞争的大环境中是几乎没有可以盈利的可能的。因为他们的算力让他们很难靠一己之力挖到区块去平衡他所付出的硬件设备费用及相关的电力费用。所以在这样的时候,他们会选择加入矿池。众多矿工组合成矿池,汇聚大家的算力,然后一起分享奖励。所以不出意外的话最后一行中间那个大的绿箭头后面的一串字符就是一个矿池的地址而非个人矿工的,该矿池获得了 25 个比特币的奖励,多的后面的零头是参与挖矿所得的交易手续费(如需了解比特币的交易手续费,请阅读比特币白皮书第六章 “ 激励 ” )。

现在我们点开那个收币地址,看一下里面的信息:

1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE

confirmation
confirmation

蓝色框的 51 Confirmations 就是说明这条交易已经被验证 51 次,当数目达到 120 次时,就证明这条交易成立。

你也可以在浏览器中打开这个地址来查询:

查询收币地址 1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE
查询收币地址 1CK6KHY6MHgYvmRQ4PAafKYDrg1ejbH1cE

小彩蛋

我们可以认识一下比特币领域的创世区块

创世区块
创世区块

右边是比特币创始人中本聪留下的一句话。

“ The Times 03/Jan/2009 Chancellor on brink of second bailout for banks ” 这句话正是泰晤士报当天的头版文章标题。

我们回到区块链。

上面我提到过,每个区块头都会进行 SHA256 哈希加密,生成一个哈希值,通过这个值,我们可以在区块链中识别出特定区块,并且每个区块头都还包含它的父区块的哈希值。

区块 #277316
区块 #277316

(图片来自《精通比特币》)

每一个子区块都只有一个父区块,但一个父区块可以暂时拥有很多子区块,这种情况被称为区块链分叉。只有当不同的矿工在同一时刻发现不同的区块时才会发生。这时解决的方法就是,每一个节点总是选择并尝试延长拥有最大工作量证明的(即最长的)区块链。

举个例子:

我们现在有一个区块链 - 蓝
我们现在有一个区块链 – 蓝

(图片来自《精通比特币》)

我们现在有一个区块链 – 蓝

位于 X 地区的矿工与位于 Y 地区的矿工同时发现了两个区块
位于 X 地区的矿工与位于 Y 地区的矿工同时发现了两个区块

(图片来自《精通比特币》,可爱的小姑娘来自我)

位于 X 地区的矿工与位于 Y 地区的矿工同时发现了两个区块。

我们假设:

矿工熊猫君 A 发现区块 – 红,

矿工兔子君 B 发现区块 – 绿。

当熊猫君 A 、兔子君 B 节点分别在比特币网络广播的时候,部分节点会先收到熊猫君 A 的广播,部分会先收到兔子君 B 的广播,然后分为两派阵营的节点会分别开始以他们接收到的区块作为父区块,进行深一步的挖矿活动(这里节点的地理意义指的是网络拓扑上的位置,而非真实的地理位置)。

区块链分叉
区块链分叉

(图片来自《精通比特币》,可爱的小姑娘来自我)

就在大家如火如荼地紧张解题的关键时刻,一个接收到兔子君 B 所广播的节点的兔子君 C ,优先发现了下一个区块 – 粉,也就是说绿色阵营的小兔子们的区块链可以进行下一步延伸,就会比红色阵营的小熊猫们的长度长,红色阵营小熊猫遗憾出局。这样的话分叉问题就得到了解决。

区块链分叉
区块链分叉

(图片来自《精通比特币》,可爱的小姑娘来自我)

这里我们需要提到一个名词,“ 共识攻击 ” 。一个很著名的场景就是 “ 51 % 攻击 ” 。如果一群矿工拥有了全网 51 % 的算力,那么只要他们联合起来就可以打击整个比特币网络。他们可以人为地去制造一个分叉的区块链实现双重支付,拿我们上文的例子举例,攻击者在区块 – 红中进行过了交易,结果他强行制造出区块 – 绿,并且在区块 – 绿中将原本的交易替换成另一笔交易(把原本应该打给卖家的钱打入自己同伙的钱包中),然后在区块 – 绿的基础上再计算一个区块 – 粉,这样包含伪造的区块的区块链就比包含真实交易的区块链高出一个高度。此时,包含双重支付的恶意区块链将取代真实区块链,从而实施诈骗。

51 % 的概念并不是说攻击者需要全网 51 % 的算力才能进行攻击,理论上来说不到 51 % 也是可以实现攻击的,我们只是说拥有超过 51 % 的算力的攻击几乎我们就可以判定它一定会成功(如需了解攻击者攻击成功的概率,请阅读比特币白皮书第十一章 “ 计算 ” )。

上面都是在比特币场景下进行的论述

那么在哪些领域里也会用到区块链技术呢?

1 . 银行业

作为一种数字化、安全防干扰的帐户,区块链实现了银行业的核心功能:即价值的安全储存和转移中心。也就是说,在将来的几年内,一波基于区块链技术的公司或将影响到银行业。

2 . 支付和转账

区块链技术能够避开繁杂的系统,在付款人和收款人之间创造更直接的付款流程,不管是境内转账还是跨境转账,这种方式都有着低价、迅速的特点,而且无需中间手续费( Ricky 注:比特币交易在某些情况下其实也是要支付手续费的,只是手续费的比例相对来说很少)。

3 . 网络安全

虽然区块链的系统是公开的,但其核验、发送等数据交流过程却采用了先进的加密技术。这种技术不仅确保了数据的正确来源,也确保了数据在中间过程不被人拦截。如果区块链技术的应用更为广泛,那么其遭受黑客袭击的概率也可能会下降,因此人们认为区块链系统要比传统系统更为稳妥。区块链系统之所以能降低传统网络安全的风险,一大原因就是它消除了中间人对其的影响。

4 . 选举

大家的投票 “ 绝不可能被我们 —— 即程序员,学校管理员或学生修改、删除。”

5 . 智能合同

智能合同实际上是在另一个物体的行动上发挥功能的电脑程序。和普通电脑程序一样,智能合同也是一种 “ 如果 – 然后 ” 功能,但区块链技术实现了这些 “ 合同 ” 的自动填写(执行),无需人工介入。这种合同最终可能会取代法律行业的核心业务,即在商业和民事领域起草和管理合同的业务。

6 . 股票交易

许多年来,各个公司都在想方设法简化股票的购买、销售和交易过程,新兴的区块链技术创企认为他们能够超越以往,实现整个流程的自动化,提高安全性和效率。

(参考来自互联网)

有国内互联网金融长期观察者说,“ 区块链目前的情况类似于 TCP / IP( 1969 年出现的技术,30 年后应用才全面盛开)或者 HTML 刚出来的时候找不到落地的应用,除了比特币外,缺乏杀手级应用,比特币只是区块链 1.0 ,而智能合约是 2.0 ,区块链的较高应用是对应到物联网,做到实时信用确权。”

我个人认为区块链技术是很有前景的领域,值得有兴趣的各位学习研究。

区块链被真正广泛运用还有一段很长的路要走,大家要做的,就是积累技术等待成熟时机的出现。

希望自己能够和大家多多交流 ~

写了好几个小时 … 希望通过我的回答能让更多人了解区块链 ~

下期预告

下期我们将分享【区块链之技术进阶】的第六篇,之前说的技术层面似乎总是离我们很远,咱们的下一篇文章就基于现实的技术来聊一聊对于区块链技术的理解,以 SQL 类比进行切入,是不是顿时感觉对于理解区块链有信心多了呢!

 

转自:

  • https://yq.aliyun.com/articles/60258
  • https://www.zhihu.com/question/27687960/answer/84583016
打赏 赞(0)
微信
支付宝
微信二维码图片

微信扫描二维码打赏

支付宝二维码图片

支付宝扫描二维码打赏

Was this article helpful?

Related Articles

Leave A Comment?

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据