一、区块链的概念:

侠义来讲,区块链是一种按照时间顺序将数据区块一顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本

广义来讲,区块链技术利用链式数据结构来验证和存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全性、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算范式

二、区块链基础技术

区块链用到的基础技术全是当前非常成熟的技术:如哈希运算数字签名P2P网络共识算法以及智能合约等。

1、哈希算法:简单讲就是把任意长度的输入,通过计算生成一个固定长度的字符串,输出的该字符串称为该输入的哈希值。

优秀的哈希算法具备正向快速(计算输出速度快)、输入敏感、逆向困难、强抗碰撞等特征。

①通过哈希构建区块链的链式结构,实现防篡改。

②通过哈希构建默克尔树,实现内容改变的快速检测。哈希值并不是直接讲所有交易内容计算得到哈希,而是一个哈希树。首先对每笔交易计算哈希值;然后两两分组,对这两个哈希值再计算得到一个新的哈希值,两个旧的哈希值作为新哈希值的叶子节点,如果哈希值为单数,则对最后一哈希值再次计算哈希值即可;然后重复上述计算,直至最后只剩一个哈希值,作为默克尔树的根。如需验证交易,只需要验证默克尔树即可。

2、数字签名

数字签名作用:实现权限控制识别交易发起者的合法身份,防止恶意节点身份冒充

数字签名的原理:通过密码学领域相关算法对签名内容进行处理,获取一段用于表示签名的字符。密码学领域,一套数字签名算法一般包含签名验签两种运算,数据经过签名后,非常容易验证完整性,并且不可抵赖。

数字签名的流程:

①发送方A对原始数据通过哈希算法计算数字摘要,使用非对称密钥中的私钥数字摘要进行加密,加密后的数据就是数字签名;

数字签名与A的原始数据一起发送给验证签名的任何一方。

验证数字签名的流程:

①首先,签名的验证方,一定要持有发送方A的非对称密钥对的公钥

②接收到数字签名A的原始数据后,使用公钥对数字签名进行解密,得到原始摘要值

③对A的原始数据通过同样的哈希算法计算摘要,对比解密得到的摘要值重新计算得到的摘要值对比,相同则签名验证通过。

3、共识算法

共识算法目的:保证所有节点最终都记录一份相同的正确数据。

共识算法主要归为一下四类:

①工作量证明(Proof of Work, PoW)类的共识算法

该类算法核心思想是所有节点竞争记账权,对于每一批次的记账都赋予一个难题,要求只有能够解出难题的节点挖出的区块才是有效的。PoW算法给参与的节点带来的计算开销,除了延续区块链生长外无其他任何意义,造成了巨大的能源浪费

②Po* 的凭证类共识算法:

根据每个节点的某些属性,定义每个节点进行出块的难度或优先级,并且取凭证排序最优的节点,或是取凭证最高的小部分节点进行加权随机抽取某一节点,进行下一段时间的记账出块。一定程度上降低了出块的开销,但凭证的引入提高了算法的中心化程度。且大多数该类算法未经过大规模的正确性验证。

③拜占庭容错(Byzantine Fault Tolerence, BFT)类算法

BFT算法则希望所有节点协同工作,通过协商的方式来产生能被所有(诚实)节点认可的区块。

实用拜占庭容错算法(Practical BFT)提高了BFT算法容错率,降低了算法复杂度。BFT类共识算法一般定期选出一个领导者,由领导者来接收并排序区块链系统中的交易,领导者产生区块并递交给其他节点对区块进行验证,进而其他节点”举手“表决时接受或拒绝该领导者的提议。如果大部分节点认为当前领导者存在问题,这些节点可以通过多轮投票协商过程将当前领导者推翻,再以某种预先定好的协议协商产生出新的领导者节点。

BFT类算法一般有完备的安全性证明,但协商轮次较多,协商的通信开销较大业界普遍认为,BFT算法所能承受的最大节点数目不超过100.

④结合可信执行环境(Trusted Execution Environment, TEE)的共识算法

利用软硬件结合的共识算法。可信执行环境是一类能够保证在该类环境中执行的操作绝对安全可信无法被外界干预修改的运行环境。利用可信执行环境,可对区块链系统中参与共识的节点进行限制,很大程度上可以消除恶意节点的不规范或恶意操作,从而减少共识算法在设计时异常场景的考虑,一般来说,可以大幅提升共识算法的性能。

4、智能合约

简单来说,只能合约是一种在满足一定条件时,就自动执行计算机程序

一个基于区块链的智能合约需要包括事务处理机制数据存储机制以及完备的状态机,用于接收和处理各种条件。并且事务的触发、处理及数据保存都必须在链上进行

但是智能合约的安全性需要关注。

5、P2P网络

传统的网络服务架构大部分是客户端/服务端client/server, C/S架构,即通过一个中心化的服务端节点。对许多个申请服务的客户端进行应答和服务。 C/S架构也称主从式架构服务端是整个网络服务的核心,客户端之间通信需要依赖服务端的协助。 C/S架构的优点是能够保持一致的服务形式,方便服务和升级,便于管理。缺点是当服务节点发生故障时,整个服务都会陷入瘫痪。

对等计算机网络Peer-to-Peer Networking,P2P网络),消除了中心化,将所有的网络参与者视为对等者(Peer),并在他们之间进行任务和工作负载分配。P2P网络具有极强的可靠性网络容量没有上限,P2P网络节点数目越多,P2P网络提供的服务质量就越高

三、区块链的分类

  • 公有链(Public Blockchain):比特币
  • 私有链
  • 联盟链

“币”只公有链经济生态和模型中的一部分区块链技术并不一定要有币

公有链离开“币”的概念难以存活。联盟链和私有链的参与的节点的投资和收益都是较为特殊的,参与者希望从链上获得可信数据或者共同完成某种任务,所有他们有义务和责任取维护区块链系统的稳定运行。

《区块链技术原理》笔记相关推荐

  1. 《信贷的逻辑与常识》笔记

    序 银行信贷风险管理的反思 现状与趋势 银行贷款的质量变化与经济周期.宏观调控政策等存在很高的相关性 现在银行不良贷款的增加主要是前几年经济快速增长时企业过度投资.银行过度放贷所带来的结果. 从历史情 ...

  2. AI公开课:19.02.27周逵(投资人)《AI时代的投资逻辑》课堂笔记以及个人感悟

    AI公开课:19.02.27周逵(投资人)<AI时代的投资逻辑>课堂笔记以及个人感悟 目录 课堂PPT图片 精彩语录 个人感悟 课堂PPT图片 精彩语录 更新中-- 文件图片已经丢失-- ...

  3. 人工智能入门算法逻辑回归学习笔记

    逻辑回归是一个非常经典的算法,其中也包含了非常多的细节,曾看到一句话:如果面试官问你熟悉哪个机器学习模型,可以说 SVM,但千万别说 LR,因为细节真的太多了. 秉持着精益求精的工匠精神不断对笔记进行 ...

  4. 【逻辑回归学习笔记】

    算法描述 1.逻辑回归要做的事就是寻找分界面实现二分类. 2.问题假设:对一堆三角形和正方形分类. 3.数据输入:已知正方形和三角形的坐标和标签. 4.算法过程: 知识储备 1.分类和回归 ①分类的目 ...

  5. 逻辑回归函数学习笔记

    继续逻辑回归学习,今日笔记记录. 1.逻辑回归和线性回归的关系:对逻辑回归的概率比取自然对数,则得到的是一个线性函数,推导过程如下. 首先,看逻辑回归的定义 其次,计算两个极端y/(1-y),其值为( ...

  6. 2.2 逻辑回归-机器学习笔记-斯坦福吴恩达教授

    逻辑回归 上一节我们知道,使用线性回归来处理 0/1 分类问题总是困难重重的,因此,人们定义了逻辑回归来完成 0/1 分类问题,逻辑一词也代表了是(1) 和 非(0). Sigmoid预测函数 在逻辑 ...

  7. LVM逻辑卷分区笔记

    磁盘的静态分区有其缺点:分区大小难评估,估计不准确,当分区空间不够用的时候,系统管理员可能需要先备份整个系统,清除磁盘空间,然后重新对磁盘进行分区,然后恢复磁盘数据到新分区,且需要停机一段时间进行恢复 ...

  8. 适合理工直男的钟平老师逻辑英语学习笔记

    一切的一切都只是套路!             --鲁迅 核心公式: En: (状语1) 主(定语1) 谓(状语2) (宾)(定语2) (状语1) Ch: (状语1) (定语1)主 (状语2)谓 (定 ...

  9. 【数字逻辑】学习笔记 第四章 Part2 常用组合逻辑电路与竞争、险象

    文章目录 一.常用组合逻辑电路 1. 译码器 (1) 二进制译码器 74LS138(3/8译码器) a. 一般符号和图形符号 b. 74LS138功能表 c. 两片 `74LS138` 构成 `4-1 ...

  10. 线性回归、逻辑回归学习笔记

    学习源代码 import numpy as np import matplotlib.pyplot as plt def true_fun(X): # 这是我们设定的真实函数,即ground trut ...

最新文章

  1. 基于Java的RDMA高性能通信库(一):IBM jVerbs库
  2. 【OpenCV3】cv::Mat块访问与操作(ROI区域的选取)
  3. Android-FixBug热修复框架的使用及源码分析(不发版修复bug)
  4. window2003 server的一些优化设置_windows 2003
  5. Mybatis基于XML配置SQL映射器(二)
  6. C语言代码规范(十)花里胡哨代码鉴赏
  7. C语言实现的FFT与IFFT源代码,不依赖特定平台
  8. 关于浏览器的那些事情1【面试】
  9. LeetCode 1116. 打印零与奇偶数
  10. 文本文档代码大全简单_简单4步搞定PC版微信多开,不再重复切换
  11. BME280嵌入式设计-基于STM32F103的温湿度气压控制板-支持蓝牙串口输出数据!!!
  12. win10玩cf如何调全屏_穿越火线:WIN10系统烟雾头和画面卡顿解决办法
  13. 【刘晓燕长难句分析】1.简单句
  14. Scrapy-spiders下项目运行方法
  15. 找不到设备 将计算机连接到USB打印机,打印机连接电脑没反应怎么办
  16. JavaScript:100以内质数1000以内的质数显示和统计
  17. android手机操作手册,数字填图(Android版)操作手册.pdf
  18. 海康车牌识别一体机控制道闸起落杆(java版)
  19. 你已经是智能机器人,该上岗新基建了
  20. Directx11进阶教程PBR(3)之IBL

热门文章

  1. HTML和CSS基础
  2. 金科科技学院计算机系统,金陵科技学院教务管理系统登录入口二本公办院校
  3. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day5】 —— 基础篇2
  4. 数学模型天气预测方法_预测即将到来的天气的新方法
  5. 如何给单据分录上增加核算项目的F7(代码示例)。
  6. 浅谈GPU虚拟化技术(四)- GPU分片虚拟化
  7. 梁宁《产品思维 30 讲》 笔记
  8. Longest Commen Prefix
  9. idea项目一键部署增强版(经验篇)
  10. 技术人员的赚钱之道-9:极思极恐,技术人员需了解的“穷人”思维与“富人”思维的差别