Cấu trúc dữ liệu Blockchain

Một phần của tài liệu Xây dựng game nuôi thú ảo ứng dụng công nghệ blockchain (Trang 37 - 43)

CHƯƠNG 3 CƠ SỞ LÝ THUYẾT

3.1. Blockchain:

3.1.2. Cấu trúc dữ liệu Blockchain

3.1.2.1. Block:

Blockchain được xây dựng theo cấu trúc chuỗi (chain), có đơn vị là khối (block). Cấu trúc của khối trên các mạng khác nhau sẽ khác nhau, nhưng cơ bản có một số điểm chung. Lấy Bitcoin là ví dụ, mỗi khối trong Bitcoin sẽ có hai phần chính là tiêu đề (header) và nội dung khối (body). Phần nội dung chứa thông tin các giao dịch diễn ra được lưu trong khối đó. Phần tiêu để chứa một số trường cần thiết.

4 bytes Block Size Kích thước của khối 80 bytes Block Header Một số trường trong header 1 – 9 bytes (Tùy biến

thể)

Transaction Counter

Số lượng giao dịch trong khối

Variable Transactions Thông tin giao dịch trong khối

Bảng 1. Bảng các thuộc tính của một khối

Cụ thể, Phần tiêu đề chứa version number, timestamp, hash của khối trước đó (Previous Block Hash), random number (Nonce), hash của Merkle Root (Merkle Root), độ khó đạt được của khối (Difficult Target).

Size Field Description

4 bytes Version Số phiên bản để theo dõi việc nâng cấp phần mềm/ giao thức

32 bytes

Previous Block Hash

Tham chiếu đến hash của khối trước đó

32 bytes

Merkle Root Hash gốc của cây merkle trong các giao dịch của khối này

4 bytes Timestamp Thời gian khối được tạo

4 bytes Difficult Target Độ khó target của thuật tốn PoW cho khối này

4 bytes Nonce Chỉ số sử dụng cho thuật toán PoW

Hình 4. Hình ảnh cấu trúc của một khối

3.1.2.2. SHA-256:

SHA (Secure Hash Algorithm) bao gồm 5 thuật toán được chấp nhận bởi FIPS – Tiêu chuẩn Xử lý Thơng tin Liên bang, dùng để mã hóa dữ liệu nhất định thành một đoạn dữ liệu có chiều dài không đổi với xác suất khác biệt cao. 5 thuật tốn đó bao gồm: SHA-1 (trả lại kết quả dài 160 bit), SHA-224 (trả lại kết quả dài 224 bit), SHA- 256 (trả lại kết quả dài 256 bit), SHA-384 (trả lại kết quả dài 384 bit), SHA-512 (trả lại kết quả dài 512 bit).

Trong đó, SHA-256 (Secure Hash Algorithm) được dùng phổ biến trong mạng Blockchain, dùng để tạo ra các hàm băm không thể đảo ngược và duy nhất.

3.1.2.3. Merkle Root:

Merkle tree lần đầu được đề xuất bởi Ralph Merkle năm 1979, trong một bài báo học thuật “A Certified Digital Signature” với nội dung là bản thiết kế một quy trình xác minh dữ liệu cho phép máy tính thực hiện cơng việc của mình nhanh hơn nhiều so với trước đây. Trong mạng Blockchain, Bitcoin sử dụng cây Merkle nhị phân đơn giản nhất. Mỗi node trong cây lưu trữ giá trị băm (thơng qua thuật tốn SHA-256) của dữ liệu giao dịch.

Hình 6. Hình ảnh minh họa cho Merkle Root

Trong ví dụ trên, khối tiếp nhận lưu trữ 4 giao dịch TX1, TX2, TX3, TX4. Các giao dịch sẽ được băm ra (theo giải thuật SHA-256) và lưu trữ trong các node lá H1, H2, H3, H4. Các node H1, H2 (tương tự H3 và H4) sẽ được gộp lại và băm ra một lần nữa được lưu trữ trong node cha H1,2 (H3,4). Cuối cùng hai node H1,2 và H3,4 sẽ gộp lại và băm lần cuối, giá trị được lưu trong H1,2,3,4 - đây cũng là Merkle root, là giá trị đại diện cho tính tồn vẹn của các giao dịch bên trong.

3.1.2.4. Difficult Target và Nonce:

Difficulty Target là thước đo mức độ khó khăn khi khai thác một khối, hay để tìm giá trị hàm băm sao cho nhỏ hơn mục tiêu chỉ định (Target). Độ khó cao có nghĩa là sẽ cần nhiều sức mạnh tính tốn hơn để khai thác cùng một số khối. Việc điều chỉnh độ khó liên quan trực tiếp đến tổng cơng suất khai thác ước tính được ước tính trong biểu đồ Total Hash Rate (TH/s). Khi số lượng thợ đào càng đơng thì độ khó sẽ càng tăng, việc điều chỉnh này đảm bảo sao cho thời gian sinh khối mới xoay quanh 10 phút. Ngoài ra, cứ 2016 khối mới được tạo thì độ khó sẽ lại thay đổi (Blockchain, 2021).

Hình 7. Hình ảnh minh họa cho Difficult Targer

Nonce đề cập đến như là giá trị chỉ có thể được sử dụng một lần. Nonce thường được sử dụng trên các giao thức xác thực và các hàm băm mật mã. Trong bối cảnh của công nghệ blockchain, nonce đề cập đến như một số ngẫu nhiên được sử dụng làm bộ đếm trong quá trình khai thác (Binance Academy, Nonce).

Những thợ đào cần phải thử và tìm một giá trị nonce hợp lệ để tính tốn hàm băm của khối sao cho đáp ứng các yêu cầu nhất định (tức là giá trị hash bắt đầu bằng một số lượng số 0 nhất định). Khi tìm được một giá trị nonce thích hợp để băm khối thỏa mãn yêu cầu, thợ đào sẽ được quyền thêm khối tiếp theo vào Blockchain như là một

phần thưởng. Nếu tìm nonce khơng hợp lệ, thợ đào sẽ tiếp tục thử với các giá trị nonce khác. Khi một khối mới được khai thác và xác thực thành cơng, q trình này sẽ bắt đầu lại.

Hình 8. Hình ảnh minh họa cho Nonce

3.1.2.5. Chain (Chuỗi):

Trong Blockchain, các khối sẽ được liên kết với nhau thành một chuỗi thông qua Previous Hash trong header. Với khối đầu tiên được gọi là “Genesis Block” với Previous Hash được gán mặc định là 0.

Một phần của tài liệu Xây dựng game nuôi thú ảo ứng dụng công nghệ blockchain (Trang 37 - 43)

Tải bản đầy đủ (PDF)

(141 trang)