1

Whenever I call a function that has (enforce-guard some-guard) from X-wallet or Zelcore it always fails with the error Keyset failure (keys-all)

I have no issues when doing this from Chainweaver

Kitty Kad
  • 412
  • 1
  • 7

1 Answers1

2

How to fix this

This is an issue if you are also providing capabilities with your request.

To fix this, you will need to put enforce-guard within a capability too. So you will need to do something like

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

And wherever you would call enforce-guard , you will then need to do

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

Why does this happen?

Chainweaver allows you to select unrestricted signing keys, which provides a key/guard for enforce-guard to work with.

However X-Wallet and Zelcore don't provide this if capabilities present on the request (otherwise they do).

It is probably better practice to add enforce-guard into capabilities anyways and use require-capability in places where you expect the guard to pass.

Kitty Kad
  • 412
  • 1
  • 7