区块链学习笔记


区块链介绍

什么是区块链

  • 区块链是指通过去中心化和去信任的方式集体维护一个可靠数据库的技术方案.过去主要应用在比特币上(P2P形式的数字货币)
  • 区块链"技术"是全民参与记账的方式.(区块链-数据库/账本)

区块链的特点

  • 去中心化
    • 整个网络无中心化硬件或机构,用纯数学方法而非中心机构来建立分布式系统结构与节点间信任关系
  • 时序数据
    • 采用带有时间戳的链式区块结构存储数据,从而为数据增加了时间维度,具有可验证性和可追溯性;
  • 集体维护
    • 分布式系统中所有节点均可参与数据区块的验证过程(如比特币"挖矿"),每个节点分享权力和义务
  • 安全可信
    • 用非对称密码学原理对数据加密,借助各节点的工作量证明等算法形成的强大算力来抵御外部攻击、保证区块链数据不可篡改、伪造。
      区块链系统的安全性是通过挖矿形成的强大算理保证的。由于每笔交易都是通过盖时间戳的方式顺序链接的。当一个人想要伪造一笔交易时,他不仅需要伪造该笔交易对应的区块,还需要伪造该区块之后所链接的所有区块。如果伪造者计算机的算理不能支持它伪造区块的速度超过区块链增长的速度,那么伪造的区块就马上会被发现并被弃用。

区块链解决了什么问题

  • 区块链最重要的是解决中介信用问题。在过去,两个互不认识和信任的人要达到写作是很难的,必须要依靠第三方。通过区块链技术,比特币是人类第一次实现在没有任何中介机构参与下,完成双方可以互信的转账行为。这是区块链的最大突破。

区块链和比特币是什么关系?

  • 区块链技术是比特币的底层技术,把比特币技术抽象提取出来,称之为区块链技术,或者分布式账本技术。所以从某个角度来看,比特币可以看成是区块链的一个应用,而区块链更类似于TCP/IP这样的底层“技术”,以后会扩展到越来越多的行业中。

区块链技术主要可以用在哪些行业?

  • 区块链主要的优势是无需中介参与、过程高效透明且成本很低、数据高度安全。所以如果在这三个方面有任意一个需求的行业都有机会使用区块链技术。
    • 举个栗子 : 如金融行业由于防止单点故障和系统性风险,需要层层审计来控制金融风险,但造成高昂的内部成本。区块链技术能够通过防篡改和高透明的方式让整个金融系统极大的降低成本。

区块链的工作原理

比特币的交易机制

  • 比特币的交易机制是十分钟产生一个区块,意思就是每隔十分钟计算机就打包全网交易进入一个区块。而矿工就是在打包游戏中争夺区块链记账权的人,谁能最“快准狠”解开SHA256这个数学命题的值,谁就赢得了这个十分钟区块的打包记账权。而这十分钟里的每一笔交易,都会被盖上一个“timestamp”(时间戳),当然了,矿工的工作不是白辛苦的,一旦谁赢得了打包权,谁就将获得25个比特币作为奖励(最初是50个,经过一段时间之后就减半)。

区块链的机制

  • 目前在主要分为两类 : pos(proof of stake)权益证明机制和pow(proof of work)工作量证明机制

比特币信用系统建立的过程

  1. 每一笔交易为了让全网承认有效,需广播给每个节点(矿工);
  2. 每个矿工节点要正确无误的给这十分钟的每笔交易盖上时间戳并记入那个区块;
  3. 每个矿工节点要通过解SHA256难题去竞争这个十分钟区块的合法记账权,并争取得到二十五个比特币的奖励(头四年是每十分钟五十个比特币,每四年递减一半);
  4. 如果一个矿工节点解开了这十分钟的SHA256难题,他将向全网公布他这十分钟记录的所有盖时间戳的交易,并由全网其他矿工节点核对;
  5. 全网其他矿工节点核对该区块记账正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块单链,也就是比特币支付系统的总账-----区块链
  6. 一般来说,每一笔交易,必须经过六次区块确认,也就是六个十分钟记账,才能最终在区块链上承认合法交易。
  7. 所以所谓“比特币”,也就是这样一个账单系统:它包括所有者用私钥进行电子签名并支付给下一个所有者,然后由全网的“矿工”盖时间戳记账,形成区块链。

交易实现,区块链形成的步骤:

  1. 新的交易需求广播到所有节点。
  2. 每一个节点把新的交易需求收集到一个区块中。
  3. 每一个节点开始不断生成随机字符串,计算随机数答案。
  4. 当一个节点得出的答案与随机数匹配时,它将它生成的区块广播到所有节点。
  5. 节点对于交易进行验证,当该区块所包含的交易有效时,所有节点接受该区块。
  6. 节点开始创建新区块,并将刚刚接受的区块的哈希散列添加进去。

第三方机构支持的硬件系统与区块链硬件系统的对比

区块链学习笔记_第1张图片
此处输入图片的描述

区块链在数字支付中应用的流程

区块链学习笔记_第2张图片
此处输入图片的描述

数字签名

  • 数字签名涉及到一个哈希函数、发送者的公钥、发送者的私钥。数字签名有两个作用。
    1. 能确定消息确实是由发送方签名并发出来的。
    2. 数字签名能确定消息的完整性。
  • 工作原理 : 发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用自己的私钥对摘要进行加密,加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该数字签名是发送方的。

SHA256

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

Merkle Tree

  • 一种哈希二叉树,使用它可以快速校验大规模数据的完整性。在比特币网络中,Merkle树被用来归纳一个区块中的所有交易信息,最终生成这个区块所有交易信息的一个统一的哈希值,区块中任何一笔交易信息的改变都会使得Merkle树改变
  • 工作原理:非叶子节点value的计算方法是将该节点的所有子节点进行组合,然后对组合结果进行hash计算所得出的hash value。

时间戳服务器

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

节点网络

区块链学习笔记_第3张图片
此处输入图片的描述
  • 任何机器都可以运行一个完整的比特币节点,一个完整的比特币节点包括如下功能:
    1. 钱包,允许用户在区块链网络进行交易
    2. 完整区块链,记录所有交易了历史,通过特殊的结构保证历史交易的安全性,并且用来验证新交易的合法性
    3. 矿工,通过记录交易及解密数学题来生成新区块,如果成功可以赚取奖励
    4. 路由功能,把其他节点传送过来的交易数据等信息再传送给更多节点
  • 除了以外,其他的功能都不是必须的。

交易过程

区块链学习笔记_第4张图片
此处输入图片的描述
  • 第一步:所有者A利用他的私钥对前一次交易(比特币来源)和下一位所有者B签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单
    • 要点:B以公钥作为接收方地址
  • 第二步:A将交易单广播至全网,比特币就发送给了B,每个节点都将收到的交易信息纳入一个区块中。
    • 要点:对B而言,该枚比特币会即时显示在比特币钱包中,但直到区块确认成功后才可用。目前一笔比特币从支付到最终确认,得到6个区块确认之后才能真正确认到账。
  • 第三步:每个节点通过解一道数学难题,从而去获得创建新区块权利,并城区得到比特币的奖励(新比特币会在此过程中产生)
    • 要点:节点反复尝试寻找一个数值,似的将该数值、区块链中最后一个区块的Hash值以及交易单三部分送入SHA256算法后能计算出散列值X(256位)满足一定条件(比如前20位均为0),即找到数学难题的解。由此可见,答案并不唯一
  • 第四步:当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对
    • 要点:时间戳用来证明特定区块必然于某特定时间是的确存在的。比特币网络采取从5个以上节点获取时间,然后取中间值的方式为时间戳
  • 第五步:全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。
    • 要点:每个区块的创建大约在10分钟。随着全网算力的不断变化,每个区块的产生时间会随着算力增强而缩短、随酸碱减弱而延长。其原理是根据最近产生的2016年区块的时间差(约两周时间),自动调整每个区块的生成难度(比如减少或增加目标值中0的个数),似的每个区块的生成时间是10分钟。

数据结构

区块链

区块链学习笔记_第5张图片
此处输入图片的描述

区块

区块链学习笔记_第6张图片
此处输入图片的描述

区块头

区块链学习笔记_第7张图片
此处输入图片的描述

区块形成过程

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

密码学

密码学理论

  • 首先,现代密码学理论的共识遵循“柯克霍夫原则”:
    • 柯克霍夫原则由奥古斯特·柯克霍夫在19世纪提出:密码系统应该就算被所有人知道系统的运作步骤,仍然是安全的。
  • 这个是什么意思呢,拿钥匙和锁的例子来说,研制和生产锁具(包括钥匙)的工艺是完全公开的,锁具被攻破只有两种可能:一是证明工艺有漏洞,不需要拿到原装钥匙也能打开。二是穷尽各种钥匙可能,在可接受的时间里能够从概率意义上试出来(暴力破解)。
  • 算法是公开的,唯一需要保护的是密钥,这是我们下文讨论的基础。

非对称加密

  • 先看对称加密很好理解也符合直觉:
    • 对称加密:对同一份敏感数据,加密解密密钥是相同的。
  • 非对称加密:
    • 非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。
  • 我们用一幅图来说明:


    此处输入图片的描述

你可能感兴趣的:(区块链学习笔记)