2. Triển khai hợp đồng thông minh

Bạn có thể sử dụng Remix Online IDE hoặc Truffle để triển khai hợp đồng thông minh MyERC20.

2.1 Triển khai hợp đồng thông minh bằng Remix Online IDE

Sau khi triển khai, bạn có thể gọi hàm balanceOf với tài khoản của bạn đã được dùng để triển khai hợp đồng. Bạn sẽ thấy có 10000000000000 token có sẵn trong tài khoản của bạn như dưới đây. Vì bạn đã đặt decimal8 khi triển khai hợp đồng ở trên, nó đã tạo ra một số cố định là 100000 token trong hàm khởi tạo, với mỗi token có giá trị thập phân là 10^8. Phương thức totalSupply sẽ trả về tổng cung của các token đã tạo, cũng bằng 10000000000000.

MyERC20 hiện đang hoạt động !

2.2 Triển khai hợp đồng thông minh bằng truffle

Bạn nên cài đặt xong node.js trong môi trường của mình. Hãy xem Hướng dẫn cài đặt Node.js qua trình quản lý gói để cài đặt node.js bằng trình quản lý gói trong các môi trường khác nhau.

$ 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

Giờ đây, bạn đã cài đặt truffle và caver-js, hai công cụ cần thiết để triển khai hợp đồng thông minh.

Hãy chuẩn bị truffle và một hợp đồng thông minh MyERC20.sol.

$ mkdir myerc20
$ cd myerc20
$ truffle init

Giờ bạn sẽ có các cấu trúc thư mục như sau.

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

Giờ hãy soạn MyERC20.sol và đặt nó vào thư mục contracts.

Bạn cũng cần chỉnh sửa tập tin 1_initial_migration.js như sau để triển khai hợp đồng MyERC20 với các tham số ban đầu là BAOBABTOKEN, BAO8. Tên của đồng token được đặt là BAOBABTOKEN và ký hiệu token là BAO. Token có giá trị thập phân là 10^8. Lưu ý rằng ví dụ, khi bạn truy vấn totalSupply của BAOBABTOKEN, nó sẽ trả về 10^13, không phải 10^5, vì Solidity không hỗ trợ số thực dấu phẩy động, số lượng token luôn được biểu diễn dưới dạng số tự nhiên ở đơn vị nhỏ nhất.

const Migrations = artifacts.require("./Migrations.sol");
const MyERC20 = artifacts.require("./MyERC20.sol");
module.exports = function(deployer) {
  deployer.deploy(Migrations);
  deployer.deploy(MyERC20, 'BAOBABTOKEN', 'BAO', 8);
};

Bạn cũng phải chỉnh sửa tập tin truffle-config.js như dưới đây để triển khai hợp đồng thông minh lên mạng lưới Klaytn. Bước này giống như bước được mô tả trong Triển khai Hợp đồng thông minh bằng Truffle.

// truffle-config.js
module.exports = {
    networks: {
        baobab: {
            host: '127.0.0.1',
            port: 8551,
            from: '0xabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd', // nhập địa chỉ hợp đồng của bạn
            network_id: '1001', // id mạng Baobab
            gas: 20000000, // giới hạn gas của giao dịch
            gasPrice: 250000000000, // gasPrice của Baobab là 250 ston
        },
    },
    compilers: {
      solc: {
        version: "0.5.12"    // Chỉ định phiên bản trình biên dịch là 0.5.12
      }
  }
};

Giờ bạn đã sẵn sàng và có thể triển khai MyERC20.sol như dưới đây.

$ truffle deploy --network baobab --reset
Compiling ./contracts/MyERC20.sol...
Soạn các tập tin artifact trong thư mục ./build/contracts

Sử dụng mạng lưới 'baobab'.

Running migration: 1_initial_migration.js
  Replacing Migrations...
  ... 0x5a947f076f4570dff8ff18b1ae3557e27dd69c92ce38a3c97fad8f5355914066
  Migrations: 0x0d737e9865e5fc4c1ff53744fd2c13c52a44b9bc
  Deploying MyERC20...
  ... 0x1571e80552dab1d67260e8914e06d9b16ccae16fb698c750f6a09aab12517bc1
  MyERC20: 0xc4c8257ED9B4eB6422fDe29B1eCe5Ce301e637e1
Lưu quá trình di chuyển thành công lên mạng...
  ... 0x5b984b3f79c425d80470a96d5badb857fc05e7f31d94423044ae3119c639aa77
Lưu các tập tin artifact...

Nó hiển thị hàm băm giao dịch để triển khai hợp đồng MyERC200x1571e80552dab1d67260e8914e06d9b16ccae16fb698c750f6a09aab12517bc1 và địa chỉ của MyERC200xc4c8257ED9B4eB6422fDe29B1eCe5Ce301e637e1.

Hiện MyERC20 đang hoạt động !

Last updated