Test bridge

Initialize token contracts

  • Create NFTs on Kylin

For Kylin we'll setup the collection and schema then mint an asset to the test contract. If you have a pre existing NFT, you can send it to the Kylin test account.

export AUTHOR=$KYLIN_TEST_ACCOUNT
export COLLECTION_NAME=nftauthcoll2 # create a different one because this one's taken
export ALLOW_NOTIFY=1
export AUTHORIZED_ACCOUNTS=[$KYLIN_TEST_ACCOUNT] # add additional accounts if necessary
export NOTIFY_ACCOUNTS=[""]
export MARKET_FEE=0.01 # cause we're fair people
export DATA=[]
export SCHEMA_NAME=nftauthschem
export SCHEMA_FORMAT=[ {name: "name", type: "string"}, {name: "series", type: "string"}, {name: "moment", type: "string"}, {name: "description", type: "string"}, {name: "img", type: "image"}, {name: "backimg", type: "string"}, {name: "rarity", type: "string"} ]
# not working, if you know how to make it (passing array as variable) work, please edit!!
# cleos -u $KYLIN_ENDPOINT push action $KYLIN_TOKEN_ACCOUNT createcol "[\"$AUTHOR\",\"$COLLECTION_NAME\",\"$ALLOW_NOTIFY\",\"$AUTHORIZED_ACCOUNTS\",\"$NOTIFY_ACCOUNTS\",\"$MARKET_FEE\",\"$DATA\"]" -p $KYLIN_TEST_ACCOUNT@active

# create collection
cleos -u $KYLIN_ENDPOINT push transaction '{
  "delay_sec": 0,
  "max_cpu_usage_ms": 0,
  "actions": [
    {
      "account": "bridgeassets",
      "name": "createcol",
      "data": {
        "author": "natdeveloper",
        "collection_name": "nftauthcoll2",
        "allow_notify": true,
        "authorized_accounts": [
          "natdeveloper"
        ],
        "notify_accounts": [],
        "market_fee": 0.01,
        "data": []
      },
      "authorization": [
        {
          "actor": "natdeveloper",
          "permission": "active"
        }
      ]
    }
  ]
}'

# create schema
cleos -u $KYLIN_ENDPOINT push transaction '{
  "delay_sec": 0,
  "max_cpu_usage_ms": 0,
  "actions": [
    {
      "account": "bridgeassets",
      "name": "createschema",
      "data": {
        "authorized_creator": "natdeveloper",
        "collection_name": "nftauthcoll2",
        "schema_name": "nftauthschem",
        "schema_format": [
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "series",
            "type": "string"
          },
          {
            "name": "moment",
            "type": "string"
          },
          {
            "name": "description",
            "type": "string"
          },
          {
            "name": "img",
            "type": "image"
          },
          {
            "name": "backimg",
            "type": "string"
          },
          {
            "name": "rarity",
            "type": "string"
          }
        ]
      },
      "authorization": [
        {
          "actor": "natdeveloper",
          "permission": "active"
        }
      ]
    }
  ]
}'
circle-info

If you get errors such as Transaction exceeded the current network usage limit imposed on the transaction, see the Kylin account setup guides to get more tokens and to stake for more resources.

  • Mint test tokens

We will mint some test NFT tokens to our test account.

circle-exclamation
  • Register mapping

The collection author for an NFT must register that NFT with the bridge before users can transfer.

circle-exclamation

Let's test by sending an NFT across.

Now let's see if the tokens make it! Navigate to your user account's address

https://mumbai.polygonscan.com/address/0x92fb8d9402cbd918092ce6d00be86a8bdd13559carrow-up-right

Now let's send it back!

Go to your NFT contract and scroll to #11. Set operator to atomictokenpeg contract account, and approved to 1.

Click on the contract tab, go to Write Contract, and connect using your user's account.

Then go to the atomictokenpeg contract and scroll to #4. Type in the tokenId from the transaction that was sent to your user account.

To determine the destination address we're going to use a helper function on our bridge contract.

The assertion error will relay the uint64_t for the account specified, and you said EOSIO assertion messages weren't good for anything, pish posh, we move on!

Destination EOSIO Account Name Value: 11075078730411234672

The token contract is the atomicnft token contract.

Fire. Example trxarrow-up-right

And shazam you've got the nft! https://kylin.eosq.eosnation.io/tx/4a049d9e60bfb21c17475ca1ee512a728b6e6b7061798880cb23f7b6eb4cddbfarrow-up-right

Last updated

Was this helpful?