当前位置:首页区块链代用品的交易权重是多少?

代用品的交易权重是多少?

链的可用资源是有限的。资源包括内存使用、存储I/O、计算、事务/块大小和状态数据库大小。有几种机制可以管理对资源的访问并防止链中的组件消耗太多资源。权重是用于管理验证块所需时间的机制。一般来说,这来自于限制存储I/O和计算。

注意:weight不用于限制对其他资源的访问,例如存储本身或内存使用。这还有其他机制。

块可以包含的权重是有限的,可选的权重消耗(即不需要作为块的初始化或终止阶段的一部分部署的权重,或不需要用于强制执行的固有外部权重)通常由经济措施或简单的事务限制成本。交易费用文件(https://substrate.de/docs/en/knowledgebase/runtime/fees网站)。

基板将权重单位定义为在固定参考硬件(Intel Core i7-7700k CPU、64GB ram和nme固态硬盘)上执行时间的皮秒(皮秒)。参考硬件上的基准测试使运行时之间的权重具有可比性,从而允许来自不同来源的软件组件的可组合性。为了调整不同验证器硬件假设的运行时间,可以设置不同的最大块权重。例如,为了允许验证参与,速度仅为参考机器的一半,最大权重应为默认值的一半,保持默认的阻塞时间。

最大块权重应等于目标块时间的三分之一,为块构造分配的三分之一,为网络传播分配的三分之一,为导入和验证分配的三分之一。两次拦网时间将是最大重量的两倍。这些优化选项为运行时开发人员提供了一种在每秒事务数和场景的硬件需求之间进行最佳权衡的方法。这些折衷可以通过运行时更新来调整,以跟上硬件和软件的改进。

重量函数

权重表示区块链必须验证区块的有限时间。这包括计算周期和存储I/O。自定义实现可以使用复杂的结构来表示这一点。基板重量只是一个数字(https://crates.parity.io/frame支撑/重量/type.Weight.html类)。

应始终计算重量:

可以在发货前计算。块生成器应该能够在实际决定是否接受可调度权重之前检查可调度权重。

它消耗的资源很少。当事务在执行中被消耗时,使用相同的资源来计算事务权重是没有意义的。因此,权重计算应该比调度轻松得多。

能够在不查询链状态的情况下确定所使用的资源。在不需要昂贵I/O的情况下,权值可以很好地表示固定的测量值或仅基于可调度函数的参数的测量值。当成本取决于链的状态时,权重就不那么有用了。

当可调度权重严重依赖于链状态时,有两个选项可用:

确定或引入一个强制性的上限来确定可以容纳的重量。如果强制上限和可调度的最小可能重量之间的差异很小,则可以假定它始终处于重量上限,而无需咨询。但是,如果差异过大,交易量减少的经济成本可能会过大,从而扭曲激励机制,导致生产效率低下。

需要将有效权重(或可用于有效计算的前体)作为参数传递给调度。收取的重量应基于这些参数,但也包括在调度期间验证这些参数所需的时间。必须进行验证,以确保重量参数与链条上的状态准确对应,否则,操作可能出错。

权重因子

有几个因素会影响执行时间,从而影响权重计算。大贡献者是可以计划执行的数据库访问数。由于访问数据库的成本很大程度上取决于数据库的后端和存储硬件,因此权重计算是参数化的,而不是数据库读写的权重成本。这些成本是通过在一些参考硬件上对每个可用的数据库后端进行基准测试来确定的。这允许您在不更改所有权重计算的情况下切换数据库的后端。

除了只使用常量进行预先调度的权重计算外,开发人员还可以考虑给定可调度对象的输入参数。当执行时间取决于(例如)参数的长度时,这非常有用。重要的是,这些计算本身不需要任何有意义的工作。利用一些基本算法,可以方便地从输入参数中计算出预调度的最大权重。

系统模块负责在执行过程中累积每个块的重量,并确保其不超过限制。交易支付模块负责解释这些权重并根据这些权重扣除费用。weight函数是运行时的一部分,因此可以根据需要进行升级。

发货后重量修正

在某些情况下,可以调度的实际权重不能简单地从其输入中计算出来。例如,权重可以取决于可调度逻辑路径。如果调度后没有办法修正权重,我们会不断高估这些可调度价格,然后再加价,因为我们必须在调度前假设最坏的情况,以确保链条的安全。

发布的预定权重校正允许任何可调度的在执行后返回其实际权重。此权重必须小于或等于调度前的最坏情况权重。要允许用户包括外部用户,他们仍然必须能够支付最大重量,即使最终付款将基于实际重量。

块的重量和长度限制

除了影响成本之外,权重系统的主要目的是防止一个块被执行时间过长的事务填满。在块内处理事务时,系统模块将块的总长度(以字节为单位的编码事务的总和)添加到块的总权重中。如果两个数字中的任何一个超过了限制,块将不接受进一步的交易。这些限制以最大锁长和最大锁重定义。

有关这些限制的一个重要注意事项是,其中一些限制是为操作调度类保留的。此规则适用于这两个限制,比率可以在aailableblockratio中找到。

例如,如果块长度限制为1兆字节,并且比率设置为80%,则所有事务都可以填充块的前800千字节,而最后200千字节只能由操作类填充。

还有一个强制调度类,可用于确保外部始终包含在块中,而不管其对块权重的影响如何。见交易费用文件(https://substrate.de/docs/en/knowledgebase/runtime/fees网站)了解有关不同调度类以及何时使用它们的更多信息。

下一步

了解更多

基板菜单包含自定义权重(https://github.com/substrate-deeloper-hub/recipes/tree/master/pallets/weights)重量(https://github.com/substrate-deeloper-hub/recipes/tree/master/runtimes/weight-fee-runtime)的情况。

案例模块:https://github.com/paritytech/substrate/blob/master/frame/example/src/lib.rs网站

案例

请参阅将事务权重添加到自定义运行时函数的示例。https://substrate.de/recipes/3-entres/weights.html网站

参考资源

交易支付模块:https://github.com/paritytech/substrate/blob/master/frame/transaction-payment/src/lib.rs网站

重量:https://github.com/paritytech/substrate/blob/master/frame/support/src/weights.rs网站

原文:https://substrate.de/docs/en/knowledgebase/learn-substrate/weight

翻译:波尔卡世界社区

欢迎来到基板:

https://substrate.de网站/

跟踪基质进展:

https://github.com/paritytech/substrate网站

关注波卡的进展:

https://github.com/paritytech/polkadot

温馨提示:

文章标题:代用品的交易权重是多少?

文章链接:https://www.btchangqing.cn/44242.html

更新时间:2020年06月26日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

代用品的交易权重是多少?
区块链

Firecoin Summit:关于以太坊的一切

2020-6-26 4:42:46

区块链

区块链在垃圾分类与回收领域的应用开发报告II

2020-6-26 7:35:26

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索