專欄

币圈小蝶:深论挖矿机制与通证经济的复杂性

1.挖矿的基本概念

自从2009年1月3日中本聪挖出比特币的创始区块以来,区块链成为一种新的解决去中心化节点的信息同步问题的方案,其创新性不断被人们所认知。

挖矿是一种通过消耗计算机资源来提高恶意节点攻击网络成本的一种方式。该机制初次提出时主要用来阻止恶意用户向邮件服务器发送垃圾邮件。所有的用户向邮件服务器发送邮件的时候都要在邮件中填充一些随机字符,然后计算邮件内容的哈希值,只有当计算结果小于设定的值的时候,该邮件才能满足邮件服务器的接受条件。在这个过程中,用户为了发送一个邮件,需要消耗一点时间来找出一个随机字符,使得整个邮件能被邮件服务器验证通过。

2 算力挖矿

区块链挖矿算法种类众多的原因之一就是为了防止51%攻击。在区块链中,PoW共识机制挖矿的能力与矿工所掌握的算力成正比。区块链的特性就是每个区块都指向前一个区块,这样就环环相扣,从最新的一个区块就能一次找到创世区块。但是如果一个恶意节点控制了大部分的算力,那么就可以按照下列步骤发起攻击:

2.1比特币挖矿算法

比特币作为最早的区块链系统,其挖矿算法采用的是SHA256散列函数,该函数属于SHA2系列。挖矿难度的基本运算如下:

基本单位:两周——出块总数=6*24*7*2=2016块

难度调整方式:新难度值=旧难度值*(2016*10分钟/之前2016个区块总出块时长)

比特币的挖矿过程主要为以下几个步骤:

(1)矿工收到用户的交易信息后,首先验证,然后构造交易的默克尔树,得到一个默克尔树根哈希值,打包进区块头中。对于矿工来说,最优的选择就是先打包手续费高的交易,这样才能保证其利益最大化。

(2)填充区块头,组成80个字节的比特币区块头。

(3)将80个字节的区块头信息进行双SHA256运算,得到一个32字节的哈希值。之后判断得到的结果是否小于当前区块的难度值,如果已达到,则该区块就是合法的区块。矿工把它加入到主链中,之后开始计算下一个区块。如果不小于当前区块难度值,则继续更换区块头中的随机数值,重新对区块头进行双哈希运算。

3.1存储挖矿

存储挖矿分为四部分:抵押、接收订单、密封和证明。

3.1.1抵押

抵押的主要目的是为了保证存储矿工能够为网络提供存储服务。存储矿工首先在区块链上进行一次抵押交易,该交易主要通过保存一个抵押品来抵押存储矿工的存储容量。而当存储矿工成功生成了他们提交数据的存储证明,那么存储矿工先前的抵押品就可以退回。如果存储矿工未完成相应的存储证明,那么将会失去部分数量的抵押品。一旦区块链上(分配表)出现了一个抵押交易,那么矿工就可以向存储市场提供他们的存储空间,并且可以设置一定的价格,并生成一个卖单挂到市场的订单账本中。

3.1.2接收订单

接收订单的主要目的是为了从存储市场中获取存储请求。系统就会检查矿工在存储市场上的卖单是否与对应的来自客户端的买单相匹配。一旦卖单和买单想匹配,那么客户就会将自己的数据发送给存储矿工。而实际上,矿工收到的是一个个数据片。当存储矿工收到数据片后,就把数据存储到自己的硬盘中,与此同时,矿工和客户端都会签署一个交易订单,并将之提交到区块链上。

3.1.3密封

密封的目的是为未来的证明准备数据片。存储矿工的存储空间被分为几个扇区,每一部分都包含分配给矿工的数据片。网络通过分配表对每个存储矿工的各个存储扇区进行跟踪。当一个存储扇区存储满了之后,该扇区就会被密封。密封操作过程很慢,它需要依次将一个扇区的数据转换保存为一个副本。而每个数据的物理拷贝都与存储矿工的公钥相关联。

3.1.4 证明

存储矿工需要证明他们存储了提交的数据片。当存储矿工被分配到一个数据的时候,他们必须重复生成数据副本证明,以此来保证存储矿工确实保存了数据。该证明将推送到区块链中,并被全网验证。

3.2 检索挖矿

检索挖矿分为两部分:接收订单和发送。

3.2.1 接收订单索引

矿工从索引市场中获取数据请求。索引矿工通过向网络中传播卖单来宣布他们的数据片。他们设置一个价格,然后添加一个卖单到市场的订单账本中。然后,索引矿工检查他们的订单是否与对应的客户买单相匹配。

3.2.2发送

一旦订单匹配,索引矿工将会发送他们的数据片给客户端。客户端收到据 片后,矿工和客户端签署一个交易订单并提交到区块链中。详细交流了解请加笔者!

BTC Shop Hong Kong

廣告查詢 ADVERTISE
Back to top button