Burst Coin挖矿蛮有意思,可以看看理解一下PoC的
网上有个很清楚的英文,详细描述了挖矿过程:
https://forums.getburst.net/t/technical-information-about-mining-and-block-forging/943
我把它翻译成了中文:)1)基本介绍
和其他加密货币一样,Burst需要挖矿。挖矿是区块链在区块网络中打包交易的过程。Burst利用预先计算好的,并存在硬盘上的Hash数值,生成区块。为了更好地理解这篇文章,可以阅读“Plot文件介绍”。这篇文章介绍整个Burst的挖矿原理。
2)算法和术语
Shabal / Sha256 / Curve25519
Shabal,Sha256和Curve25519都是Hash函数。Burstcoin主要采用的是Shabal算法Shabal算法相对SHA256或者其他hash算法,计算比较慢。也正是这样,这个算法比较适合做PoC共识。Burst采用的是256位的Shabal算法。Plot会把预先算好的Hash存在存储上,相对来说,验证过程比较快。
Hash / Digest
此介绍中提到的Hash都是Shabal256算法的Hash结果32Byte(256bit)。
Plot files
存储在硬盘上的预选计算好的Hash数据,称为Plot文件。
Nonce
Plot文件由一个个nonce组成。每个nonce的大小256K。每个nonce有个唯一的编号,从到18446744073709551615。因为每个nonce有唯一标识,一个Plot文件,可以很多nonce。
Scoop
每个nonce分成了4096段。每一段叫scoop。每个段是64个字节,包含2个Hash值。后面会提到,这个Hash值是两个其他Hash值XOR操作的结果。
账户ID
当生成一个Plot文件的时候,必须要提供一个Burst数字账户。因为每个数字账户都不一样,即使nonce的编号相同,所以每个矿工的Plot文件都不一样。
Deadline(截至时间)
挖矿的时候,一次计算的结果是一个Deadline。在上一个区块挖出后的Deadline的时间后,如果没有其他人再你之前挖出区块,你就能挖出该区块并获得奖励。
区块奖励
当你挖出区块时,会获得Burst币作为奖励(区块奖励)。每10800个区块,奖励下降5%。因为每4分钟出一个区块,所以大概是每30天,奖励下降5%。
Base target
从最近的24个区块计算Base target。Base target用来调整挖矿难度。Base target越低,挖矿越难。因为难度的调整,Burst网络能保证大概每4分钟生成一个区块。
网络难度
网络难度和Burst网络中总存储空间的大小有关。网络难度,在每个区块都会调整。所以,要看360个区块,才能比较准确的估算存储大小。
区块高度
每个区块有个编号。这个编号称为区块高度。这个编号会在前一个区块的编号基础上加1。
区块生成者
当一个账户发现合适的deadline,就生成了一个区块。这个生成区块的账户就是区块生成者。区块生成者获得区块奖励。
区块打包签名
区块打包需要用到前一个区块的打包签名以及区块生成者信息。有了打包的区块,矿工就可以挖矿。区块打包签名是32字节。
区块签名
每个区块由区块生成者签名。区块生成者用自己的私钥,结合区块内容,生成签名(Sha256以及Curve25519算法)。该签名是64字节。
奖励发放
加入挖矿池挖矿的话,涉及到奖励发放。设置奖励发放,其实是告诉Burst网络:1)你的所有收益分配给矿池。2)矿池能利用你的Plot文件发现的deadline,并且矿池能生成区块签名。
3)挖矿过程
该描述中说的钱包同样适合矿池。该描述中的矿工是Burstcoin的挖矿软件。
挖矿的第一件事情是,矿工向钱包询问挖矿信息:区块打包签名,base target,下一个区块高度。钱包负责区块打包签名和下一个区块高度,矿工利用这两个信息,经过Shabal256算法生成Generation Hash。
接着,通过模运算(4096),获得Scoop数值。
从Plot文件中,读取所有的编号为上述结果的Scoop。对每个scoop,合并上区块签名,再经过Shabal256运算,得到Target。Target再除以Base target,获得8字节的Deadline。
矿工检查得到的Deadline是否足够低。如果确定合适的Deadline,矿工提交信息给钱包:账户ID以及nonce数值。如果你是独立矿工,你还需要提供密钥。如果是矿池,使用矿池的密钥。
4)区块生成流程
Deadline处理
钱包接收到矿工提交的Deadline相关信息后,创建相应的nonce并验证deadline。验证成功,钱包查看是否时间满足deadline,如果没到,等待。如果等待过程,有其他钱包生成了区块,放弃该区块(因为该区块已经无效)。
如果有多个矿工提交Deadline, 钱包选择最低的Deadline。当Deadline的时间满足时,钱包开始生成区块。
生成区块
区块有两个限制:1)包含最大255个交易2)最大字节数为44880字节(43K)。钱包监听网络上的所有未确认的交易,打进一个区块,直至上述任一条件满足或者已经打包进了当前所有交易。对打包进区块的每一笔交易,钱包都需要检查,比如说,交易的签名是否正确,时间是否正确等等 。钱包会计算区块的所有金额以及费用。区块只记录的是交易的ID以及所有交易信息的Sha256信息。
区块内容
区块版本
区块内容的版本信息
交易ID列表
区块中包含的交易列表
Hash
区块数据的Sha256的Hash数值
时间戳
从Burst区块链创建开始计时的时间戳。Burst区块链的创建时间:2014/8/1102:00:00。
交易总额
区块中交易的总额
交易总费用
区块交易总费用
区块长度
区块中数据的字节长度
公钥
生成区块的账户的公钥
打包签名
生成区块时的打包签名
前一区块的Hash
前一区块的Sha256的Hash值
前一区块的编号
前一区块的Hash值的前8个字节
Base Target
生成区块时的Base Target
区块高度
区块高度编号
区块编号
区块Sha256的Hash值的前8个字节
Nonce
区块生成时使用的nonce值
AT
如果有AT功能,这个字段是AT的内容
区块签名
使用生成者的私钥,生成64字节的签名
完成这些后,钱包就把新的区块信息广播到网络中。其他钱包接收到新区块信息后,会验证区块信息。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文来自企鹅号 - 全球大搜罗媒体
如有侵权,请联系 cloudcommunity@tencent.com 删除。