区块链入门二:概念篇

这篇具有很好参考价值的文章主要介绍了区块链入门二:概念篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

区块链技术是由多方共同记录和维护的一个分布式数据库,通过哈希索引形成一种链状结构,数据的记录和定义 维护通过密码学技术来保护其完整性,使得任何一方难以篡改、抵赖、造假。


关键技术:分布式存储 加密算法 点对点传输 共识机制


特性:分布式、可共享、隐私性、防篡改、安全性、智能化


工信部区块链参考标准:区块链是一种在对等网络环境下,通过透明和可信规则,构建不可伪造、不可篡改和可追溯的块链式数据结构,实现和管理事务处理的模式。

关键技术

点对点通信

p2p

分布式存储

每个节点都有账本的副本

加密算法

公钥与私钥

  1. 私钥的本质

    一串足够随机的随机数,即密码

    私钥的本质就是一串数字,这串数字非常长,如果用16进制表示的话,有64位。
    私钥的总数是10的77次方
    宇宙中原子的总数是10的80次方
    所以我们如果完全随机的生成私钥,那么完全不可能和别人的私钥一样

  2. 从私钥到公钥
    现在我们有了一串随机的数字,那么基于这个数字,我们就能生成一个对应的数字,这个数字就是公钥,即私钥对应的一串数字
    私钥可以推导出公钥,反之,公钥不能推导出私钥
    我们用私钥对任意内容进行了签名。只要我们将公钥公开,那么任何人都可以通过拿着这个公钥,验证出这个签名是否是由掌握私钥的人签署的。

  3. 从公钥到地址
    公钥太长了,所以在实际的系统中,我们通过哈希算法对公钥进行了缩写,得到和公钥等价的地址,来作为实际收款的账户

    也即,公钥进行转化后的一串数字

  4. 加密

    公钥负责加密,私钥负责解密

  5. 签名

    私钥负责签名,公钥负责验证;数字签名,只负责保证数据没有被篡改,而不负责加密数据。是数据加密的逆过程

  6. 私钥文件类型:PEM(.pem)、PKCS12(.p12)

哈希函数

哈希值的特点:定长、单向、原文改动即哈希变化

作用:哈希、索引

SHA256

交易哈希

非对称加密

RSA

既可以用于签名,又可以用于加密

与DSA相比,RSA的签名验证速度更快,但生成速度较慢

DSA(数字签名算法)

与RSA相比,DSA的签名生成速度更快,但验证速度较慢

ECDSA(椭圆曲线数字签名算法)

是DSA(数字签名算法)的椭圆曲线实现。椭圆曲线密码术能够以较小的密钥提供与RSA相对相同的安全级别。它还具有DSA对不良RNG敏感的缺点。

EdDSA(爱德华兹曲线数字签名算法)

是一种使用基于扭曲爱德华兹曲线的Schnorr签名变体的数字签名方案。签名创建在EdDSA中是确定性的,其安全性是基于某些离散对数问题的难处理性,因此它比DSA和ECDSA更安全,后者要求每个签名都具有高质量的随机性。

Ed25519

是EdDSA签名方案,但使用SHA-512 / 256和Curve25519;它是一条安全的椭圆形曲线,比DSA,ECDSA和EdDSA 提供更好的安全性,并且具有更好的性能(人为注意)。

国密算法
SM2
SM3

区块结构

每个节点都包含了账本的副本,即所有区块的副本

区块包含

  • 索引

  • 时间戳

  • 事务列表

  • 校验

  • 前一个块的散列值

区块头

  • PrevHash:6b86b273ff34fce…
  • Hash:d4735e3a265e16e…

块高

  • 链式结构
  • 区块数据结构
  • 区块链类的实现
  • 新区块函数的实现

区块中,previousblockhash和merkleroot是两个最重要的字段

前者是一个哈希指针,它其实是前一个 Block 的哈希,通过 previousblockhash 我们能递归地找到全部的 Block,也就是整条主链,后者是一个 Merkle 树的根,Merkle 树中包含整个 Block 中的全部交易,通过保存 merkleroot,我们可以保证当前 Block 中任意交易都不会被修改

哈希指针

总结:保证了区块之间的连接

Block 结构体中的哈希指针在区块链中有两个作用,它不仅能够连接不同的区块,还能够对 Block 进行验证,保证 Block 中的数据不会被其他恶意节点篡改。

Merkle树

总结:保证了一个区块中所有交易的连接

另一个字段 merkleroot 其实就是一个 Merkle 树 的根节点,它其实是一种使用哈希指针连接的数据结构;虽然 Merkle 树有叶节点和非叶节点,但是它只有叶节点会存储数据,所有的非叶结点都是用于验证数据完整性的哈希。

每一个 Block 中的全部交易都是存储在这个 Merkle 树中并将 merkleroot 保存在 Block 的结构体中,保证当前 Block 中任意交易的篡改都能被立刻发现。

小结

prev_hashmerkleroot 分别通过『指针』的方式保证所有的 Block 和交易都是连接起来的,最终保证 Block 和交易不会被恶意节点或攻击者篡改,几乎全部的区块链项目都会使用类似方式连接不同的 Block 和交易,这可以说是区块链项目的基础设施和标配了。

节点共识算法

提出背景

无论是 Bitcoin、Ethereum 还是 EOS,作为一个分布式网络,首先需要解决分布式一致性的问题,也就是所有的节点如何对同一个提案或者值达成共识,这一问题在一个所有节点都是可以被信任的分布式集群中都是一个比较难以解决的问题,更不用说在复杂的区块链网络中了。

共识算法,即各个节点达成一致的策略和方法,也即用来保证分布式系统一致性的方法。

分布式系统一致性所面临的难题

  • 节点失效
  • 节点之间网络通信收到干扰甚至阻断
  • 分布式系统运行速度之间的差异

拜占庭将军问题

该问题讨论的是在少数节点有可能作恶(消息可能被伪造)的场景下,如何达成共识问题。拜占庭将军问题是分布式领域的容错问题;是分布式领域中最复杂、最严格的容错模型

该问题描述的场景是,一组将军每人都会发出一个指令,但最终遵循的指令由他们共同投票选举出来。指令状态有四种:未知、进攻、撤退、消息不可靠。由于将军的队伍中出了一个叛徒或者信息在传递的过程中被拦截,会导致一部分将军会选择进攻,剩下的一部分会选择撤退,它们都认为自己的选择是大多数人的选择,这时就出现了严重的不一致问题。

一般地,把出现故障(Crash 或 Fail-stop,即不响应)但不会伪造信息的情况称为“非拜占庭错误(Non-Byzantine Fault)”或“故障错误(Crash Fault)”;伪造信息恶意响应的情况称为“拜占庭错误”(Byzantine Fault),对应节点为拜占庭节点。显然,后者场景中因为存在“捣乱者”更难达成共识。

根据是否允许拜占庭容错的情况,共识算法可以分为CFT和BFT(拜占庭容错)

注:

非拜占庭场景的典型例子是通过报数来统计人数,即便偶有冲突(如两人同时报一个数)也能很快解决;

拜占庭场景的一个常见例子是“杀人游戏”,当参与者众多时很难快速达成共识。

非拜占庭容错:(特点:性能比较好,处理较快,容忍不超过一半的故障节点)

  • Paxos(1990 年)
  • Raft(2014 年)

拜占庭容错:(特点:性能比较差,处理速度慢,容忍不超过1/3的故障节点)

  • PBFT(Practical Byzantine Fault Tolerance,1999 年)
  • POW(工作量证明,1997年)
  • Algorand(基于PBFT改进,2017年)

问题的解决:节点总数为 N,故障节点数为 F,则当 N >= 3F + 1 时,问题才能有解,由 BFT 算法进行保证

FLP (不可能定理)

它是分布式系统领域最重要的定理之一,它给出了一个非常重要的结论:在网络可靠并且存在节点失效的异步模型系统中,不存在一个可以解决一致性问题的确定性算法。FLP 不可能原理告诉我们,不要浪费时间去试图为异步分布式系统设计面向任意场景的共识算法。也就是说,异步系统完全没有办法保证能在有限时间内达成一致。

PaXOS

一类能够解决分布式一致性问题的协议,它能够让分布式网络中的节点在出现错误时仍然保持一致;Paxos 可以在没有恶意节点的前提下保证系统中节点的一致性,也是第一个被证明完备的共识算法,目前的完备的共识算法包括 Raft 本质上都是 Paxos 的变种。

POW(proof of work,工作量证明)机制

工作量证明的关键特点就是,分布式系统中的请求服务的节点必须解决一个一般难度但是可行(feasible)的问题,但是验证问题答案的过程对于服务提供者来说却非常容易,也就是一个不容易解答但是容易验证的问题。

这种问题通常需要消耗一定的 CPU 时间来计算某个问题的答案,目前最大的区块链网络 - 比特币(Bitcoin)就使用了工作量证明的分布式一致性算法,网络中的所有节点计算通过以下的谜题来获得当前区块的记账权。

由于工作量证明需要消耗大量的算力,同时比特币大约 10min 才会产生一个区块,区块的大小也只有 1MB,仅仅能够包含 3、4000 笔交易,平均下来每秒只能够处理 5~7(个位数)笔交易,所以比特币网络的拥堵状况非常严重。

POS(proof of stack,权益证明)机制

引入奖励和惩罚机制,与工作量证明相比,权益证明不需要消耗大量的电力就能够保证区块链网络的安全性,同时也不需要在每个区块中创建新的货币来激励矿工参与当前网络的运行,这也就在一定程度上缩短了达成共识所需要的时间,基于权益证明的 Ethereum 每秒大概能处理 30 笔交易左右。

DPOS(Delegated Proof-of-Stake,委托权益证明)机制

能够让每一个人选出可以代表自己利益的人参与到记账权的争夺中,这样多个小股东就能够通过投票选出自己的代理人,保障自己的利益。整个网络中选举出的多个节点能够在 1s 中之内对 99.9% 的交易进行确认,使用委托权益证明的 EOS 能够每秒处理几十万笔交易,同时也能够比较监管的干预。

PBFT机制

PBFT(Practical Byzantine Fault Tolerance)共识算法可以在少数节点作恶(如伪造消息)场景中达成共识,它采用签名、签名验证、哈希等密码学算法确保消息传递过程中的防篡改性、防伪造性、不可抵赖性,并优化了前人工作,将拜占庭容错算法复杂度从指数级降低到多项式级别,在一个由(3f+1)个节点构成的系统中,只要有不少于(2f+1)个非恶意节点正常工作,该系统就能达成一致性,如:7个节点的系统中允许2个节点出现拜占庭错误。

容错节点数:f
需要节点数(即为了保障整个系统正常运转所需要的正常节点数):2f+1
系统总结点数:3f+1

节点类型
  • 共识节点
  • 观察节点
节点ID
节点索引
视图

PBFT共识算法使用视图view记录每个节点的共识状态

Raft机制

Raft(Replication and Fault Tolerant)是一个允许网络分区(Partition Tolerant)的一致性协议,它保证了在一个由N个节点构成的系统中有(N+1)/2(向上取整)个节点正常工作的情况下的系统的一致性,比如在一个5个节点的系统中允许2个节点出现非拜占庭错误,如节点宕机、网络分区、消息延时。Raft相比于Paxos更容易理解,且被证明可以提供与Paxos相同的容错性以及性能,其详细介绍可见官网及动态演示。

节点类型
  • Leader:主要负责与外界交互,由Follower节点选举而来,在每一次共识过程中有且仅有一个Leader节点,由Leader全权负责从交易池中取出交易、打包交易组成区块并将区块上链;
  • Follower:以Leader节点为准进行同步,并在Leader节点失效时举行选举以选出新的Leader节点;
  • Candidate:Follower节点在竞选Leader时拥有的临时身份。

rPBFT机制

POW类算法的缺陷

POW算法因如下特点,不适用于交易吞吐量大、交易时延要求低的联盟链场景:

  • 性能低:10分钟出一个区块,交易确认时延一个小时,耗电多
  • 无最终一致性保证
  • 吞吐量低
rPBFT共识算法的提出
  • FISCO BCOS v2.3.0版本提出
  • 旨在保留BFT类共识算法高性能、高吞吐量、高一致性、安全性的同时,尽量减少节点规模对共识算法的影响
rPBFT节点类型
  • 共识委员:执行PBFT共识流程的节点,有轮流出块权限

  • 验证节点:不执行共识流程,验证共识节点是否合法、区块验证,经过若干轮共识后,会切换为共识节点

核心思想

epoch_block_num轮共识后,将共识委员节点替换为验证节点;将部分验证节点替换成共识委员节点

2个关键参数
  • epoch_sealer_num:每轮共识过程中参与共识的节点数目,可通过控制台发交易方式动态配置该参数
  • epoch_block_num:共识节点替换周期,为防止选取的共识节点联合作恶,rPBFT每出epoch_block_num个区块,会替换一个共识节点,可通过控制台发交易的方式动态配置该参数
算法流程
  • 确定各共识节点编号IDX
  • 链初始化
  • 共识委员节点运行PBFT共识算法
  • 动态替换共识委员列表:rPBFT算法每出epoch_block_num个区块后,会从共识委员列表中剔除一个节点作为验证节点,并加入一个验证节点到共识委员列表中
  • 节点重启
算法分析
  • 算法复杂度与节点数量无关,性能衰减远小于PBFT
  • 一致性、可用性要求:至少2/3节点正常工作
  • 安全性:正在规划中,未来的打算引进VRF算法,随机、私密的替换共识委员,增强共识算法的安全性

CA

数字证书认证机构(英语:Certificate Authority,缩写为CA),也称为电子商务认证中心、电子商务认证授权机构,是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。

区块链中的交易与共识

区块链账户的组成部分:

私钥、公钥与地址

交易包含:

  • TxHash(交易哈希):发起交易后生成的,如,c960578d5c7364c…
  • From:如,0x496dC0Ac7f6a5c15a63c862e7532Ffe59122d89F
  • To:如,0x6D3720a0937F684c6B88Aa474264F905d07Fec82
  • Value:如,100

交易步骤:

  1. 交易签名:即From用其私钥签名后生成交易哈希

  2. 交易广播

  3. 打包区块(即多笔交易共同打包为区块)

  4. 广播区块,将打包后的区块广播给其它节点

  5. 共识,所有节点对该区块进行共识

比特币

是什么?

只具备发币、记账功能的世界银行

世界上第一个被证明成功的区块链APP

目标

争夺记账权、确保账本的唯一性

比特币私钥的形式

  • WIF
  • Private Key WIF Compressed

区块链基础架构模型

区块链索引的概念和作用,区块链,区块链

应用场景

区块链索引的概念和作用,区块链,区块链文章来源地址https://www.toymoban.com/news/detail-786446.html

到了这里,关于区块链入门二:概念篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《MFC编程》:MFC的概念和作用

    MFC(Microsoft Foundation Classes),是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows的API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含的类包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。 所以在MFC中,你可以直

    2024年02月02日
    浏览(35)
  • JDBC的概念、作用、使用方法等

    JDBC是Java Database Connectivity的缩写,它是一组用于Java编程语言中连接和操作数据库的API。JDBC API定义了一组标准接口,使Java应用程序能够与任何关系型数据库进行交互,如Oracle、MySQL、PostgreSQL、Microsoft SQL Server等。 JDBC的作用是允许Java应用程序通过JDBC API与数据库进行通信,以

    2024年02月09日
    浏览(58)
  • 密码基础知识——密码的概念与作用

    密码是指采用 特定变换 的方法对 信息 等进行 加密保护、安全认证 的 技术、产品和服务 。 在我国,密码分为 核心密码、普通密码和商用密码 ,其中商用密码用于保护 不属于国家秘密 的信息。 从内容上看,密码技术包括密码编码、实现、协议、安全防护、分析破译,以

    2023年04月26日
    浏览(54)
  • 区块链1——区块链基础概念

    区块链 索引目录 区块链是一种基于分布式数据库和加密技术的技术,它的特点包括去中心化、不可篡改、安全可靠等。这些特点使得区块链技术在金融、供应链、医疗等领域都有着广泛的应用前景。 当谈到区块链技术时,我们首先需要了解什么是区块链。区块链是一种分布

    2024年02月04日
    浏览(42)
  • 区块链在元宇宙中的作用(二)

    第一,解决数据信任问题 如果一个元宇宙没有区块链技术,那么可能会面临各种各样的数据信任问题,你的账号可以被随时平台禁封,你的“资产”价值完全受平台定价和发行量的影响、你的投诉意见可以被平台忽视、你的言论可以被平台屏蔽甚至删除等等一系列的问题将会

    2024年02月04日
    浏览(39)
  • 数据仓库的概念和作用?如何搭建数据仓库?

    随着企业规模的扩大和数据量的爆炸性增长,有效管理和分析海量数据成为企业数字化转型的关键。而在互联网的普及过程中,信息技术已深入渗透各行业,逐渐融入企业的日常运营。然而,企业在信息化建设中面临了一系列困境和挑战,具体有什么呢? 我们今天一起来看看

    2024年04月15日
    浏览(30)
  • 区块链技术与应用-----区块链概念

    一,智能社会与区块链技术 当前我们进入智能化社会发展时期,新兴的5G,量子计算,云计算,物联网,人工智能,区块链等新兴IT技术,将支撑人类迈入智能化社会。区块链作为智能化社会的关键技术之一,其核心价值是实现社会关系运行的智能化。 二,区块链的概念与体

    2024年02月07日
    浏览(44)
  • 从构建区块链理解区块链概念

    2024年02月12日
    浏览(50)
  • 【概念】区块链中账本是什么?通用区块链平台账本概念介绍,一个谁都能看懂的账本概念

    目录 前言 举个例子 账本在不同链中担任什么角色 联盟链 公有链 私有链 随着区块链的发展,目前国内也掀起了一阵区块链的热潮,无论是金融、信任、交易、溯源等领域都是非常受欢迎,慢慢的我们也将成为第一个吃螃蟹的人,本篇文章主要是与大家一起聊聊什么是区块链

    2023年04月10日
    浏览(39)
  • 《区块链原理与技术》学习笔记(一)——区块链概念和区块链共识机制

    《区块链原理与技术》专业课学习笔记 第一部分 一、概论 1.什么是区块链 2.区块链与比特币的关系 2.1 区块链是比特币的底层技术,是比特币的核心基础与架构 2.2 区块链不止是比特币 3 区块链的特点 3.1去中心化 3.2 透明性 3.3 不可篡改性 3.4 多方共识 4 区块链的分类 二、区

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包