究竟什么是区块链?带你亲手用代码进行实践

本期内容比较多,包含这篇主文章内容及两篇链接内容,花了不少时间整理,也希望你能有耐心仔细读完。

这期文章接着我们上一期《技术人该如何抓住区块链这个机会?》内容,进一步学习我们区块链的核心内容。在动手实践之前,咱们先别急,我们先花点时间搞明白区块链中最基本的一些概念,后面再进行编码时,你才能豁然开朗。

一、区块链的分类:

区块链可以分为公有链、私有链及联盟链,公有链一般是指类似比特币、以太坊、EOS底层这样的公有节点。私有链一般是指本地开发时搭建的开发节点,或者公司内部搭建的测试节点。而联盟链一般是指Fabric、R3联盟、EEA(以太坊企业联盟)、阳光链这样的组织搭建的区块链节点。

二、解决的问题:

其实区块链核心解决的是“价值传递问题”,什么是价值传递问题?可以用以下三张图来帮助我们理解。

在物理世界里,价值的转移其实很简单,甲购买了乙的产品,甲直接从口袋里掏出现金给到乙,交易算是完成。

而在互联网世界里,甲与乙发生交易时,必须有一个可信任的中介来参加到交易过程,比如我们都熟知的各大银行、第三方支付平台等就充当了这样的一个中间角色,而这样的角色天生就是中心化的,所有用户账本及交易数据的管理权都在这个中介组织的手里,对用户来说存在很多安全、隐私等风险(某些银行卖客户数据应该是不争的实时),同时也给交易过程带来一定的附加的交易成本(收取一些手续费,到账时间慢)。

接着,看我们的第三张图,在区块链的世界里,去掉了中心化的组织,取而代之是这种点对点的交易模式,交易完成后系统将快速广播,将数据发送给周围的其他节点进行同步,这样每个人手里都有一份完整的交易记录数据,这也正是现在数字货币发展意义的所在。

三、特点总结:

总的来说,区块链核心就是一种特殊的分布式数据库,且没有中心节点,没有管理员,所有节点自动同步,从而达到全民记账的目的。其次是区块链中的数据是无法篡改的(注意:但不代表真实),所谓的链其实就是把所有的点串成线,从而又达到可追溯的目的。

四、架构模型:

区块链一般可以认为由以下6层架构组成,分别是:

1、应用层;

2、合约层;

3、激励层;

4、共识层;

5、网络层;

6、数据层;

其中数据层、网络层、共识层一般是区块链必须包含,具体每一层的作用不详细在本文阐述,大家感兴趣可以跳转到《

区块链的架构模型介绍

》一文中详细了解,今天我们重点讲解数据层相关知识。

五、数据层概念:

讲到数据层,必须给大家说清楚的是区块链的几个重要概念:链式结构、区块、hash函数。首先,区块链其实就是由一根长长的链式结构模型组成,链式结构中其实就包括一个一个的区块,区块又是由区块头及区块体组成,而区块头主要是存储了父区块的hash值,区块体存储的就是关键数据。区块与区块间之所以能连接起来,主要是靠区块头中的父hash值进行串联,所以hash函数很关键,下面当独拿出来说。

六、Hash函数:

所谓的hash函数,其实就是一种算法,好的hash函数,他能将任意长度的二进制数据,映射为固定长度的二进制数据的这么一个算法,hash函数可以总结为有如下特点:

1、确定性;(无论计算多少次,都能得到相同的值)

2、单向性;(不可反推)

3、隐秘性;(抗暴力破解)

4、抗篡改;(改动一个数据中的比特位,其Hash值变化很大)

5、抗碰撞;(对不同数据块,其Hash值相同的可能性极小)

常见的Hash算法目前有MD系列及SHA系列两大类,由于目前计算机的计算能力不断增强,我们所熟知的MD5算法

的破解也不算是特别困难了,SHA系列目前比较推荐的是SHA256、SHA512和SHA3这几类。

讲到这里,相信大家已经略知一二了,其实总而言之,区块链底层就是由一条链式结构再加上一个很牛逼的hash函数构成,所以,后面我们就以以上所讲的内容进行动手实践。

七、使用GO语言进行编程实践

请阅读《使用GO语言进行区块链的编程实践》。

好了,本期内容就是这么多,希望能够帮助到您,感谢您能读到最后,如果觉得内容不错,请您点赞转发给予鼓励,咱们下期再见。

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

扫码关注腾讯云开发者

领取腾讯云代金券