gpt4 book ai didi

substrate - 如何创建一个没有交易费的外部?

转载 作者:行者123 更新时间:2023-12-01 21:28:15 26 4
gpt4 key购买 nike

我正在尝试创建一个函数或一个外部函数,它没有针对来源的交易费用,而是完全免费的。我以为 maby 权重为 0 它会被解决,但它仍然需要代币,

#[weight = 0]

然后我尝试用一​​个rpc调用来调整状态,它做了一些计算但没有修改状态我如何创建一个没有任何交易费用的免费功能/外部功能? rpc调用是否可以调整状态?

最佳答案

使用 Substrate 这实际上非常容易。

您只需将 Pays::No 传递给函数的权重即可。

像这样:

#[weight = (100_000, DispatchClass::Normal, Pays::No)]

这里的元组描述:

  1. 函数的权重。您应该在此处放置一个真实值来表示此函数对于您的区 block 链计算的复杂程度。
  2. 此函数的DispatchClass。默认选择是 Normal
  3. Pays 选项决定调用者是否支付费用。

请注意,如果您创建了一个用户无需支付任何费用的外部函数,您的区 block 链将立即容易受到 DDOS 攻击,因为任何用户都可以免费向此函数发送垃圾邮件。

您将需要在您的区 block 链上构建其他验证层,以确保只有对该函数的有效调用才会传播到其他节点。

看这里: https://github.com/paritytech/polkadot/blob/master/runtime/common/src/claims.rs#L386

在这种情况下,我们有一些声明,在将调用传递给其他节点之前,我们验证这些声明是由进行调用的用户正确签名的:

https://github.com/paritytech/polkadot/blob/master/runtime/common/src/claims.rs#L592

因此,如果您希望您的区 block 链安全且具有这样的免费功能,您也必须这样做。

关于substrate - 如何创建一个没有交易费的外部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62780202/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com