Trong loạt bài viết này, Biastek giới thiệu cách triển khai Ethereum blockchain với sự hỗ trợ của thư viện OpenZepplin. Hướng dẫn này được thực hiện dựa trên nội dung của OpenZeppelin.
Series bài viết này bao gồm các nội dung:
- Phần 1: Cài đặt Ethereum, Compile và Deploy Smart Contract, Interact với Web3
- Phần 2: Viết Unit Test cho Smart Contract
- Phần 3: Kết nối với Public Blockchain ( testnet)
- Phần 4: Upgradeabe Smart Contract
Trong phần 2: Viết Unit Test cho Smart Contract chúng ta thực hiện các bước như sau:
- Cài đặt môi trường
- Cài đặt thư viện mocha
- Viết Unit test đơn giản
Việc sử dụng Public blockchain (mainnet) để test thì quá tốn kém, trong khi sử dụng public blockchain (testnet) thì tốc độ qua chậm. Do đó, OpenZeppelin hỗ trợ cho chúng ta một thư viện Test Envrioment, đây là một JavaScript thư viện giúp tạo ra local blockchain đơn giản hỗ trợ trong việc testing
Cài đặt thư viện “Test Environment” như câu lệnh bên dưới
$ npm install –save-dev @openzeppelin/test-environment
Cài đặt thư viện Mocha
$ npm install –save-dev mocha chai
Viết Unitest đặt trong thư mục test/Box.test.js
// test/Box.test.js
// Load dependencies
const { accounts, contract } = require(‘@openzeppelin/test-environment’);
const { expect } = require(‘chai’);
// Load compiled artifacts
const Box = contract.fromArtifact(‘Box’);
// Start test block
describe(‘Box’, function () {
const [ owner ] = accounts;
beforeEach(async function () {
// Deploy a new Box contract for each test
this.contract = await Box.new({ from: owner });
});
// Test case
it(‘retrieve returns a value previously stored’, async function () {
// Store a value – recall that only the owner account can do this!
await this.contract.store(13, { from: owner });
// Test if the returned value is the same one
// Note that we need to use strings to compare the 256 bit integers
expect((await this.contract.retrieve()).toString()).to.equal(13);
});
});
Trong file package.json thêm vào scritp như bên dưới
“scripts”: {
“test”: “oz compile && mocha –exit –recursive test”
}
Test unit test bằng câu lệnh bên dưới
$ nmp test
Done !!! Như vậy chúng ta đã hoàn thành Unit Test đơn giản sử dụng thư viện của OpenZeppelin
Blockchain Ethereum – Ví dụ về hàm Delegatecall trong solidity
Blockchain Ethereum (P4) – Kết Nối Các Node Sử Dụng Bootnode
Blockchain Ethereum (P3) – Cài Đặt Private Blockchain trên nền tảng Ethereum
Install web3 and nodejs
Sử dụng Virtual Box
Đọc sách 2021