5. Triển khai hợp đồng

  1. Nhận testnet KLAY để triển khai hợp đồng

  2. Cấu hình Truffle

  3. Thiết lập triển khai (chọn hợp đồng bạn muốn triển khai)

  4. Triển khai

1) Nhận KLAY

Để triển khai hợp đồng, ta cần có KLAY trong tài khoản của bạn để trả phí gas. Bạn có thể nhận 150 KLAY qua Ví Klaytn trong testnet. 1. Tạo tài khoản Klaytn của bạn tại Ví Baobab Klaytnkhóa riêng tư -> PRIVATE KEY sẽ được dùng trong cấu hình Truffle. Sao chép khóa riêng tư vào đâu đó 2. Sau khi tạo tài khoản Klaytn, chạy Faucet để nhận 5 KLAY từ testnet Baobab trong Vòi Baobab Klaytn

2) Cấu hình Truffle

truffle-config.js là tập tin cấu hình có chứa cấu hình triển khai. Ta sẽ triển khai hợp đồng bằng cách dùng Private key vừa tạo ở bước trước. Dán Private key có đủ KLAY của bạn vào truffle-config.js

CẢNH BÁO: Bạn không nên để lộ khóa riêng tư của mình. Nếu không tài khoản của bạn sẽ bị xâm nhập.

// truffle-config.js

const HDWalletProvider = require("truffle-hdwallet-provider-klaytn");

/**
 * các biến mạng lưới Truffle
 * để triển khai hợp đồng vào mạng lưới Klaytn.
 */
const NETWORK_ID = '1001'

/**
 * URL: URL cho nút từ xa bạn sẽ dùng
 * PRIVATE_KEY: Khóa riêng tư của tài khoản thanh toán giao dịch (Đổi thành khóa riêng tư của riêng bạn)
 */
const URL = 'https://public-en-baobab.klaytn.net'

// Dán `Private key` có đủ KLAY vào truffle.js
const PRIVATE_KEY = 'your_private_key'

module.exports = {
  networks: {
    klaytn: {
      provider: () => new HDWalletProvider(PRIVATE_KEY, URL),
      network_id: NETWORK_ID,
      gas: '8500000',
      gasPrice: null,
    },
  },

  // Chỉ định phiên bản của trình biên dịch, chúng tôi dùng phiên bản 0.5.6
  compilers: {
    solc: {
      version: '0.5.6',
    },
  },
}

Thuộc tính networks

Xem thuộc tính networks ở trên. Mạng lưới klaytn có 4 thuộc tính, provider, network_id, gas, gasPrice.

  • provider: () => new HDWalletProvider(PRIVATE_KEY, URL) Như tên gọi, thuộc tính này tích hợp khóa riêng tư và url được định nghĩa ở trên.

  • network_id: NETWORK_ID Chỉ ra ID của mạng lưới trong Klaytn, bạn nên đặt thành 1001 để sử dụng mạng lưới Baobab Klaytn (testnet).

  • gas: GASLIMIT Phí gas tối đa bạn sẵn sàng chi trả.

  • gasPrice: null Đây là mức giá trên mỗi đơn vị gas. Hiện giá gas trong Klaytn được cố định ở mức '25000000000'. Bằng cách đặt thành null, truffle sẽ tự động đặt giá gas.

Thuộc tính compiler

Hãy nhớ rằng ta đã dùng phiên bản 0.5.6 cho hợp đồng Solidity, đồng thời chỉ ra phiên bản trình biên dịch ở đây.

3) Thiết lập triển khai

migrations/2_deploy_contracts.js:

const Klaystagram = artifacts.require('./Klaystagram.sol')
const fs = require('fs')

module.exports = function (deployer) {
  deployer.deploy(Klaystagram)
    .then(() => {
    if (Klaystagram._json) {
      // 1. Ghi lại tập tin abi của hợp đồng đã triển khai gần đây vào 'deployedABI'
      fs.writeFile(
        'deployedABI',
        JSON.stringify(Klaystagram._json.abi, 2),
        (err) => {
          if (err) throw err
          console.log(`ABI của ${Klaystagram._json.contractName} được ghi vào tập tin deployedABI`)
        })
    }

    // 2. Ghi lại địa chỉ của hợp đồng đã triển khai gần đây vào 'deployedAddress'
    fs.writeFile(
      'deployedAddress',
      Klaystagram.address,
      (err) => {
        if (err) throw err
        console.log(`Địa chỉ của hợp đồng đã triển khai * ${Klaystagram.address} * được ghi vào tập tin deployedAddress`)
    })
  })
}

Bạn có thể chỉ ra mã hợp đồng bạn sẽ triển khai trong thư mục contracts/.

  1. Nhập tập tin hợp đồng của bạn (Klaystagram.sol) qua

    const Klaystagram = artifacts.require('./Klaystagram.sol')

  2. Dùng deployer để triển khai hợp đồng của bạn, deployer.deploy(Klaystagram).

  3. Nếu bạn muốn thêm logic sau khi triển khai hợp đồng, hãy dùng .then() (không bắt buộc)

  4. Để lưu deployedABIdeployedAddress của hợp đồng, hãy dùng fs mô-đun node.js

    fs.writeFile(filename, content, callback) (không bắt buộc)

cf. Để biết thêm thông tin về artifacts.require(), hãy tham chiếu tài liệu chính thức của truffle tại truffle docs

4) Triển khai

Trong cửa sổ lệnh của bạn, hãy gõ $ truffle deploy --network baobab. Hệ thống sẽ triển khai hợp đồng của bạn theo cấu hình truffle-config.jsmigrations/2_deploy_contracts.js.

Cửa sổ lệnh sẽ hiển thị địa chỉ hợp đồng đã triển khai nếu triển khai thành công.

cf) --reset option Nếu bạn đưa ra tùy chọn này, Truffle sẽ biên dịch và triển khai lại hợp đồng của bạn ngay cả khi hợp đồng không thay đổi.\ ex) $ truffle deploy --reset --network baobab

Last updated