区块链开源心得和区块链二次开发

区块链开源心得和区块链二次开发

区块链简介

区块链服务于虚拟货币区块链技术用个体自己算哈希数来进行货币发行,通过加密技术支持帐户交易,通过分布式通信进行全节点账本同步,提供架构来支持钱包等高级功能。它的出现再次证明计算机互联网是强大工具实体世界里的行业模型可以很好地在计算机世界里体现。

锐英源研究过区块链平台多个代码版本,各个版本都进行了定制开发,客户满意,平台可靠稳定运行。这里分享2个方面的知识点:编译和参数

区块链源代码编译

区块链是开源的,一般也是用开源的操作系统,现在经常用人的本质来当区块链的运行平台。在人的本质下正常的编译步骤如下:

sudo apt-get更新

sudo apt-get install build-essential libtool autotools-dev automake pkg-config libssl-dev libevent-dev bsdmainutils

sudo apt-get安装libboost-all-dev

sudo apt-get安装饭桶

sudo apt-get安装软件-属性-通用

sudo添加-apt-仓库PPA :比特币/比特币

sudo apt-get更新

sudo apt-get安装程序。/autogen.sh。/配置

制造在ubuntu12下,这些步骤没问题。但是到ubuntu14下,在处理libdb4.8行时,会提示找不到libdb,这时候不要慌,把libdb4.8去掉,变成如下行就可以

sudo apt-get安装libdb4.8 -dev安装源在识别时,不能用libdb4.8-dev来找到包,但是用后者就可以,后者也包含libdb4.8-dev,安装后也可以编译出来区块链的可执行文件。这事件原因就是开源的不全面性造成的,开源世界里遇到变化是常事。

另外要注意操作系统平台的32位或64位情况,一般是用64位平台操作系统才可以运行。

参数

Configuring a blockchain

在通过运行多链实用程序创建[链名]创建链之后,在通过运行多链[链名]启动链之前,配置区块链的参数。

在params.dat文件中为每个区块链设置参数,可以在任何文本编辑器中修改这些参数。一旦区块链初始化,这些参数就不能更改。为了防止意外修改,当链开始运行时,参数的散列被添加到params.dat中。多链实用程序创建[链名]创建区块链后,参数会配置上。

当新节点尝试连接到现有区块链时,它们首先从现有节点下载一组最小的区块链参数,并将其写入相应目录中的params.dat文件。一旦获得连接许可,他们就可以下载全套区块链参数。新节点想连接存在的区块链,必须先下载已创建区块链节点机器好的区块链参数。

可以使用getblockchainparams API调用来检索区块链的参数getblockchainparams。命令可以查看参数。

Full list of blockchain parameters

下面是params.dat文件中参数的完整列表,按节分组。

Basic chain parameters

参数

描述

例子

链式协议

对多链区块链使用多链,或对没有权限、本地资产或流的比特币风格的区块链使用比特币。

多链

链式描述

用户显示的区块链的文本描述。

内部链

根流名称

常规数据存储的根流的名称(留空表示无)。

根流打开

允许任何具有发送权限的人写入根流。

真实

链是测试

在各种JSON-RPC API调用的输出中是否将测试网设置为没错。这是为了与比特币核心兼容,不影响任何其他类似测试网的行为。

错误

目标闭塞时间

块之间的目标平均秒数,即确认交易的延迟。如果低于10秒,建议将采矿周转率设置为低,以最大限度地减少分叉数量

60(一分钟)

最大块大小

每个块中的最大字节数,以防止流氓矿工网络泛滥。

1000000 (1MB)

Global permissions

参数

描述

例子

任何人都可以连接

对连接到网络不施加任何限制,即节点不需要连接权限。

错误的

任何人都可以发送

对发送交易不加限制,即签署交易输入。

错误的

任何人都可以接收

不限制接收交易,即出现在交易输出中。

错误的

任何人都能收到空的

对不包含本地货币、资产或其他元数据的交易输出中出现的地址不加限制。仅当任何人都可以接收=假时相关。这允许没有接收许可的地址在非资产事务中包含更改输出,例如发布到流。

真实的

任何人都可以创造

对创建新流没有任何限制。

错误的

任何人都可以发行

不限制发行(创建)新的本地资产。

错误的

任何人都可以-我的

对开采区块链不施加任何限制,即确认交易。

错误的

任何人都可以激活

对更改其他用户的连接、发送和接收权限没有任何限制。

错误的

任何人都可以管理

不限制更改其他用户的所有权限。

错误的

支持-挖掘-预检查

通过缓存管理员在设置管理或我的权限时花费的输入,支持高级矿工权限检查请参见权限管理了解更多信息

真实的

允许-p2sh-输出

允许支付给脚本哈希输出,其中只有当输出被花费时才显示赎回脚本。有关权限和P2SH地址的更多信息,请参见权限管理。

真实的

允许多信号输出

允许多重签名输出,其中在事务输出中明确列出了多个地址,并且为了使用该输出,需要给定数量的这些地址签名。有关权限和多重签名输出的更多信息,请参见权限管理。

真实的

Consensus requirements

参数

描述

例子

设置-第一个-块

以块为单位的初始设置阶段的长度。在设置阶段,本节中其他参数指定的约束不适用。块里初始设置阶段的长度。在设置阶段,其它参数不生效。

1440

矿业公司

参与循环开采以获得有效区块链所需的许可采矿者的最小比例,介于0.0(无约束)和1.0之间(每个许可采矿者都必须参与)。与采矿周转率不同,这是一个决定区块链是否有效的硬性规则。许可矿工最小比例,在循环挖矿来提出一个有效区块链参与时需要

0.5

管理-共识-管理

必须同意修改地址管理权限的许可管理员的比例,介于0(不需要共识)和1(每个管理员都必须同意)之间。

0.5

管理-共识-激活

必须同意修改地址激活权限的允许管理员的比例,介于0和一之间。

0.5

管理-共识-我的

必须同意修改地址挖掘权限的许可管理员的比例,介于0和一之间。

0.5

管理-共识-创建

必须同意修改地址的流创建权限的许可管理员比例,介于0和一之间。

0.0

管理-共识-问题

必须同意修改地址的资产发放权限的许可管理员的比例,介于0和一之间。

0.0

Defaults for mining runtime parameters

锁定管理地雷轮次

忽略经过这许多(整数)轮挖掘后逆转管理或挖掘权限更改的分叉。一轮采矿被定义为采矿人数乘以允许的矿工人数,向上取整。这可以防止区块链治理模型中的更改被逆转,并且可以被每个节点使用lockadminminerounds运行时参数覆盖。

10

挖掘需要对等体

一个节点只有连接到至少一个其他节点时才会挖掘。在设置阶段或者如果只有一个地址具有我的权限,这将被忽略,并且可以由每个节点使用挖掘要求者运行时参数来覆盖。

真实的

地雷空弹

如果没有新的事务,在这许多轮空块之后停止挖掘。一轮采矿被定义为采矿人数乘以允许的矿工人数,向上取整。这减少了区块链在低活动时段的磁盘使用量。如果为负,则无限期地继续挖掘。这在设置阶段或如果目标-调整-频率0时被忽略,并且可以由每个节点使用mineemptyrounds运行时参数来覆盖。

2.5

采矿营业额

如果值为0.0,则倾向于在自动发现的允许挖掘者子集之间进行纯循环挖掘,只有当某个挖掘者失败时,其他挖掘者才会介入。在这种情况下,有效矿工人数将是采矿者人数乘以允许矿工人数,四舍五入。值1.0表示在所有允许的挖掘者之间进行纯粹的随机挖掘。中间值设置了这两种行为之间的平衡。较低的值会减少分叉的数量,使区块链更有效,但会提高采矿集中度。与矿业公司不同,这是一个建议规则,而不是一致规则,可以由每个节点使用采矿翻转运行时参数覆盖。

0.5

Native blockchain currency

在创建区块链时,一个根本问题是它是否应该使用一种原生货币(相当于作为资产的比特币)。默认情况下,多链区块链不使用本国货币。但是,您可能希望改变这种情况,以创建一个交易市场,交易通过附加本币交易费来竞标区块,矿工将获得这些费用以及区块奖励。

参数

描述

例子

初始块奖励

奖励给每个区块的矿工的原始货币单位数,以原始整数单位表示。

0

第一轮奖励

仅对第一个区块使用不同的采矿奖励,以原始整数为单位。如果为负,则忽略。

-1

奖励减半间隔

每经过这么多块,每块矿工奖励减半。

52560000

奖励可消费延迟

矿工获得区块奖励后,该奖励可以使用的区块数。

最小单位产量

每笔交易输出中的最小原币数量,以原始整数单位表示。

0

最大单位产量

每笔交易输出中的最大本币数量,以原始整数单位表示。

0

最低中继费

传递交易所需的最低本币费用,以原始整数为单位。这可以被minrelaytxfee运行时参数覆盖。

0

本地货币倍数

JSON-RPC API中使用的本地货币的每个显示单位有多少个原始整数单位。例如,在比特币网络中,这将是每个比特币的中本聪数量。

100000000

Advanced mining parameters

参数

描述

例子

跳过功率检查

跳过检查块哈希是否证明了足够的工作证明。

错误的

功率最小位

最小/初始工作验证难度,即块哈希中前导零的位数。

20

目标-调整-频率

重新计算工作证明难度级别的频率,以秒为单位。对于不需要工作证明的区块链,请使用负值以防止重新计算。

86400 (1天)

允许最小难度块

如果方块出现的时间太长,忽略当前的目标难度。

错误的

Transaction limits

参数

描述

例子

仅接受标准事务

根据以下标准,仅接受和转递符合\"标准\"的交易。

真实的

最大标准发送尺寸

标准事务的最大大小,以字节为单位。

10万英镑

最大标准工序退货数量

标准事务中OP _返回输出的最大数量(用于一般数据)。

10

最大标准操作返回尺寸

标准事务中OP _返回元数据输出的最大大小,以字节为单位。

4096 (4K)

最大标准操作丢弃数

标准事务中单个输出中内联OP_DROP元数据元素的最大数量。

5

最大标准元素大小

标准事务中数据元素的最大大小,以字节为单位。

600

Advanced parameters

默认网络端口

用于节点间对等通信的默认互联网协议(Internet Protocol)端口(可由每个节点使用端口运行时间参数覆盖)。

8571

默认(同radarplanningchart)雷达规划表端口

用于对多链的远程过程调用调用的默认互联网协议(Internet Protocol)端口(可以由每个节点使用rpcport运行时参数覆盖)。

8570

链名

区块链名称,一般通过调用多链效用来设置。

链一

协议版本

使用的链协议协议的版本。这可用于向后兼容旧版本的多链参见创建新的区块链。

10007

网络-消息-开始

在每个对等协议消息开始时发送的四字节\"幻值\"。

fddcc6f1

地址-公钥哈希-版本

地址脚本哈希版本

私钥版本

地址校验和值

这些控制常规地址、付费脚本哈希(multisig)地址和导出的私钥的格式。有关更多信息,请参见地址和密钥格式。

下面的

Production recommendations

是参数列表,其值对于多链1.0的长期生产部署至关重要。(我们希望正在开发的多链2.0能够在运行的区块链中根据管理员的一致意见更改许多参数。)

目标闭塞时间

考虑您的验证器节点将在地理上部署在哪里,以及这些位置之间的延迟。确保该值足够长,以便在峰值预期吞吐量下,在这些节点之间保持一致。使用生产前测试来确定安全值,然后增加50-100%的误差幅度。此参数应与最大数据块大小一起测试,因为较大的数据块需要更长的传播时间。

最大块大小

确保这对于预期的未来增长来说足够大。使用生产前测试来确定给定工作负载的数据块大小。还要注意,对于任何给定的事务吞吐量,目标块时间的增加需要最大块大小的相应成比例增加。

任何人都可以-我的

设置为假的,除非您确定要使用工作证明挖掘,在这种情况下,请确保目标-调整-频率为正数。

任何人都可以管理

设置为假的,除非您确定希望连接到区块链的任何用户能够执行管理操作,这种情况非常罕见。

支持-挖掘-预检查

如果您的区块链对公众开放,或者任何参与者都有动机对网络进行拒绝服务攻击,则设置为没错。(矿工预检查由多链1.0 beta 2或更高版本执行。)

矿业公司

确保该值高于0.5,以防止长期运行的网络分裂导致两个区块链分叉,这两个分叉都可以长期持续增长。

管理-共识-管理

管理-共识-我的

为了防止管理员之间将来发生冲突而导致分叉,请将这些值设置为0.5以上。这意味着,对于链条的任何治理变更,总会有一个明显的多数。

目标-调整-频率

设置为-1,除非您希望在区块链中使用工作证明挖掘,否则随着时间的推移,块创建会变得很困难并且会占用大量中央处理器资源。没有理由在一个由矿业公司管理的特许矿工链中使用工作证明。

最大标准操作返回尺寸

确保这足以容纳您将在区块链中嵌入的最大数据块(但请注意64兆字节的硬限制)。最大标准发送尺寸和最大块大小都应该至少比这个值大几百个字节。

协议版本

设置为10008或更高(假设您的链协议是多链),以便您的区块链在多链的未来版本中支持升级到新协议。

版权声明:区块链公司 发表于 2022-03-22 9:06:26。
转载请注明:区块链开源心得和区块链二次开发 | 零零洞洞

暂无评论

暂无评论...