声明:本文旨在传递更多市场信息,不构成任何投资建议。文章仅代表作者观点,不代表火星财经官方立场。
边肖:记得要集中注意力。
来源:波尔卡世界
原标题:什么是外部信息|圆点维基
这篇文章是Polkadot Wiki的[理解基质-外在]部分。PolkaWorld正在逐步翻译Polkadot Wiki,并在PolkaWorld微信官方账号上连载。
外部信息是来自链外的信息,包含在块中。外部信息可以分为三类:固有信息、已签名的交易信息和未签名的交易信息。
请注意,事件(事件[1])不是外部信息。为链本身固有的信息片段发出事件。比如,赌注奖励是事件,而不是外在行为,因为奖励是由链式逻辑的内在情境触发的。
块基底中的块由块标题和一组外部信息阵列组成。头部包含块高度、父散列、外部信息根、状态根和摘要。本节只关注外部信息根。
当在运行时中定义每个外部信息时,它被捆绑在一起作为一个系列,并作为一个系列执行。外部信息根是这个系列的密码摘要。有两个目的。首先,它可以防止在块标题形成和分发之后对外部信息序列的任何改变。第二,它提供了一种方法,允许轻量级客户端通过知道块头来简明地验证任何给定的外部元素是否确实存在于块中。
块引用[2]
InherentsInherents是未签名的信息,它仅由块制造者插入到块中。它们不会分布在网络上,也不会存储在事务队列中。从技术上讲,没有什么可以阻止底物链传播其固有特性,但也不会有基于成本的反垃圾邮件机制。
固有信息是指一种数据,它以一种特殊的方式描述了许多有效信息中的一个。它们被认为是“真实的”,只是因为有足够多的验证者同意它们是合理的。
例如,块制造者可以将固有的时间戳插入到块中。没有办法证明签名是真实的,时间戳是正确的。然而,验证者根据其他验证者考虑的时间戳的合理性来接受或拒绝该块,可能是基于时间戳在其自己的系统时钟的可接受范围内。
固有参考文献[3]
已签名的交易已签名的交易包含发布交易的帐户的签名,您需要支付才能将交易包含在链中。因为在链上包含已签名事务的价值可以在执行之前被认识到,所以这些事务可以在网络上垃圾事务风险较低的节点之间传播。
签名符合以太坊或比特币交易的概念。
未签名的事务在某些情况下,需要未签名的事务。对未签名的事务要小心,因为它们的验证逻辑可能很难。
由于交易是无签名的,所以不需要支付任何费用。因此,交易队列缺乏防止垃圾交易的经济逻辑。未签名的事务也缺少随机数,使得重放保护变得困难。少数事务需要使用未签名的变体,但它们需要某种形式的垃圾邮件保护,这是基于单签名扩展的自定义实现[4],可以存在于未签名的事务中。
Substrate中未签名事务的一个例子是由权威机构发送的“我在线[5]”心跳事务。交易包括来自会话密钥的签名,会话密钥不控制资金,因此不能支付费用。事务池通过检查heartbeat是否已在会话中提交来控制垃圾事务。
SignedExtension是一种特征,通过它可以使用其他数据或逻辑来扩展事务。签名扩展可以用在任何需要在执行之前获取一些事务信息的地方。这在事务队列中被广泛使用。
运行时间可以使用其中一些数据(例如将要分派的打电话)来计算交易费用。签名扩展还包括附加签名类型,该类型可以保存任何可编码数据,因此允许您在包含或分派交易之前执行任何自定义逻辑。交易队列定期从带符号的拉伸调用函数以在构建区块之前验证交易,以避免包括将在区块中失败的交易。
虽然名字叫签名扩展,带符号的拉伸其实也可以用于验证未签名交易。可以实现* _未签名方法集来封装交易池所需的验证、垃圾邮件和重放保护逻辑。
带符号的扩展引用[6]
阅读更多参考文档[7]
运行时执行[8]
交易费用[9]
交易池[10]参考资料
[1]
事件:https://基板。dev/docs/en/知识库/运行时/事件[2]
区块参考资料:https://基板。dev/rustdocs/v 2。0 .0-RC4/sp _ runtime/traits/trait .Block.html[3]
固有的参考:https://基板。dev/rustdocs/v 2。0 .0-RC4/sp _ inherits/index。html[4]
单一扩展名:https://基板。dev/docs/en/knowledge base/learn-substrate/external # signed-Extension[5]
我在线:https://基板。dev/docs/en/knowledge base/runtime/frame # im-Online[6]
有符号扩展引用:https://基板。dev/rustdocs/v 2。0 .0-RC4/sp _ runtime/traits/trait .SignedExtension.html[7]
参考文档:https://基板。dev/rustdocs/v 2。0 .0-RC4/sp _ runtime/traits/trait .Extrinsic.html[8]
运行时执行:https://基板。开发/文档/环境/知识库/运行时/执行[9]
交易费用:https://基板。开发/文档/环境/知识库/运行时间/费用[10]
交易池:https://基板。dev/docs/en/知识库/learn-substrate/tx-pool
原文:https://基板。dev/docs/en/知识库/learn-substrate/external
翻译:波尔卡世界