Arkena exposes a Canton-native wallet provider as window.arkena in any tab
where the extension is installed. From your dApp you can detect the provider,
request connection, sign transactions, and listen for state changes — the
shape will feel familiar if you've worked with EIP-1193, with the differences
that come from Canton's prepare-then-execute submission model.
Start here
Quickstart →
From zero to a working connect button and a signed transaction in ten minutes.
Architecture →
How the wallet, backend, and ledger fit together.
Build the integration
Connect and disconnect →
Request access, handle rejection, restore on mount.
Sign and submit transactions →
The prepare → sign → execute loop in code.
Reference
Provider methods →
Every canton_* method, parameters, return type, errors.
Error codes →
ProviderRpcError codes and the backend's HTTP error shape.
A taste
const provider = window.arkena;
if (!provider) throw new Error("Arkena wallet not detected");
const { accounts } = await provider.request({ method: "canton_connect" });
console.log("Connected as", accounts[0]);That's the entire connection flow. The next steps — reading state, signing, and listening for events — build on it.