Links
Comment on page

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

ERC721-1-deploy
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.
ERC721-2-mint-king
ERC721-3-mint-queen
Now we have minted two cards and let's check the status of these MyERC721Card non-fungible token.
ERC721-4-cards-status
  • 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 [email protected]
$ 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) {
deployer.deploy(Migrations);
deployer.deploy(MyERC721Card)
};
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: '127.0.0.1',
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.