# ZeroDev Presets (/sdk/v5_3_x/presets/zerodev)

> For the complete documentation index, see [llms.txt](/llms.txt)



<VersionWarning version="5.3.x" />

## ECDSA Validator [#ecdsa-validator]

To set up a Kernel account using ECDSA for validation (mimicking EOAs):

```typescript
import { createEcdsaKernelAccountClient } from "@zerodev/presets/zerodev"
import { polygonMumbai } from "viem/chains"

const kernelClient = await createEcdsaKernelAccountClient({
    // required
    chain: polygonMumbai,
    projectId: ZERODEV_PROJECT_ID,
    signer: SIGNER,

    // optional
    provider: "PIMLICO", // defaults to a recommended provider
    index: BigInt(1), // defaults to 0
    paymaster: 'SPONSOR', // defaults to SPONSOR
})
```

* `chain` is a [Viem chain object](https://viem.sh/docs/clients/chains.html)
* `projectId` is a ZeroDev project ID from the [ZeroDev dashboard](https://dashboard.zerodev.app/).
* `signer` is a [Viem account](https://viem.sh/docs/accounts/local.html).
* (optional) `provider` can be [any provider that ZeroDev supports](/api-and-toolings/infrastructure/intro).
* (optional) `index` can be any positive integer.  Different indexes will yield different accounts.
* (optional) `paymaster` can be:
  * `'NONE'`: not using any paymaster (the user pays their own gas).
  * `'SPONSOR'` (default): sponsor gas for users according to [gas policies](/api-and-toolings/infrastructure/gas-policies).
  * A ERC20 token address: use the specified ERC20 token as gas tokens.  See the [ERC20 gas token docs](/sdk/v5_3_x/core-api/pay-gas-with-erc20s) for details.

is a boolean flag that determines whether ZeroDev will use [the sponsoring paymaster](/api-and-toolings/infrastructure/intro).
