Hướng Dẫn Deploy Smart Contract Lên Harmony Blockchain

Tram Ho

Harmony được giới thiệu là một nển tảng blockchain nhanh và bảo mật cho các ứng dụng phân tán. Mainnet của họ có 1000 nodes được chia thành 4 shards và với khả năng đóng blocks trong 8s. Nền tảng blockchain này giống Ethereum đến lạ kỳ, có chăng cái khác hiện tại của nó là đang sử dụng một cơ chế đồng thuận khác đó là Effective Proof-of-Stake (EPoS), theo như nhà phát triển thì đây là một loại cải tiến của PoS. Trong rất nhiều sự tương đồng với Ethereum thì một trong số đó là đều có smart contract, cũng sử dụng solidity để viết contract và deploy cũng có thể dùng những công cụ phát triển của Ethereum. Để chứng minh cho điều này mình xin viết bài này hướng dẫn các bạn deploy một smart contract lên mạng Harmony

Yêu cầu cài đặt

Cũng có thể sử dụng Truffle để code và deploy smart contract nên ở đâu chúng ta cần install Truffle

Khởi tạo project

Installing Harmony Core

Để deploy ta cần install Harmony @harmony-js/core

Install thư viện bổ xung

Nếu contract phát triển trên chuẩn ERC-20 hoặc ERC-721 thì bạn cần install thêm các thư viện của open zeppelin libraries.

Tạo một file package.json

Cần tạo một file package.json như sau để tải các thư viện:

Sau đó chạy command: npm install

Configure truffle để sử dụng được Harmony

Để build được contract trên Harmony ta cần sử đổi file truffle-config.js, để setup network thành Harmony network.

Trong này sẽ có một số chỗ sử dụng đến các biến môi trường nên ta cũng cần setup file .env như sau:

Viết smart contract

Chúng ta sẽ viết 2 file triển khai trên Harmony HRC20 như dưới đây:

  • HarmonyMintable.sol
  • HarmonyERC20.sol

Add file migration

cuối cùng là file migration để deploy contract:

  • 2_deploy_HarmonyERC20.js

Cấu trúc thư mục sẽ như sau:

Compile và deploy contracts

Sử dụng các câu lệnh sau để compile và deploy:

Kết quả sẽ như sau

Kiểm tra totalSupply

Chúng ta sẽ thử trên 2 môi trường là: môi trường test và môi trường gọi từ client

  • Môi trường test

    Ta cần tạo một file test Harmony.js trong thư mục test

    Sau đó chạy command:

    Kết quả

    Mọi người hãy để ý lên file 2_deploy_HarmonyERC20.js thì ta đang config giống như wei của Ethereum là dể decimal = 18amount=1000000 nên total trả về sẽ là : 1000000000000000000000000 ( 10^(6+18) )

  • Môi trường client

    Cũng giống như môi trường client ta sẽ giả lập 1 file js gọi hàm totalSupply thông qua instance của contract. Ta sẽ tạo 1 file có tên Harmony_sdk.js trong thư mục test:

    Sau đó chạy command: node test/Harmony_sdk.js

    Kết quả

    Mọi người chú ý giúp mình chỗ này mình đang sử dụng mạng Testnet với Id là 2. Nên nếu trong trường hợp sử dụng cho Mainnet hoặc Testnet khác thì mọi người có thể thay đổi ở đây để có thể get được đúng địa chỉ nha

Block exporers

Cũng giống như Ethereum thì Harmony cũng có trang để để block exporers: Mainnet và Testnet

  • Như ở đây ta deploy nó lên môi trường testnet nên sẽ vào Testnet để kiểm tra

  • Contract đã có trên mạng

  • Nhưng chưa có transaction nào

Kết luận

Như vậy là chúng ta đã deploy thành công một smart contract lên mạng Harmony blockchain. Chắc hẳn mọi người bây giờ đang có chút ngờ ngợ, ớ không biết có deploy lên đúng mạng không nhỉ mà cứ như là lên Ethereum thế. Không bạn deploy lên đúng mạng rồi đấy chẳng qua là nó giống Ethereum quá thôi mà. Cảm ơn các bạn đã đón đọc rất vui và hẹn gặp lại cách bạn trong các bài viết tiêp theo.

 

Nguồn: https://docs.harmony.one/home/developers/smart-contracts
Chia sẻ bài viết ngay

Nguồn bài viết : Viblo