区块链技术及应用---区块链技术

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

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笔交易,造成大量交易排队,矿工的收益也少。为解决这个问题提出来两种方案:扩容方案和隔离见证方案。
扩容方案就是直接扩大一个区块的大小,容纳更多交易。隔离见证方案分割交易为交易信息和见证信息,类似于行李托运,即将交易信息上车,见证信息托运。矿工们认为扩容方案能获得更多激励,开发者们认为扩容是扬汤止沸,因为区块不可能无限扩大,而且这样会提高挖矿门槛不利于去中心化。二者最终没有达成一致意见,造成了硬分叉,于是出现了“比特币现金”,它与比特币是两条链。

小结

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

发布了49 篇原创文章 · 获赞 6 · 访问量 3685

猜你喜欢

转载自blog.csdn.net/weixin_46097280/article/details/105439840