Bài 4: Tạo file bat để hỗ trợ đồng bộ Local và Remix IDE trong Ethereum Blockchain

bài 3, Các bạn đã biết cách đồng bộ mã nguồn Local và Remix IDE trong Ethereum Blockchain. Tuy nhiên vì mã lệnh khá phức tạp và khó nhớ nên sẽ làm chúng ta mất thời gian khi mỗi lần lập trình muốn đồng bộ lại mất thời gian tìm kiếm lại các câu lệnh. Vì vậy bài này Tui hướng dẫn các bạn cách tạo file bat để khi đồng bộ bạn chỉ cần nhấp double click vào file bat là có thể thực hiện.

Các bước đơn giản như sau:

Ta đồng bộ dữ liệu trong thư mục: D:/SmartContract/HelloWorld

Bạn có thể đồng bộ D:/SmartContract nếu như trong D:/SmartContract có nhiều Project. Khi đồng bộ nó sẽ nạp toàn bộ project trong local lên Remix IDE và ngược lại

Bước 1: Tạo file bat

Ở bất kỳ nơi đâu trong máy tính bạn tạo file bat như sau: Bấm chuột phải/ chọn New / Chọn Text Document như hình bên dưới

Lúc này file “New Text Document.txt” được tạo ra như dưới đây:

Ta mở file này lên và gõ lệnh:

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

Lệnh trên sẽ giúp đồng bộ vào project HelloWorld trong thư mục SmartContract

Nếu bạn muốn đồng bộ toàn bộ các Project trong D:/SmartContract thì gõ lệnh:

remixd -s D:/SmartContract --remix-ide https://remix.ethereum.org

Xem hình minh họa:

Sau khi gõ lệnh xong, bạn nhấn Ctrl+S để lưu file

Sau khi lưu file, bạn đóng file và ra ngoài đổi tên file: “New Text Document.txt” thành “dongbo.bat”, dĩ nhiên đặt tên gì cũng được miễn đuôi file là .bat

Bước 2: Tạo shortcut cho file dongbo.bat

Nếu bạn lưu dongbo.bat ngoài desktop thì không cần tạo shortcut, tuy nhiên lập trình viên ít ai lưu dữ liệu ngoài desktop, mà chúng ta thường lưu trong các thư mục ở ổ đĩa D.

Tạo shortcut ngoài desktop để giúp thao tác cho lẹ khỏi mất công đi tìm vì ta hàng ngày lập trình nó.

Bạn bấm chuột phải vào dongbo.bat/chọn send to / chọn Desktop (Create shortcut) như hình bên dưới

Như vậy shortcut sẽ được tạo cho dongbo.bat

Bước 3 – Test đồng bộ.

Bạn chạy shortcut ở ngoài desktop đã tạo ở bước 2 (hoặc chạy trực tiếp file bat ở nơi bạn đã tạo).

Chương trình sẽ tiến hành chạy dịch vụ đồng bộ và thông bao như dưới đây

Bây giờ bạn vào https://remix.ethereum.org/ và chọn kết nối localhost (như đã hướng dẫn ở bài số 3) Ta sẽ có kết quả như hình dưới đây:

Như vậy Tui đã hướng dẫn xong cách tạo file bat để mỗi lần lập trình bạn chỉ cần chạy file này là nó tự động tạo dịch vụ đồng bộ mà bạn không cần phải nhớ các lệnh phức tạp của nó

Nếu như bạn muốn đồng bộ qua thư mục khác thì tạo 1 filebat mới hoặc bạn sửa ngay chính file bat cũ bằng cách bấm Chuột phải vào file .bat rồi chọn edit sau đó tiến hành đổi thư mục khác nếu muốn.

Chúc các bạn thành công và tiết kiệm được thời gian khi làm thao tác đồng bộ.

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.

Bài 2: Tạo và chạy Smart Contract đầu tiên trong Ethereum Blockchain

bài 1 các bạn đã biết cách sử dụng công cụ Remix IDE để lập trình Smart Contract trong Ethereum Blockchain. Trong bài này Tui sẽ hướng dẫn cách tạo 1 Smart Contract đầu tiên và biên dịch, deploy nó như thế nào.

Muốn thay đổi thế giới thì trước tiên Bạn phải xin chào thế giới, vì vậy ta tạo một workspace tên là “HelloWorld” như dưới đây: (Thực ra ta không thể đổi được thế giới này đâu, hồi còn trẻ trâu Tui cũng muốn đổi này đổi kia, nhưng từ khi cưới Vợ và đặc biệt lúc có Em Bé, Tui còn không có cơ hội đổi kênh Youtube huống chi đòi đổi thế giới, thay đổi được chính bản thân mình cho nó tốt lên là may lắm rồi).

Ta đặt tên như hình dưới đây rồi bấm nút OK:

Sau khi bấm nút OK ta có kết quả:

Mặc định Remix Ethereum IDE sẽ tạo cho bạn cấu trúc thư mục và các tập tin Contract mẫu như trên.

Bây giờ ta tạo 1 file .sol (Contract viết bằng ngôn ngữ lập trình Solidity).

Đặt tên là FirstSmartContract nó tự ra đuôi FirstSmartContract.sol:

Kết quả sau khi nhấn phím Enter:

Bây giờ ta code như sau, cách code Solidity nó tương tự như java, python…. dĩ nhiên có những điểm khác vì nó chuyên biệt cho Smart Contract. Tui sẽ sắp xếp thời gian viết các blog hướng dẫn về Solidity ở các bài tiếp theo để phục vụ tốt cho việc viết các dự án liên quan tới Smart Contract.

Ở bài này thì cứ làm theo như Tui viết cho nó có cảm giác trước đã

Mã lệnh Contract của FirstSmartContract ở trên gồm có thuộc tính balance và các phương thức setBalance để thay đổi giá trị của balance, phương thức getBalance để truy suất giá trị của balance.

Coding như sau:

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;
    }
}

Khi ta viết sai cú pháp thì chương trình sẽ tự động báo lỗi, lúc này ta sẽ không biết dịch được, ví dụ Tui cố tình sửa 1 xíu cho nó báo lỗi thì bạn sẽ thấy hình ảnh sau:

Ở trên không có biến x2 nhưng Tui vẫn khai báo, dãna tới nó bị lỗi có nút màu đỏ. lúc này không biên dịch được.

OK, giờ bạn sửa lại cho nó đúng để chúng ta vào bước biên dịch:

Theo hình trên, để biên dịch ta làm theo cá bước:

1. Chọn Solidity compiler

2. Chọn compiler mới nhất

3. Chọn ngôn ngữ lập trình là Solidity

4. Chọn Ethereum Virtual Machine (EVM), để mặc định

5. Nhấn compile FirstSmartContract.sol

Ta xem kế quả:

Sau khi biên dịch thành công, ta vào mục Deploy & Run transactions như hình dưới đây:

Như vậy các bạn cần làm các bước trong mục Deploy & run transactions như sau:

1. Chọn Deploy & Run transactions

2. Chọn Enviroment là JavaScript VM (London). ở đây có 1 danh sách tùy chọn

3. Chọn Account Ethereum, cũng có nhiều tùy chọn

4. Chọn Gas limit

5. Chọn Contract mà mình muốn deploy, khi biên dịch nhiều contract thì nó hiển thị danh sách ở đây

6. Nhấn Deploy

Sau khi nhấn Deploy ta xem kết quả:

Khi nhấn vào mũi tên để xem chi tiết, ta có màn hình dưới đây, các phương thức (các giao tác) được hiển thị để cho ta tương tác:

Ví dụ bây giờ ta setBalance là 500000000, chi tiết thao tác xem hình:

Bước 1: nhập giá trị cho giao tác setBalance

Bước 2: nhấn nút setBalance

Bước 3: chi tiết transaction thực hiện, ta có thể xem

Tiếp theo để kiểm tra giao tác setBalance có làm thay đổi giá trị của balance hay không, ta thử nghiệm giao tác getBalance:

Như vậy là tới đây ta đã hoàn tất việc Code một Smart Contract cũng như cách biên dịch và deploy, run nó như thế nào.

Bài tiếp theo Tui sẽ hướng dẫn các bạn đồng bộ những gì mình lập trình trên Remix Ethereum IDE về máy local của mình để lưu trữu cũng như bảo trì code.

Code FirstSmartContract.so tải ở đây:

https://www.mediafire.com/file/b0vix0rrt44qygn/FirstSmartContract.sol/file

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

Bài 1: Sử dụng Remix IDE để lập trình Smart Contract trong Ethereum Blockchain

Ethereum tạo ra một số ngôn ngữ để hỗ trợ các dự án liên quan tới Blockchain. Trong đó có Solidity là ngôn ngữ được tạo ra với sứ mệnh chính là viết các dự án về Smart Contract. Ngoài ra hãng cũng phát triển IDE Remix rất nổi tiếng và tiện lợi trong quá trình lập trình cũng như biên dịch và test thử nghiệm các Contract (giới thiệu Smart Contract của Ethereum ở đây: https://docs.soliditylang.org/en/v0.8.7/introduction-to-smart-contracts.html)

Bài này Tui sẽ hướng dẫn các bạn cách sử dụng Remix IDE để lập trình và biên dịch các Contract mặc định online trên hệ thống https://remix.ethereum.org/. Ở bài sau Tui sẽ hướng dẫn các bạn cách tạo một Smart Contract hoàn toàn mới cũng như cách kết nối đồng bộ nó về máy Local.

Lần đầu truy cập vào https://remix.ethereum.org/ ta có giao diện mặc định như bên dưới đây cùng với 1 dự án Smart Contract mẫu(Mặc định màn hình đen thui vậy kệ nó, Tui sẽ hướng dẫn bạn chỉnh theme sau)

Giao diện của từng mục như sau:

Mục 1 – Màn hình Home:

Khi bạn chọn mục màn hình home thì giao diện hiển thị như bên dưới, nó có thể chứ danh sách cấu trúc dự án, hoặc các hướng dẫn, các giới thiệu về plugins, hay các thao tác trên file, thư mục và các tài nguyên.

Mục 2 – Tổ chức mãn nguồn:

Khi nhấn vào mục này ta sẽ thấy cấu trúc thư mục như hình bên, ta bấm vào thư mục để xổ các tập tin mã nguồn ra. Muốn thao tác trên nó như: thêm, xóa, sửa tập tin thư mục thì bấm chuột phải vào nó sẽ xổ ra menu cho chọn. Các tập tin mã nguồn mặc định có phần mở rộng là .sol

Mục 3 – trình biên dịch Solidity

Thường khi ta coding xong 1 Contract nếu nó không báo lỗi thì vào đây biên dịch để sử dụng cho bước triển khai và chạy giao dịch.

Mục 4 – Triển khai và chạy giao dịch:

Sau khi mục 3 ta đã biên dịch thanh công thì qua mục 4 này để deploy nó, chi tiết như hình bên dưới

Chi tiết quá trình biên dịch trong mục 3 và chi tiết deploy trong mục 4 cũng được hiển thị trong mục 9.

Mục 5- Quản lý Plugin

Trong quá trình triển khai phần mềm Smart Contract sẽ có những lúc ta phải dùng thêm các thư viện ngoài, ta cần vào đây để cài đặt như hình minh họa bên dưới.

Mục 6-7 quản lý thư mục dự án và cấu trúc dự án

ở mục này ta có thể tạo các Workspaces mới, thêm , sửa, xóa tập tin và thư mục như hình bên dưới.

Tên tập tin nếu nó là Contract thì đuôi mặc định là .sol

Mục 8 – viết mã nguồn:

Ta nhấn vào từng tập tin .sol để lập trình contract như hình bên dưới.

Dĩ nhiên nó là 1 ngôn ngữ lập trình Solidity, bạn phải biết về nó. Tui sẽ tranh thủ ra khóa học hướng dẫn sau. Tạm thời bạn có thể học bản Tiếng Anh tại đây: https://docs.soliditylang.org/en/v0.8.7/index.html

Mục 9 như đã nói là nơi hiển thị chi tiết các tương tác khi biên dịch, deploy.

Mục 10 là settings để thay đổi các cấu hình cũng như giao diện

Như vậy tới đây Tui đã hướng dẫn xong cách sử dụng Remix – Ethereum IDE để lập trình các phần mềm về Smart Contract. Các bạn về cơ bản đã biết được ý nghĩa của từng thành phần.

Bài tiếp hteo Tui sẽ hướng dẫn các bạn cách tạo mới 1 Contract hoàn toàn cũng như biết cách biên dịch, deploy và thử nghiệm 1 số giao tác ngay trên hệ thống của Ethereum Blockchain.

Hẹn gặp ở bài thứ 2, đó là bài “Tạo First Smart Contract”.

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