本文摘自与JAVA编程公众号!!!!

每条大街小巷,每个人的嘴里,见面第一句话,就是区块链~区块链,

最近区块链非常火,关注度和曝光度持续上升,国内众多巨头公司纷纷张开双臂拥抱,把区块链当做互联网时代的伟大颠覆性创新,一窝蜂研究怎样把区块链变成自己抢占商业先机的工具。

那什么是区块链呢?下面将介绍

什么是区块链?

区块链,英文 Blockchain,本质上是一种去中心化的分布式数据库。任何人只要架设自己的服务器,接入区块链网络,都可以成为这个庞大网络的一个节点

区块链既然本质是数据库,里面究竟存储了什么东西呢?让我们来了解一下区块链的基本单元:区块(Block)

一个区块分为两大部分:

1.区块头
区块头里面存储着区块的头信息,包含上一个区块的哈希值(PreHash),本区块体的哈希值(Hash),以及时间戳(TimeStamp)等等。

2.区块体
区块体存储着这个区块的详细数据(Data),这个数据包含若干行记录,可以是交易信息,也可以是其他某种信息。

刚才提及的哈希值又是什么意思呢?

想必大家都听说过MD5,MD5就是典型的哈希算法,可以把一串任意长度的明文转化成一串固定长度(128bit)的字符串,这个字符串就是哈希值。

而在我们的区块链中,采用的是一种更为复杂的哈希算法,叫做SHA256。最新的数据信息(比如交易记录)经过一系列复杂的计算,最终会通过这个哈希算法转化成了长度为256bit的哈希值字符串,也就是区块头当中的Hash,格式如下:

a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0

区块与Hash是一一对应的,Hash可以当做是区块的唯一标识。

不同的区块之间是如何进行关联的呢?依靠Hash和PreHash来关联。每一个区块的PreHash和前一个区块的Hash值是相等的。



什么是挖矿?

为什么要计算区块的哈希值呢?

既然区块链是一个链状结构,就必然存在链条的头节点(第一个区块)和尾节点(最后一个区块)。一旦有人计算出区块链最新数据信息的哈希值,相当于对最新的交易记录进行打包,新的区块会被创建出来,衔接在区块链的末尾。

新区块头的Hash就是刚刚计算出的哈希值,PreHash等于上一个区块的Hash。区块体的Data存储的是打包前的交易记录,这部分数据信息已经变得不可修改。

这个计算Hash值,创建新区块的过程就叫做挖矿

用于进行海量计算的服务器,叫做矿机

操作计算的工作人员,叫做矿工

计算哈希值究竟难在哪里?咱们来做一个最粗浅的解释,哈希值计算的公式如下:

Hash = SHA-256(最后一个区块的Hash + 新区块基本信息 + 交易记录信息 + 随机数)

其中,交易记录信息也是一串哈希值,它的计算涉及到一个数据结构 Merkle Tree。有兴趣的小伙伴可以查阅相关资料,我们暂时不做展开介绍。

这里关键的计算难点在于随机数的生成。猥琐的区块链发明者为了增大Hash的计算难度,要求Hash结果的前72bit必须都是0,这个几率实在是太小太小。

由于(最后一个区块的Hash + 新区块基本信息 + 交易记录信息)是固定的,所以能否获得符合要求的Hash,完全取决于随机数的值。挖矿者必须经过海量计算,反复生成随机数进行“撞大运”一般的尝试,才有可能得到正确的Hash,从而挖矿成功。

同时,区块头内还包含着一个动态的难度系数,当全世界的硬件计算能力越来越快的时候,区块链的难度系数也会水涨船高,使得全网平均每10分钟才能产生出一个新区块。

小伙伴们明白挖矿有多么难了吧?需要补充的是,不同的区块链应用在细节上是不同的,这里所描述的挖矿规则是以比特币为例。

区块链的应用

比特币(BitCoin)的概念最初由中本聪于2008年提出,而后根据这一思路设计发布了开源软件以及建构其上的P2P网络。比特币是一种P2P形式的数字货币。点对点的传输意味着一个去中心化的支付系统。

什么是P2P网络呢?

传统的货币都是由中央银行统一发行,所有的个人储蓄也是由银行统一管理,这是典型的中心化系统。

而比特币则是部署在一个全世界众多对等节点组成的去中心化网络之上。每一个节点都有资格对这种数字货币进行记录和发行。

至于比特币底层的数据存储,正是基于了区块链技术。比特币的每一笔交易,都对应了区块体数据中的一行,简单的示意如下:

交易记录的每一行都包含时间戳、交易明细、数字签名。

表格中只是为了方便理解。实际存储的交易明细是匿名的,只会记录支付方和收款方的钱包地址

至于数字签名呢,可以理解为每一条单笔交易的防伪标识,由非对称加密算法所生成。

接下来说一说比特币矿工的奖励:

比特币协议规定,挖到新区块的矿工将获得奖励,从2008年起是50个比特币,然后每4年减半,目前2018年是12.5个比特币。流通中新增的比特币都是这样诞生的,也难怪大家对挖掘比特币的工作如此趋之若鹜!

区块链的优势和劣势

区块链的优势:

1.去中心化

区块链不依赖于某个中心节点,整个系统的数据由全网所有对等节点共同维护,都可以进行数据的存储和检验。这样一来,除非攻击者黑掉全网半数以上的节点,否则整个系统是不会遭到破坏的。

2.信息不可篡改

区块内的数据是无法被篡改的。一旦数据遭到篡改哪怕一丁点,整个区块对应的哈希值就会随之改变,不再是一个有效的哈希值,后面链接的区块也会随之断裂。

区块链的劣势:

1.过度消耗能源

想要生成一个新的区块,必须要大量服务器资源进行大量无谓的尝试性计算,严重耗费电能。

2.信息的网络延迟

以比特币为例,任何一笔交易数据都需要同步到其他所有节点,同步过程中难免会受到网络传输延迟的影响,带来较长的耗时。

什么是区块链?详细介绍区块链。相关推荐

  1. 详细介绍区块链发展-比特币,以太坊

    文章目录 区块链概述 区块链1.0技术 应用-比特币 去中心化模型 比特币系统是如何记账的? 比特币系统如何保护隐私? 比特币系统如何保证分布式账本的一致性? 小结 区块链2.0技术 核心技术 Gho ...

  2. 01-区块链入门之 区块链介绍一-大叔思维

    1.区块链技术是什么? 总的来说,区块链是一套协议,一组规范,而不是具体代码.项目. 理解了这套协议,你可以基于现有的技术,以不同的语言去实现它.我们也无法用一句简单的话去概况什么是区块链,站的角度不 ...

  3. 【转】区块链是什么,如何简单易懂地介绍区块链?

    作者:知乎用户 链接:https://www.zhihu.com/question/37290469 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 友情提醒:比特币 ...

  4. 区块链知识系统浅显介绍-区块链小白书-李笑来

    本文介绍了一些区块链的背景知识,详细讲解比特币.比特币与区块链关系,区块链相关介绍,以及投资区块链需要注意些一些陷阱:对于想了解比特币.区块链的朋友很有帮助. 内容整理自李笑来个人博客,来源:http ...

  5. 一句话介绍区块链是什么

     一句话介绍区块链是什么 区块链 分布式 智能合约 阅读2238

  6. 连接不同区块链的跨链技术介绍

    如果说共识机制是区块链的灵魂核心,那么对于区块链特别是联盟链及私链来看,跨链技术就是实现价值网络的关键,它是把联盟链从分散单独的孤岛中拯救出来的良药,是区块链向外拓展和连接的桥梁. 自比特币七年前诞生 ...

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

    作者:汪乐-LaiW3n 链接:https://www.zhihu.com/question/37290469/answer/107612456 来源:知乎 著作权归作者所有.商业转载请联系作者获得授 ...

  8. 区块链入门:如何简单易懂地介绍区块链(图文)

    原标题:区块链是什么,如何简单易懂地介绍区块链? 区块链目前就处于一个人人都谈区块链,却无法感知其实际技术魅力的阶段,正是因为此,做出区块链的杀手级应用就至关重要,要做到这一点就需要进行各种场景的探索 ...

  9. COSCon‘20 Track F 区块链论坛介绍

    点击上方"开源社"关注我们 | 编辑:贺鑫 | 责编:陈梅梅 | 设计:王福政 如今人工智能.大数据.云计算和数据库等概念从如火如荼逐渐回归常态化,许多 IT 从业者和投资人士也不 ...

最新文章

  1. 串口与COM口 USB口、TTL、RS-232、RS-485区别 释疑
  2. MSB3721 命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe“ 已退出 返回代码为1
  3. Hibernate连接池配置实例
  4. javsscript练习
  5. java 入门 博客园_javaweb入门
  6. qt程序运行时绘图出现错误
  7. mysql的repeat_mysql函数中使用repeat循环的例子
  8. 出现次数最多的整数-蓝桥杯算法训练
  9. 【Java】Java_16 控制循环结构Break、Continue、Return
  10. 先锋网络电视 v3.36.4 钻石版 怎么用
  11. 给自己做一块开发板 #AnyBoard
  12. JAVA实现成绩统计之及格率和优秀率
  13. Java中Map详解
  14. 南朝皇帝简介-20170604
  15. 软件测试面试题银行,资讯详情-金融测试面试题-柠檬班-自动化测试-软件测试培训-自学官网...
  16. 英特尔发布酷睿系列 | 历史上的今天
  17. cisco rommon 维护路由器
  18. 树莓派4b搭建danted socks5 代理服务器 利用闲置宽带扩展搬砖IP
  19. 初学者如何搭建React开发环境并且创建react项目
  20. 基于JAVA信贷管理系统计算机毕业设计源码+系统+数据库+lw文档+部署

热门文章

  1. CentOS Rescure救援模式恢复数据记录
  2. java button中文乱码_java解决中文乱码的几种写法
  3. python的win32gui, pyautogui, pywinauto,pynput对比
  4. 【参赛作品14】Windows安装华为openGauss数据库——openGauss基于x86架构openEuler虚拟机的编译以及JDBC的连接
  5. 国家标准规范、行业标准规范,规范提取,自动提取软件
  6. 扎实走来的2D网游与突飞猛进的3D网游
  7. 高企申报有哪些项目?
  8. AP_应付税务预扣税Withholding Tax中付款时产生预扣税(案例)
  9. 2018年Java面试题
  10. [渝粤教育] 西南科技大学 预算会计 在线考试复习资料2021版