币圈活动网:搜集全网最新优质可信的区块链空投币、糖果、代币、数字资产的实时空投信息,为区块链朋友提供优质、专业和安全的空投线报,分享代币空投,TOKEN空投,空投糖果,优质空投,数字货币糖果,虚拟货币空投,区块链空投,数字资产空投资讯,是一个值得收藏的空投糖果网站!Ctrl+D收藏本站。

外部信息(extrinsic)是一条来自链外并包括在一个区块中的信息。外部信息可分为三类:inherents、已签名买卖和未签名买卖。

注意事情(events[1])不是外部信息。链针对链自身固有的信息片段发出事情。例如,Staking 奖励是事情,而不是外部行为,因为奖励是由链逻辑固有的景象触发的。
区块结构
Substrate 中的一个区块由区块头和一组外部信息数组构成。区块头包括区块高度、父哈希、外部信息根、状态根和摘要。本节仅重视外部信息根(extrinsics root)。
在 runtime 中定义每个外部信息时,将其作为一个系列绑缚在一起,作为一个系列履行。外部信息根是该系列的密码学摘要。这有两个意图。首要,它能够避免在区块头已构成并分发后,对外部信息系列进行任何更改。其次,它提供了一种方法,允许轻客户端仅经过了解区块头,就能够简洁地验证任何给定的外部元素的确存在于一个块中。
区块参考资料[2]
Inherents
Inherents 是未签名的信息,仅由出块者刺进到区块中。它们不会被分布在网络上,也不存储在买卖行列中。从技术上讲,没有什么会去阻挠一条 Substrate 链分布 inherents,但也不会有根据费用的防废物机制。
Inherents 表示以一种数据,它以比较特别的方法描绘许多有效信息之一。它们之所以被认为是 “实在的”,只是是因为足够多的验证人都同意它们是合理的。
例如,出块者可能会将时刻戳 inherent 刺进区块中。没有办法证明签名是实在的,证明时刻戳是正确的。但验证人根据其他验证人认为时刻戳的合理程度,来承受或回绝该区块,依据可能是该时刻戳在其自己的体系时钟的某个可承受范围内。
Inherents Reference[3]
已签名买卖
已签名买卖(Singed Transactions)包括发出买卖的帐户的签名,并且需求付费才能将买卖包括在链中。因为能够在履行之前识别出在链上包括已签名买卖的价值,所以能够在网络上废物买卖危险较低的节点之间的分布这些买卖。
签名买卖契合以太坊或比特币买卖的概念。
未签名买卖
在某些情况下,需求进行未签名买卖 (Unsigned Transactions)。小心运用未签名的业务,因为它们的验证逻辑可能很难。
因为买卖未签名,因而无需付出任何费用。因而,买卖行列缺少避免废物买卖的经济逻辑。未签名的买卖也缺少随机数,使得重放保护(Replay protection)变得困难。少量买卖需求运用未签名的变体,可是它们将需求某种方式的废物买卖防护,防护根据 Singed Extension[4] 的自定义完成,能够存在于未签名买卖中。
Substrate 中未签名买卖的一个示例是权威机构发送的 “I'm Online[5]”心跳买卖。买卖包括来自 Session 密钥的签名,该密钥不操控资金,因而无法付出费用。买卖池经过检查 session 中是否已提谈心跳来操控废物买卖。
签名扩展
SignedExtension 是一种特征(trait),经过它能够运用其他数据或逻辑来扩展买卖。签名扩展名可用于您需求在履行之前获得有关买卖的一些信息的任何地方。这在业务行列中很多运用。
Runtime 能够运用其间一些数据(例如即将分配的 Call)来计算买卖费用。签名扩展还包括 AdditionalSigned 类型,该类型能够保存任何可编码数据,因而允许您在包括或分配买卖之前履行任何自定义逻辑。买卖行列定期从 SignedExtension 调用函数以在构建区块之前验证买卖,以避免包括将在区块中失利的买卖。
尽管名字叫签名扩展,SignedExtension 其实也能够用于验证未签名买卖。能够完成 * _unsigned 方法集来封装买卖池所需的验证、废物邮件和重放保护逻辑。
Signed Extension Reference[6]
参考资料
[1] events: https://substrate.dev/docs/en/knowledgebase/runtime/events
[2] 区块参考资料: https://substrate.dev/rustdocs/v2.0.0-rc4/sp_runtime/traits/trait.Block.html
[3] Inherents Reference: https://substrate.dev/rustdocs/v2.0.0-rc4/sp_inherents/index.html
[4] Singed Extension: https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics#signed-extension
[5] I'm Online: https://substrate.dev/docs/en/knowledgebase/runtime/frame#im-online
[6] Signed Extension Reference: https://substrate.dev/rustdocs/v2.0.0-rc4/sp_runtime/traits/trait.SignedExtension.html
[7] 参考文档: https://substrate.dev/rustdocs/v2.0.0-rc4/sp_runtime/traits/trait.Extrinsic.html
[8] Runtime Execution: https://substrate.dev/docs/en/knowledgebase/runtime/execution
[9] 买卖费用: https://substrate.dev/docs/en/knowledgebase/runtime/fees
[10] 买卖池: https://substrate.dev/docs/en/knowledgebase/learn-substrate/tx-pool
原文:https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics
翻译:PolkaWorld
欢迎学习 Substrate:
https://substrate.dev/
重视 Substrate 发展:
https://github.com/paritytech/substrate
重视 Polkadot 发展:
https://github.com/paritytech/polkadot

视野开拓

需要是一种基本的生物动机;欲望是社会教给我们的可用以满足需要的一种方式。例如,口渴是生物意义上的,而我们被教会想用可口可乐而不是(比如说)羊奶来满足解渴的需要。因此,需要是本来已经存在的,营销者只是推荐满足它的方法。营销的一个基本目标就是引起人们认识到需要的存在,而不是创造需要。-《消费者行为学》

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注