Tương Tác Transaction Node Azure Blockchain Với Hai Cách Remix - MetaMask Và VScode
Bài đăng này đã không được cập nhật trong 4 năm
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:
- Đăng nhập vào Azure portal.
- Chuyến đến member bạn muốn connect
- Chọn Transaction nodes và chọn default node
- Chọn Connection strings > Access keys
- Copy endpoint address từ HTTPS (Access key 1)
Connect MetaMask
- Mở MetaMask browser extension và đăng nhập
- Chọn vào phần các network và chọn Custom RPC
- Trong New Network > New RPC URL, paste endpoint address bạn vừa copy ở trên vào đây
-
Chọn Savce
-
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.
- Chúng ta sẽ truy cập https://remix.ethereum.org
- Chọn New file ở trang Home để tạo mới file có name là
simple.sol
và chọn OK
- 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;
}
}
- Tiếp theo sẽ là compile contract, đầu tiên sẽ chọn sang phần **Compile **
- 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
- Chọn contract simple và sau đó Deploy
- 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.
- 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
- 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
- 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.
- Add
- 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
- Một điều không thể thiếu đó là cần có một member nếu chưa có thì xem tại đây
- Đã cài đặt Vscode - nếu chưa cài đặt thì truy cập Visual Studio Code
- Sau đã cài đặt cần phải cài đặt thêm Azure Blockchain Development Kit for Ethereum extension trong Vscode
- Node.js 10.15.x hoặc hơn
- Git 2.10.x hoặc hơn
- Python 2.7.15 đã add path trong hệ thống vì thằng extension trên yêu cầu máy phải có python từ 2.7.15
- Truffle 5.0.0
- Ganache CLI 6.0.0
Đố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
- Mở extension Azure Blockchain trong Vscode
- Chọn Connect to network
- Sẽ có nhiều lựa chọn cho bạn như mồi trường
local
hayservice
thật
- Ở đây nếu chọn Azure Blockchain Service nó sẽ yêu cầu bạn Sign
- 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
- Trong Vscode
Ctrl + Shift + P
chọn Azure Blockchain: New Solidity Project - 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 - 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 - 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
- Mở project vừa tạo và vào thư mục
contracts
- Chuột phải vào HelloBlockchain.sol và chọn Build Contracts
- 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
- Chuột phải vào HelloBlockchain.sol và chọn Deploy Contracts
- 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
- 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
- Sau khi chọn xong trong
truffle-config.js
sẽ tự động thêm mộtHDWalletProvider
với thông tin mạng tương ứng
- 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
- Chuột phải vào HelloBlockchain.sol chọn Show Smart Contract Interaction Page
- Một giao diện để ta tương tác với smart contract trên blockchain
- Quan lý được các phiên bản đã deploy lên
- Có thể lấy
Abi
hayBytecode
ở ngay bên dưới
- 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
- 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 vote và Follow để 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