2

我正在尝试建立一个关于链下工人在基质中的作用的心智模型。更大的图景似乎是他们在底层节点内移动逻辑,否则由预言机完成,触发预定义的交易。我特别考虑了两个用例:

1:验证文件格式:传入的交易提出一个可以通过url或ipfs hash访问的文件,它的格式需要验证。链下工作人员获取文件,声明格式(大小、编码、内容等),如果正确,则提交另一笔交易,说明它是有效的。

2:密钥生成:假设有一个单独的服务与底层节点一起分发,它管理每个实例的密钥。节点 A 通过参与者 A、B 和 C 之间的外部服务运行密钥共享算法(如 Shamir 的秘密共享),然后在链上创建一个组(A、B、C)的交易。此交易触发该组中的所有节点运行链下工作人员,调用其本地密钥存储以验证是否拥有密钥。之后他们都可以在链上标记它。

据我正确理解,在区块执行后,每个节点都会触发链下工作人员。在前一个用例中,这将导致大量事务仅验证一个文件,并且无法保证这些事务的正确性。就文件的有效性达成共识的好方法是什么?如果没有像质押这样的经济激励措施,这也可能吗?如果代币在网络中没有价值,例如在企业环境中,这将是一个问题。对于链下工作者来说,这甚至是正确的用例吗?第二个例子应该不会遇到这样的问题,我们只需要各方验证拥有密钥。

上面的思考过程哪里出错了,为什么?

4

1 回答 1

1

据我正确理解,在区块执行后,每个节点都会触发链下工作人员。

是和不是。它有一个 CLI 标志。在撰写本文时,它说:

        --offchain-worker <ENABLED>
            Should execute offchain workers on every block.

            By default it's only enabled for nodes that are authoring new blocks. [default: WhenValidating]  [possible
            values: Always, Never, WhenValidating]

在前一个用例中,这将导致大量事务仅验证一个文件,并且无法保证这些事务的正确性。

我认为接收函数(又名。Call)有责任处理和激励这一点。例如,可能会有验证地址的奖励机会。但是,如果它已经被另一笔交易提交,你将被削减(或者即使没有,你也需要支付一些交易费用,而无需支付任何费用)。在这种情况下,您可以假设并非所有参与者都会提交交易。他们只会在有改进的机会时才会这样做,这应该通过你的潜在奖励/削减计划来描述。

对于链下工作者来说,这甚至是正确的用例吗?

我不是这里的专家,但我认为至少验证示例是一个很好的例子。这只是找到一个好的激励+反垃圾邮件削减的问题。

我对第二个例子不太熟悉,所以没有评论。

于 2020-01-02T14:28:43.950 回答