# Introduction

Dedot offers type-safe APIs to interact with **ink!** **& solidity contracts** on PolkaVM (pallet-revive) using unified interfaces. Primitives to work with contracts are exposed in `dedot/contract` package.

<figure><img src="https://2890540792-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FqKeV2eaKHEVsK7HH0Fbt%2Fuploads%2FU0o8D1kkgJQlpqmHrDBT%2Finkcontractapi.gif?alt=media&#x26;token=ce817317-5333-4594-8fd1-676e40666012" alt=""><figcaption><p>Interact with a PSP22 contracts using Dedot's type-safe APIs</p></figcaption></figure>

### Supported versions

{% hint style="info" %}
Current Dedot only supports ink! versions `v4` , `v5` and `v6` (experimental). We do not have plans to support older versions, but let us know your thoughts if we should reconsider this.
{% endhint %}

{% hint style="warning" %}
Support for [ink! v6](https://use.ink/docs/v6/) and [solidity contracts](https://docs.soliditylang.org/en/latest/contracts.html) are currently **experimental**. Please [let us know](https://t.me/JoinDedot) if you run into any issues or have any feedback while trying it out!
{% endhint %}

### Getting started

1. [Generate Types & APIs](https://docs.dedot.dev/ink-smart-contracts/generate-types-and-apis) for your contracts
2. [Deploy contracts](https://docs.dedot.dev/ink-smart-contracts/deploy) using `ContractDeployer` interface
3. Interact with contracts using `Contract` interface ([queries](https://docs.dedot.dev/ink-smart-contracts/queries), [submit transactions](https://docs.dedot.dev/ink-smart-contracts/transactions), ...)
4. Working with [fully-typed contract events](https://docs.dedot.dev/ink-smart-contracts/events)
5. Retrieve contract storage with [Storage API](https://docs.dedot.dev/ink-smart-contracts/storage) (only for ink! contracts using ink! ABI)
6. [Handling errors](https://docs.dedot.dev/ink-smart-contracts/handle-errors)

{% hint style="warning" %}
If you're connecting to a local [`substrate-contracts-node`](https://github.com/paritytech/substrate-contracts-node/releases) for development, you might want to connect to the network using `LegacyClient` since the latest version of `substrate-contracts-node` ([`v0.41.0`](https://github.com/paritytech/substrate-contracts-node/releases/tag/v0.41.0)) does not working fine/comply with the latest updates for [new JSON-RPC specs](https://paritytech.github.io/json-rpc-interface-spec/introduction.html) for `DedotClient` to work properly.

Following [this instruction](https://docs.dedot.dev/getting-started/connect-to-network#using-legacyclient-to-connect-via-legacy-json-rpc-apis) to connect to the network via `LegacyClient`.
{% endhint %}

{% hint style="info" %}
To deploy and interact with ink! and solidity contracts on PolkaVM (pallet-revive) in development mode, we recommend using local [ink\_node](https://github.com/use-ink/ink-node), you can download and run the binary directly or launch it easily via [POP CLI](https://learn.onpop.io/contracts/guides/deploy#local-deployment-default).
{% endhint %}
