定义1:区块链(Blockchain)技术是维护一个不断增长的数据记录的分布式数据库,这些数据通过密码学的技术和之前被写入的所有数据关联,使得第三方甚至是节点的拥有者难以篡改。区块(Block)包含有数据库中实际需要保存的数据,这些数据通过区块组织起来被写入数据库。

定义2:Hash算法:哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法。

哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映射到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。作为线性数据结构与表格和队列等相比,哈希表无疑是查找速度比较快的一种。

通过将单向数学函数(有时称为“哈希算法”)应用到任意数量的数据所得到的固定大小的结果。如果输入数据中有变化,则哈希也会发生变化。哈希可用于许多操作,包括身份验证和数字签名,也称为“消息摘要”。

简单解释:哈希(Hash)算法,即散列函数。它是一种单向密码体制,即它是一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。同时,哈希函数可以将任意长度的输入经过变化以后得到固定长度的输出。哈希函数的这种单向特征和输出数据长度固定的特征使得它可以生成消息或者数据。

举个例子,如果你输入一篇论文对并对其使用哈希函数运算得到一串固定长度的哈希值(计算结果),一旦别人抄袭或更改计算结果都会变化。而且哈希函数是不可逆的,这和普通函数有很大不同。

定义3:merkel树,

Merkle Tree是一种数据结构中所说的树,网上大都称为Merkle Hash Tree,这是因为它所构造的Merkle Tree的所有节点都是Hash值。

Merkle Tree具有以下特点:

1. 它是一种树,可以是二叉树,也可以多叉树。无论是几叉树,它都具有树结构的所有特点;

2. Merkle树的叶子节点上的Value,是由你指定的,这主要看你的设计了,如Merkle Hash Tree会将数据的Hash值作为叶子节点的值;

3. 非叶子节点的Value是根据它下面所有的叶子节点值按照一定的算法计算得出的。如Merkle Hash Tree的非叶子节点Value的计算方法是将该节点的所有子节点进行组合,然后对组合结果进行Hash计算所得出的Hash Value。

例如,下图就是一个Merkle Hash Tree形状,如果它是Merkle Hash Tree,则节点7的hash value必须是通过节点15、16上的value计算而得到。

目前在计算机领域,Merkle Tree大多用来进行比对以及验证处理。在处理比对或验证的应用场景中特别是在分布式环境下进行比对或验证时,Merkle Tree会大大减少数据的传输量以及计算的复杂度。例如,就拿上图举例,假如是 15,16.......30是一个个数据块的hash值,我把这些数据从A传输到B,并且在数据传输到B后,我想验证下传输到B上的数据的有效性型(验证数据是否在传输过程中发生变化),我只需要验证A和B上所构造的Merkle Tree的Root节点值是否一致即可。如果一致,表示数据是有效的,传输过程中没有发生改变。假如在传输过程中,15对应的数据被人篡改,通过Merkle Tree很容易定位找到(因为此时,节点0、1、3、7、15对应的Hash值都发生了变化),定位的时间复杂度为O(log(n))。

最后,我们来了解一下鼎鼎大名的比特币。著名的中本聪论文《比特币:一种点对点(Peer-to-Peer)的电子现金系统》中涉及了几个观点:

(论文下载地址:https://xueshu.glgoo.net/scholar?cluster=9372423383988544578&hl=zh-CN&as_sdt=0,5)

1. 去中心化、去中介化的可靠交易;

2. 反欺诈;

3. 基于密码学原理的电子交易凭证管理;

4. 分布式的时间戳服务器;

5. 足够的安全能力支持系统。

所以,我们可以把比特币理解为一个区块链技术的应用场景。

当区块链技术被发表后,很多人士认为有可能实现DAC。DAC,全称是Distributed Autonomous

Corporation,中文可以翻译为分布式自治系统。所谓DAC,就是通过一系列公开公正的规则、可以在无人干预和管理的情况下自主运行的组织系统。DAC的形态非常多,它可能是某种数字货币,也可能是一个系统或者实体机构,甚至可能是无人驾驶的汽车。作为企业,它们为客户提供有价值的服务,这种服务可以是货币传输(如比特币)、资产交易、域名服务,或者其他任意一种商业模式。

以下是分布式系统的四个突出特点:

1.没有强制性的中心控制;

2. 次级单位具有自治的特质;

3. 次级单位之间彼此高度连接;

4. 点对点间的影响通过网络形成了非线性因果关系。

通过以上介绍,我们大概能够了解区块链技术的概念,而区块链技术现有的应用场景基本如下:

1.存在性证明  :在互联网金融领域可以用于确权,因为区块链真的可以实现证明你妈是你妈。

2. 智能合约:  保证合约的有效性,如电子签名法所规定的生成、储存或者传递数据电文方法的可靠性;保持内容完整性方法的可靠性;用以鉴别发件人方法的可靠性;其他相关因素。

3.物联网  :区块链可以让物联网对物体的编码标准交互接口的问题得以解决。IBM认为区块链将在分布式网络中起到至关重要的作用,每一个设备都充当一个矿工,在网络上的节点之间传输数据。在IBM正在开发的被称为“Adept”的项目中,区块链在创建一个可行的分布式网络中起到了至关重要的作用。

4. 身份验证  :电子签名法所规定的电子签名制作数据用于电子签名时,属于电子签名人专有;签署时电子签名制作数据仅由电子签名人控制;签署后对电子签名的任何改动能够被发现;签署后对数据电文内容和形式的任何改动能够被发现;当事人也可以选择使用符合其约定的可靠条件的电子签名。

5. 预测市场  :股市预测社区Augur就是一个例子。任何人在世界任何地方都可以访问和使用的Augur,这可能给市场带来前所未有的流动性和交易量。

6. 资产交易  :Nasdaq OMX Group Inc正在测试区块链技术,纳斯达克认为该技术有机会让传统的金融交易方式变为和比特币类似的交易方式。

7. 电子商务  :比特币的模式直接套用就可以了,电商是不是有可能变成没有监管但是“和谐”的黑市?

8. 社交通讯  :Magma VC已经向去中心化社交通信应用初创项目GetGems(原名Gems)投资了40万美元。

9. 文件存储  :直接冲击甚至颠覆传统的云计算架构。

10. 数据API  :区块链API服务提供商Chain已经获得由Khosla Ventures领投的950万美元投资,投资者还包括Pantera Capital、Barry Silbert、RRE Ventures、SV Angel、Thrive Capital和500 Startups。华尔街的金融公司正在投资区块链、抢滩布局。Visa、纳斯达克、花旗风投也投资这家旧金山区块链初创公司Chain,涉及融资金额达到3000万美元。

从零开始学习区块链(1)相关推荐

  1. 小白从零开始学习区块链的个人笔记(一) 什么是区块链

    第一章 什么是区块链 1.1区块链的中心思想 去中心化,公开透明,共识,匿名等等 1.2区块链的起源与现状 a .区块链的起源 1.密码朋克的成立 1993年,埃里克 休斯发布<密码朋克宣言&g ...

  2. 使用Java语言从零开始创建区块链

    使用Java语言从零开始创建区块链 2018年04月01日 17:08:12 大侠区块链 阅读数:1312 标签: java区块链java区块链 更多 个人分类: 区块链 Java区块链开发与交流群: ...

  3. 怎么样才能更高效的学习区块链

    一.为什么选择区块链 选择区块链作为实践学习的案例,原因有三: 第一,区块链是我最近两三个月刚学习的领域,对我来说也是一门从零开始学习的领域,这样的学习案例最具有指导作用.因为时间没有隔太久,很多学习 ...

  4. 如何系统学习区块链技术-干货来袭

    区块链术涉及面很广,很多开发人员看了一些资料后,感觉似懂非懂. 如何系统的学习区块链技术,是很多想从事区块链开发的程序员的疑问,本文内容有点多,一次吸收不完可以收藏以后再用. 苦口婆心写在前面: 从事 ...

  5. 学习区块链的十大理由

    学习区块链的十大理由 技术发展迅速!如果你仍然在你的多维数据集中编辑Java代码或只是搞PowerBuilder,那么你可能只生活在过去.少数雇主的地方.现在的情况发生了很大变化.你需要领先一步,采用 ...

  6. Py:python利用easygui实现最简单GUI带你学习区块链技术的发展和由来

    Py:python利用easygui实现最简单GUI带你学习区块链技术的发展和由来 目录 输出结果 实现代码 输出结果 实现代码 # -*- coding: utf-8 -*- ''' Created ...

  7. 如何学习区块链技术?

    2018年春节最火热的概念应该就是区块链了,从百度的莱茨狗和网易星球刷屏朋友圈,到3点钟区块链无眠群的大火,大佬们纷纷进军区块链,不了解区块链好像错过一个时代. 这里把学习区块链过程中的一些资料进行索 ...

  8. 区块链报告会心得体会3000_学习区块链的心得体会?

    投资区块链的正确姿势 1.没搞清楚投资标的前不要投 要是没有搞清楚什么是区块链,又想参与一下,那就拿一点点真金白银来体验一下即可.面对一个新的区块链应用,笑来老师讲到了怎么去判断他的价值.这个区块链应 ...

  9. JAVA从零开始开发区块链技术

    课程目录 (1)\第一课:目录中文件数:26个 ├─(1) Java区块链开发(一).01.mp4 ├─(2) Java区块链开发(一).02.mp4 ├─(3) Java区块链开发(一).03.mp ...

  10. 零基础该如何学习区块链?

    区块链未来3到5年应该会出现行业井喷式发展,相应所需的人才必定水涨船高,每一个开发人员都不应该错过这样的机会. 区块链涉及的技术很多,很多开发人员看了一些资料后,感觉好像懂了,又好像没懂. 如何系统的 ...

最新文章

  1. Sundown EK:漏洞利用工具中的抄袭大师
  2. Python 基础教程:两个list合并成一个字典的两种方法
  3. 计算机基础综合实验项目报告模板,计算机基础实验报告模板.doc
  4. python编译过程和解释过程的不同_Python编译/解释过程
  5. 中国癌症大数据出来了!每年126万例癌症死亡本可避免
  6. 量子计算机对人类长寿,科学家称“极端长寿”在未来几十年可能会达到新的里程碑...
  7. Java EE 8 MVC:控制器的详细介绍
  8. dml语句包括哪些_聊聊MySQL基本操作DDL,DML,DQL,DCL
  9. 贪婪算法在求解最小生成树中的应用(JAVA)--Kruskal算法
  10. python字典程序题_急!一道关于python字典的编程题!求思路!
  11. excel和mysql php_php将mysql数据库和Excel相互导入和导出的方法
  12. (转)Spring Boot 2 (九):【重磅】Spring Boot 2.1.0 权威发布
  13. 3 万字 51 张图教你 CPU、内存、操作系统硬核知识!
  14. Script to show Active Distributed Transactions
  15. 怎么用c51语言写正弦波,单片机入门-C51语言用DAC0832实现正弦波的波形发生器第二节...
  16. windows_10_enterprise_ltsc_2019 X64纯净版(17763.2028)20216.23
  17. java ()括號_Java提取中括號中的內容
  18. AdGuard添加规则方法
  19. Github项目分享——tabby
  20. Excel同一单元格多数据如何求平均数

热门文章

  1. adblock android插件,adblock plus
  2. 使用openlayers投影阿伯斯(Albers)
  3. Appium下载和安装
  4. imx8mm yocto_bsp 编译
  5. 通过网易云api实现一个简单的音乐播放器
  6. 关于Polar SI9000重装/启动后卡在Frequency Dependent Calculation界面不能切换。
  7. 上传漏洞-一句话木马
  8. 软件质量保障之代码走查
  9. 本科毕设研究记录(一)————小样本综述
  10. SAP BAPI_SALESORDER_CREATEFROMDAT2 创建销售订单