区块链1——区块链基础
作者:Yian
时间:2022年 10月 14日
介绍区块链的概念与核心技术如:共识机制、安全机制、存储机制、P2P通信机制、智能合约以及相关的知识补充。
参考资源:《HyperLedgerFabric技术内幕》、互联网博客。(如侵权烦请联系删除)
区块链的概念
先举个例子:如银行作为大型中心化信用机构,用户的转账、交易记录以及余额信息存储在银行数据中心,数据的获取与证伪均有银行提供。而区块链的方式相当于每个用户都有一个账本,当其中一个用户发生交易时,会将这笔交易记录到所有用户的账本上,单个用户篡改自己的账本不影响其他人手中的数据,由大家一起实现对数据的维护。
区块链是一种在对等网络环境下(P2P),通过透明和可信规则,按照时间戳顺序构建不可伪造、不可篡改和可追溯的块链式数据结构。
区块链服务用户可以对本地数据进行修改或删除(恶意节点行为),但是不会影响全网共识后的数据一致性。但是恶意节点不能超过一定比例。
根据不同应用场景,分为三种区块链部署模型
- 公有链:任意区块链服务客户端都可以使用,任意节点均可以接入,由所有节点共同参与共识和读写数据,具有较强的去中心化特征,如比特币和以太坊;
- 联盟链:只有利益相关的特定区块链服务客户才能使用,节点只有经过授权后才能接入网络,接入节点按照规则参与共识和读写数据,具有较弱的去中心化特征,如超级账本;
- 私有链:只有单个区块链服务客户使用,仅有授权的结点才能接入,并按照规则参与共识和读写数据。
区块链上记录的区块对象是打包了一段时间内发生的交易与状态的集合,区块头部保存了上一个区块的哈希值、当前区块的哈希值。
区块链是通过现代密码学与分布式共识机制等技术来确保交易可信,而不是通过大型中心化信用机构解决信任背书问题。
区块链的核心技术
区块链的核心技术有:共识机制、安全机制、存储机制、P2P通信机制、智能合约
共识机制
所谓“共识机制”,是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们就可以认为全网对此也能够达成共识。
举个例子:如我现在位于国外一列火车的某一节车厢里,我座位旁边老妇人的钱包被偷了,她向我投来了怀疑的目光,此时车厢里的一个美国人、一个日本人、一个韩国人、一个泰国人、一个外星人,五个人都说我是好人,基本上可以断定不是我偷的钱包(这五个人都不是恶意节点的话)。
在区块链系统中,共识机制是指实现不同信任主体节点之间建立信任、获取权益的数学算法,提供给分布式网络参识节点以用于确认交易动作引起的账本中的状态数据变化,并且能够达成最终一致性。
当前常见的共识机制有PoW、PoS、DPoS、PBFT等,他们在合规监管、性能效率、资源消耗以及容错性方面各有特点。
- Proof of Work(工作量证明)机制,PoW 属于按劳分配,多劳多得,就如同大家在比特币系统中一起进行数学运算,最先运算出的才能获得奖励。进行运算获得奖励的过程称之为挖矿,参与挖矿的人们称之为矿工。“挖矿”即通过自身算力不断计算寻找满足规则和小于难度目标(前若干位全部为0)的哈希值。
- Proof of Stake(权益证明)机制,在 PoS 机制中,是不需要消耗电力来进行运算,而是通过抵押 token 来获得打包区块的权利。当一笔交易发生时,系统会对打包区块和验证区块的节点来进行奖励,奖励则是增发或者解锁的 token。
- Delegate Proof of Stake(股份授权证明)机制是在 PoS 的基础上进行了改良,举例来说就是大家公认的投出选票,选举出一定数量的代表,让这些代表进行验证和记账等,可以理解为 PoS 的升级版。
- Practical Byzantine Fault Tolerance(使用拜占庭容错)算法。PBFT在保证可用性和安全性(liveness & safety)的前提下,提供了(n-1)/3的容错性,意思就是如果系统内有n台机子,那么系统最多能容忍的作恶/故障节点为(n-1)/3个。(作恶节点可以不响应或者回应错误的信息)。
共识机制 | 优点 | 缺点 |
---|---|---|
PoW | 高度去中心化、安全系数高 | 资源消耗大、效率不高 |
POS | 效率高、不浪费资源 | 被动中心化、安全漏洞 |
DPoS | 更高的效率和性能 | 弱去中心化、安全漏洞 |
PBFT | 容错率达1/3 | 节点多时效率降低 |
安全机制
区块链中采用了现代密码学中的哈希算法、对称加密算法、非对称加密算法等来保证数据机密性、完整性、抗抵赖性等安全特性。
- 哈希算法,如MD5、SHA-256。哈希算法可以将任意长度的消息明文转换映射为固定长度的二进制串输出,称为哈希值或散列值,又称该消息的指纹或摘要。即使两份数据只有一位不相同,他们产生的哈希值也会完全不具备关联性。
- 对称加密算法,如DES、ADE。对称即加密过程与解密过程的密钥是相同的,速度快且占用空间小,缺点是密钥一旦泄露就失去了安全性。适用于较大数据量的加解密过程,不适合签名与验证签名的过程。
- 非对称加密算法,为用户提供一组公开密钥和私有密钥,即公钥和私钥。任何人都可以用公钥对数据加密,只有用户能使用私钥进行解密,而且用户可以通过私钥对信息进行签名,签名具有不可伪造性。适用于签名与验签场景。
哈希算法在区块链中的应用:我们可以通过比较由区块数据生成的哈希值来判断当前区块是否遭到篡改。
存储机制
区块链数据通常存储在包括KV键值型数据库、关系型数据库、普通文件等中。
区块链平台常用的KV键值型数据库包括LevelDB、CouchDB、BerkeleyDB等,用于保存区块链中的区块索引信息、状态数据等键值对类型的数据。
超级账本还使用普通文件存储原始的账本区块数据,将共识后的区块数据按protocol buffer编码格式序列化为二进制字节数组后,写入文件进行持久化保存。
P2P通信机制
区块链网络通常采用P2P协议,节点之间直接通过交换方式共享信息。这种分布式架构避免了集中式架构中心节点的性能瓶颈,可以有效利用网络节点的性能与网络带宽,从而提高系统的整体效率。
智能合约
智能合约是交易性的计算机程序,它可以在不需要干预的情况下自动执行协议条款。
就区块链而言,智能合约的本质是数字协议,一旦达到预定的标准,它就会在区块链上存储和执行。一旦有了特定的输入,它就会自动执行预先确定的特定输出。
在超级账本中,智能合约又被称为链码、链上代码(chaincode)智能合约如果存在漏洞会出现安全风险。
区块链1——区块链基础相关推荐
- 【问链财经-区块链基础知识系列】 第二十七课 区块链与分布式账本的异同
编者按:在加密货币和区块链领域,有一个业内人士常挂在嘴边的新术语:分布式账本技术(简称DLT).但具有讽刺意味的是,恰恰是比特币和各种区块链试图颠覆的实体们,例如银行,政府和大公司,对分布式账本技术情 ...
- 区块链教程(四):搭建私链、web3.js基础
注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 区块连教程(一):前置知识-linux补充 区块链教程(二):基础概念介绍 区块链教程(三):Solidity编程基础 区块链教程(四):搭建私链 ...
- 区块链教程(二):基础概念介绍
注:本教程为技术教程,不谈论且不涉及炒作任何数字货币 本系列重点在于以太坊基础知识.以太坊客户端以及以太坊solidity编程,因此博客重点在于以太坊核心知识点的掌握,区块链部分的基础知识可以作为补充 ...
- 【问链财经-区块链基础知识系列】 第四十四课 邮储银行:U链福费廷业务系统
一.案例摘要 福费廷业务是银行根据客户或其他金融机构的要求,在开证行.包买行或其他指定银行对信用证项下的款项做出付款承诺后,对应收款进行无追索权的融资.邮储银行以企业级开源区块链平台 Hyperled ...
- 区块链:1、基础技术 哈希、数字签名、智能合约
区块链:1.基础技术 一.哈希运算(Hash Algorithm) 1.概念 哈希运算即散列算法.其功能就是可以将任意长度输入通过一定计算生成一个固定长度的字符串,输出的这个字符串即输入的哈希值. 2 ...
- 人工智能大数据与区块链联合在线实验室基础装修技术要求
人工智能大数据与区块链联合在线实验室基础装修技术要求 实验室教学基础环境为打造先进的多媒体大数据人工智能与区块链实验室与良好的智能化学习环境,需要对以下强弱电系统进行基础架构,尽量做到铺设完整性确保以 ...
- 【问链财经-区块链基础知识系列】 第四十六课 区块链如何作用于医药行业
6月份的一则新闻引起人们很大的关注,"美国食品药品监督管理联合四大巨头公司:区块链平台提供公司IBM.世界最大零售公司沃尔玛.全球审计服务公司KPMG.世界上最悠久的制药公司Merck,建立 ...
- 【问链财经-区块链基础知识系列】 第三十九课 EOS与ETH体系结构比较全解析
以太坊理解成为一个在其上可以开发运作各种去中心化的应用(Dapps)的去中心化平台,同时它有一个优势在于,它确保了它的用户在运行这些应用程序(Dapps)时不受任何第三方的约束. EOS将是一个区块链 ...
- 【问链财经-区块链基础知识系列】 第二十九课 区块链的世界:中国向左 美国向右
世界有两大互联网生态,一个是美国构筑的,当中的互联网公司有苹果.谷歌.亚马逊.脸书.雅虎等:另一个是中国构筑的,当中互联网公司有阿里.腾讯.百度.京东.今日头条等.这两大生态占据了全球互联网十强. 其 ...
最新文章
- shell 学习之正则、别名以及管道重定向
- 【干货】路由黑洞的5种解决方法大PK
- c++vector初始化的几种方法
- php调用.net webservice,PHP调用.NET的WebService 简单实例
- vscode生成代码图片_vs Code 快速生成代码
- SpringMVC Java config freemarker
- mysql 存储过程如何声明多个变量赋值_mysql存储过程:定义变量,赋值,判断,输出...
- 机器视觉硬件选型——镜头选型
- Debian安装autoconf
- 关于使用CKplayer播放m3u8视频出现没有视频的问题分析
- linux电路图软件有哪些,新手福利,推荐一款好用的电路图绘制软件!
- 创建Oracle本地数据库详细步骤
- 如何选择适合你的兴趣爱好(三十九),口琴
- 计算机链接局域网,window7连接局域网的方法
- javascript 删除节点
- 《构建之法》第4.17章读书笔记
- CentOS 7 安装配置 k8s 1.25.3
- 关于oem7grub 0.4.4 2009-11-18,memory:639k/30 的问题的解决
- 综述 | 最新双曲深度神经网络综述论文
- Csdn修改账户手机绑定问题
热门文章
- Edge浏览器占用大量硬盘空间
- Docker运行报runc did not terminate successfully: exit status 127: unknown
- html中的开启礼盒的代码,CSS3 蛋糕+生日礼盒打开动效
- localhost与127.0.0.1
- 三星a7108android 7.0,三星A7108解锁教程 三星A7108解锁Bootloader
- SOUI总结之比较常用的类
- WPF教程(一)---创建一个WPF程序基础知识
- PLSQL Developer新手使用教程(图文教程)(转载)
- PostgreSQL的MVCC
- 【python】pyi文件