区块链入门一:什么是区块链
在上一篇中,简单介绍了什么是区块链。这一篇主要介绍区块链的不可篡改的特性。

首先我们来了解下哈希(Hash)算法

这是百度的描述,简单来说就是一种不可逆的摘要算法,哈希算法的目的就是为了验证原始数据是否被篡改。常用的哈希算法有
根据碰撞概率,哈希算法的输出长度越长,就越难产生碰撞,也就越安全,区块链采用的是SHA-256。

那么区块链是怎么保证不可篡改的呢,下面将一步步分析。

区块分为区块头和区块体,区块体其实就是一个账本,里面是一条条的交易记录。

上图可以看到,就是一个区块体,记录的都是交易信息,第一条coinbase是个“旷工”的奖励。“挖矿”后续再了解。

那首先就要保证区块体的每条交易信息都是真实可信的,这里用到的是非对称加密算法对交易进行签名,这个说起来也不是一两句,后续再了解。这里只要知道,每条交易记录都是真实可信、不可造假的就行。

区块体所有的交易按一定规则汇总进行Hash,记录在区块头里。区块有个Merkle,就是记录区块体的Hash。这样区块体确认后就无法更改了,因为任何变动都会导致Merkle跟着变动。

区块头信息确认后,再对区块头进行Hash,形成Block Hash,这样整个区块的内容就确定了,并且不能做任何修改。区块头包含很多内容,其中有当前区块体的哈希,还有上一个区块的哈希。这意味着,如果当前区块体的内容变了,或者上一个区块的哈希变了,一定会引起当前区块的哈希改变。

那么区块和区块之间是怎么连接在一起形成区块链的呢?

如上图,Block Hash就是当前区块的哈希,而Pre Hash就是上一个区块的Block Hash。就是这样一个区块指向上一个区块形成了区块链。第一个区块由于没有前一个区块,所以它的Pre Hash是00…0000。

那么你可能会问了,不就是计算Hash嘛,计算机算出结果不是很快嘛,这怎么保证不可篡改?别急,接下来要说到一个概念,工作量证明机制。什么意思呢?

就是这个哈希不是随意算出一个哈希就可以的,它有一个规定。区块链协议规定,使用一个常量除以难度系数,可以得到目标值。显然,难度系数越大,目标值就越小,满足条件的哈希就越难算出。简单来说就是算出来的哈希必须是多个0打头的字符串,如:00000000000000000002bafbc1df86a30304852794f792ff95403e542566536b。随着难度增加,0的个数也相应增多,难度成指数级上升。

这一点对区块链意义重大。区块的Block Hash一旦得出,对区块的任何修改都会使哈希变动。而区块链是一个个区块紧密相连的,任何变动都会使区块连接断裂。正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。

区块链入门二:区块不可篡改相关推荐

  1. BlockChain:区块链入门课程 -- 区块链应用于能源 POWER LEDGER案例

    BlockChain:区块链入门课程-- 区块链应用于能源 POWER LEDGER案例 Power Ledger:如何启用区块链 概述能源部门的现状,将区块链作为关键推动因素之一. 3.1 欢迎来到 ...

  2. BlockChain: 区块链入门课程 -- 区块链适用于移动性 分享和收费案例

    BlockChain: 区块链入门课程 -- 区块链适用于移动性 分享和收费案例 分享和收费 在第四周和上周,我们将通过位于德国的充电站网络Share&Charge案例了解区块链技术在能源领域 ...

  3. BlockChain:区块链入门课程 -- 区块链之类型 、应用程序、技术挑战和潜力

    BlockChain:区块链 类型 .应用程序.面临挑战和潜力 区块链的类型 不同类型的区块链协议概述.我们将深入探讨共识方法,了解公共区块,财团区块和私有区块链之间的差异; 他们的用途和价值主张. ...

  4. 区块链入门二:概念篇

    文章目录 关键技术 点对点通信 分布式存储 加密算法 公钥与私钥 哈希函数 非对称加密 RSA DSA(数字签名算法) ECDSA(椭圆曲线数字签名算法) EdDSA(爱德华兹曲线数字签名算法) Ed ...

  5. 区块链入门文章二《以太坊:下一代智能合约和去中心化应用平台》

    以太坊:下一代智能合约和去中心化应用平台 以太坊基金会 著 李志阔(网名:面神护法) 赵海涛 焦锋 译 中本聪2009年发明的比特币经常被视作货币和通货领域内一次激进的发展,这种激进首先表现为一种没有 ...

  6. Python之区块链入门,揭秘比特币

    本文将简单介绍区块链(BlockChain)并用Python做一简单实现. 什么是区块链 简单来说,区块链就是把加密数据(区块)按照时间顺序进行叠加(链)生成的永久.不可逆向修改的记录.具体来说,它区 ...

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

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

  8. 区块链入门系列之共识算法

    区块链入门系列文章 区块链基本概念和名词解释 P2P 共识算法 梅克尔-帕特里夏树 从零开始搭建区块链 这里写自定义目录标题 区块链入门系列文章 前言 POW POS PBFT Raft 其他共识算法 ...

  9. 用Java编写第一个区块链(二)

    用Java编写第一个区块链(二) 这篇文章将去介绍如何使用区块链进行交易. [本文禁止任何形式的全文粘贴式转载,本文来自 zacky31 的随笔] 目标: 在上一篇文章中,我们已经创建了一个可信任的区 ...

最新文章

  1. 【XLL 文档翻译】【第1部分】 Add-in 管理器 和 XLL 接口函数
  2. Java的,与类的初始化顺序
  3. 什么是顺序执行以及其特点
  4. 【尺取或dp】codeforces C. An impassioned circulation of affection
  5. c++ sleep函数_C ++ strcpy()和strncpy()函数
  6. Python一题三解:查找字符串中每个字符的首次出现
  7. linux 解压缩与压缩
  8. Citrix高层相继离职,XenServer或将被流产?
  9. IT项目管理的三个约束条件、五个实施步骤
  10. 面渣逆袭:JVM经典五十问,这下面试稳了
  11. Unity3D开发游戏坦克大战
  12. c语言五子棋存盘,C语言 五子棋(初学者版).doc
  13. 开通VPN后,网络访问比未开VPN还要慢
  14. 二维数组主对角线与次对角线输出(C语言)
  15. 关于 vue项目 中实现导入Excel表 + 预览生成的Excel
  16. dns劫持是什么意思?常见的劫持有哪些?
  17. 样式的层级关系,选择器优先级,样式冲突,以及抽离样式模块怎么写,说出思路,有无实践经验
  18. 8、信息收集篇————Kali Linux自带工具
  19. DynamoDB 小结
  20. 成都大学计算机图形学期末考试题,计算机图形学期末考试题

热门文章

  1. 企业如何通过CRM系统有效触达客户,获取潜在商机
  2. 学计算机的能做3A游戏吗,想要玩转3A游戏大作,这些内存你需要了解一下!
  3. 抖音检测报告怎么办理?测试周期要多长时间?
  4. 请停停你在远方的脚步,听听兰州
  5. 很值得学习 CEO口述:IMAX如何从博物馆杀进好莱坞
  6. 天梯赛 L2-021 点赞狂魔 (25 分)
  7. Eclipse JavaWeb 关于Servlet的部分笔记
  8. html 透明的圆形,从div中切出的透明半圆
  9. 安防中端传输设备-PoE交换机在2016的异军突起
  10. python函数求导_python怎么实现函数求导