2. Deploying Smart Contract

You can use Remix Online IDE or use truffle to deploy above MyERC721Card smart contract.

2.1 Deploying smart contract using Remix Online IDE

Now MyERC721Card is live! You can mint and transfer cards which are ERC-721 compatible non-fungible tokens.

Let's mint two cards, i.e. King and Queen cards, for account 0x2645BA5Be42FfEe907ca8e9d88f6Ee6dAd8c1410 as below.

Now we have minted two cards and let's check the status of these MyERC721Card non-fungible token.

  • balanceOf shows that account 0x2645BA5Be42FfEe907ca8e9d88f6Ee6dAd8c1410 has two cards.

  • cards with parameter 1 shows that MyERC721Card with token ID 1 is a Queen of level 1.

  • ownerOf with parameter 0 shows that owner of MyERC721Card with token ID 0 is 0x2645BA5Be42FfEe907ca8e9d88f6Ee6dAd8c1410.

2.2 Deploying smart contract using truffle

You should have installed node.js in your environment. Please take a look at Installing Node.js via package manager to install node.js using package manager in various environment.

$ mkdir klaytn
$ cd klaytn
$ npm init # initialize npm at the erc20token directory
$ npm install truffle@4.1.15
$ npm install caver-js@latest # installing caver-js
$ ln -s node_modules/truffle/build/cli.bundled.js truffle
$ export PATH=`pwd`:$PATH

Now you have installed truffle and caver-js which are required to deploy smart contracts.

Let's prepare truffle and a smart contract MyERC721Card.sol.

$ mkdir myerc721
$ cd myerc721
$ truffle init

Now you will have following directory structures.

├── contracts
│   ├── Migrations.sol
├── migrations
│   └── 1_initial_migration.js
└── truffle-config.js

After write MyERC721Card.sol and locate it to contracts directory, directory structure will be as follows.

Now you will have following directory structures.

├── contracts
│   ├── Migrations.sol
│   └── MyERC721Card.sol
├── migrations
│   └── 1_initial_migration.js
└── truffle-config.js

Also, edit 1_initial_migration.js as shown below to deploy the MyERC721Card contract.

const Migrations = artifacts.require("./Migrations.sol");
const MyERC721Card = artifacts.require("./MyERC721Card.sol");
module.exports = function(deployer) {

You also have to configure truffle-config.js to deploy the smart contract to Klaytn network. This is the same step described at Deploying a Smart Contract using Truffle

// truffle-config.js
module.exports = {
    networks: {
        baobab: {
            host: '',
            port: 8551,
            from: '0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd', // enter your account address
            network_id: '1001', // Baobab network id
            gas: 20000000, // transaction gas limit
            gasPrice: 250000000000, // gasPrice of Baobab is 250 ston
    compilers: {
      solc: {
        version: "0.5.12"    // Specify compiler's version to 0.5.12

Now you are all ready, let's deploy MyERC721Card.sol using the following command.

$ truffle deploy --network baobab --reset
Compiling ./contracts/MyERC721Card.sol...
Writing artifacts to ./build/contracts

Using network 'baobab'.

Running migration: 1_initial_migration.js
  Replacing Migrations...
  ... 0x5a947f076f4570dff8ff18b1ae3557e27dd69c92ce38a3c97fad8f5355914066
  Migrations: 0x0d737e9865e5fc4c1ff53744fd2c13c52a44b9bc
  Deploying MyERC721Card...
  ... 0x1571e80552dab1d67260e8914e06d9b16ccae16fb698c750f6a09aab12517bc1
  MyERC721Card: 0xc3d282926871c505f334d0f2c85ad52758347831
Saving successful migration to network...
  ... 0x5b984b3f79c425d80470a96d5badb857fc05e7f31d94423044ae3119c639aa77
Saving artifacts...

The console output shows that the transaction hash for deploying MyERC721Card is 0x1571e80552dab1d67260e8914e06d9b16ccae16fb698c750f6a09aab12517bc1 and the address of MyERC721Card is 0xc3d282926871c505f334d0f2c85ad52758347831.

Last updated