区块链技术及应用---区块链技术(一)

2023-05-16

文章目录

  • 第一章 疯狂的比特币及其原理机制
    • 1.1 比特币诞生
    • 1.2 疯狂的比特币
      • 1.2.1 疯狂的价格
      • 1.2.2 疯狂的矿机和芯片
    • 1.3 通俗地讲比特币机制
    • 1.4比特币交易
    • 1.5 比特币挖矿
      • 1.5.1 数学难题
      • 1.5.2 矿池原理
    • 1.6 比特币分叉
    • 小结

第一章 疯狂的比特币及其原理机制

1.1 比特币诞生

比特币起源于2008年一位化名中本聪的人(或团队)发布的一款比特币系统,系统软件全部开源,挖掘的一一个区块命名为“创世区块”。这款系统本身分布在全球各地,没有中央管理服务器,没有负责的主题=体,没有信用背书,然而这款三无系统却有出乎意料的稳定性。

1.2 疯狂的比特币

1.2.1 疯狂的价格

对于比特币的发展史,它的价格就像过山车一样大起大落:
曾经因为交易平台本身漏洞被黑客攻击而导致价格的暴跌;也曾因为亚洲投资者涌入、英国脱欧、比特币本身机制的原因导致价格暴涨。低的时候价格有几美元,高的时候甚至突破了一万美元,目前的价格(截止2020.4.13)约为6703.62美元一个比特币,可以预见比特币的价格还会继续起伏。

1.2.2 疯狂的矿机和芯片

比特币就像矿石一样,“矿机”就是赚取比特币的计算机,用户下载比特币运算软件,参与记账并获取相应的记账激励,挖到比特币。

第一阶段普通计算机(CPU)即可挖矿并能有不错的收益;第二阶段,挖矿节点增多,CPU产出率下降,开始使用多处理器地GPU提升算力,增大产出率;第三阶段出现了比特币挖矿定制化机器,专门为哈希运算设计,算力进一步提高。

芯片经历了CPU–>GPU–>FPGA–>ASIC的阶段。
在这里插入图片描述
值得注意的是比特币挖矿耗电巨大,这是因为比特币独特的计算密集型挖矿算法和证明工作量的共识协议。之际上面向企业级应用的区块链平台和应用采用的共识协议和算法不需要这么大的能量消耗。

另外还有两个概念要提一下:矿场和矿池
单个节点挖到比特币的概率是与其算力占所有节点总算力的比例成正比的,随着挖矿节点剧增,单个节点挖矿效益下降,出现了管理众多挖矿设备的场所----矿场。矿场需要消耗巨大的能量并会发出极大的噪声,通常设立在没有人烟的地方,并且要注意通风防尘、温度控制等设备维护措施。
除了产业化的矿场,还有将大量算力较低的矿机(称作矿工)联合起来共同运作的平台----矿池,挖到的比特币奖励按照贡献度分享(矿池实际没有提升单个矿工收益,但提升了稳定性)

1.3 通俗地讲比特币机制

简单来说,假设一个村上没有银行,也没有令人信任的村长负责记录和维护村民地财务往来(即没有任何中间机构或个人),这时候村民想了一个方法:大家一起记账。

举个例子,张三要转给李四1000块钱,张三在村里吼一句:“我张三要给李四转1000块钱。”附近村民听见后确定两件事:(1)声音是张三,不是别人冒名顶替的。(2)张三有足够的钱,每个村民有个账本上面记录了所有村民有多少钱。确定完两件事后在本子上记下xxxx年xx月xx日张三转给李四1000块钱,然后口口相传给十里八村,大家都知道后可以共同证明这件事。

这样一个所有村民达成一致的记账系统就是比特币系统。
在这里插入图片描述
故事到这里引出了三个值得思考的问题:

  1. 记的账会不会被篡改
  2. 村民有什么动力帮别人记账
  3. 多人记账记得不同怎么办,以谁记的账为准

且看比特币系统如何解决,
在这里插入图片描述
第一,比特币采用两种策略保证账本不会被篡改,(1)人人记账,人人手上有一本账本,个人无权修改其他村民的账本,即使自己做了假账别人是不认可的。(2)采用“区块+链”的账本结构,一个区块记录一段时间的交易,区块之间由“链”连接成为一个完整的账本,如果对区块内容进行修改—>破坏链式结构导致链条断了很容易被检测到。
在这里插入图片描述
第二,比特币系统是人人记账,那么我为什么要给别人记账呢?这就涉及比特币系统的激励机制,第一个被认可的记账会获得若干比特币的奖励,这也是获得比特币的唯一来源,这种奖励措施鼓励众多矿工积极记账。谁的账本被认可后,所有人自动拷贝这块账本,保证区块链自动安全运行。

第三,有了激励,大家就会抢着记账是自己的记账被认可,以谁记的账为准就是一个问题了,于是想了一个公平的办法:对每一块账本(类比于现实中账本的一页)都出一道难题,先解出这道难题的矿工就以他记的账为准。这里破解难题的过程就被称作“挖矿”,需要说明的是解题过程很难,但答案很容易验证。

比特币通过“区块+链”的分布式账本防止交易篡改,通过发放比特币激励来促使矿工记账,通过计算难题来解决记账一致性问题。

1.4比特币交易

了解比特币交易首先要了解比特币地址,要完成交易需要一个类似于现实中银行账户的实体。实际上比特币交易中的实体是一对公私钥的组合,公钥可以理解成“银行账户”,在交易中被引用来指明资金的来源和去向,私钥可以理解成“验证密码”,用于确认交易的合法性。

公私钥及钱包地址的产生过程:首先随机生成256比特的比特串作为私钥(可以生成2256个,基本不可能发生碰撞),再根据椭圆曲线算法对私钥运算生成公钥,最后公钥根据哈希算法和Base58编码得到钱包地址。

比特币交易有两种类型:(1)coinbase交易,就是挖矿奖励比特币。(2)普通用户之间的转账交易。

根据不同用户不同资金比特币有网页钱包、手机钱包、硬件钱包等,其安全性与价格各不相同。

获得比特币的三种途径:

  1. 矿工挖矿得到的激励
  2. 线下通过中间人购买,线下支付等价物后转出方将比特币从他的地址转到购买方的地址,也可以通过现上交易所购买。
  3. 商家收取比特币卖东西。

1.5 比特币挖矿

比特币系统记账者争抢激励被形象地比作“挖矿”,实质上比特币挖矿就是争夺某一个区块的记账权。最初生产一个“交易记录区块”能获得50个比特币的激励,为了控制比特币的发行数量激励每4年就会减半,预计一共会发售2100万个比特币。
比特币系统约每10分钟记录一个交易区块,系统会随机生成一道数学难题,矿工们通过解题争夺该区块的记账权,夺得记账权的节点将交易数据打包签名成一个不可修改地区块向其他节点广播,被全部节点认可后这个区块会被永久保存。

1.5.1 数学难题

解释一下挖矿过程中解得数学难题,先来了解一下哈希算法:简单理解为把一个任意长度的输入值计算成一个固定长度的字符串,这个字符串就是得到的哈希值。比特币系统采用SHA-256算法,得到的是一个长度为256bit的哈希值。

比特币系统里一个区块生成时需要将上一个区块的哈希值、本区快交易信息的默克尔树根、一个未知的随机数拼接在一起进行哈希运算,这就是数学难题。

为保证大约10分钟生成一个区块,这个运算需要有一定难度,比如开头要有n个0,由于哈希值的位数是有限的—总可以计算出一个符合要求的哈希值;随机数的运算没有规律—只能通过暴力枚举算得,所以要算出这个哈希值需要大量运算。哈希值由16进制数表示,前n位是0就需要16n次运算。

随着技术发展,哈希运算越来越快,但为了保持10分钟一个区块的速度就需要提升题目难度,比如增加以0开头的位数,如果题目难了减少以0开头的位数来降低难度。比特币系统大概每14天调整一次难度(通过对比生成一个区块的实际时间与期望时间)。

1.5.2 矿池原理

一般是一个企业维护一个矿池服务器,用户在矿池注册账户,添加矿工,一个账户可有多个矿工,矿工主动向矿池申请任务或者矿池给矿工分配任务,执行任务。矿工只负责计算,不参与验证,有矿池服务器进行验证,即矿工不用存储历史区块,极大降低了矿工的算力消耗和存储消耗。

但是矿池弊端也很明显,即这种托管式是违反区块链去中心化的理念的。不过我们也不用太过担心,因为从经济学角度来说,如果一个矿池掌握了大量算力,它为了自己的利益保证也会努力维护比特币系统的正常运行的。

1.6 比特币分叉

比特币分叉就是系统更新造成的版本差异,一款应用升级只需要厂商发布、用户接收即可,但是比特币这种去中心化的系统升级必须考虑协调网络中的所有节点。如果两个节点在一定时间内运行不同版本就叫做分叉

分叉分为两种:软分叉和硬分叉。

  1. 软分叉:就可以理解成更新内容较少,新版本兼容旧版本,然后通过新版本用户数量的增加促使旧版本用户更新,
  2. 硬分叉:可以理解为大幅度更新,新版本不兼容旧版本,最终导致形成两条独立的链。

这里拓展一下:历史上一次较大的硬分叉事件是2017年8月1日的“比特现金”。起因是开发者和矿工的分歧,比特币一个区块大小为1M,按10分钟一个区块的速度只能完成7笔交易,造成大量交易排队,矿工的收益也少。为解决这个问题提出来两种方案:扩容方案和隔离见证方案。
扩容方案就是直接扩大一个区块的大小,容纳更多交易。隔离见证方案分割交易为交易信息和见证信息,类似于行李托运,即将交易信息上车,见证信息托运。矿工们认为扩容方案能获得更多激励,开发者们认为扩容是扬汤止沸,因为区块不可能无限扩大,而且这样会提高挖矿门槛不利于去中心化。二者最终没有达成一致意见,造成了硬分叉,于是出现了“比特币现金”,它与比特币是两条链。

小结

比特币等电子货币的价值并不是跟本文所述完全一致,我们要对这类货币有自己的价值判断,这其实很像投资,一样产品的价值是起伏的,说的极端点就是有人觉得很有价值,有人觉得一文不值,我们要认识到这其中存在风险。

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

区块链技术及应用---区块链技术(一) 的相关文章

随机推荐

  • 无人机——电调篇(二)

    文章目录 1 电调的概念 2 电调接头的分类及作用 3 电调的接线方法 4 电调的分类 5 电调的选配 6 注意事项 1 电调的概念 电调 全称电子调速器 英文Electronic Speed Control 简称ESC 根据控制信号调节电
  • 关于spring security加载不出登录页面,显示白板问题

    可能是spring security的配置文件加载的问题 xff0c 应该和spring的配置文件一起加载 xff0c 代码如下 xff1a
  • ros2 basics #104 python c++ roslaunch cmake

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 一 创建工作区二 加载模型三 正经地创建一个工作区的方法 xff1a 1 c 43 43 2 编译3 launch python
  • 树莓派嵌入式Linux系统

    一 assert xff08 断言 xff09 C 标准库的 assert h头文件提供了一个名为 assert 的宏 xff0c 它可用于验证程序做出的假设 xff0c 并在假设为假时输出诊断消息 已定义的宏 assert 指向另一个宏
  • python range的逆序输出

    range的逆序输出的两种方式 xff1a 1 使用range里的步长参数 step xff0c step为负值即代表反向输出 range begin end step range begin end 1 表示逆序 xff0c 范围为 xf
  • 树莓派无网线无显示器远程连接vnc

    配置wifi连接 方法非常简单 xff0c 首先在SD卡的根目录下添加一个名为 wpa supplicant conf的文件 xff0c 然后在该文件内添加以下的内容 xff1a ctrl interface span class toke
  • gazebo常见问题(1)

    项目场景 xff1a 用gazebo进行仿真 遇到问题ModelDatabase cc 340 问题描述 出现报错 Wrn ModelDatabase cc 340 Getting models from http gazebosim or
  • html调用php变量

    https jingyan baidu com article d45ad1485da89469552b80a5 html
  • 树莓派中python文件开机自启动方法

    1 打开cd etc rc local 2 在exit 0 前输入sudo python3 home pi test py amp 注意 xff1a python3路径取决于你的python路径 xff0c 比如我的是usr bin pyt
  • 宝塔npm警告:npm WARN config init.module Use `--init-module` instead.

    蓝奏云分享部分地区无法访问需手动修改www lanzous com变为 www lanzoux com gt Linux gt 宝塔npm警告 npm WARN config init module Use 96 init module 9
  • pyinstaller打包后找不到.pyc文件,例如:FileNotFoundError: [WinError 3] 系统找不到指定的路径。: ‘C:\\xx\\torch_utils.pyc‘

    使用pyinstaller打包python项目后 xff0c 运行dist里的 exe文件 xff0c 提示如下错误 说找不到utils文件夹里的torch utils pyc 原因分析 xff1a 我查看到项目里面有utils这个文件夹
  • Django中上传图片后,获得图片的网站的访问地址

    在Django中 xff0c 您可以通过使用Django自带的MEDIA URL和MEDIA ROOT设置来访问存储在media目录中的图像 这些设置定义了您的媒体文件的URL和文件系统路径 要访问存储在media images目录中的图像
  • 关于树莓派rc.local开机自启python文件失败的问题

    当我们在使用树莓派的rc local进行开机自启python文件时 xff0c 常常不能成功 xff0c 其中有一个原因 xff0c 特别常见 当我们查询rc local服务运行日志时 xff1a sudo systemctl status
  • 什么是串口通信协议

    ARM体系结构 串口通信 一 什么是串口通信 1 串口通信属于基层基本性的通信规约 xff0c 收发双方事先规定好通信参数 2 它自己本身不会去协商通信参数 xff0c 需要通信前通信双方事先约定好通信参数来进行通信 3 因此 xff0c
  • 利用MQTT协议与阿里云数据交互的python程序

    利用MQTT协议与阿里云数据交互的python程序 设计目的功能要求和关键问题环境配置问题本地程序如何连接云上设备云上的数据交互问题界面设计问题 阿里云相关操作本地程序 设计目的 设计开发一个py应用程序 xff0c 实现对阿里云数据的双向
  • 中文分词:隐马尔可夫-维特比算法(HMM-Viterbi)附源码

    目录 0 先验知识 1 什么是中文分词 2 数据集的构造 3 训练及预测过程简述 4 训练阶段 xff1a 统计隐马尔可夫模型的参数 5 预测阶段 xff1a 应用 Viterbi 算法 6 完整的 Python 实现代码 0 先验知识 有
  • python学习day1

    打印字 print haha 注释符 单行注释符 xxx 多行注释符 xxx xxx 34 34 定义变量 a 61 10 定义数字 b 61 haha ni hao 定义字符串 print a print b 赋值 b 61 a 用户交互
  • 系统学习-----firewalld概述

    动态防火墙后台服务程序 xff1a 提供一个动态管理的防火墙 xff0c 用以支持网络 Zone xff0c 来分配对一个网络链接和界面一定程序的信息 xff0c 它具备对IPv4和Ipv6防火墙设置的支持 它支持以太网桥 xff0c 并有
  • 系统学习----DHCP服务原理

    文章目录 DHCPDHCP优点DHCP相关概念DHCP租约更新DHCP运行过程 DHCP DHCP xff1a 动态主机设置协议 xff0c 是一个局域网协议 xff0c 使用UDP协议工作 主要有两个用途 xff1a 用于局域网或网络服务
  • 区块链技术及应用---区块链技术(一)

    文章目录 第一章 疯狂的比特币及其原理机制1 1 比特币诞生1 2 疯狂的比特币1 2 1 疯狂的价格1 2 2 疯狂的矿机和芯片 1 3 通俗地讲比特币机制1 4比特币交易1 5 比特币挖矿1 5 1 数学难题1 5 2 矿池原理 1 6