区块链技术学习笔记——1.区块链介绍

2023-11-11

基本概念

区块链介绍

区块链是一个由多个参与方共同维护的并且持续增长的分布式数据库,通常也被称作分布式共享账本,可以促进在业务网络中记录交易和跟踪资产的过程。把多笔交易的信息以及表明该区块的信息打包放在一起,经验证后的这个包就是区块。
每个区块里保存了上一个区块的hash值,使区块之间产生关系,也就是说的链了。合起来就叫区块链。

区块链的工作原理

区块链中的区块根据存储内容可以划为区块头和区块体,区块头主要存储的是上一个区块的哈希值等信息,区块体主要存储的是网络内各节点的交易账本。由此相连的区块形成了区块链的链状的数据结构和存储方式。
区块链的账本
区块链的工作原理如下:
(1)客户端将发起的交易经数字签名后在网络上广播并等待确认;
(2)网络中节点对收到的数据记录信息进行校验,通过校验后数据记录被记录到一个区块中;
(3)区块链网络中的接收节点对收到区块实施特定的共识算法,区块通过共识后存储至区块链的同时生成该区块的哈希值并将其存储至下一个区块链中的区块头中。由此不断生成新的区块进而连成区块链。

区块链技术平台

区块链发展至今 己经 出 现了许多 区块链技术平台 , 比如 比特币 (Bitcoin) 、 以 太坊(Ethereum) 、 和超级账本(Hyperledger Fabric)等

  • 比特币
    比特币是最早全球使用最广泛的区块链技术,具有最去中心化、最多分布节点、最公平等特点。比特币提出了一个无需信用中介的数字货币系统,通过数字签名使得在线支付能够直接由一方发起并支付给另外一方,中间不需要通过任何的金融机构,并提出了一种通过工作量证明的机制的点对点网络来记录交易的公开信息,该网络通过随机散列对全部交易加上时间戳,将它们合并入一个不断延伸的基于随机散列的工作量证明的链条作为交易记录,形成的交易记录不可更改。每个节点都不需要明确自己的身份,可以随时离开或加入网络。比特币发展至今强有力的证明了区块链技术在数字货币领域的应用完全是有意义且有价值的,而比特币只是区块链应用的一个方向且不具有图灵完备的编程语言平台,也没有为用户提供开展宽阔的分布式账本系统应用。

  • 以太坊
    以太坊是一个通用的数字代币平台,它通过一套图灵完备的脚本语言建立应用并采用多种编程语言实现协议,通过Go语言编写的客户端作为默认客户端。以太坊的关键是智能合约,可比喻为以太坊系统里的自动代理人。存在单独的以太币地址从而实现以太坊用户之间的交易渠道,当以太坊用户进行交易是,设置好的智能合约将会被触发并且向用户返回该合约的结果。用户之间的交易除了以太币之外通常会包含一些附带的消息。开发人员可通过智能合约和易于交互的页面来开发广泛的DApp应用。

  • 超级账本
    超级账本(Hyperledger)是Linux基金会的区块链项目,致力于发展跨行业的商用区块链平台技术。它基于区块链技术、智能合约等相关技术,致力于建立新一代的分布式账本交易应用平台,在简化业务流程的同时,建立起商业信任、透明、审查能力。Hyperledger Fabric是一个带有可插入各种功能模块架构的区块链实施方案,目标是打造成一个由全社会共同维护的开源超级账本。用户可通过该平台方便快捷的地建立起一个企业级的区块链网络。网络内的账本对所有用户都是透明公开的,用户不仅可以查看和发起交易,还可读取实施更新的加密账本。用户发起交易一旦经过共识流程的验证,它就会立即加入到网络中所有的账本中,且不能更改,交易结果迅速、私有、保密且易于审计。
    三个平台的对比如下表:

项目 比特币 以太坊 超级账本
区块链形态特征 公有链 公有链为主 联盟链为主
共识机制 POW POW/POS Solo/Kafka
智能合约 不支持 支持 支持
内置代币
执行环境 内置脚本引擎 EVM Docker

区块链的四大特征

不可篡改,不可复制的唯一性,智能合约,去中心自组织或社区化

  1. 不可篡改性
    一旦信息经过验证并添加至区块链,就会永久的存储起来,除非能够同时控制住系统中超过51%的节点,否则单个节点上对数据库的修改是无效的,因此区块链的数据稳定性和可靠性极高。

  2. 唯一性
    在数字世界中,最基本单元是比特,比特的根本特性是可复制。但是价值不能被复制,价值必须是唯一的。之前我们已经讨论过,这正是矛盾所在:在数字世界中,我们很难让一个文件是唯一的,至少很难普遍地做到这一点。这是现在我们需要中心化的账本来记录价值的原因。比特币系统带来的区块链技术可以说第一次把“唯一性”普遍地带入了数字世界。

  3. 智能合约
    智能合约的出现使得基于区块链的两个人不只是可以进行简单的价值转移,而可以设定复杂的规则,由智能合约自动、自治地执行,这极大地扩展了区块链的应用可能性。
    当前把焦点放在通证的创新性应用上的项目,在软件层面都是通过编写智能合约来实现的。利用智能合约,我们可以进行复杂的数字资产交易。

  4. 去中心自组织
    由于使用分布式核算和存储,不存在中心化的硬件或管理机构,任意节点的权利和义务都是均等的,系统中的数据块由整个系统中具有维护功能的节点来共同维护。任一节点停止工作都会不影响系统整体的运作。区块链采用基于协商一致的规范和协议,使得整个系统中的所有节点能够在去信任的环境自由安全的交换数据,使得对“人”的信任改成了对机器的信任,任何人为的干预不起作用。

区块链的核心基本技术

目前业界学者所达成共识的区块链平台技术架构模型如图所示:
区块链分层架构模型
其中,最下面的数据层使用Hash函数、时间戳、加密签名技术封装交易数据区块,使用链式结构记录全部的交易信息和节点账户,并且基于Merkel树结构用于快速校验数据完整性;网络层包含节点的网络结构(如P2P网络)、交易数据的消息广播机制和验证方案;共识层主要包含用于区块链应用中各个节点对交易数据达成共同认识的各种共识算法,包括但不限于PoW、PoS、DPoS、PoA等;激励层的作用是对那些在区块共识过程中做出积极贡献的节点发放设定好数量的奖励,通过这种机制调动节点参与共识过程的积极性,主要包含激励的发行机制和分配机制;合约层主要提供相关代码、智能合约等相关接口供开发人员调用,为区块链应用提供编程的特性;应用层则面向普通用户提供相关应用程序,包含了区块链技术可能适用的落地场景。

共识机制

常用的共识机制主要有 PoW、PoS、DPoS、PBFT、Paxos等。由于区块链系统中没有一个中心,因此需要有一个预设的规则来指导各方节点在数据处理上达成一致,所有的数据交互都要按照严格的规则和共识进行;

  1. PoW
    proof of work,也就是工作量证明。比特币挖矿就是pow机制。原理就是计算机通过变量(nonce)变化,不断的计算产生一串串数字,直到某一串数字满足指定的难度要求,才停止这次计算。这串数字就是新生成区块的hash值。
  2. PoS
    proof of stake,也就是权益证明机制。pos机制直接与持有的代币数量和持币时间挂钩。这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。权益证明机制的原理是:要求用户证明自己拥有一定数量的数字货币的所有权,即“权益”。
  3. DPoS
    DPoS 算法的目的是为了解决 PoW 算法的性能问题和 PoS 算法后期可能出现的少数节点持有大量股份带来的风险问题。在 DPoS 算法中,保留了 PoS 的股份机制,采用了类似于现代企业中董事会投票机制的方式,节点用持有的股份投票选出少量称为见证人的节点,这些见证人节点会代理其余节点完成区块的生成和验证。通过减少对确认数量的要求,DPoS 算法大大提高了交易的速度。
  4. PBFT
    PBFT(实用拜占庭容错)算法是一种用于网络中存在拜占庭节点的容错技术,它能够在n个节点的网络中允许最多存在(n−1/3)的恶意节点,当网络中恶意节点的比例超过(n−1/3)时,则在共识过程中的任何操作都可能引起系统错误甚至崩溃。
  5. Paxos
    Paxos算法解决的问题正是分布式一致性问题,即一个分布式系统中的各个进程如何就某个值(决议)达成一致。Paxos算法运行在允许宕机故障的异步系统中,不要求可靠的消息传递,可容忍消息丢失、延迟、乱序以及重复。它利用大多数 (Majority) 机制保证了2F+1的容错能力,即2F+1个节点的系统最多允许F个节点同时出现故障。

密码学技术

密码学技术是区块链的核心技术之一,目前的区块链应用中采用了很多现代密码学的经典算法,主要包括:哈希算法、对称加密、非对称加密、数字签名等。

  1. 哈希算法
    Hash函数(HashFunctions)是密码学领域里非常重要的研究内容,主要用于对数据完整性提供重要的保证,具有逆向抗性、压缩易计算、抗修改、抗碰撞的特性。Hash函数将输入的明文数据通过计算转换得到一个长度固定的输出数据,该输出数据称为哈希值或者消息摘要。发送消息数据时,数据的发送方会将明文消息数据和该消息摘要一起发送给数据接收方。接收方收到明文数据后,采用同样的Hash函数计算明文数据的消息摘要,并将计算得到的消息摘要同接收到的该明文数据的摘要进行比对,以此检测明文数据在传输过程中的完整性和准确性。
  2. 非对称加密
    对称加密:加密解密用的同一个密钥;
    非对称加密:加密和解密分别使用公钥和私钥。
    用公钥对数据进行加密后,只有对应的私钥才能解密;反之如果私钥用于加密,则只有对应的公钥才能解密。这样可以保证通信双方是通信数据是私密的,并且能确认双方的身份。
  3. 数字签名
    在区块链应用中,为了保证区块内交易数据的正确性,必须要对交易产生的数据进行校验,以确保数据在交易双方的传输过程中是完整且未被更改过。而数字签名这一技术就是为了能保证数据消息的确是由交易发起者签名并发送的,从而达到上述目的。

分布式技术

  • 点多点(P2P)网络
    P2P网络是Peer-to-PeerNetwork的简称,是一种网络拓扑结构,特点是去中心化和扁平化。相对于传统的C/S(客户端/服务端)结构,P2P网络不需要第三方中心服务器的存在,网络中的各节点既能从其余节点获取资源与服务,也能提供资源和服务给其余节点。由于区块链最主要的特性就是去中心化,这就使得区块链底层的网络结构只能遵循P2P网络技术进行实现。

  • 分布式存储
    区块链是一种点对点网络上的分布账本,每个参与的节点都将独立完整地存储写入区块数据信息。传统的分布式存储是一个中心化的机构在很多地方做了数据备份,在区块链里是通过链中的各个节点开放的存储空间来建立整个区块链里的分布式数据库。区块链里的分布式存储可以提高网络的运行效率,解决了传统分布式存储中服务器处理速度的瓶颈。

智能合约

智能合约允许在没有第三方的情况下进行可信交易,只要一方达成了协议预先设定的目标,合约将会自动执行交易,这些交易可追踪且不可逆转。具有透明可信、自动执行、强制履约的优点。

区块链技术应用

  • 信息防伪溯源
    如农产品的供应链是一个非常复杂的过程,涉及多方,农业局、卫生局、药监局、工商局、环保局等多个部门交织其中。我们为每个环节的参与者分配一个以太坊账号,例如每个供应商一个账号,每个代理商一个账号。这样任何一方经手后都会使用自己的账号想合约中添加数据。
  • 数字货币
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链技术学习笔记——1.区块链介绍 的相关文章

  • wps 云文档的服务器地址,在WPS云文档保存、管理文件

    云文档上传和获取服务端调用 目录 1 获取APP剩余空间 获取APP剩余空间 接口说明 获取APP剩余空间 请求说明 参数说明参数参数类型是否必须说明access tokenstringrequiredaccess token appids
  • 相关系数和p值的含义

    相关系数就是两个变量之间的相关程度 1 lt 0负相关 r gt 0正相关 r2越接近1表示越相关 P值即概率 反映某一事件发生的可能性大小 统计学根据显著性检验方法所得到的P 值 一般以P lt 0 05 为显著 P lt 0 01 为非

随机推荐

  • [Unity] Unity 3D 中的旋转

    Unity 3D 中的旋转 一 Unity 3D 中 Rotation 在Unity中 旋转通常可以用一个三维向量 x y z 表示 实际上这是欧拉角 三个分量分别是绕x轴 y轴和z轴的旋转角度 要对一个GameObject进行旋转 可以直
  • HTCvive官方开发插件介绍

    相信各位小伙伴们在使用SteamVR Unity Plugin的过程中应该都遇到过这样的问题 获取设备很麻烦 设备在重启后indexID会改变从而导致设置好的左右手设备出现交错 无法与UGUI的事件系统连接导致无法使用UGUI等等很多问题
  • 关于windows本机开放端口后,同一个网络下的其他电脑telnet不通的解决办法

    前提 电脑A与电脑B均在同一个wifi下 本地电脑A 启动了一个kong网关 不管是什么应用 只要开启了一个监听端口就行 并且将docker里面的8000端口映射到本机的8000端口 此时在电脑A上的命令行运行 telnet 10 xxx
  • Java url转MultipartFile inputStream转File file转multipartFile

    Java url转MultipartFile inputStream转File file转multipartFile url转MultipartFile param url return throws Exception public st
  • linux kerne新版本编号?

    今天看到linux内核版本号都到3 4了 心中非常惊讶 为什么现在版本飞这么快了 于是一番google 终于找到了两篇文章 大家可以看看 Linux kernel version bumped up to 3 0 as 20th birth
  • VirtualBox 安装 增强功能

    在VirtualBox中安装好系统后 一般建议安装增强功能 因为一开始左上方的 视图 菜单中无缝模式和自动调整显示尺寸功能不可用 屏幕分辨率不够 无法与原系统共享剪贴板等 安装过程如下 点击VirtualBox的 设备 安装增强功能 此时桌
  • 解决 PHP Mysql 和 UTF8的问题

    http sixpoint me 443 solving php mysql utf8 issue 1 数据库 CREATE DATABASE db name CHARACTER SET utf8 DEFAULT CHARACTER SET
  • 【vue】页面缓存回跳后 侧边栏z-index层级导致页面快闪

    问题描述 公司使用的帆软报表页面没有加keepAlive缓存 在从一个弹框页面跳转到子报表后 切换路由回到当前页面是会继续展示弹框页面 但是页面由于z index层级问题会闪一下 问题排查 经过代码查看是因为导航栏小箭头使用了定位 z in
  • vue 的酒店⺠宿⽹站毕业设计源码250910

    基于Springboot的酒店民宿网站 摘 要 随着互联网和宽带上网的普及 Internet 网站在中国异军突起 并日益渗透到人们的日常生活中 网站是运用现代通信技术 计算机和网络技术进行的一种社会形态 其目的是通过互联网满足人们的需求 在
  • sql查询条件:闭区间和开区间(>=和>)效率分析

    A select from T Info Passengers where id gt 3245B select from T Info Passengers where id gt 3245 A 返回结果46956条 占用时间 毫秒 读取
  • bigdecimal加减乘除运算

    1 加法 Test public void testAdd 用double类型初始化BigDecimal对象 BigDecimal numA new BigDecimal 0 05 BigDecimal numB new BigDecima
  • 【数据结构】排序算法大总结

    文章目录 1 排序的概念及运用 2 常见排序算法的实现 2 1 插入排序 2 1 1 直接插入排序 2 1 2 希尔排序 2 2 选择排序 2 2 1 直接选择排序 2 2 2 堆排序 2 3 交换排序 2 3 1 冒泡排序 2 3 1 快
  • 图解redis五种数据结构底层实现(动图版)

    redis有五种基本数据结构 字符串 hash set zset list 但是你知道构成这五种结构的底层数据结构是怎样的吗 今天我们来花费五分钟的时间了解一下 目前redis版本为3 0 6 动态字符串SDS SDS是 simple dy
  • Spring Cloud Gateway网关工作原理、网关谓词和GatewayFilter工厂

    Spring Cloud Gateway 官方文档地址 https docs spring io spring cloud gateway docs current reference html Spring Cloud Gateway项目
  • 2021-01-25

    1 运算符优先级 2 条件判断 2 1 条件判断语句 if语句 执行的流程 if语句在执行时 会先对条件表达式进行求值判断 如果为True 则执行if后的语句 如果为False 则不执行 语法 代码块中保存着一组代码 同一个代码块中的代码
  • Sample Python Implementation using a Linked List

    直接贴代码 class Node object def init self value next node None self value value self next node next node class List object d
  • Netlist与RTL仿真结果不匹配

    Netlist 仿真和RTL比匹配主要是因为Netlist会存在不定态以及传播不定态 导致仿真不正确 不定态的来源 大多数设计在上电时不能保证cell的特定的逻辑状态 flip flop或memory根据环境因素 芯片间的工艺差异等可能会有
  • nacos访问地址无登录界面问题:版本2.2.3

    场景 访问 localhost 8848 nacos 地址时 没有弹出登录界面 提示 当前集群没有开启鉴权 请参考文档开启鉴权 此时左边菜单也没有权限控制模块 原因分析 这是新版本的配置文件中鉴权开关没有开启的原因 具体可以修改以下配置项
  • python-使用chinese_calendar判断是否节假日/工作日/调休日,-使用weekday()判断星期几

    最近在编写一个小程序时 需要判断是否为工作日 节假日以及星期几 发现chinese calendar这个第三方插件还蛮好用 可以用来识别是否工作日 datetime下的weekday 判断星期几 现做如下分享 一 工作日 节假日的判断 1
  • 区块链技术学习笔记——1.区块链介绍

    基本概念 区块链介绍 区块链是一个由多个参与方共同维护的并且持续增长的分布式数据库 通常也被称作分布式共享账本 可以促进在业务网络中记录交易和跟踪资产的过程 把多笔交易的信息以及表明该区块的信息打包放在一起 经验证后的这个包就是区块 每个区