脱链工作者是否可以使用sure_root向外部提交呼叫?

问题描述

是否可以装饰外部对象,以便只有脱链工作者才能执行它?

解决方法

不。根调用只能在运行时内部进行。请记住,离线工作者不是运行时的“特殊”角色。实际上,运行时根本不了解脱链工作者的存在。

您应该将脱链工作者视为运行时附带的某些外部程序。但是此代码无需达成共识,因此,应像对待任何外部调用一样考虑来自脱链工作人员的调用。

如果有人愿意,他们可以编写自己的软件,假装自己是脱链工作者,并且运行时不会有所不同。

,

我认为您的标题和描述是两个不同的问题。值得注意的是,一种是另一种的更一般的形式。

离链工作者是否可以使用sure_root向外部发送呼叫?

如前一条评论中所述,不,但是如果您的运行时中有一个sudo模块,则可以假设这样做。 sudo模块实质上允许特定的密钥充当根。您的链下工作人员将需要一种方法来了解sudo密钥的私钥,并且这不是我们有任何配方的东西,但有可能。

是否可以装饰外部对象,以便只有脱链工作者才能执行它?

不是直接的,但是可以再次模拟它。请注意,您的脱链工作者实际上与在链外运行的二进制文件相同,因此它可以例如从本地计算机上的秘密密钥存储中读取密钥。同样,一个可行的解决方法是保护您的交易,使其仅接受来自特定密钥的交易。然后提供该私钥以用于签署脱链工作者。

这与我上面所说的有关sudo键的通用形式相似。


但是总而言之,如果您希望使用ensure_offchain(origin),那是不可能的。我上面所说的都是假设的,正如我所说,要做的事情有些古怪。因此,在尝试执行任何一项操作之前,请考虑重新评估为什么您需要此功能。