区块链相关概念与简介

2023-11-03

摘要

2017-2018年,互联网界最火热的话题之一就是区块链。各大公司相继宣布对区块链方面的投资和开发,各大互联网公司也前后推出自己区块链产品,例如阿里的麻吉宝、百度的莱次狗、腾讯的TrustSQL等等。那么区块链到底是什么?本文简单介绍区块链的相关概念

区块链的相关概念

区块链本身字面的理解就是在一个网络中,有很多很多的区块(block),通过某些方法使这些区块串起来,形成一个长链(chain),这就叫区块链(blockchain)。

有人说区块链技术的发展必然会对我们的日常生活产生重要的改变,为什么这么说,我们先来看看区块链中最重要的几个概念

1.是一个分布式账本(或者分布式数据库)

2.是一个去中心化的信任系统

3.区块链技术最著名的应用——比特币

去中心化的含义

从上面的前两天概念总结来说,区块链是一个去中心化的分布式账本。去中心化的意思就是网络中的节点与节点之间相互信任,去除了常见分布式系统中的中心系统的概念。

举个例子,我这里写一个斗地主的故事,商务男、小孩、老爷爷三个人在一起斗地主,他们规定地主赢了得10块钱,农民赢了得5块钱。为了避免赖账,他们约定没人拿出100块钱,存放在圣诞老人那里,圣诞老人负责记账。

那么在圣诞老人手里面的账本是这样的

  斗地主总账
商务男 100
小孩 100
老爷爷 100

那么此时,圣诞老人是他们三个人的信任中心,每次打完牌都把结果告诉圣诞老人,圣诞老人负责记账。例如第一局比赛,商务男是地主并赢得了这场比赛。那么圣诞老人手里的账单就需要发生变化

  斗地主账单
商务男 110
小孩 95
老爷爷 95

那么这种场景是我们日常生活当中最常见的,我们潜移默化地接受这中有中心化的交易和操作。以上的场景就是典型的具有中心化的交易。那么在日常的中心化交易中是否会出现问题?

我们设想,圣诞老人作为商务男、小孩、老爷爷的中心,如果出现下列问题,三者之间的账单应该如果处理?

问题:

1.圣诞老人年事已高,要是突然挂了怎么办?

2.圣诞老人坐地起价,要求每人收一定的手续费怎么办?

3.圣诞老人拥有商务男、小孩、老爷爷三人的私有数据,如果他把这些数据卖给别人怎么办?

4.如果圣诞老人开了一个很大的赌场,参与斗地主活动的有成千上万个人,圣诞老人负责记账,忙不过来怎么办?

参与斗地主的每个人都与中心(圣诞老人)进行交互,数据的流向是向中心节点汇集,中心化必然就会产生寡头,产生垄断。如果采用去中心化的数据流,人与人(节点与节点)间都是平等互联的,节点与节点之间使用公共的标准进行数据流通。

分布式系统

拜占庭将军问题

在区块链的学习当中,要理解分布式系统问题,大部分的学者都会举出拜占庭将军的问题。故事大致是这样的:古代希腊有一个国家叫拜占庭,国力雄厚,拜占庭中的一位将军喜欢征战,想把别的国家的资源抢夺到自己手中。在攻打敌方国家的时候,将军派出了10支部队同时去攻打。当然敌对国也不是吃素的,在拜占庭将军排除的10支部队中,需要有6支或者以上的部队同时发起进攻,才能取得胜利。那么这个问题就属于一个典型的分布式的问题,在这个分布式系统中有10个节点,我们希望这10个节点同步,一起在同一时间执行同一个操作。也就是说拜占庭将军希望这10支部队在同一时间攻打敌方国家。但是在将军发出一起攻打的命令时,通讯兵有可能会被敌军俘获,或者通讯兵表达能力欠缺,有可能把将军的命令表达错误。这些问题可能导致通讯兵传递出去的数据时错误的,那么这10支部队肯定保持不了同步,攻打的结果极有可能是失败。所以这就是拜占庭将军的问题所在。

分布式系统存在的一些问题——谁说了算,听谁的?

在分布式系统中存在着一些问题,相信做过Java的同学很有体会,往往在分布式系统的实现中,有一个很非常重要的问题,那就是谁说了算?听谁的?如果才能保持数据一致?典型的例子就是我们在实zookeeper集群时,在该分布式系统当中选举出一个领导,在该网络内所有的分支都听这个领导的。如果在该网络中这个领导挂掉了,zookeeper会在剩下的分支当中,再选举一个分支作为新的领导,但是zookeeper在实际的生产环境中,也存在一些问题,就是如果第一个领导挂掉的时候,并没有彻底死亡,有一部分还存活着,但是新的领导分支已经选定,那么此时存在两个领导。那么两个master手下的分支就会出现我们所说的“脑裂”问题,它们不知道到底该听第一个领导的还是第二个领导的。其实zookeeper是属于一种中心化的分布式实现。

最典型的区块链应用——比特币

要继续讲解区块链的问题,我们需要结合区块链中最典型的实现,那就是我们讨论最多的比特币。关于比特币,我先给大家一些比特币的相关概念

1.比特币不是一种货币,它是一个分布式的总账系统,电子总账在每个参与者的电脑上备份,实时地同步和对账

2.总账记录一定量的比特币从一个参与者到另一个参与者的过程,每次记录都会广播到网络中

3.比特币本身没有价值,比特币的价值在于,它是通过一些算法,实现了一个去中心化的分布式信任系统,这个系统实现了价值转移

工作证明(POW)机制

介绍了比特币的基础概念之后,我们回到上面所说的常见分布式系统中所说的谁说了算,听谁的的问题。那么区块链中如果解决这个问题的呢?在区块链技术中,它通过一个叫工作证明(POW)的机制来解决区块链的数据信任问题。那么如何理解工作证明这个机制呢?我先给出两句话大家看看:获取这个证明需要很长时间,而验证它的真伪只需要很短的时间。

工作证明我们现实生活当中也存在着很多例子,比如说,我们学生的学历有本科-硕士-博士-博士后等等,我们完成本科学习需要4年时间,然后才有资格考取硕士,再花3年时间完成硕士的学习,然后再才有资格考取博士,再4年时间完成博士的学习。整个过程都是一个链式的推进过程。完成各个阶段的学习就是我们获取证明的工作,但是我们去找工作,用人单位要验证你是否有这些学历,只需要去学信网上花很短的时间就能验证你是否有这些资历。所以验证真伪只需要花很短的时间。

比特币就是通过上面所说的工作证明的方式,它降低了信息传递的速率(就是说你在传递信息之前有要先对你进行工作证明),增加了节点成为领导的难度,通过区块链的短暂分叉,完美地解决了拜占庭将军问题。

我们回到之前商务男、小孩、老爷爷斗地主的场景中,圣诞老人这个中心已经不存在了,我们把参与斗地主的三人还有其他的一群吃瓜群众都放入区块链的网络中,每个人是一个节点,那么吃瓜群众就是负责记账的矿工。那么在区块链的环境下,故事就应该是这样的:三人完成一把斗地主,最终的结果是商务男作为地主被农民打败了,商务男输了10块钱,他应该给小孩和老爷爷每人5块钱,在区块链中,如果产生了交易信息,就要在全网内广播。在此规则下,商务男应该向两个人转账并全网广播一条信息:“我斗地主输了,我向小孩和老爷爷每人转5块钱”。

但是如果商务男没有在全网内广播这条消息,他只是点对点地分别对小孩和老爷爷说:“我给你转了5块钱,你同步到你的账本上吧。”那么商务男就伪造了两条信息分别发给了小孩和老爷爷。

此时小孩和老爷爷的账本如下:

  斗地主账本
商务男 90
小孩 105
老爷爷 105

但是该网络中其他的吃瓜群众的账本是这样的

  斗地主账本
商务男 100
小孩 100
老爷爷 100

小孩和老爷爷也是该网络中的两个节点,他们收到了来自商务男和其他吃瓜群众两份不同的账本,在该分布式账本中就出现了数据不一致的现象。那么小孩和老爷爷到底该听谁的呢?此时故事还要继续下去,商务男说,我是本科毕业,我的学历高,应该听我的,但是吃瓜群众中就有人不乐意了,他说,我也是是本科生呀,我的账本才是正确的。此时如果商务男还想圆他说的谎,那么他就必须继续进行工作证明。于是他考取了硕士,他说我是硕士,我的账本才是正确的,但是吃瓜群众当然有会有人考取了硕士,此时又会出现谁也不服谁的情况。接着商务男又考到了博士,他再次声明他的账本是对的,但是吃瓜群众千千万,当然也有博士毕业的,此时又出现了听谁的问题,如此一步一步商务男和吃瓜群众双方为了夺得话语权,继续增加他们各自的工作证明。但是所谓双拳难第四手,在吃瓜群众中总会有学历比商务男学历出色的人,所以,商务男最终的工作证明(POW)肯定会不如吃瓜群众中的最高学历份子。此时商务男的谎言就不攻自破了。这个故事也就是说当全网中有一个节点试图去非法篡改网络中的数据,它需要和全网的所有节点进行竞争。他可能在第1、2、3、4、5个次工作证明中胜出,但是它绝对不可能在第6次工作证明中胜出。那么在区块链中,它规定当有6个区块确认之后,这条数据就是有效的。

其实如果有同学炒过比特币,或者在火币网上上进行过交易的话,会经常看到一句话,如果一次交易有6个区块确认过,那么你的这次交易就是有效的。为什么是6个区块确认过后就认为是有效的呢?那么在比特币的白皮书中有说道,如果一个节点它要连续6次的工作证明超过全网其他节点,那么他在第6次的算力需要达到全网的百分之五十一。也就是说第6次竞争的时候,他的算力要达到全世界计算机算力的百分之五十一,才有可能连续6次领先其他所有的节点。

比特币总结

通过我们上面对比特币的了解,我们可以总结一下知识点

1.比特币通过p2p来实现账本的同步拷贝,每一个节点都可以接受其他节点广播过来的数据

2.比特币通过增加发送信息的成本,也就是说增加节点的工作证明(POW),降低信息传播的速率

3.比特币通过区块链的长度,来判断数据的可信度(我们在区块链中,永远只相信最长量)

4.区块链中有6个有效区块认为转账成功,那么此次交易就成功。所以比特币的交易确认需要1个小时(每10分钟产生一个区块)

5.比特币的工作证明是通过sha256算法哈希来完成

6.工作证明(POW)的获取需要很长时间,但是验证真伪只需要很短的时间

7.比特币的sha256哈希算法导致大家通过通过矿池来挖矿,矿池有算力垄断,有潜在的中心话风险

8.矿池挖矿只是在争夺记账权,获得比特币,它会消耗大量的电力,并无实际价值,在我国,正取缔挖矿







本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

区块链相关概念与简介 的相关文章

  • emqx增加用户认证功能

    1 关闭匿名登录 首先 关闭匿名登录 编辑配置文件 emqx conf 修改为 allow anonymous改为 false 即修改后是 allow anonymous false vim emqx etc emqx conf 操作演示
  • Windows下使用zsh——WSL(Debian)方法

    转载自我的个人博客 建议直接跳转个人博客查看 这个复制过来居然没有图 陈狗说windows下命令行太难用可以换成zsh 根据网上教程 GPT4的提示搞着玩 记录一下过程 我使用了WSL zsh的方法 也可以使用Git Bash zsh 1

随机推荐

  • 超详细超全超好理解的KMP算法

    定义 KMP算法是一种字符串匹配算法 用于在一个主串中查找一个模式串的出现位置 先看这个视频 再看下边的代码实现 油管阿三哥讲KMP查找算法 中英文字幕 人工翻译 简单易懂 https www bilibili com video BV18
  • Qt标准对话框按钮显示中文解决方案(原创)

    从网上搜了一堆解决方法 大多是考来考去 也没有解决我的问题 基本的方法是 在窗口实例化之前 加载和安装QTranslator 加载的qm文件从qt源文件中的ts文件中发布而来 例如 C Qt Qt5 13 0 5 13 0 Src qttr
  • 3D游戏编程作业四

    基本操作演练 首先是去unity商店下载一个skybox的资源包 然后创建一个materia 点击shader选择skybox并选择6sided 然后将相应位置的图片拖进去 点击add component 选择rendering 添加sky
  • VSCODE同步插件以及代码片段

    利用 share code 插件同步代码片段 利用 Settings Sync可以同步 VS code 配置 但它只能同步插件 利用 Settings Sync 再配合 share code 插件可以同步自定义代码片段 可以把 VS cod
  • BatchConfigTool批量配置工具

    海康批量配置工具BatchConfigTool是一款支持设备在线搜索 批量配置参数 批量升级等功能的软件 支持对大批量设备同时进行各参数的配置 极大的简化了操作过程 软件功能 1 对在线设备进行搜索 激活 修改设备的网络参数等 2 批量对设
  • hadoop 运行java 清洗数据 报错Failed to set permissions of path: \tmp\...

    清洗数据写好代码后 运行报错 ERROR org apache hadoop mapred TaskTracker Can not start task tracker because java io IOException Failed
  • 转载的关于 二级制的反码,补码,原码等,筛选过的.

    一 机器数和真值 在学习原码 反码和补码之前 需要先了解机器数和真值的概念 1 机器数 一个数在计算机中的二进制表示形式 叫做这个数的机器数 机器数是带符号的 在计算机用一个数的最高位存放符号 正数为0 负数为1 比如 十进制中的数 3 计
  • 关系数据库范式(1NF,2NF,3NF,BCNF,4NF,5NF)全解析

    1 范式的基本概念 设计关系数据库时 遵从不同的规范要求 设计出合理的关系型数据库 这些不同的规范要求被称为不同的范式 各种范式呈递次规范 越高的范式数据库冗余越小 没有冗余的数据库未必是最好的数据库 有时为了提高运行效率 就必须降低范式标
  • 【VHDL】分频器设计要求:25分频,占空比为50%

    VHDL 分频器设计要求 25分频 占空比为50 程序 LIBRARY IEEE USE IEEE STD LOGIC 1164 all entity DIV 25 IS PORT CLK IN STD LOGIC S1 S2 BUFFER
  • java引入包的关键字_java 包和导包关键字import

    包的概念 相当于 文件夹 person java package com jd public class person 注意该处为public 这样才能被访问 String name int age public person String
  • 用代码生成Glitch Art风格的抖音字体

    最近看到不少文章教大家用 photoshop 实现抖音的 logo 跟字体 我也非常喜欢这种风格的字体 于是趁着晚上的时间 动手用代码实现了下此类风格的字体特效 顺便开发了个小工具 地址见文末 本文主要是从 艺术手法 和 JS 前端 实现
  • UVA1347 Tour

    2021 5 22 刷题的时候突然看到手机推送 袁隆平院士逝世 心中一颤 后来得到辟谣 心情稍微放松几分 正在刷着辟谣的文章时 央视新闻发文 13点07分 袁隆平院士逝世 没过多久又看到吴孟超院士逝世的新闻 心情难以平复 特在本文的开头 向
  • 【华为OD机试】求满足条件的最长子串的长度(C++ Python Java)2023 B卷

    题目描述 给定一个字符串 只包含字母和数字 按要求找出字符串中的最长 连续 子串的长度 字符串本身是其最长的子串 子串要求 1 只包含1个字母 a z A Z 其余必须是数字 2 字母可以在子串中的任意位置 如果找不到满足要求的子串 如全是
  • 力扣17电话号码的字母组合(c++)

    力扣17电话号码的字母组合 c 力扣题目链接 思路 阅读完本题题目要求后 要解决如下3个问题 1 数字和字母如何映射 2 两个字母就两个for循环 三个字符我就三个for循环 以此类推 然后发现代码根本写不出来 3 输入1 按键等等异常情况
  • 从零开始搭建kafka开发环境

    Part1前言 最近选用kafka作为消息缓存 来低于大流量的数据 Kafka是一种高吞吐量的分布式发布订阅消息系统 有如下特性 通过O 1 的磁盘数据结构提供消息的持久化 这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能 高吞
  • 16位片内地址的I2C SLAVE接口设计

    8位片内地址的I2C SLAVE在OPENCORS org上面有 但是我没有找到16位的 我打算用B210的接EEPROM的I2C总线实现跟FPGA通讯就对照24C256的数据手册写了一个 以下代码2022 6 6更新已经实际运行通过 i2
  • YOLOv5——报错解决:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb2 in position 6:invalidstartbyte

    在提示报错的torch utils py文件58行 将原来的decode 改成decode encoding gbk
  • 一文读懂伪回归、协整、格兰杰

    一 什么叫做伪回归 若是所建立的回归模型在经济意义上没有因果关系 那么这个就是伪回归 例如路边小树年增长率和国民经济年增长率之间存在很大的相关系数 但是建立的模型却是伪回归 如果你直接用数据回归 那肯定存在正相关 而其实这个是没有意义的回归
  • 【AI实战】最强开源 6B 中文大语言模型ChatGLM2-6B,从零开始搭建

    AI实战 最强开源 6B 中英文大语言模型ChatGLM2 6B 从零开始搭建 ChatGLM2 6B 简介 ChatGLM2 6B 评测结果 ChatGLM2 6B 搭建 参考 ChatGLM2 6B 简介 ChatGLM2 6B 是开源
  • 区块链相关概念与简介

    摘要 2017 2018年 互联网界最火热的话题之一就是区块链 各大公司相继宣布对区块链方面的投资和开发 各大互联网公司也前后推出自己区块链产品 例如阿里的麻吉宝 百度的莱次狗 腾讯的TrustSQL等等 那么区块链到底是什么 本文简单介绍