enforce-guard 在 Zelcore 和 XWallet 中失败

enforce-guard fails in Zelcore and XWallet

每当我从 X-wallet 或 Zelcore 调用具有 (enforce-guard some-guard) 的函数时,它总是失败并显示错误 Keyset failure (keys-all)

我在 Chainweaver 中执行此操作没有任何问题

如何解决这个问题

如果您还根据请求提供功能,这就是一个问题。

要解决此问题,您还需要将 enforce-guard 放入功能中。 所以你需要做一些像

(defcap VERIFY_GUARD (some-guard:guard)
    (enforce-guard some-guard)
)

无论你在哪里调用 enforce-guard ,你都需要做

(with-capability (VERIFY_GAURD some-guard) 
   ; Guarded code here
)

为什么会这样?

Chainweaver 允许您 select 不受限制的签名密钥,它为 enforce-guard 提供了一个 key/guard 来使用。

但是 X-Wallet 和 Zelcore 不会在请求中提供此功能(否则会提供)。

无论如何,将 enforce-guard 添加到功能中并在您希望守卫通过的地方使用 require-capability 可能是更好的做法。