Bài 3: Đồng bộ mã nguồn giữa máy Local và Remix IDE trong Ethereum Blockchain


Chúng Ta tiếp tục chuỗi các bài học về ngôn ngữ Solidity để lập trình Smart Contract trong Ethereum Blockchain, với công cụ lập trình Remix IDE được biên dịch và chạy trên máy ảo Ethereum (Ethereum Virtual Machine – EVM).

Trong 2 bài trước Tui đã hướng dẫn các Bạn cách sử dụng công cụ Remix IDE, cấu trúc của công cụ cũng như chức năng của chúng và đã thử nghiệm 1 bài HelloWorld để các bạn biết được cách coding cũng như biên dịch và deploy 1 smart contract trong công cụ này. Tuy nhiên ở 2 bài đó thì mã nguồn chỉ được lưu tạm trên trình duyệt nếu có cookie thì nó cũng lưu tạm thời thôi, tức là có thể mất toàn bộ mã nguồn.

Trong bài này Tui sẽ hướng dẫn các Bạn cách thức đồng bộ mã nguồn giữa máy Local và Remix IDE, tức là khi ta lập trình trên Ethereum Blockchain thì mọi thao tác thay đổi mã nguồn, hay cấu hình trong workspace sẽ được lưu về máy Local. Và các ngày hôm sau các Bạn có thể kết nối rồi phục hồi lại mã nguồn trong Local lên Ethereum Blockchain để tiếp tục coding.

Chúng ta làm các bước sau.

Bước 1: Cài đặt NPM(node package manager).

NMP là viết tắt của Node package manager là một công cụ tạo và quản lý các thư viện lập trình Javascript cho Node.js.

Trước khi cài NPM thì bạn kiểm tra xem máy tính mình đã từng có NPM, nếu chưa có thì cài đặt.

lệnh kiểm tra như sau:

npm -version

Xem hình Tui chụp dưới đây nếu ra được version như của Tui tức là máy tính của bạn đã có rồi (hoặc gõ 2 dấu trừ đằng trước version):

Nếu nó báo không nhận ra thì ta cần cài NodeJS, NMP được tích hợp sẵn khi bạn cài NodeJS

Chi tiết về cài đặt và lập trình NodeJS các bạn xem tại danh sách các bài Blog mà Tui đã viết trước đây:

Cụ thể bạn xem 2 bài trong danh sách NodeJS, gồm:

Sau khi cài đặt thành công NodeJS thì tốt nhất khởi động lại máy rồi mở lại command line để test NPM, nếu nó ra kết quả như của Tui là thành công. Còn vẫn chưa được thì có thể do nghiệp khá nặng, cần chọn lại ngày giờ và phiên bản cài đặt.

Bước 2: Cài đặt remixd daemon

Để hệ thống truy suất được tới local file từ Remix IDE-Ethereum Blockchain thì ta cần cài remixd daemon

Cách cài đặt như sau:

Trong commandline gõ lệnh:

npm install -g @remix-project/remixd

Xem hình minh họa:

Gõ lệnh như trên rồi nhấn phím Enter:

Chờ remixd cài đặt….

màn hình trên đã thông báo hoàn tất quá trình cài đặt, bây giờ ta kiểm tra version của nó để xác thực rằng remixd được cài thành công hay không.

viết lệnh như sau:

remixd --version

Xem hình minh họa:

Như vậy đã cài remixd thành công.

Bước 3: Chạy remixd daemon

Xem lại bài ví dụ Smart Contract ở bài số 2

Bạn thấy Workspaces là HelloWorld không? Workspaces này chỉ được lưu trên Ethereum Blockchain, ở máy Local chúng ta nó không hề biết Workspaces này.

Giả sử trong ổ D:/ bạn tạo thư mục tên là HelloWorld để đồng bộ (dĩ nhiên là tên gì cũng được). Trong bài này, Tui tạo thư mục cha tên là SmartContract rồi bên trong nó có thư mục HelloWorld (Còn bạn thích để kiểu gì cũng được, nhưng trong case này Tui muốn hướng dẫn thêm 1 số lệnh cơ bản trong command line như trỏ thư mục nên mới cố tình làm vậy để Bạn có thểm kiến thức):

D:/SmartContract/HelloWorld

Bạn viết các lệnh trong commandline để di chuyển tới thư mục SmartContract, xem minh họa:

Sau đó dùng lệnh tổng quát sau để chạy remixd daemon

remixd -s <absolute-path-to-the-shared-folder> --remix-ide https://remix.ethereum.org

Như vậy trong trường hợp này thì Tui sẽ viết:

remixd -s HelloWorld --remix-ide https://remix.ethereum.org

Xem hình minh họa:

Nhấn enter và chờ cho chương trình chạy:

Như vậy đã chạy remixd daemon thành công.

Lưu ý nếu bạn tạo thư mục là ThanhHandsome thì phải đổi cái HelloWorld thành ThanhHandsome

Bước 4 – Kết nối local để đồng bộ mã nguồn.

Sau khi đã chạy remixd daemon thành công, từ Remix IDE Ethereum Blockchain ta làm như sau:

Từ mục Workspaces, Ta chọn -connect to localhost- như hình trên, màn hình sau sẽ xuất hiện:

Ta bấm “Connect”, và chờ Remix IDE kết nối, dưới đây là màn hình kết nối thành công:

Lúc này Bạn cũng có thể quay lại commandline chỗ remixd daemon chạy thì cũng thấy nó thông báo “setup notifications for HelloWorld”:

Tui chụp màn hình so sánh giữa Local và Ethereum để bạn xem:

Hiện tại Local vẫn trống trơn vì ta chưa code gì cả.

Bây giờ Tui thử tạo trên Remix Ethereum 1 thư mục “Lucy”:

Bạn thấy đó, ngay lập tức thư mục Lucy ở Ethereum sẽ được đồng bộ về ngày máy local

Và bây giờ trong máy Local, thêm 1 thư mục Jerry

Trường hợp này thì Ethereum chưa đồng bộ ngay (có thể sẽ dùng các lệnh hoặc version sau). Mà ta reload lại trang và kết nối lại localhost để xem nó tự đồng bộ (bạn reload page và làm lại bước kết nối là nó tự đồng bộ). xem hình:

Tiếp theo ta thử viết 1 Solidity Smart Contract trong thư mục Lucy, đặt tên FirstSmartContract.sol:

Lúc này ở Local nó cũng tự động đồng bộ mã nguồn từ Ethereum về cho bạn.

Code FirstSmartContract.sol:

pragma solidity >=0.7.0 <0.9.0;
contract FirstSmartContract
{
    uint256 balance;
    
    function setBalance(uint256 x) public {
        balance = x;
    }
    function getBalance() public view returns(uint256){
        return balance;
    }
}

Bây giờ ta tiến hành biên dịch xem như thế nào:

Trong local thư mục artifacts sẽ được tạo ra với 2 file json:

Và dĩ nhiên nó cũng đồng bộ từ Ethereum, ta xem lại cấu trúc thư mục:

Bây giờ ta vào mục Deploy (nhớ click chọn vào file FirstSmartContract.sol trước nhé):

Các bước test như bài 2, các bạn tự thử nhé.

Như vậy tới đây Tui đã hướng dẫn xong cách thức đồng bộ dữ liệu Local-Remix IDE Ethereum Blockchain. Điều này là quan trọng vì ta cần bảo trì mã nguồn. Và có thể dùng các công cụ lập trình Solidity khác để lập trình sau đó đồng bộ code sau khi có internet.

Bài học sau Tui sẽ minh họa cách tạo 1 Coin và thử giao dịch chuyển tiền qua lại giữa các ví trong Ethereum Blockchain, sau đó sẽ đi sâu vào hướng dẫn ngôn ngữ lập trình Solidity, Bạn cần có kiến thức về Solidity thì mới có nền tảng mà lập trình Smart Contract. Vì nó dùng Solidity để lập trình. Không vội

Chúc các bạn thành công.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.