交易池|Substrate 文档

 戴诗东   2020-08-06  来源:互联网  0 条评论
优质活动 币圈快讯 平台公告 行情分析
最新羊毛 最新空投 链圈挖矿 活动线报
新币上市 币圈空投 国外项目 币链屋
提醒:本站内容均转自网络,仅用于开发者下载测试,请明辨风险,若涉资金安全及隐私,请谨慎!谨慎!再谨慎!一切风险自担,涉及资金交易及个人隐私务必小心并远离,切记千万别投资,勿上当受骗。《本站免责申明》

交易池包含本地节点已接收并验证的所有广播到网络的交易(已签名和未签名的)。

有效性

交易池检查交易有效性。请注意,交易的有效性不是硬连接到交易池中,而是由 runtime 定义的。有效性检查的示例是:

交易池还定期检查池中现有交易的有效性。如果发现无效或过期的非永久交易,则将从池中删除该交易。

排序

如果交易有效,则交易队列将交易分为两类:

注意:可以设计自定义 runtime 来删除严格的交易排序要求。这将允许整个节点在交易传播和区块包含方面实施不同的策略。

交易依赖

ValidTransaction 结构定义了 require 并提供了用于构建交易依赖关系图的参数。该依赖关系图与  priority (下面会讨论到)一起,能让交易池产生有效的交易线性排列。

对于使用 FRAME 构建的 runtime,节点使用基于帐户的系统对交易进行排序。每个已签名的交易都需要包含一个随机数,每进行一次新交易,该随机数将增加 1。例如,来自新帐户的第一笔交易的 nonce = 0 ,第二笔交易的 nonce = 1

至少,如果nonce> 1,则FRAME交易具有提供标签的encode(发送者++随机数)和需要require编码的标签(发送者++(nonce -1)),如果nonce = 0,则交易不需要任何内容。

至少,FRAME 交易具有一个 encode(sender ++ nonce) 的 provides 标签,和一个 encode(sender ++ (nonce -1)) if nonce > 1 的 requires 标签。如果  nonce=0 则交易不需要任何内容。结果是,来自单个发件人的所有交易将形成其被包括的顺序。

Substrate 支持多个 provides 和 requires 标签,因此自定义 runtime 可以创建备用依赖项(排序)方案。

交易优先级

ValidTransaction 结构中的交易 priority (优先级)确定就绪队列中交易的顺序。如果节点是下一个区块生成者,则它将在下一个区块中按从高到低的优先级对交易进行排序,直到达到该区块的重量(weight)或长度限制为止。

priority 定义在一个交易解锁多个相关交易的情况下关系图的线性顺序。例如,如果我们有两个(或多个)满足其依赖关系的交易,那么我们将使用优先级为它们选择顺序。

对于使用 FRAME 构建的 runtime,priority 定义为交易要支付的费用。例如:

请注意,交易池不知道费用、帐户或签名 —— 它仅处理交易的 priorityrequires、和 provides 参数的抽象概念,要求并提供参数。所有其他详细信息由 runtime 通过 validate_transaction 函数定义。

交易的生命周期

交易可以遵循两种路径:

由我们的节点生产的区块

请注意,在编写块时,不会从就绪队列中删除交易,而仅在导入区块时才将其删除。这是由于可能新近编写的区块可能无法进入规范链。

从网络中接收到的区块

区块被执行后,整个区块要么成功要么失败。

交易有效性

validate_transaction 是从 runtime 中调用的 ,它检查有效签名和随机数(或 UTXO 链的输出)并返回 Resultvalidate_transaction 孤立地检查交易,因此它不会捕获错误,例如同一输出被使用了两次。

尽管有可能,但 validate_transaction 不会检查对 pallet 的调用是否会成功。它是潜在的 DoS 向量,因为网络中的所有交易都将传递到 validate_transaction 中。

validate_transaction 函数应专注于为池提供必要的信息,以对交易进行排序和排优先级,并迅速拒绝所有无效或过时的交易。该函数将被频繁调用,对于同一交易可能多次调用。validate_transaction 也有可能使依赖交易失败,如果该交易以正确的顺序执行时将通过 execute_block 的话。

了解更多




本文地址:http://bilianwu.com/67711.html
版权声明:项目均采集于互联网, 戴诗东 无法审核全面,且希望大家能赚钱,请谨慎切勿上当受骗!
温馨提示:★★★天上真会掉馅饼!天道酬勤,都是机会!不错过每个空投糖果!真假难以辨认,尽量0撸!
重要提醒:本站内容均转自互联网,请明辨各个项目风险,不构成投资建议,如涉及资金交易,请谨慎操作与自担风险!
《新人必看》 《本站免责申明》

评论已关闭!