Skip to main content

Transactions and signing

Use the EVM provider for transactions, personal messages, and typed data.

Send a transaction

Pali EVM transaction review screen
Transaction requests are reviewed in Pali before signing and broadcast.
const [from] = await window.ethereum.request({
method: 'eth_requestAccounts',
});

const hash = await window.ethereum.request({
method: 'eth_sendTransaction',
params: [
{
from,
to: '0x0000000000000000000000000000000000000000',
value: '0x0',
data: '0x',
},
],
});

Personal sign

const signature = await window.ethereum.request({
method: 'personal_sign',
params: ['0x48656c6c6f2050616c69', from],
});

Typed data sign

Pali typed data signing review screen
Pali validates and displays typed data before user approval.
const signature = await window.ethereum.request({
method: 'eth_signTypedData_v4',
params: [from, JSON.stringify(typedData)],
});

Pali validates typed data structure before showing the signing popup. Dapps should use canonical EIP-712 JSON and avoid relying on wallet-specific parsing quirks.

Smart accounts and signing

Pali smart accounts approve transactions and signing flows through the active validator module. The user still approves in Pali. If the validator is passkey-based, the browser or operating system also shows a WebAuthn prompt.

For normal transactions and wallet_sendCalls, Pali prepares the smart-account execution, obtains validator authorization over the action hash, checks execution targets against the wallet blacklist, and submits the smart-account transaction.

For passkey-specific eth_signTypedData_v4 requests, Pali can return an ABI-encoded WebAuthn proof for the requested action hash instead of an ECDSA EOA signature. Dapps should use explicit passkey typed-data fields such as actionHash and a passkey-specific primary type, then submit or fund the resulting on-chain transaction themselves.