首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链到底是怎么工作的?我们一起来创建一个试试看

区块链在维基百科上是这样被定义的:区块链是一个分布式数据库,用于维护不断增加的记录列表(称为区块)。

这个解释听起来并不像想象中那么晦涩难懂。但,它究竟是什么样的,又是如何运作的呢?

为了清晰的展示一个“区块链”我们将会使用一个叫做“Blockchan CLI”的开源编码工具。于此同时,我也开发了一个基于浏览器应用的版本供大家参考使用。

先不要被这些技术细节吓到,即使你不是一个专业的“程序猿”,你只是“入门级”的新手或者单纯的对区块链技术感兴趣,你也可以通过以下的展示,看到这项技术的本质,让你对它有更进一步的理解。

首先我们要安装上面提到的开发软件,大功告成之后,运行终端,你会看到这样一句话:

接下来我们来看看一个“区块”长什么样子?

首先你要在命令提示符后输入blockchain或者bc,紧接着你就会看到以下画面。

这就是一个Block

下面我们来科普下这些字眼都是什么意思。

❶ Index (Block #)编号:这是哪一个区块?(这个命名为Genesis的区块的编号就是)

❷ Hash函数:简单的理解就是接受一段数据作为输入,然后生成一串数据作为输出,来判断这个区块是否有效

❸ Previous Hash:前一个区块是否有效?

❹ Timestamp:这个区块是什么时间创建的

❺ Data:这个区块里储存了什么样的数据

❻ Nonce:需要运行多少次算法循环(迭代)才能定位这个区块

在我们的的示例中,所有新建的区块链都会以为开端。我们都知道,每一个新产生的区块都是基于上一个区块的,所以这个Genesis是第一个我们要“挖”的块。

什么是“挖”呢?期间究竟发生了什么?

接下来就让我们开始吧。在命令提示符后输入mine IloveHuer♥。

就像我们在之前提到的,当前的区块都是基于上一个区块而建立的。这个例子中,我们着手开始的区块就是命名Genesis的这个Block。

❶ Index:o+1 = 1

❸ Timestamp:区块被添加的时间

❹ Data:IloveHuer♥

❺ Hash:??

❻ Nonce:??

到这里我们就又回产生一个疑问,我们正在创建的这个区块的Hash值是怎么得到的呢?我们简单的看下。Hash值的定义:它是用来标识数据,唯一的且有固定长度的数值。Hash函数会把Index,前一个区块的Hash值及以上述所列出的所有数据作为输入值,计算后的出新的Hash值。得到的Hash值都是唯一的,并且相同的输入值只会得到同一个Hash值。

此时你还会注意到Hash值还有一个特点,就是开头都至少有四个,不用深入理解,这也被称作我们都熟悉的POW系统。

紧接着我们再来解释下什么是nonce。

通俗点说,nonce就是一个数字,它表示在寻找到下一个有效的区块Hash值所需运行算法的次数。这个计算nonce值的算法过程就是我们所说的“挖”:寻找一个有效的区块,并进行确认。

以下代(字)码(母)就代表一个简单的“挖”的过程,当然实际的操作和算法会复杂的多,同时还要强大的处理器来运行所有的代码。

所有成功“挖”到的人都会获得一定数量的比特币或者佣金作为奖励,他们在维护区块链安全和功能的同时,也获得了报酬。

最后我们来解释下为什么区块链这样运作的机制的意义。

这样的原理机制保证了区块链的不可复制和随意篡改的特性。

比如,我们现在有以下区块链A→B→C,如果有人试图修改在A上的数据,那么会有以下连锁反应:

1.区块A上的数据发生改变;

2.区块A的Hash值发生变化,因为录入值data一项发生了改变;

3.此时,A的Hash值会因为输入数据被篡改,Hash值失去开端的“几个0”,区块A变无效;

4.区块B的Hash值发生变化,因为A的Hash值曾用来计算B;

5.区块B变无效;

6.同理,区块C Hash值发生变化;

7.区块C变无效。

写到这里,相信大多数人对区块链的原理技术会有一个大致的了解了。大家不需要都懂编程或过分纠结一些专业词汇,明白其中的大致原理即可。当然有钻研探究精神的同学也可以多了解多尝试。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180411G1MZN900?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券