文章目录

  • 前言
  • 基本概念
  • 工作原理
  • 底层架构
  • 共识机制

前言


区块链一词很早就进入了我的视野,一顿操作猛如虎后,发现可意会,但难以用文字阐述清楚,本文也是在草稿箱不断修修改改,尽量用通俗的语言进行梳理,亦作为笔记,若有错误请指出。

基本概念


什么是区块链?区块链本质是一个去中心化的分布式账本,用链表的形式串联起一个个关联的数据块。
那么什么又是去中心化和分布式账本呢?

  • 去中心化

谈到去中心化不得不对比中心化,这里援引之前看到的一个例子(具体出处找不到了)。

比如在某宝买东西的简化流程,我们下单之后钱打到支*宝,支*宝收到款后通知卖家发货,然后买家确认收货,支*宝再将货款打给卖家。

可以看出,整个交易虽然是围绕买家和卖家展开的,但是却离不开一个中心——支*宝,
也就是需要一个信任机制,即买家担心先付款后收不到货,卖家担心先发货后收不到款,谁也不愿意先手,此外若出现问题也无法自证,交易难以进行。

支*宝则充当买卖双方信任的中心,使得交易得以顺利进行,但是如果支*宝出现故障或黑客入侵甚至倒闭,不承认这笔交易,那么买卖双方仍难以自证。同样的,类似的中心化还有很多,如跨境支付的SWIFT等。

而所谓的去中心化,去信任化,即没有中心,每个人都有一个“账本”来记录交易,大家都信任账本,即下面谈的分布式账本。

  • 分布式账本

首先分布式即意味着分布式存储,每个人都有一个完整的账本副本,每个人都可以在自己的账本上记录交易,所有人的账本记录的信息是相同的。

每当新增记录时,会广播到所有人,所有人都要在自己的账本上新增该记录。这也就意味着仅仅可以篡改自己的账本是无用的,因为别人的账本上仍存在该记录,当半数以上都存在该记录时则无法抵赖,安全性大大提升。

理论上,如果能篡改整个网络中51%以上的账本就可以篡改成功,即51%攻击,但是需要篡改的数量是十分庞大的,需要付出的成本和代价十分高昂。

但是记账必定是需要消耗资源的,又如何让别人帮你记账呢?这就需要一个奖励机制,工作量的证明和劳动报酬,而奖励机制的思路也很简单,听到记账需求的广播后,第一个计算出该笔记录编号的人获得奖励,并通知其他人你已获得奖励,并将这个交易记录的编号同步到他们的账本上,转而计算下一个编号。如比特币中的奖励机制,奖励初始是50个比特币,每21万块后奖励减半,如今奖励是6.25个比特币。

那会不会存在两个人同时算出编号的情况呢?答案是肯定的。当两个人同时算出编号并广播后,离他们近的人往往先收到广播并记账,此时便出现了两个版本的账本,即出现了分叉。但是所有人的账本都是应该相同的,记录的是一条唯一的顺序严谨的信息链,对于不同的分叉问题,采用的是谁长谁说了算,即继续计算下一个编号,发展分叉,最终确认更长的分叉版本,舍弃更短的分叉版本,即少数服从多数。在比特币中,一个区块的确认时间是10分钟,包含了这段时间内全网发生的所有交易,一般链长到六后确定唯一分叉,即至多需要60分钟后才能确认获得奖励。

中本聪定义的一个区块大小为1MB,一般一笔交易约250B,即比特币中一个区块至多可以存储约4000笔交易。若10分钟确认4000笔交易,约每秒可以确认7笔交易,随着交易的增多势必会造成堵塞。一个解决方法是扩大一个区块1M的容量,即比特币扩容问题,因此衍生了很多比特币的变形版本,但是扩容势必影响处理速度,现存币数和币价值等,产生的新币种需要市场认可,其中,以太币是从比特币中比较有名的分叉。

工作原理


上面用记账的比喻简介了区块链技术的基本概念,进一步展开的话,“账”可以是任何有价值的东西,可以结合到各个实际的应用场景中,比如比特币和以太币等虚拟电子货币是较为人知的案例。

在比喻中仍有很多问题没有解释,账的组成?怎么记账?怎么计算编号?怎么验证别人的编号是否计算正确?即工作原理。

  • 区块

一笔账即一个区块,作为区块链的基本单元,主要包含存储交易记录的数据和本区块相关信息的元数据。

区块包含难度、时间戳、随机数、Merkle树根、前一个块哈希、当前块哈希等相关信息、以及交易记录。


Merkle树即用叶子结点的哈希生成父节点的哈希,以此递归,最终将所有交易生成一个哈希(Merkle树根),以便于验证对比。

创建一个新块后,需要计算块哈希(账的编号),需要将高度、时间戳、上一个块哈希、随机数组合起来使用SHA-256算法计算哈希,而难度是调整哈希值前缀零的数量,只有满足前缀零的数量后才算作计算正确,否则修改(或递增)随机数并继续算哈希,直到算出满足要求的哈希,或者被别人算出后转而计算下一块,或者同时算出进入分叉。

(插播反爬信息 )博主CSDN地址:https://wzlodq.blog.csdn.net/

  • 不对称加密

区块链中的交易使用了不对称加密,也就是公钥和私钥,使得交易双方具有匿名性,并提高安全性。

所谓的公钥私钥,即使用公钥来加密,使用私钥来解密,加密解密使用钥匙不同,即不对称加密。比如交易者A和B,A对外发布自己的公钥,所有人都可以用公钥来进行加密,并发送加密信息给A,但是解密只能使用A手中的私钥来解密,如此一来,即使加密信息被拦截也无法解密破译。

使用私钥对未花费的交易签名,区块链中的交易具有匿名性,公钥和比特币地址都依赖私钥,即有了私钥才能生存公钥和地址,就能花费对应地址上面的比特币。也因为比特币的匿名性便于黑客和不法分子隐藏,我国不承认比特币合法。但是区块链中不可篡改和可追溯性,只要黑客的地址提现比特币到银行卡上或与现实交互,就会露出蛛丝马迹。

底层架构


类似计算机网络体系结构OSI,区块链架构也进行了分层,包括数据层、网络层、共识层、激励层、合约层、应用层。

图片摘自百度图片(偷懒)

  • 数据层
    也就是区块链技术的物理形式和数据,包括区块定义和第一个区块“创世区块”,后续区块链接在它之后形成主链。定义了比如使用哪一个哈希函数等。
  • 网络层
    也就是一个点对点P2P网络,区块链网络中每个节点都可以创建区块并使用广播通知其他节点,当网络中51%以上节点通过验证后,即可添加到主链上。
  • 共识层
    也就是去中心化后,各节点要如何有效的达成共识和信任,另起为下一节来介绍。
  • 激励层
    也就是前面谈的奖励机制,比特币定义总量为2100万枚,新区快的初始奖励为50枚,每21万个区块后奖励减半,当比特币达到2100万枚后,将不再奖励新比特币,届时收益只能靠交易的手续费。
  • 合约层
    也就是智能合约或脚本代码,如规定比特币的交易方式及过程中的各种细节等。
  • 应用层
    也就是封装了区块链技术的各种应用场景。因为区块链的去中心化、不可篡改、可追溯、可信任、公开、匿名等特性,在电子货币、供应链、证券、保险、版权、慈善、医疗等各种应用场景中仍有无限可能。

从对外开放权限来说,区块链又可分为公有链、联盟链、私有链。

共识机制


谈共识机制前,不得不提两个重要的问题——类两军问题和拜占庭将军问题。

  • 类两军问题
    两军A和B发送指令,A发送指令后,B回复:收到指令,A回复:知道你收到了指令,B回复:知道你知道我收到指令······。永远需要回复一条信息表达收到了上一条信息,没完没了。
  • 拜占庭将军问题
    拜占庭帝国周围有10个小国家,需要6个以上国家同时进攻才能战胜拜占庭帝国,10个国家通信完全依赖于通信兵,那么要如何判断一定有另外5个国家会与你并肩作战而不是去当炮灰呢?特别是存在叛徒和奸细的情况,收到的信息不一定为真。

在以上问题中,我们需要达成共识,比如TCP创建连接中统一规定三次握手来解决类两军问题,制止第四次及之后的握手。在区块链中也需要相关共识机制来解决网络中节点验证问题、统一账本等。这里主要介绍三个:PoW、PoS、DPoS。

拜占庭将军问题当N>3F时有解,N总数,F有问题的数,篇幅原因,感兴趣可以搜索拜占庭容错算法PBFT。

  • 工作量证明(Proof of Work,Pow)

使用符合难度(前缀0的数量)的哈希值来证明工作量,有工作量证明即可获得记账权和奖励。因为哈希散列的验证是很容易的,只需要输入便可得到输出,从而验证输出是否符合难度。

而从符合难度的输出倒推输入是极其困难的,只能暴力枚举随机数。但同时浪费了大部分的算力和资源,这也是被诟病的地方之一。但好处是节点可以自由进出,完全去中心化。

比特币和以太坊的前三个阶段使用的是Pow。

  • 权益证明(Proof of Stake,PoS)

权益证明的思路是让节点获得记账权的难度与节点所持有的权益成反比,也就是说难度不再是所有人一致,而是根据每个人所持有的权益等比例的降低难度,持有权益越多则难度越低,从而加快找到随机数的速度。

也就是说相同的钱PoW需要买计算机,而PoS则需要买代币作为押金,每次根据每个节点所占代币的比例和时间来选验证者,去验证新区块,一定时间内没有验证成功则选择第二个验证者。权益越多则被选中的概率越大。

PoS一定程度上减少了算力的浪费,也提升了性能,但本质依然是基于哈希来竞争记账权。

以太坊的第四个阶段将采用PoS。

  • 代理权益证明(Delegated Proof of Stake,DPoS)

在PoS的基础上增加代理人和股份,只能由代理人来进行验证和记账,类似于董事会。

每个人可以投票给一位代理人,最终票数最高的100位代理人将按时间段轮流产生区块,收益将按股份进行分配,股东也可以根据代理人的表现选择是否更换代理人,修改投票,每个人也都可以成为代理人。

像股票基金一样,人多钱少,人少钱多,自发的流向分红收益更好的地方,由市场进行动态平衡。

DPoS大大降低了参与验证和记账节点的数量,进一步提高性能。

原创不易,请勿转载(本不富裕的访问量雪上加霜 )
博主首页:https://wzlodq.blog.csdn.net/
来都来了,不评论两句吗

猿创征文|浅谈区块链-区块链是什么?相关推荐

  1. 浅谈几种区块链网络攻击以及防御方案之其它网络攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/ 写在前面的话 自比特 ...

  2. 浅谈几种区块链网络攻击以及防御方案之拒绝服务攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/14/network_attack_of_blockchain_ddos_attack/ 写在前面的话 自比特币 ...

  3. 浅谈几种区块链网络攻击以及防御方案之女巫攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/13/network_attack_of_blockchain_sybil_attack/ 写在前面的话 自比特 ...

  4. 浅谈几种区块链网络攻击以及防御方案之日蚀攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/12/network_attack_of_blockchain_eclipse_attack/ 写在前面的话 自 ...

  5. 浅谈几种区块链网络攻击以及防御方案之51#37攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/11/network_attack_of_blockchain_51_attack/ 写在前面的话 自比特币诞生 ...

  6. 猿创征文|我的Go成长之路道阻且长

    猿创征文|我的Go成长之路道阻且长 自从2016年09月04日加入CSDN,已经整整六年了,回顾自己不太长的技术成长之路(毕竟还是00后),前前后后捣鼓过网络安全.人工智能.区块链.舆情分析.可以说是 ...

  7. 猿创征文|OneOS 万耦启物TB6612驱动电机

    猿创征文|OneOS 万耦启物TB6612驱动电机 1. 介绍

  8. 猿创征文|我的前端学习之旅【来自一名大四老学长的真情流露】

    猿创征文 | 我的前端学习之旅 自我介绍 我浑噩的大一大二(是不是另一个你) 我的大三生活 大三上(学习过程.学习方法.推荐网站) 大三下(技术提升.荣誉证书.推荐比赛) 我与 CSDN 的机缘(从小 ...

  9. 猿创征文|收到谷歌开发者大会正式邀请(Java学生的自学之路)

    文章目录 一.前言 二.收到谷歌邮件 三.感想 四.学习之路 1. 坚持看网课并整理笔记 2.勤加练习 3.坚持总结 4.刷题技巧 5.心态调整 五.结语 一.前言 上一次通过了CSDN内部筛选后,在 ...

  10. 猿创征文 | DevOps运维的10个日常使用工具分享

    猿创征文 | DevOps运维的10个日常使用工具分享 一.DevOps介绍 1.DevOps的简介 2.个人分享的10个工具导航 二.jenkins 1.jenkins介绍 2.jenkins的优点 ...

最新文章

  1. 基于javaGUI的文档识别工具制作
  2. 天猫11.11:手机淘宝 521 性能优化项目揭秘
  3. 2022届互联网秋招备战
  4. 将Github中Fork的代码,克隆到本地
  5. 浏览器关闭 session并不会被干掉
  6. java中key的作用_key word ‘final’ 在java 中作用
  7. python单行动态刷新不了_python 解决tqdm模块不能单行显示的问题
  8. WCF使用Json传输的一个BUG
  9. python的logging日志
  10. sql in语句优化_优化SQL语句的一般步骤
  11. 大白菜U盘启动盘手动去除捆绑第三方赞助软件
  12. 计算机机房监理细则,弱电机房工程施工监理的四大重点
  13. nginx静态资源服务器(一)
  14. python——正则表达式详解(二)
  15. 西湖论剑2021 MISC部分(LSB,取证)
  16. 4-kali修改root密码
  17. 一张图,区分NPN于PNP型三极管的工作原理
  18. TikTok搬运视频怎么做,搬运怎样的视频最好
  19. 深圳首届“金口碑”颁奖典礼暨诚信者公益基金启动仪式在深举办
  20. Freebie: Material Design UI Kit

热门文章

  1. 也许我们喜欢数学,只是不喜欢数学课
  2. html格式转换word清除格式,如何清除掉Word文档表格里的格式?
  3. Java程序界面设计
  4. 游戏黑客圣经GHB1学习笔记 part4(16-20)
  5. JAVA上传文件图片到服务器保存
  6. LOG的含义 : Mysql 之 binlog介绍
  7. 大数定理和中心极限定理的通俗理解。
  8. 汉诺塔问题(Tower of Hanoi)
  9. NTP 时间服务器配置
  10. FL Studio音乐编曲入门教程