理解区块链

2023-11-18

本文基本上是收集的内容汇总,略微全面一点

1、区块链的诞生

互联网上的贸易,几乎都需要借助可资信赖的第三方信用机构来处理电子支付信息。这类系统仍然内生性地受制于“基于信用的模式”。区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术。它基于密码学原理而不基于信用,使得任何达成一致的方直接支,从而不需要第三方中介的参与。

定义:

区块链是一个分布式账本,一种通过去中心化去信任的方式集体维护一个可靠数据库的技术方案。

从数据的角度来看:区块链是一种几乎不可能被更改的分布式数据库。这里的“分布式”不仅体现为数据的分布式存储,也体现为数据的分布式记录(即由系统参与者共同维护)。

从技术的角度来看:区块链并不是一种单一的技术,而是多种技术整合的结果。这些技术以新的结构组合在一起,形成了一种新的数据记录、存储和表达的方式。


区块链目前还处在早期阶段,一些嗅到商机的大企业,技术牛人都对此开展了研究。初期阶段,想想有木有好兴奋....


2、区块链技术的特征

2.1、开放,共识

任何人都可以参与到区块链网络,每一台设备都能作为一个节点,每个节点都允许获得一份完整的数据库拷贝。节点间基于一套共识机制,通过竞争计算共同维护整个区块链。任一节点失效,其余节点仍能正常工作。

2.2、去中心,去信任

区块链由众多节点共同组成一个端到端的网络,不存在中心化的设备和管理机构。节点之间数据交换通过数字签名技术进行验证,无需互相信任,只要按照系统既定的规则进行,节点之间不能也无法欺骗其它节点。

2.3、交易透明,双方匿名

区块链的运行规则是公开透明的,所有的数据信息也是公开的,因此每一笔交易都对所有节点可见。由于节点与节点之间是去信任的,因此节点之间无需公开身份,每个参与的节点都是匿名的。

2.4、不可篡改,可追溯

单个甚至多个节点对数据库的修改无法影响其他节点的数据库,除非能控制整个网络中超过51%的节点同时修改,这几乎不可能发生。区块链中的每一笔交易都通过密码学方法与相邻两个区块串联,因此可以追溯到任何一笔交易的前世今生。


3、区块链中的关键技术原理

区块链的整个架构如下图所示

3.1、数字签名

数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用,一是能确定消息确实是由发送方签名并发出来的。二是数字签名能确定消息的完整性。

工作原理

发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。


3.2、SHA256

一种求Hash值的加密算法。

工作原理

将任何一串数据输入到SHA256将得到一个256位的Hash值(散列值)。其特点:相同的数据输入将得到相同的结果。输入数据只要稍有变化(比如一个1变成了0)则将得到一个千差万别的结果,且结果无法事先预知。正向计算(由数据计算其对应的Hash值)十分容易。逆向计算(俗称“破解”,即由Hash值计算出其对应的数据)极其困难,在当前科技条件下被视作不可能。


3.3、Merkle Tree

一种哈希二叉树,使用它可以快速校验大规模数据的完整性。在比特币网络中,Merkle 树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得使得Merkle 树改变。

作原理

网上大都称为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。


3.4、时间戳服务器

大多用来进行比对以及验证处理,时间戳服务器是一款基于PKI(公钥密码基础设施)技术的时间戳权威系统,对外提供精确可信的时间戳服务。它采用精确的时间源、高强度高标准的安全机制,以确认系统处理数据在某一时间的存在性和相关操作的相对时间顺序,为信息系统中的时间防抵赖提供基础服务。


4、区块链的第一个成功应用

比特币是区块链技术的第一个应用,它的生态圈如下:


任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括如下功

1.包,允许用户块链网络上进行交
2.整区块链,记录了所有交易历史,通过特殊的结构保证历史交易的安全性,并且用来验证新交易的合法
3.工,通过记录交易及解密数学题来生成新区块,如果成功可以赚取奖
4.由功能,把其它节点传送过来的交易数据等信息再传送给更多的节


第1步:所有者A利用他的私钥对前一次交易(比特货来源)和下一位所有者B签署一个字签名,并将这个签名附加在这枚货币的末尾,制作成交易单

要点:B作为接收方地址

第2步:A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中

要点:B而言,该枚比特币会即时显示在比特币钱包中,但直到区确认成功后才可用。目前一笔比特币从支付到最终确认成功,得6区块认之后才能真正确认到帐。

第3步:每个节点通过解一道数学难题,从而去获得创建新区块权利,并争取得到比特币的奖励(新比特币会在此过程中产生)

要点:点反复尝试寻找个数值,使将该数值、区块链中最后一区块Hash及交单三部分送入SHA256法后能计算出散列值X256)满足一定条件(比如前20位均为0),即找到数学难题的解。由此可见,答案并不唯一

第4步:当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对

要点:戳用来证实特定区块必然于某特定时间是的确存在的。比特币网络采取从5个以上节点获取时间,然后取中间值的方式作为时间戳。

第5步:全网其他节点核对该区块记账的正确,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。

要点:每个区块的创建时间大约在10分钟。随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短、随算力减弱而延长。其原理是根据最近产生的2016年区块的时间差(约两周时间),自动调整每个区块的生成难度(比如减少或增加目标值中0的个数),使得每个区块的生成时间是10分钟。




5、主要的数据结构

区块链以区块为单位组织数据。全网所有的交易记录都以交易单的形式存储在全网唯一的区块链中。


区块是一种记录交易的数据结构。每个区块由区块头和区块主体组成,区块主体只负责记录前一段时间内的所有交易信息,区块链的大部分功能都由区块头实现。


1.号,标示软件及协议的相关版本信
2.父区块哈希值,引用的区块链中父区块头的哈希值,通过这个值每个区块才首尾相连组成了区块链,并且这个值对区块链的安全性起到了至关重要的作
3.Merkle根,这个值是由区块主体中所有交易的哈希值再逐级两两哈希计算出来的一个数值,主要用于检验一笔交易是否在这个区块中存
4.时间戳,记录该区块产生的时间,精确到
5.难度值,该区块相关数学题的难度目
6.随机数(Nonce)记录解密该区块相关数学题的答案的


在当前区块加入区块链后,所有矿工就立即开始下一个区块的生成工作。

1.把在本地内存中的交易信息记录到区块主体中
2.在区块主体中生成此区块中所有交易信息的 Merkle 树,把 Merkle 树根的值保存在区块头中
3.把上一个刚刚生成的区块的区块头的数据通过 SHA256 算法生成一个 哈希值填入到当前区块的父哈希值中
4.把当前时间保存在时间戳字段中
5.难度值字段会根据之前一段时间区块的平均生成时间进行调整以应对整个网络不断变化的整体计算总量,如果计算总量增长了,则系统会调高数学题的难度值,使得预期完成下一个区块的时间依然在一定时间内


6、核心问题

6.1工作量证明

区块头包含一个随机数,使得区块的随机散列值出现了所需的0个数。节点通过反复尝试来找到这个随机数,这样就构建了一个工作量证明机制。工作量证明机制的本质是CPU票,“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。如果想要修出现的区块,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。


6.2分叉

同一时间段内全网不止一个节点能计算出随机数,即会有多个节点在网络中广播它们各自打包好的临时区块(都是合法的)。

某一节点若收到多个针对同一前续区块的后续临时区块,则该节点会在本地区块链上建立分支,多个临时区块对应多个分支。该僵局的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作其他分支将会被网络彻底抛弃


6.3双花

双花,即二重支付,指攻击者几乎同时将同一笔钱用作不同交易。

每当节点在把新收到的交易单加入区块之前,会顺着交易的发起方的公钥向前遍历检查,检查当前交易所用的币是否确实属于当前交易发起方,此检查可遍历到该币的最初诞生点(即产生它的那块区块源)。虽然多份交易单可以任意序的广播,但是它们最终被加入区块时必定呈现一定的顺序。区块之间以Hash值作为时间戳则区块,这决定了任意一笔交易资金来源都可以被确定的回溯。

7、应用场景

从需求端来看,金融、医疗、公证、通信、供应链、域名、投票等领域都开始意识到区块链的重要性并开始尝试将技术与现实社会对接。

从投资端来看,区块链的投资资金供给逐步上升,风投的投资热情也不断高涨,投资密度越来越大,供给端的资金供给有望推动技术的进一步发展。

从市场应用来看区块链能成为一种市场工具,帮助社会削减平台成本,让中间机构成为过去;区块链将促使公司现有业务模式重心的转移,有望加速公司的发展。


8、资料来源

http://www.doc88.com/p-3843131640343.html   区块链技术发展现状和展望

其他网页收集



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

理解区块链 的相关文章

  • Kendo UI开发教程(6): Kendo DataSource 概述

    Kendo 的数据源支持本地数据源 JavaScript 对象数组 或者远程数据源 XML JSON JSONP 支持CRUD操作 创建 读取 更新和删除操作 并支持排序 分页 过滤 分组和集合等 准备开始 下面创建一个本地数据源 1 va
  • insert into select 和 insert into values区别

    INSERT INTO SELECT语句 从一个表复制数据 然后把数据插入到一个已存在的表中 将一个table1的数据的部分字段复制到table2中 或者将整个table1复制到table2中 这时候我们就要使用SELECT INTO 和

随机推荐

  • RS232 Android获取串口数据

    串口 串行接口简称串口 也称串行通信接口或串行通讯接口 通常指COM接口 是采用串行通信方式的扩展接口 串行接口 Serial Interface 是指数据一位一位地顺序传送 其特点是通信线路简单 只要一对传输线就可以实现双向通信 可以直接
  • STM32 printf函数无法使用

    要想STM32使用printf函数打印 需要三个条件 条件1 魔术棒配置 条件2 有以下函数 重定向c库函数printf到串口DEBUG USART 重定向后可使用printf函数 int fputc int ch FILE f 发送一个字
  • Java 8:让你的代码更简洁、高效和灵活的新特性

    Java 8 企业中使用最普遍的版本 那么了解它的新特性是非常有必要的 目录 一 函数式接口 二 Lamdba表达式 三 方法引用 四 Stream API 3 1 创建 方法一 通过集合 方法二 通过数组 方法三 通过Stream的of
  • 零知识证明

    一 概念 证明者能够在不向验证者提供任何有用的信息的情况下 使验证者相信某个论断是正确的 零知识证明 Zero Knowledge Proof 起源于最小泄露证明 设P表示掌握某些信息 并希望证实这一事实的实体 设V是证明这一事实的实体 假
  • 前端例程20220728:点击涟漪效果按钮

    演示 原理 监听按钮点击事件 点击事件中获取点击位置 在点击位置生成一个元素作为水波 水波生成后通过扩散同时变透明 水波根据动画时间变透明后销毁 代码
  • 使用Kotlin 重写毕设项目

    Kotlin目前已经转正 成为 Android 开发一级语言 前段时间不忙 将毕业设计用Kotlin 进行重写 毕业设计 Java 版 https blog csdn net qq 29375837 article details 8265
  • 谁能看懂这幅图?

    谁能看懂这幅图
  • 基于MediaPlayer实现视频播放

    一 概述 一个简单的视频播放器 满足一般的需求 使用原生的 MediaPlayer 和 TextureView来实现 功能点 获取视频的首帧进行展示 网络视频的首帧会缓存 视频播放 本地视频或者网络视频 感知生命周期 页面不可见自动暂停播放
  • 51单片机入门——矩阵键盘(附51代码)

    1 硬件介绍 矩阵键盘电路图 硬件如图非常简单 将一个4 4的矩阵键盘的8个管脚引到端子上 在连接到8个I O口上 ARRAY H代表着行 ARRAY L代表着列 当行与列的电平都置低的时候 就选中的相应的矩阵按键 比如当s1按下时 ARR
  • Shell if 条件判断

    Shell 语言中的if条件 一 if的基本语法 if command then 符合该条件执行的语句 elif command then 符合该条件执行的语句 else 符合该条件执行的语句 fi 二 文件 文件夹 目录 判断 b FIL
  • Android系统换字体不root,安卓手机更换字体简易方法(免ROOT)

    很多童鞋都是玩机族 都喜欢diy自己的手机来追求个性 更换手机字体是大家都热衷做的事 但至于换字体的方法 很多童鞋是折腾半天都不明觉厉 有的同学利用高深的方法 先root获取手机权限啊 改系统文件啊 改这改那的终于换了字体 但有时候一重启
  • 【机器学习】6:K-近邻(KNN)算法实现手写数字识别的三种方法

    前言 本来觉得自己从数据建模转人工智能方向应该问题不大 自我感觉自己算法学的不错 结果一个K 邻近实现手写数字识别的代码就让我改了三四天 虽然网上这方面的代码是很多 但是我运行了好几个 结果都不是很理想 一次偶然的念想 为什么我不把这些代码
  • HttpRunner 的中文使用手册

    2018开工大吉 给大家送上 HttpRunner 的中文使用手册 http cn httprunner org
  • 手机端使用ghelper_Anki手机端使用指南(一)

    本篇会对如何使用手机端anki进行详解 有小伙伴询问在应用商店搜索anki找不到名字叫 anki 的软件 这里解释一下 在手机端的名字和电脑端的名字不太一样 安卓对应的名字叫做AnkiDroid IOS对应的名字叫做Ankimobile 不
  • 快速排序法

    partition函数 int partition vector
  • C++ 数学与算法系列之牛顿、二分迭代法求解非线性方程

    1 前言 前文介绍了如何使用 高斯消元法 求解线性方程组 本文秉承有始有终的态度 继续介绍 非线性方程 的求解算法 本文将介绍 2 个非线性方程算法 牛顿迭代法 二分迭代法 牛顿迭代法 Newton s method 又称为牛顿 拉夫逊方法
  • 安装python包的方式,控制台方式以numpy安装为例

    说明 方式1 直接打开cmd 需要配置python环境 控制台输入 python m pip install package name 版本号 方式2 去网上将所需的包下载下来 链接 官方下载链接 一般是 whl格式 然后将其放在自己的路径
  • 【桥接模式】VMware虚拟机配置桥接模式

    在虚拟机配置中 桥接模式和NAT模式是两种常见的网络连接方式 区别 1 桥接模式使虚拟机直接连接到物理网络 可以与外部设备直接通信 并获取唯一IP地址 2 NAT模式使用网络地址转换器将虚拟机的网络流量转发到物理网络上 虚拟机可以与外部网络
  • 强化学习读书笔记

    强化学习读书笔记 09 on policy预测的近似方法 参照 Reinforcement Learning An Introduction Richard S Sutton and Andrew G Barto c 2014 2015 2
  • 理解区块链

    本文基本上是收集的内容汇总 略微全面一点 1 区块链的诞生 互联网上的贸易 几乎都需要借助可资信赖的第三方信用机构来处理电子支付信息 这类系统仍然内生性地受制于 基于信用的模式 区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术