Sử dụng Javascript để lập trình chuỗi khối (Blockchain)

  1. Blockchain

Bài viết được dịch từ tựa

Programming blockchain in Javascript
của tác giả
Mohammad Azam.
Bài viết có được hiệu chỉnh do cắt nghĩa rõ hơn một số thuật ngữ trong công nghệ blockchain.

1


Trong một bài viết gần đây tôi có nói về việc triển khai ứng dụng Blockchain với ngôn ngữ Swift trên nền tảng iOS. Rất nhiều người đã email cho tôi và hỏi về việc triển khai ứng dụng đó bằng Javascript. Và bài viết này chính là để thoả mãn việc sử dụng NodeJS để xây dựng ứng dụng lõi của Blockchain.

Khởi tạo các Model

Bước đầu tiên ta cần định nghĩa các model liên quan đến nhau thông qua đối tượng, đại diện cho những thành phần của Blockchain. Các model đó bao gồm nhưng thành phần sau:

Transaction: Một giao dịch đại diện cho việc luân chuyển giá trị. Nó có thể là tiền bạc, hàng hoá, các ghi chép y khoa…

2

Block: Một block sẽ được khai thác bởi thợ đào mà sau đó nó sẽ được thêm vào blockchain mà trong đó chưa thông tin giao dịch được phát tán lên hệ thống mạng phân tán.

3


Blockchain: Một blockchain hình thành từ một danh sách các block. Một blockchain sẽ luôn giữ nguyên giá trị của nó và không thể thay đổi, đồng nghĩa với việc mỗi block phát sinh được thêm vào blockchain sẽ không thể chỉnh sửa bất kì thông số gì.

4

uối cùng chúng ta cũng đã tạo lập xong toàn bộ model cơ bản trong Blockchain và giờ là lúc để viết mã cho các tính năng cốt lõi của nó.

Triển khai các tính năng lõi của blockchain

Chúng ta sẽ bắt đầu thông qua việc cho phép các block thêm vào thông tin của các giao dịch phát sinh. Và việc đó sẽ được kết thúc bởi hàm `addTransaction` xây dựng trong class Block:

5

Một block được khai thác dựa trên khoá của nó bao gồm các thuộc tính sau:

index: chỉ mục hiện tại của block trong blockchain.

previousHash: chuỗi khoá của block trước đó trong blockchain.

hash: chuỗi khoá của block hiện tại.

nonce: trường dữ liệu 32bit (4 byte) giá trị được đặt sao cho giá trị chuỗi khoá (hash) của block sẽ chứa một dãy các số 0 liên tiếp ở đầu. Các trường hợp còn lại không được phép thay đổi, bởi chúng có một ý nghĩa đã được xác định rõ.

transactions: một danh sách các giao dịch được thêm vào block.

Khoá thuộc tính sử dụng phương thức `get` trong class Block như sau:

6

Tiếp theo chúng ta sẽ chuyển tới class Blockchain. Ở bên dưới đây chúng ta sẽ hoàn thiện class Blockchain.

7

Để sinh ra mã hash SHA256 chúng ta sẽ sử dụng một node package: “js-sha256”. Bạn có thể cài đặt package này thông qua câu lệnh:

$ npm install js-sha256 
Cùng quay lại và thử nghiệm ứng dụng Blockchain của chúng ta thông qua việc thêm vào nó một vài giao dịch:

8

Chúng ta cần khởi tạo block đầu tiên trong Blockchain hay còn được biết tới cái tên genesisBlock. Trong thế giới Bitcoin genesis block bao gồm các phần thưởng cho các thợ đào. Tiếp theo, chúng ta sẽ khai thác một vài block sử dụng phương thức getNextBlock() trong Blockchain. Một lần nữa, các block đã được khai thác chúng sẽ thêm vào các giao dịch và được nối vào blockchain.

Sau đây là video về việc khởi chạy blockchain:

Mã nguồn

Bạn có thể tải mã nguồn của ứng dụng mẫu này tại đây:

Source_Code


Hãy tiếp tục ủng hộ và giữ kết nối với Vnknowledge các bạn nhé:

  • Vnknowledge Page
  • Vnknowledge Youtube
  • Vnknowledge Patreon

Xin cảm ơn các bạn!

Từ khóa: 

blockchain

,

vnknowledge

,

nodejs

,

js

,

javascript

,

blockchain

Bài này bạn đang dùng nodejs mà. Sao lại là javascript được nhỉ. Javascript làm sao có thể chạy thành server??
Trả lời
Bài này bạn đang dùng nodejs mà. Sao lại là javascript được nhỉ. Javascript làm sao có thể chạy thành server??