Signum采矿
Signum Mining:简介
Signum挖掘是向Signum区块链添加块的基础。 有两个不同的过程;准备阶段称为绘图,处理阶段称为挖掘。 这个独特的部门将Signum的容量证明共识算法与功能相似的工作证明共识算法区分开来。 它为 Signum 赢得了“环保”的称号。
- 第 1阶段:在绘图文件中预计算和存储加密哈希函数的结果。 这些绘图文件包含伪造块所需的数据和计算,包括所谓的截止时间。 因为计算是保留而不是立即丢弃(就像传统的“工作量证明”系统那样),所以采矿能力会随着时间的推移而增加。 绘图满足“无害问题”,可以视为修改后的工作量证明组件。
- 阶段 2:采矿软件可快速读取情节文件中包含的数据子集,并将最佳期限(加密解决方案)提交给Signum网络。*提交最佳期限的矿工被授予伪造相关区块并获得相关联的权利。阻止奖励和交易费用。
*Signum 采用复杂且去中心化的 API 网络来验证和记录其分布式和不可变分类账中的交易。
Plotting:
绘图是Signum采矿之前的准备阶段。 信号量绘图解决了“无关紧要”的问题,可以看作是修改后的工作量证明组件。 从本质上讲,它是临时的准备阶段,无法与其他以工作量证明为共识算法的代币实施的连续工作量证明相提并论。
软件会预先计算并存储伪造Signum块所需的所有信息,包括所谓的截止日期。 尽管有多个运算(例如除法和字符串运算)在起作用,但最值得注意的计算是基于Shabal-256密码哈希函数。 与其他加密功能(例如SHA256)相比,Shabal-256相对较慢且较重。 选择这些特性,Shabal-256 减慢了绘图文件的创建速度,同时保持足够快以用于 Signum 中使用的实时验证。 采矿软件检索这些哈希值以查找锻造块的值。
情节文件绑定到Signum帐户ID,因此不同的帐户ID始终会生成唯一的情节文件。 在具有较快CPU的计算机上创建的绘图文件可以转移,以由具有较慢CPU的计算机进行挖掘。 通常,在使用具有GPU功能的绘图软件时,请在绘图会话期间将GPU专用于绘图,以免创建损坏的绘图文件。 某些软件可能包含阻止这种情况的创新。
避免创建重复或重叠的绘图文件。 重复或重叠的绘图不会导致故障,并可能被忽视。 但是,它们在采矿过程中没有任何价值。 为避免创建重叠的绘图文件,请为每个绘图会话仔细输入正确的起始绘图号。
雕刻机是一种易于使用的专用绘图程序,可以在以下位置找到: Signum软件库。 如果您有SMR驱动器可用作登台驱动器,则TurboPlotter9000是一个不错的选择。 BTDEX是适合初学者的完美的多合一解决方案。
绘图文件大小:
打印文件的大小仅受存储设备容量的限制。 一个存储设备可以包含一个大的绘图文件或许多较小的绘图文件。 与大型绘图文件相关的读取时间效率非常低。 但是,在大多数情况下,使用较小的绘图文件会更方便。 使用较小的绘图文件,您可以在需要时删除一个或多个以释放磁盘空间用于其他目的,或者删除和替换单个重叠或损坏的文件而不删除整个磁盘内容。 较小的文件还可以更轻松地在不同容量的设备之间移动绘图文件。 对于由 8 TB 硬盘驱动器组成的挖掘操作,建议每个文件大小为 1 TB。
容量
容量由绘图文件中包含的总存储计算散列组成。 每个块间隔读取这些文件的一小部分(大约 0.025%)。
承诺
除了容量之外,矿工还可以锁定一定数量的 Signa(股权)以乘以物理容量(统计),从而产生更大的“有效容量”。 该链将承诺余额与过去 1,440 个区块中所有矿工的平均余额进行比较,并将抵押收益应用于提交的截止日期。
因素
没有承诺,体力会减少 1/8 倍。 承诺金额等于平均承诺金额,乘数因子为 1。 承诺是平均承诺的 100 倍,有效容量增加了 8 倍。 各级承诺与因素的关系是线性的。
可以在此处找到挖矿收益计算器: Mining Proceeds
单人采矿和泳池采矿:
独奏矿工只受益于那些专门绑定到他们的帐户的绘图文件。 如果单独的矿工向网络提交最佳截止日期,则仅他们自己就将获得总的区块奖励以及与该区块相关的交易费用的100%。 因为任何人伪造一个块的可能性都很小,所以要持续获得成功的个人采矿需要许多绘图文件。 以网络的当前大小,成功的单独挖掘需要数 TB 的存储容量。 但是,对于小型矿工而言,以网络分散为目标选择单人采矿并不罕见。 然而,在这种情况下,利润不是首要目标。
池挖掘是单独采矿的替代方案。 借助矿池开采,单个矿工将自己的能力贡献给一个合作社集团,该合作社根据其奖励分配政策(通常是成比例地)分享所获得的收入。 大多数小容量矿工更喜欢池式挖矿,因为它提供的流量较小,但更规律。 您可以通过发起奖励分配交易或从钱包软件中预先配置的池列表中进行选择来加入任何池。 在线服务部分中也有池的列表。
具有必要技术专长的任何人都可以使用以下资源来运营矿池Signum社区开发的软件。
步骤1
绘图软件会预先计算加密哈希函数的结果并将其存储在绘图文件中。
第2步
采矿软件读取地块文件数据的一部分,并向网络提交最佳期限。
BTDEX
BTDEX是一个无缝执行步骤1和2的程序。 非常适合初学者。
个体采矿
独自一人赚取100%的区块奖励和相关费用。
泳池采矿
将您的能力添加到社区组中,并按比例共享该组所获得的奖励。
奖励分配
将您的帐户加入采矿池的链上交易。
集体奖励
每个区块的奖励每月减少5%,而最低区块奖励为100。
采矿能力
采矿能力是根据提交的截止日期的频率和质量进行统计确定的。
赌注
权益是为了提高有效容量而被锁定的Signum数量。
奖励分配:
奖励分配是一项交易,用于通知网络所有归因于情节文件的块奖励将分配给另一个帐户。 它是一种机制,允许池接收分配给其参与者的块奖励。 奖励分配将授予使用您提交的截止日期伪造的区块的权限,该区块将由采矿池的帐户签名。
在凤凰钱包左上角的下拉菜单中或Signum Node中的齿轮图标后面找到奖励分配交易。 在 BTDEX 中,奖励分配是通过位于“挖矿”选项卡中的“加入矿池”按钮完成的。
选择“奖励分配”后,以Reed Solomon格式输入收件人帐户地址,最低交易费用(.00735),您的密码,然后单击“设置奖励收件人”。 奖励接收者交易在四次确认后生效,因此平均需要16分钟才能在区块链上生效。
在 BTDEX 和 Phoenix 中创建的新帐户将获得少量 Burstcoin 以支付交易费用。 如果将使用 BRS 创建的帐户暂时导入 Phoenix 以使用该钱包的“帐户激活”功能,也可以收到这一小额款项。 另一种选择是运行一个完整的节点并接收 信噪比奖 为奖励分配交易费提供资金。 该奖项每天支付,是增加采矿收入的好方法。 您还可以在 Burstcoin 论坛中提出所需金额的请求。 为此目的推荐的论坛是Burstcoin Discord。 需求量的要求是正常的,也很受欢迎。
某些池具有免费选项,可让您直接在其网站上设置奖励分配。 这涉及将您的密码短语输入在线表格。 重要的是要记住,在将帐户的密码短语输入在线表格后,再也不能认为它是安全的。 对于收集采矿收益,这可能不是问题。 请记住,以后不要大量使用该帐户。
注意:可以直接使用API设置奖励接收者。 但是,这种方法是技术性的,主要用于软件开发中。
采矿能力和有效地块面积:
挖掘容量是绘图文件专用存储容量的总量,是选择挖掘方法时的决定因素。 它还可以通知选择加入哪个挖掘池。 没有做出此决定的严格规则,也没有技术障碍阻止具有特定采矿能力的任何人加入任何特定的矿池。 分配策略通常使用两个数字表示。 第一个代表支付给提供胜出加密解决方案的帐户的大礼包奖励的百分比。 第二个称为“历史份额”,代表在剩余参与的矿工之间分配的块奖励的百分比。
出于说明目的,提供了以下非官方的常用Signum挖矿分发方法选择。 每个都与建议的采矿能力配对:
分布 | 成功的伪造者 | 历史份额 | 采矿能力(以 TB 为单位) |
0 – 100 | 0% | 100% | 0 – 40 |
20 – 80 | 20% | 80% | 30 – 80 |
50 – 50 | 50% | 50% | 60 – 200 |
80 – 20 | 80% | 20% | 150 – 250 |
100 – 0 | 100% | 0% | 150 and higher |
请注意:D分配方法分散,完全由各个池操作员设置。 此计划未解决池运营商可能收取的费用。 池运营商还可以单独设置其付款时间表和最低付款额。 随着最近引入多点事务,池具有更大的灵活性。 有些人选择每天支付奖励。
有效地块大小是用于确定每个矿工在池采矿收入中所占份额的参数。 每个池操作员独立设置计算此统计信息的方法。 通常是根据矿工提交的超过360个区块的最佳期限来计算的。 对于一个新的矿工,它通常从零开始,然后上升以反映24小时内的总产能。 由于它是统计生成的,因此通常会在实际物理容量之上和之下振荡。 您可以通过限制根据池的规格提交的最大截止时间来优化此计算。
集体奖励:
采矿收入包括块状奖励和交易费用。
每10,800个区块(每月大约一次)后,Signum区块奖励将减少,但最低区块奖励为100。 根据当前区块高度计算区块奖励的一般公式如下:max((month =区块高度/ 10800reward = 10000 * 95 ^ month / 100 ^ month),(100))
有关整体奖励的时间表,请参阅本文档的末尾。
技术信息:
public static long getBlockReward(int height) {
if (height == 0 || height >= 1944000) {
return 0;
}
int month = height / 10800;
return
BigInteger.valueOf(10000).multiply(BigInteger.valueOf(95).pow(month))
.divide(BigInteger.valueOf(100).pow(month)).longValue() * Constants.ONE_BURST;
}
开采和锻造块的过程:(开始技术资料)
需要 Signum 节点(本地安装或远程访问)和 Signum 挖掘软件(从绘图文件计算截止日期)。
挖矿软件向节点请求挖矿信息如下:
- 新的代签名= Shabal-256 (以前的一代签名,以前的块生成器)
- 基本目标值
- 新的块高度
- 生成哈希= Shabal-256 (新的一代签名,新的块高度)
从这个信息( API 示例),挖矿软件产生以下结果:
- 勺号= 模 4096 (生成哈希)
该数字用于从绘图文件中选择勺子(勺子数据)。 对于每个勺子,计算如下:
- 目标= shabal-256 (独家数据,代签名)
- 最后期限= 第 8 个字节 (目标/基本目标)
计算完所有截止日期后,将最低截止日期(取决于最大截止日期设置)(如果有)连同绑定到相关 plot 文件的数字帐户 ID 和 nonce 编号提交给节点用于生成截止日期的独家数据。 对于单独挖掘,也会传递绑定到绘图文件的帐户的密码。 对于池挖掘,使用池帐户的密码。
注意:较旧的挖矿软件提交了多个,随后发现它们的截止日期较低,受最大截止日期设置的约束。 但是,没有理由在钠硬分叉之后这样做。
从挖矿软件接收到最后期限(或多个期限)后,接收节点会创建一个随机数,用于查找和验证最后期限。 如果截止日期被验证,则节点等待截止日期到期。 如果在原始截止日期到期时向节点传递了较低的截止日期,则节点将等待新的较低截止日期到期。 在提交给节点的最低期限到期后,节点将检查网络以查看是否已经宣布了新的有效块。 如果已经宣布了一个新区块,则该信息将被丢弃。 如果新的区块尚未公布,节点将开始锻造新的区块。
为了伪造一个区块,节点收集未确认的交易并检查每笔交易的有效性、签名、时间戳等。 它组装尽可能多的事务,直到达到每个块的最大事务数或已处理所有可用事务。 包含事务的限制是最大块有效载荷为179,520字节(176 kB),以及单个块中可包含的最大事务数。 理论上最大事务数为 19,200。
看签名交易处理有关事务处理如何工作的更多信息。
一旦一个节点伪造了一个块,它就会通过连接到对等节点并将该块发送给网络进行验证和确认。
注意:事务与块分开存储。
矿池通常会设定一个最长期限。 计算历史份额时不包括超过此限制的截止日期。
阻止内容和阻止浏览器:
Signum块浏览器用于查看块信息和内容。 区块浏览器由Signum社区内的程序员和组织提供。 各种块资源管理器可以在在线服务目录中找到。 大多数钱包中还包含每个区块的详细信息选择。
通常在区块浏览器中找到的信息:
- 块版本号 – 指确定块可以包含的内容的块格式。
- 块高度
- 包含的事务 ID 的列表。
- 有效负载哈希 – 块有效负载中包含的所有数据的 Sha256 哈希。
- 时间戳 – 块伪造的时间 – 源自创世纪块的时间(2014 年 8 月 11 日,02:00:00)
- 所有包括的交易的总金额
- 交易费用总额
- 有效负载长度
- 伪造该区块的帐户的公钥。
- 用于伪造区块的生成签名。
- 前一块内容的 Sha256 哈希。
- 上一个块 ID – 前一个块哈希的前 8 个字节转换为数字。
- 累积难度 – 用于防止潜在分叉期间出现”无风险”问题:计算:(以前的累积难度 = ( 1844674407370951616 / 基本目标)
- 在创建块时使用的基本目标。
- 用于伪造区块的Nonce数字。
- AT = 如果 AT 已添加到模块,则 AT 的有效负载字节。
- 块签名 – 从伪造者私钥和块的内容生成的 64 字节哈希。
哈希函数:
哈希函数将文本或数据减少到 64 个字符的字符串。 无论长度或内容如何,原始文本每次都会产生一个由64个字符组成的相同字符串;对原始字体的最细微改动都会导致完全不同的字符串。 哈希函数具有许多应用程序。 一种方法是通过将程序产生的哈希值与从已知良好版本(至少是原始版本)产生的哈希值进行比较来检查程序的更改。 如果以原始形式显示的程序产生了不同的哈希值,则表明它已被更改。
在Signum的密码学应用中,每个块都包含前一个块的哈希,因此链中的每个块都是可验证的。 如果更改了较早的块,则也必须更改每个后续块的哈希,由于Signum强大的加密技术,这项任务将花费数十亿年。 大约每四分钟添加一次新块。 机会之窗很短,因此无法进行如此冗长的任务。 这就是Signum区块链的安全性。
与比特币不同,问题不是通过随机猜测解决,而是通过读取包含预先计算的哈希函数结果的图来解决。 每个项目都经过评估,以确定最后期限,即情节将谜题返回答案所需的时间。 提交最短有效期限的帐户被授权签署冻结并获得冻结奖励。
新创建的块由创建它们的帐户分发到网络。
用于创建绘图文件的技术信息:
以下是理解Signum挖掘中绘图文件创建过程所必需的术语:
- 帐户ID :将绘图文件绑定到特定Signum帐户的Signum帐户数字ID。
- Shabal-256 :用于Signum进程的基本加密功能。
- 种子:Shabal-256参数。 可以将其视为输入变量。
- 杂凑:在Signum上下文中,为Shabal-256函数的输出。 磁盘大小:32 字节(256 位)。 所有哈希都用最终哈希存储。
- 勺子:勺子是绘图文件中哈希数据的基本级别细分。 每勺包含两个哈希。 每勺被分配一个唯一的数字范围从0 – 4096。 磁盘大小:64 字节。
- Nonce:Nonces 是绘图文件中哈希数据的顶级细分。 每根勺子包含 4096 勺。 每个 nonce 分配一个唯一的数字,范围从 0 到 ((2 + 64) – 1) (0, 1, 2, 3 …18,446,744,073,709,551,615). 标识编号是预先分配的,并作为 nonce 生成中的种子使用。 因此,每个 nonce 都有一组唯一的数据。 磁盘大小:256 KB。
- 绘图文件:包含伪造Signum块所需的所有数据的计算机文件。 绘图文件数据首先按随机数细分,然后按勺子细分。 磁盘大小:最小256 KB,最大磁盘总容量。
注意:绘图文件仅包含原始数据。 没有标题。 文件名包括用户或矿工所需的所有信息。 文件名的格式如下。
POC2 格式: 帐户 ID_启动 Nonce_Nrofnonces
生成随机数:
步骤 1:根据由 8 字节帐户 ID 和 8 字节随机数组成的种子计算初始哈希值 (#8191)。 每个后续的哈希数将减少 1,直到最终的哈希数为 0。
哈希 #8191 = Shabal256(8 字节帐户 ID,8 字节随机数)
第 2 步:在初始种子前添加哈希 #8191,创建一个新种子。 计算哈希#8190。
Hash#8190 = Shabal256 (Hash#8191, 8 byte account I, 8 byte nonce number)
第 3 步:将哈希 #8190 置于哈希 #8191 之前,创建下一个种子。 计算哈希#8189。
Hash#8189 = Shabal256 (Hash#8190, Hash#8191, 8byte account ID, 8 byte nonce number)
第 4 步:继续将每个结果添加到最后一个种子并运行计算,直到完成 128 次迭代。 第128次迭代后,生成的种子将超过4,096字节。 对于所有剩余的迭代,仅使用最后 4,096 个字节。
步骤 5:计算所有 8,192 个散列和原始 16 字节种子的最终 Shabal-256 散列。
Final Hash = Shabal256( Hash#0, Hash#1, Hash#2, ( . . ) , Hash#8191, 8byte account ID, 8 byte nonce number)
使用最终的哈希分别对所有其他哈希进行XOR:
XOR逻辑运算符比较每个散列中的第一个字节,如果字节匹配,则输出“ 1”,如果字节不匹配,则输出“ 0”。 对每个字节位置执行该操作。
哈希 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
哈希 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Xor | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
哈希 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
哈希 2 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 |
Xor | 1 | 1 | 1 | 1 | 0 | 0 | 0 |
1 |
如下:
32 字节哈希 #8191 | Xor | 32 字节最终哈希 |
32 字节哈希 #8190 | Xor | 32 字节最终哈希 |
32 字节哈希 #8189 | Xor | 32 字节最终哈希 |
( . . . ) | ||
32 字节哈希 #0 | Xor | 32 字节最终哈希 |
完成后,将新创建的随机数存储在绘图文件中,并重复生成随机数的过程。 生成的每个后续 nonce 都会添加到绘图文件中。 绘图文件中包含的随机数的数量仅受存储容量的限制。
POC2 格式
创建非ces的过程,直到此点封装所谓的 POC1 格式。 为了解决POC1在理论上的“时间内存折衷”漏洞,创建了POC2。 创建POC2遵循POC1格式,但是添加了最后一步以重新组织数据。 随机数分为两半(勺号0-2047和勺号2048-4095)。 交换每个较低编号的瓢的第二半中的数据和较高编号中的每个瓢的第一半中的数据。 镜勺计算为4095 – 电流勺。
注意:Poc1 的图可以一直用于挖矿,但是,POC2 文件的读取速度是 POC1 文件读取速度的一半。 POC1 文件可以使用绘图文件转换器升级到 POC2。 转换过程大约需要重新绘制,因此大多数人选择重新绘制而不是使用转换过程。 您可以通过文件名来识别POC1绘图文件,该文件名遵循15286677094439976801_64658021_19075408_19075408的模式(下划线分隔4个数字)。 POC2图文件的文件名中只有3个数字,如下所示:15286677094439976801_1816799207619978854_456192。
绘图结构
挖掘软件从一个或多个绘图文件读取。 它打开一个文件,找到一个瓢,然后读取瓢所包含的数据。 如果绘图文件未针对此过程进行优化,则铲斗位置将位于多个位置。 在以下示例中,软件正在寻找瓢#403。 连续性被中断,因为软件必须从 nonce 0 读取 scoop #403,然后从 nonce 1 中定位和读取 scoop #403。 优化是将所有 nonce 中的所有勺子放入一个扇区的过程。
最近开发的软件会在写入存储时自动优化绘图文件。 在进行此开发之前,有必要使用第二个程序对数据进行重组。
POC2格式弃用的信息:
交错–绘图文件中的一组随机数。 每个错开都有一个交错数,等于组中的非分数。 要查找绘图文件中的组数,非分数除以交错数。 如果交错数等于文件中的随机数,则只有一组,并且绘图文件已完全优化。 如果分割不产生整数,则可以假定绘图文件已损坏。 POC1 格式下的文件名称如下所示:
POC1 格式:帐户 ID_启动 Nonce_Nrofnonces_Stagger(已弃用)
集体奖励时间表:
月 | 日期 | 高度 | 报酬 |
---|---|---|---|
0 | 2014-08-11 | 0 | 10000 |
1 | 2014-09-11 | 10800 | 9500 |
2 | 2014-10-11 | 21600 | 9025 |
3 | 2014-11-11 | 32400 | 8573 |
4 | 2014-12-11 | 43200 | 8145 |
5 | 2015-01-11 | 54000 | 7737 |
6 | 2015-02-11 | 64800 | 7350 |
7 | 2015-03-11 | 75600 | 6983 |
( … ) | ( … ) | ( … ) | ( … ) |
83 | 2021-07-11 | 896400 | 141 |
84 | 2021-08-11 | 907200 | 134 |
85 | 2021-09-11 | 918000 | 127 |
86 | 2021-10-11 | 928800 | 121 |
87 | 2021-11-11 | 939600 | 115 |
88 | 2021-12-11 | 950400 | 109 |
89 | 2022-01-11 | 961200 | 104 |
90 | 2022-02-11 | 972000 * | 100 |
*区块高度为 972000 之后的所有区块的最低区块奖励为 100 Signa。
学分:
本文档中的信息基于Quibus撰写的文章。 该文档已通过递减修订。 最新修订 7/15/2021。 非常感谢本文档的内容审核。