Skip to main content

EVM and UTXO modes

Pali supports account-based EVM networks and UTXO-based networks. The extension uses separate provider surfaces because the account models are fundamentally different.

EVM mode

EVM mode is for dapps that use window.ethereum. It supports MetaMask-style account requests, transactions, signatures, permissions, token watch requests, and network management.

Examples:

  • Rollux and Syscoin NEVM dapps
  • ERC-20, ERC-721, and ERC-1155 interactions
  • EIP-712 typed data signing
  • smart-account creation and execution

UTXO mode

UTXO mode is for dapps that use window.pali. It supports Syscoin UTXO account state, xpub-aware integrations, PSBT signing, transaction broadcast, and SPT asset flows.

Examples:

  • Syscoin UTXO asset applications
  • Bitcoin-like PSBT workflows
  • dapps that need a change address
  • dapps that read UTXO transaction history

Switching modes

If a dapp requests a method for the wrong chain family, Pali may require a network switch. Dapps should handle these errors cleanly and guide users to the right network.

await window.ethereum.request({
method: 'eth_changeUTXOEVM',
params: [{ chainId: 57 }],
});

await window.pali.request({
method: 'sys_changeUTXOEVM',
params: [{ chainId: 57 }],
});

Switching between UTXO and EVM contexts can require reconnecting the dapp because the active account family changes.