Tương Tác Transaction Node Azure Blockchain Với Hai Cách Remix - MetaMask Và VScode

Lần trước thì mình đã có một bài giới thiệu về Azure Blockchain Service và hướng dẫn tạo một member cũng như các config trong transaction node. Thì trong bài viết này mình sẽ tiếp tục chia sẻ về Azure blockchain với phần này sẽ về cách connect đến một trasaction node và tương tác với nó.

Sử dụng MetaMask - Remix để connect và deploy smart contract

Phần này sẽ là phần hướng dẫn sử dụng MetaMask connect đến Azure Blockchain Service network và sau đó sử dụng Remix để deploy smart contract thì dưới đây sẽ là các yêu cầu ban đầu

Yêu Cầu

  • Bạn phải có một member Azure blockchain nếu chưa tạo hãy làm theo các bước sau: create member
  • Đã cài đặt MetaMask browser extension
  • Và đã có một tài khoản ví trên Metamark

Get endpoint address

Để connect đến mạng blockchain bạn cần biết endpoint address của transaction node. Thực hiện theo các bước sau:

  1. Đăng nhập vào Azure portal.
  2. Chuyến đến member bạn muốn connect
  3. Chọn Transaction nodes và chọn default node

  1. Chọn Connection strings > Access keys
  2. Copy endpoint address từ HTTPS (Access key 1)

Connect MetaMask

  1. Mở MetaMask browser extension và đăng nhập
  2. Chọn vào phần các network và chọn Custom RPC

  1. Trong New Network > New RPC URL, paste endpoint address bạn vừa copy ở trên vào đây

  1. Chọn Savce

  2. Sau khi thành công thì ở phần các network sẽ hiện như thế này

Deploy smart contract

Phần này ta sẽ sử dụng môi trường để viết contract là Remix. Sử kết hợp giữa Metamask với Remix sẽ giúp ta có thể deploy và thực hiện call các function trong smart contract.

  1. Chúng ta sẽ truy cập https://remix.ethereum.org
  2. Chọn New file ở trang Home để tạo mới file có name là simple.sol và chọn OK

  1. Viết một contract đơn giản như sau
    pragma solidity ^0.5.0;

    contract simple {
        uint balance;

        constructor() public{
            balance = 0;
        }

        function add(uint _num) public {
            balance += _num;
        }

        function get() public view returns (uint){
            return balance;
        }
    }
  1. Tiếp theo sẽ là compile contract, đầu tiên sẽ chọn sang phần **Compile **

  1. Sau khi đã compile xong sẽ là đến bước deploy. Chọn Deploy & Run tiếp đó tại phần Environment chọn Injected Web3 để connect thông qua MetaMask

  1. Chọn contract simple và sau đó Deploy

  1. Nếu ở MetaMask thông báo bạn không đủ tiền để thực hiện transaction. Do đối với public blockchain network bạn sẽ cần Ether để thánh toán cho việc gửi transaction. Vì đây là private network trong consortium nên bạn có thể set cho gas price về 0.
  2. Chọn Gas Fee > Edit > Advanced, set Gas Price về 0

9. Chọn Confirm để deploy smart contract lên blockchain có thể thấy tại Metamask giao dịch đang được thực hiện

  1. Sau khi đã deploy thành công ta sẽ thấy trong phần Deployed Contracts và có thể nhìn thấy 2 function đã được định nghĩa khi viết smart contract

  1. Function add sẽ là function làm thay đổi storage nên khi thực hiện cần tạo transaction. Còn get chỉ xem dữ liệu nên sẽ không cần tạo transaction.
  2. Add

  1. Get

Connect với Vscode

Như ở trên là connect với Metamask - Remix đến phần này chúng ta sẽ sử dụng với Vscode

Yêu cầu

Đối với Windows cần có trình biên dịch C++ đã có cài đặt module node-gyp. Cố thể sử dụng công cụ MSBuild:

  • Nếu đã cài đặt Visual Studio 2017 thì sử dụng command npm config set msvs_version 2017 -g
  • Nếu đã cài đặt Visual Studio 2019 thì sẽ set path của MS build tool cho npm như ví dụ sau: npm config set msbuild_path "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\MSBuild.exe"
  • Còn nếu không phải các trường hợp trên thì run với quyền administrator command sau npm install --global windows-build-tools

Verify Azure Blockchain Development Kit environment

Extension Azure Blockchain Development Kit có thể kiểm tra xem môi trường bạn thiết lập có bị thiếu gì không bằng cách Ctrl+ Shift + P và chọn Azure Blockchain: Show Welcome Page. Extension sẽ chạy script để kiểm tra môi trường ta có thể nhìn thấy điều này bằng cách chọn Terminal > New Terminal. Trong tab menu chọn Output và trong dropdown chọn Azure Blockchain kết quả sẽ như sau:

Còn nếu môi trường của bạn thiếu phần gì thì một tab Azure Blockchain Development Kit - Preview mới sẽ được hiện ra những môi trường nào bạn còn thiếu

Connect to consortium member

Sau khi đã xong hết các yêu cầu về môi trường chúng ta sẽ đến phần connect với mạng blockchain

  1. Mở extension Azure Blockchain trong Vscode
  2. Chọn Connect to network

  1. Sẽ có nhiều lựa chọn cho bạn như mồi trường local hay service thật

  1. Ở đây nếu chọn Azure Blockchain Service nó sẽ yêu cầu bạn Sign

  1. Kết quả sẽ như sau

Create, build và deploy smart contract bằng Vscode

Vậy là ta đã tạo được connect từ Vscode đến mạng blockchain bây giờ ta có thể thực hiện các bước tiếp theo để deploy được một contract lên mạng blockchain

Create smart contract

  1. Trong Vscode Ctrl + Shift + P chọn Azure Blockchain: New Solidity Project
  2. Sẽ có 2 lựa chọn 1 là template Metacoin của truffle 2 là Create basic project sẽ ra một tempate của Azure
  3. Như ở đây mình chọn loại basic và đặt tên HelloBlockchain chọn thự mục mình muốn tạo và Select new project path
  4. Một project theo chuẩn của Azure sẽ được tạo ra như sau

Build smart contract

Công việc build contract cũng khá đơn giản chỉ cần làm theo các bước sau đây

  1. Mở project vừa tạo và vào thư mục contracts
  2. Chuột phải vào HelloBlockchain.sol và chọn Build Contracts

  1. Nếu để ý trong phần Output sẽ thấy Azure Blockchain vẫn sử dụng Truffle để complie smart contract.

Deploy smart contract

Sau khi compile thành công sẽ đến bước deploy lên mạng blockchain

  1. Chuột phải vào HelloBlockchain.sol và chọn Deploy Contracts

  1. Sẽ có nhiều lựa chọn là deploy mạng local hay lên mang blockchain như ở đây mình chọn mạng Azure blockchain

  1. Chọn tạo ra mnemonic mới hay sử dụng mnemonic cũ ở đây mình chọn tạo ra cái mới và chọn thư mục để lưu

  1. Sau khi chọn xong trong truffle-config.js sẽ tự động thêm một HDWalletProvider với thông tin mạng tương ứng

  1. Và hãy cũng theo dõi quá trình deploy quá Output

Call contract function

Bây giờ smart contract đã được deploy ta có thể test các function của contract rất đơn giản. Azure Blockchain Development Kit cung cấp cho chung ta một giao diện để tương tác vô cùng thuận tiện

  1. Chuột phải vào HelloBlockchain.sol chọn Show Smart Contract Interaction Page

  1. Một giao diện để ta tương tác với smart contract trên blockchain

  1. Quan lý được các phiên bản đã deploy lên

  1. Có thể lấy Abi hay Bytecode ở ngay bên dưới

  1. Giờ ta sẽ thử call một function SendRequest với nội dung Hello! Nghĩa xem requestMessage state có thay đổi không nha

  1. Ok vậy là ta đã thay đổi được state

Kết Luận

Và như vậy ta đã có thể connect với Azure Blockchain với việc sử dụng Metamask - Remix và Vscode. Mong rằng bài viết đã giúp bạn có thể tạo tác được với Azure Blockchain, cảm ơn đã đón đọc và hẹn gặp lại trong các bài viết tiếp theo. Đừng quên Up voteFollow để nhận được thông báo khi có bài viết mới nha.

Nguồn:

https://docs.microsoft.com/en-us/azure/blockchain/service/connect-vscode https://docs.microsoft.com/en-us/azure/blockchain/service/connect-metamask https://docs.microsoft.com/en-us/azure/blockchain/service/send-transaction


All Rights Reserved