区块链是什么,如何简单易懂地介绍区块链?

2018-03-12 14:32:39 知乎  点击量: 评论 (0)
特别提醒:比特币采用区块链技术,但是区块链并不等同于比特币;全篇基于比特币底层区块链技术讲述,所以,部分模型可能不适用于以太坊等。

此不信任的原则,他们拿过张衡路节点所谓挖到的区块(副本),开始校验区块内的小纸条信息是否真实有效等等。在区块链世界里,节点们正是通过校验小纸条信息的准确性,或间接或直接判断成功挖出区块的节点是否撒谎。(如何定义小纸条信息真实有效,后面会讲解,这里暂不做赘述)。

在校验过程中,各个节点们会直接通过下面两个行为表达自己对张衡路节点的认同(准确无误)和态度:

  • 停止已经进行了一半甚至 80%的挖矿进程;
  • 将张衡路节点成功挖出的区块(副本)追加到自己区块链的末尾。

你可以稍微有点困惑:停止可能已经执行了 80%的挖矿行为,那之前 80%的工作不是就白做了嘛?!然后,区块链的末尾又是个什么鬼东西?

对于第一个困惑。我想说,你说的一点没错,但是没办法,现实就是这么残酷,即便工作做了 80%,那也得放弃,这 80%的工作劳苦几乎可以视为无用功,绝对的伤财劳众。第二个困惑,区块链和区块链的末尾是什么鬼?这里因为事先并没有讲清楚,但是你可以简单想象一下:区块是周期性不断的产生和不断的被挖出来,一个计算机节点可能事先已经执行了 N 次“从别人手上拿过区块 -> 校验小纸条有效性”的流程,肯定在自己的节点上早已经存放了 N 个区块,这些区块会按照时间顺序整齐的一字排列成为一个链状。没错,这个链条,就是你一直以来认为的那个区块链。如果你还是不能够理解,没关系,文章后面还会有很多次机会深入研究。

# 走进区块内,探索消息的本质

上面我们构建了一个最简单的区块链世界的模型,相信大多数同学都已经轻松掌握了。但是别骄傲也别着急,这还只是一些皮毛中的皮毛,坐好,下面我们准备开车了。

前面我们说到“大概每十分钟会凭空产生一个神奇的区块,这个区块里放了一张小纸条,上面记录了这十分钟内产生的这唯一一笔交易信息”。显然,十分钟内产生的交易肯定远不止一条,可能是上万条,这上万条数据在区块链世界是如何组织和处理的呢?另外,为什么在纸条上记录的只是某一次的交易信息,而不是某一个人的余额?余额好像更符合我们现实世界的理解才对。

既然存在这样那样的疑问。现在我们就把视线暂时从“区块”、“区块链”这些看起来似乎较大实体的物质中移开,进入到区块内更微观的世界里一探究竟,看看小纸条到底是怎么一回事,它的产生以及它终其一生的使命:

  1. 发起交易的时候,发起人会收到一张小纸条,他需要将交易记录比如说“盗盗转账给张三 40 元”写在纸上。说来也神奇,当写完的那一刹那,在小纸条的背面会自动将这段交易记录格式化成至少包含了“输入值”和“输出值”这两个重要字段;“输入值”用于记录数字货币的有效来源,“输出值”记录着数字货币发往的对象。
  2. 刚刚创建的小纸条立马被标记成为“未确认”的小纸条。从地下成功挖出区块并最终连接到区块链里的小纸条一开始会被标记为“有效”。若这条有效的小纸条作为其他交易的输入值被使用,那么,这个有效的小纸条很快会被标记为“无效”。因为各种原因,区块从链上断开、丢弃,曾经这个区块内被标记为“有效”的小纸条会被重新标记为“未确认”。
  3. 区块链里面没有账户余额的概念,你真正拥有的数字资产实际上是一段交易信息;通过简单的加减法运算获知你数字钱包里的余额。

上面的 1、2、3 仅仅作为结论一开始强行灌输给你的知识点,其中有几个描述可能会有点绕,让你觉得云里雾里,没有关系,因为我们立刻、马上就开始会细说里面的细枝末节。

上图就是从无数打包进区块内的小纸条中,抽取出来的一张,以及它最终被格式化后的缩影。单看右侧的图可能很容易产生误会,虽然看起来有多行,但实际上就是“盗盗转账给张三 40 个比特币”这一条交易数据另外的一种呈现形态。因为区块链世界里面这么规定,每一条交易记录,必须有能力追溯到交易发起者 发起这笔交易、其中所涉及金额的上一笔全部交易信息;即这笔钱从何而来的问题。这其实很容易理解,在去中心化的网络中,通过建立交易链、和通过交易链上的可溯源性间接保证数据安全和有效。

我们继续看,在区块链世界里,我们是如何仅通过“盗盗转账给张三 40 个比特币” 这条交易信息完成转账流程的。其实跟现实中你在路边买一个包子的流程大抵上相同。

第一步:判断是否有足够的余额完成交易

这里我们再一次重申,区块链世界是没有余额的概念,余额是通过简单数字的加减最终获得,你拥有所谓的数字货币实际上是因为你拥一条交易记录,即 “盗盗转账给张三 40 个比特币”!这里,我们还是拿这条记录说事:

追溯“输出值”是“盗盗”相关的全部有效交易记录作为,对有效交易中的数字进行简单求和,判断是否大于等于 40,如果确实大于等于,则将这些有效的交易记录合并形成一条新的交易记录(如下图)。如果小于 40,其实可以不需要再继续往下探讨。

就上图的例子,我们追溯到曾经转账给盗盗的有效交易记录有“小 A 转账给盗盗 10 btc”、“小 B 转账给盗盗 20 btc”、“小 C 转账给盗盗 25 btc”,我们需要将这三条交易记录合并成一条更复杂描述的交易记录,即 “( 小 A 转账给盗盗 10 btc + 小 B 转账给盗盗 20 btc + 小 C 转账给盗盗 25 btc ) 转账给张三 40 btc ”

第二步:判断是否需要找零

对追溯到的有效交易数字求和,如果发现大于需要支付的金额,需要将多出的数字重新支付给自己,相当于找零。对应生成了一条全新的交易记录(如下图)。

就上图例子来说,我们最后合并成的交易记录 “( 小 A 转账给盗盗 10 btc + 小 B 转账给盗盗 20 btc + 小 C 转账给盗盗 25 btc + 盗盗转账给盗盗 15 btc ) 转账给张三 40 btc ” 事实上等同于“盗盗转账给张三 40 btc”。其中“盗盗转账给盗盗 15 btc”就可以理解找零。

第三步:发出去,让全球节点认同和备份小纸条

这条内部重新处理过的复杂交易记录被塞进区块,埋到地下,等待节点挖出来,一旦区块被挖矿成功,并且该区块最终被连在了区块链的主链上。张三将最终拥有了这条交易记录,而先前的“小 A 转账给盗盗 10 btc” 、“小 B 转账给盗盗 20 btc” 、“小 C 转账给盗盗 25 btc”都将被视为已经使用过的交易记录——从此被贴上“无效”的标签,意味着这些交易记录将永远不会再被追溯到。

我们最后一次重申,只是希望让你加深印象:拥有数字货币=拥有交易记录!

通过设计巧妙的精巧密码学保证数据安全

记录着交易信息的小纸条借助区块这个载体,在分布式的网络中以不同的轨迹错综复杂的传递,我们前面说了,你真正拥有的数字资产实际上是一段交易信息,而不是你常规意义上理解的货币。所以这个过程就需要重点解决两个问题:

  • 接受到的这条交易记录在传输过程没有被其他人所篡改
  • 接受到的这条交易记录确实是由发起交易的人所创造

在这里,我们需要事先引入两个知识点,可能稍微有点难消化,但都是计算机领域较为成熟的和基础的概念。

第一个知识点:Hash()函数。你只需要知道,任意长度的字符串、甚至文件体本身经过 Hash 函数工厂的加工,都会输出一个固定长度的字符串;同时,输入的字符串或者文件稍微做一丢丢的改动,Hash() 函数给出的输出结果都将发生翻天覆地的改变。注意,Hash()函数是公开的,任何人都能使用。

第二个知识点:非对称加密。你也只需要了解,任何人手里都有两把钥匙,其中一把只有自己知道,叫做“私钥”,以及一把可以公布于众,叫做“公钥”;通过私钥加密的信息,必须通过公钥才能解密,连自己的私钥也无解。公钥可以通过私钥生成多把。

有了这些知识点的加持,上面两个问题开始变得有解。下面我们来看下内部是如何扭转和工作的吧,这里拿“小 A 转账给了小 B 100 元钱” 举例:

  1. 第一步:小 A 会先用 Hash 函数对自己的小纸条进行处理,得到一个固定长度的字符串,这个字符串就等价于这张小纸条。
  2. 第二步:小 A 使用只有自己知道的那一把私钥,对上面固定长度的字符串进行再加密,生成一份名叫数字签名的字符串,这份数字签名能够充分证明是基于这张小纸条的。你可以这么理解,在现实中,你需要对某一份合同的签署,万一有人拿你曾经在其他地方留下的签名复制粘贴过来怎么办?!最好的办法,就是在你每一次签名的时候,故意在字迹当中留下一些同这份合同存在某种信息关联的小细节,通过对小细节的观察可以知道这个签名有
大云网官方微信售电那点事儿

责任编辑:售电衡衡

免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞