| title | Quickstart |
|---|---|
| description | Install the dApp SDK and build a working wallet connection in a few minutes. |
This is the shortest working integration: install the SDK, initialize it, let the user connect a wallet, read their party, and submit a transaction. It uses only the high-level SDK. You do not need the Provider API to build a dApp.
npm install @canton-network/dapp-sdkyarn add @canton-network/dapp-sdkpnpm add @canton-network/dapp-sdkCall init() once, early in your app's lifecycle. This registers the default wallet
adapters and silently restores a previous session without opening the wallet picker.
import * as sdk from '@canton-network/dapp-sdk'
await sdk.init()Call connect() in response to a user action (for example, a "Connect wallet" button).
This opens the wallet picker and runs the authentication flow.
async function onConnectClick() {
const result = await sdk.connect()
console.log('Connected:', result.isConnected)
}Once connected, read the account the user marked as primary.
const account = await sdk.getPrimaryAccount()
console.log('Primary party:', account.partyId)Use prepareExecute() to submit Daml commands. The SDK prepares the transaction, asks
the user to approve and sign it in their wallet, and submits it to the ledger.
const account = await sdk.getPrimaryAccount()
await sdk.prepareExecute({
commands: [
{
CreateCommand: {
templateId: '#AdminWorkflows:Canton.Internal.Ping:Ping',
createArguments: {
id: `ping-${Date.now()}`,
initiator: account.partyId,
responder: account.partyId,
},
},
},
],
})Note
This example uses the built-in Ping template to prove the round-trip works. For a real
dApp, submit commands from your own Daml package. See
Parties & transactions for details.
Let the user end their session.
async function onDisconnectClick() {
await sdk.disconnect()
}- Connect & Sessions — Connect, restore sessions, check status, and disconnect.
- Parties & Transactions — Work with parties, sign messages, execute transactions, and query the ledger.
- Wallet Discovery — Customize the wallet picker and add WalletConnect or custom remote wallets.