As far as I understand from documentation all the Token-2022 extensions should be backwards compatible with normal transfers from spl-token standard. However when testing Transfer Hooks I was only able to create the token untransferable by common wallets (I tried Phantom, Solflare, Backpack) but the token was transferable by CLI.
When trying to transfer with wallet I get the error message Error processing Instruction 0: custom program error: 0x7dc8348c
which translates to Incorrect account provided
error. This does not happen if I create ATA account prior to transfer and initiate transfer with CLI.
My guess is that CLI transfer uses TransferChecked
function and fetches / appends ExtraAccoountMetaList
accounts automatically while wallets do not have this functionality, failing to append meta accounts resulting in wrong payload.
In my case I did not even need meta accounts at all but it looks like transaction needs at least some data to succeed, even if they are blank data.
I tried to ditch all the meta-related code from example program I deployed but had no luck with bypassing this functionality. Maybe I am just missing something?