> For the complete documentation index, see [llms.txt](https://docs.liquidapps.io/liquidapps-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.liquidapps.io/liquidapps-documentation/cross-chain-bridges/getting-started-with-liquidbridge/eosio-less-than-greater-than-evm-non-fungible-tokens/eosio-side-setup.md).

# EOSIO Side Setup

### Steps:

[Install Zeus](/liquidapps-documentation/working-with-zeus-sdk/overview/install-zeus-and-unboxing.md) if not installed, zeus is used to unbox or install all the necessary dependencies to compile and deploy the necessary contracts.

{% hint style="warning" %}
Ensure you're using node version 16, IPFS can be picky with other versions
{% endhint %}

[**Unbox**](/liquidapps-documentation/working-with-zeus-sdk/overview/install-zeus-and-unboxing.md) **`atomictokenpeg` box**

```bash
mkdir atomictokenpeg
cd atomictokenpeg
zeus box create
zeus unbox atomictokenpeg
```

Before compiling **`atomictokenpeg.cpp`** you must update the atomic assets constant [**here**](https://github.com/liquidapps-io/zeus-sdk/blob/master/boxes/groups/sample/atomictokenpeg/contracts/eos/atomictokenpeg/atomictokenpeg.cpp#L24)

```bash
const name NFT_ACCOUNT = "bridgeassets"_n;
```

**Compile contracts**

```bash
zeus compile
```

**Create 3 Kylin and 3 Mumbai Testnet accounts using these guides:**

* Kylin Testnet: [link](https://app.gitbook.com/@liquidapps/s/liquidapps-documentation/~/drafts/-Mb1Zoyox7XB-SUm-Ssl/eosio-guides/creating-cryptokylin-account)
* Mumbai Testnet: [link](/liquidapps-documentation/eosio-guides/testnet-creation-guides/create-mumbai-testnet-account-matic-polygon.md)

**Kylin Accounts:**

* Kylin token contract account (token being bridged `eosio.token.cpp`)
* Kylin bridge contract account (`atomictokenpeg.cpp`)
* Kylin test Account **no contract**

**Mumbai Testnet Accounts**

* ERC721 Contract (`atomicnft.sol`) with extensions
  * ERC721Enumerable
  * ERC721Burnable
  * ERC721Pausable
* Mumbai bridge contract Account (`atomictokenpeg.sol`)
* Mumbai test Account **no contract**

```bash
export KYLIN_BRIDGE_ACCOUNT=maticnftbrdg
export KYLIN_TOKEN_ACCOUNT=bridgeassets
export KYLIN_TEST_ACCOUNT=natdeveloper
export KYLIN_ENDPOINT=https://kylin.eosn.io
```

**Import our keys into zeus to deploy contracts to Kylin, or can use cleos as well**

{% tabs %}
{% tab title="Zeus" %}

```bash
zeus key import $KYLIN_BRIDGE_ACCOUNT --network kylin --active-private-key 5JB... --owner-private-key 5JB...
```

{% endtab %}

{% tab title="cleos" %}

```bash
# import owner private key
cleos wallet import --private-key 5JB...
# import active private key
cleos wallet import --private-key 5JB...
```

{% endtab %}
{% endtabs %}

**Create contract deployment files to migrate contracts to Kylin, located in** `./zeus_boxes/contract-migrations-extensions/models/contract-deployments/`

```bash
zeus create contract-deployment atomictokenpeg $KYLIN_BRIDGE_ACCOUNT kylin
```

**Migrate contracts to Kylin/Jungle**

{% tabs %}
{% tab title="Zeus Migrate" %}

```bash
zeus migrate atomictokenpeg --network=kylin --creator $KYLIN_BRIDGE_ACCOUNT --no-reset --no-compile-all --creator-key=""
```

{% endtab %}

{% tab title="cleos set contract" %}

```bash
# if migration fails
cd contracts/eos
cleos -u $KYLIN_ENDPOINT set contract $KYLIN_BRIDGE_ACCOUNT atomictokenpeg
cleos -u $KYLIN_ENDPOINT set contract $KYLIN_TOKEN_ACCOUNT eosio.token
```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
If you use cleos to set the contract, be sure to set the `eosio.code` permission level, see [here](/liquidapps-documentation/eosio-guides/testnet-creation-guides/creating-cryptokylin-account.md)
{% endhint %}

**Stake for services**

Now that we've prepared that part let's move onto staking DAPP for services. First stop is the faucet for some DAPP tokens [here](https://kylin-dapp-faucet.liquidapps.io/). Use the account that has the `atomictokenpeg` contract set to it.

**Stake to required services vRAM, LiquidHarmony Oracles, LiquidScheduler, LiquidLink**

Using the DSP Portal we can see these packages, stake 10 DAPP to each (**Amount to Stake**):

Below we'll select each package then stake for it.

{% tabs %}
{% tab title="vRAM" %}

```bash
export PROVIDER=uuddlrlrbass
export PACKAGE=ipfs2
export SERVICE=ipfsservice1
export QUANTITY="10.0000 DAPP"
cleos -u $KYLIN_ENDPOINT push action dappservices selectpkg "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$PACKAGE\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
cleos -u $KYLIN_ENDPOINT push action dappservices stake "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$QUANTITY\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
```

{% endtab %}

{% tab title="LiquidHarmony" %}

```bash
export PROVIDER=uuddlrlrbass
export PACKAGE=oracleservi2
export SERVICE=oracleservic
export QUANTITY="10.0000 DAPP"
cleos -u $KYLIN_ENDPOINT push action dappservices selectpkg "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$PACKAGE\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
cleos -u $KYLIN_ENDPOINT push action dappservices stake "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$QUANTITY\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
```

{% endtab %}

{% tab title="LiquidScheduler" %}

```bash
export PROVIDER=uuddlrlrbass
export PACKAGE=cronservice2
export SERVICE=cronservices
export QUANTITY="10.0000 DAPP"
cleos -u $KYLIN_ENDPOINT push action dappservices selectpkg "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$PACKAGE\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
cleos -u $KYLIN_ENDPOINT push action dappservices stake "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$QUANTITY\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
```

{% endtab %}

{% tab title="LiquidLink" %}

```bash
export PROVIDER=uuddlrlrbass
export PACKAGE=sign
export SERVICE=signfndspsvc
export QUANTITY="10.0000 DAPP"
cleos -u $KYLIN_ENDPOINT push action dappservices selectpkg "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$PACKAGE\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
cleos -u $KYLIN_ENDPOINT push action dappservices stake "[\"$KYLIN_BRIDGE_ACCOUNT\",\"$PROVIDER\",\"$SERVICE\",\"$QUANTITY\"]" -p $KYLIN_BRIDGE_ACCOUNT@active
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Use the **command line** login option, *top right*, this will auto-create the cleos commands for you!
{% endhint %}

Now let's head over to the EVM side.
