The approve call is going through successfully. I have also just removed the allowance call and it is still coming up with the same error message so it must be the transfer from call that is failing
It would be helpful if you could share the canister ID. Based on your message, I assume the targeted canister is not a ledger (or a fork) and does not implement ICRC-21. Is that correct?
To use the signer standards, the targeted canister must implement ICRC-21. If it doesn’t, OISY may still emulate a potential consent message—but only if the canister is an ICRC ledger that exposes metadata (see this function). All other cases are rejected for security reasons.
I solved the issue. It’s really frustrating that i have to implement this seemingly useless and unnecessary dead code on to my canister as a developer working on the internet computer just so I can use Oisy wallet when no other wallet requires me to do this.
Anyway here is the code i used to solve this issue.
It is not, IMO. You’ve implemented the ICRC-21 standard, which is a prerequisite for supporting call canister requests to a third party. Which means you’ve made your canister compatible with any signer, not just OISY - i.e. standards-compliant and future-proof.
Well, this is just my personal opinion again, but, if it’s really the case, I would argue the opposite and instead ask why other wallets don’t follow the spec and have the same level of security as OISY in that regard but, I might be misunderstanding something.
Hi Jake
Please take my apologies for struggles you had. We are currently working on a documentation on the icrc-21 integration, but did so far focus on the connection between a client and the wallet, but not the implementation details for a backend canister to support icrc-21.
We will include some guidance on this in the document and also our online documentation. Your input really helps a lot, so thank you for this.
And if you have something we might help, don’t hesitate to contact us. We owe you one!
Best
Stefan
I’m with you on this, it also annoys me that the ICRC specifications are available in split accross repos and not available as a proper documentation website.
Note that I couldn’t answer your question about an example for ICRC-21 while you were looking to implement it because I was attending ETHCluj and wasn’t always online. Sorry about that.