What is an Account?
An Account is a principal/subaccount pair, better known as an ICRC1 account. Other decentralized networks (i.e. EVM, SOL) started with accounts as the primary identifier and required users to approve every transaction. For better or worse ICP started with the “delegation”, which is effectively an Account that’s been pre-approved to make calls on behalf of the user (read more about delegations).
The following guide teaches you how to use Accounts instead of Delegations so that every authenticated transaction will display a wallet prompt for explicit user approval.
Steps
1. Set ACCOUNTS authType
const App = () => {
return (
<IdentityKitProvider authType={IdentityKitAuthType.ACCOUNTS}>
<YourApp />
</IdentityKitProvider>
)
}
2. Execute calls
Follow the same steps for executing canister calls with the understanding that every authenticated call will result in an approval prompt.
Note on wallet support
Currently known support for the icrc27_accounts standard:
Signer | icrc27_accounts support |
---|---|
NFID Wallet | Yes |
Plug | Yes |
Oisy | Yes |
Internet Identity | No |
Stoic | No |