# 3️⃣ Creating your Kinto App

## What is a Kinto App?

Kinto Apps are [<mark style="color:purple;">ERC-721</mark>](https://explorer.kinto.xyz/token/0x5A2b641b84b0230C8e75F55d5afd27f4Dbd59d5b)s NFTs that contain all the metadata related to a Kinto application and its usage by developers. These NFTs are owned by [<mark style="color:purple;">Kinto Wallets</mark>](https://docs.kinto.xyz/kinto-the-modular-exchange/building-on-kinto/rollup-features/kintowallet) and can be transferred or burned if needed.

Namely a Kinto App will have:

* Name of the application\*
* Address of the main/parent contract\*
* An array of other contracts
* An array of app limits (see the[ <mark style="color:purple;">KintoAppRegistry</mark>](https://docs.kinto.xyz/kinto-the-modular-exchange/smart-contract-reference/kintoappregistry#app-limits) API for details)\*
* A set of development EOAs that can access you contracts without the need of encapsulating [<mark style="color:purple;">account abstraction</mark>](https://docs.kinto.xyz/kinto-the-modular-exchange/building-on-kinto/rollup-features/kinto-account-abstraction) UserOps through the [<mark style="color:purple;">EntryPoint</mark>](https://docs.kinto.xyz/kinto-the-modular-exchange/building-on-kinto/smart-contract-reference/kinto-entrypoint)<mark style="color:purple;">.</mark>

{% hint style="warning" %}
\*marks required fields
{% endhint %}

## 1. Deploy your first contract

Deploy your first contract:

Make sure that your $PRIVATE\_KEY is set up and is the key for the deployer EOA you set up in the previous step.

```sh
source .env && forge create src/sample/Counter.sol:Counter --rpc-url $KINTO_RPC_URL --private-key $PRIVATE_KEY 
```

<figure><img src="https://3204478300-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkwGpOqIolO3lPoyd0ZL8%2Fuploads%2FLjliNL2bfBAPYOYTxAmu%2FScreenshot%202024-07-25%20at%203.42.54%E2%80%AFPM.png?alt=media&#x26;token=f108a7a8-0397-4d22-b6de-1b8a2fb31169" alt=""><figcaption></figcaption></figure>

## 2. Create your first app

At this stage your contract is not yet accessible by your EOA or other Kinto Wallets, for that last step you need to create an application in the developer portal. Go back to our site and click on 'Dev Portal' and then on "Create a new APP":

<figure><img src="https://3204478300-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkwGpOqIolO3lPoyd0ZL8%2Fuploads%2FunOiIrPE0z2ZO0LHkEdG%2FScreenshot%202024-07-25%20at%203.36.23%E2%80%AFPM.png?alt=media&#x26;token=b62a1775-9cac-4199-8707-914e8d8baf54" alt=""><figcaption></figcaption></figure>

Fill up the form and add you Counter as the main contract address. Add your deployer EOA to the list of EOAs and for now you can leave the default 'App sponsorship limits' (we will cover those on another guide but you can see the details in the [<mark style="color:purple;">SponsorPaymaster API</mark>](https://docs.kinto.xyz/kinto-the-modular-exchange/building-on-kinto/smart-contract-reference/sponsorpaymaster)).

<figure><img src="https://3204478300-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkwGpOqIolO3lPoyd0ZL8%2Fuploads%2F2fFsHN2CqwJy5cQsaImh%2FScreenshot%202024-07-25%20at%203.44.08%E2%80%AFPM.png?alt=media&#x26;token=bd9bca1a-aeca-415d-91dc-ed422b882bed" alt=""><figcaption></figcaption></figure>

Once you are ready click on 'Create APP'. Congratulations, you have created your first Kinto App!

## 3. Top up EOAs or SponsorPaymaster

From this screen you will be able to top up EOA or add balance to the sponsor paymaster:

<figure><img src="https://3204478300-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkwGpOqIolO3lPoyd0ZL8%2Fuploads%2FP1xWNEeFGscg2gHBiqkt%2FScreenshot%202024-07-25%20at%204.20.11%E2%80%AFPM.png?alt=media&#x26;token=91e32728-00bb-4eac-9c58-f98be66d316b" alt=""><figcaption></figcaption></figure>

Click on Fund EOAs or Top Paymaster, chose the amount and sign the transaction as you did before.

<figure><img src="https://3204478300-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkwGpOqIolO3lPoyd0ZL8%2Fuploads%2FPuVEE5HI59rDsSJTsZaP%2FScreenshot%202024-07-25%20at%203.48.40%E2%80%AFPM.png?alt=media&#x26;token=c1f70363-d827-4517-8e8e-c757d8d9e33c" alt=""><figcaption></figcaption></figure>

## 4. Test your EOA access to your contract

```sh
cast send --private-key $KINTO_DEV_KEY 0xYOUR_COUNTER_ADDRESS "increment()" --legacy --rpc-url $KINTO_RPC_URL
```

<figure><img src="https://3204478300-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkwGpOqIolO3lPoyd0ZL8%2Fuploads%2FNowgqPqhLD5l0GJCbVu1%2FScreenshot%202024-07-25%20at%203.54.11%E2%80%AFPM.png?alt=media&#x26;token=48e89080-715b-4317-b109-b20e1775fc8a" alt=""><figcaption></figcaption></figure>

Remember that this access is intended for managing your smart contracts only. Users of the Kinto chain will need to interact with your smart contracts through UserOps, Let's learn how on our next guide [<mark style="color:purple;">creating and sending UserOps</mark>](https://docs.kinto.xyz/kinto-the-modular-exchange/building-on-kinto/interacting-with-your-kinto-app/interacting-with-contracts) through Kinto's EntryPoint.
