Professional Documents
Culture Documents
Blockchain Research
Blockchain Research
Về mặt kỹ thuật, Blockchain là một database phân tán (phi tập trung) mà trong đó các dữ liệu được lưu trữ dưới
dạng các blocks. Body của một block mang theo các transactions (giao dịch) trên dữ liệu. Block được kết nối với
nhau theo dạng linked list (danh sách liên kết) dưới dạng mã hóa. Mã hóa của một block bao gồm cả địa chỉ của
block trước và body của chính nó nên khi một block được add vào, nó không thể thay đổi cũng như tái sắp xếp.
Ý tưởng đằng sau công nghệ blockchain được mô tả từ năm 1991, khi các nhà nghiên cứu Stuart Haber và W.
Scott Stornetta giới thiệu một giải pháp thực tế về mặt tính toán để đánh dấu thời gian các văn bản số, để chúng
không bị đề lùi ngày về trước hoặc can thiệp vào. Nhưng phải đến những năm gần đây, Blockchain mới thực sự
phổ biến và được nhiều người nhắc đến ở Việt Nam.
Mỗi block trong Blockchain bao gồm các thành phần sau:
Giá trị băm (Hash) sẽ băm toàn bộ các thông tin cần thiết như timestamp, previous hash, index, data, nonce.
1. Tính kháng tiền ảnh (tính một chiều): cho trước giá trị băm y, về mặt tính toán, không thể tìm ngược ra giá
trị x sao cho: H (x) = y.
2. Tính kháng va chạm yếu: cho trước đầu vào x và hàm băm H , về mặt tính toán, không thể tìm được giá trị
x ≠ x nào sao cho: H (x ) = H (x) .
′ ′
3. Tính kháng va chạm mạnh: về mặt tính toán không thể nào tìm được cặp (x, x ′ ) nào sao cho:
H (x) = H (x ) và x ≠ x .
′ ′
Ngoài ra còn có tính chất pseudorandom (giả ngẫu nhiên): với hai đầu vào x 1 , x 2 chỉ khác nhau 1 bit thì đầu ra
H (x 1 ), H (x 2 ) không có sự tương quan với nhau.
Một số hàm băm phổ biến: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA-3... Theo như các nhà toán
học thì hàm băm SHA-256 (hiện đang được sử dụng nhiều trong Blockchain) có thể bị phá giải trong vài
năm nữa bởi vì sự phát triển của siêu máy tính lượng tử.
Các hàm băm thường được dùng kết hợp với các lược đồ chữ kí số để đảm bảo tính xác thực và toàn vẹn
dữ liệu.
Một lớp các hàm băm riêng được gọi là mã xác thực thông điệp (MAC) cho phép xác thực thông điệp bằng
các kĩ thuật mã đối xứng.
Hai user là A và B muốn giao dịch với nhau, mỗi người sẽ có hai khóa là khóa công khai và khóa bí mật được
tạo sau thuật toán sinh khóa.
1. Người gửi A sử dụng khóa công khai của người nhận B để mã hóa thông điệp.
2. A dùng một hàm băm để băm thông điệp vừa mã hóa thành một giá trị hash.
3. A tiếp tục mã hoá giá trị hash vừa tính bằng khóa bí mật của A để tạo thành một chữ ký số.
4. A gắn kèm chữ ký số này với bản mã thông điệp sau bước 1 và gửi đi.
5. Thông điệp mà A gửi sẽ được truyền đến mining pool và sau đó được miner xác thực xem chữ ký số đó có
phải là của người A không bằng cách sử dụng khóa công khai của người A. Nếu đúng là người A thực hiện
thì miner mới ghi giao dịch vào trong sổ cái blockchain.
6. Sau đó, người nhận B sẽ dùng khóa bí mật của mình để giải mã thông điệp trong giao dịch lưu trong sổ cái
và đó trùng khớp với thông điệp gốc mà người A muốn gửi.
Ngoài ra, chữ ký số có thể được gắn thêm một nhãn thời gian: sau một thời gian nhất định quy định bởi nhãn
đó, chữ ký gốc sẽ không còn hiệu lực, đồng thời nhãn thời gian cũng là công cụ để xác định thời điểm ký.
Hình trên là ví dụ nhỏ minh họa cách thức hoạt động của cây Merkle trong một block:
Khối N có 4 giao dịch lần lượt là: T 1, T 2, T 3, T 4 truyền qua hàm H ash(x) được các giá trị băm tương ứng
H 1, H 2, H 3, H 4 .
Các giá trị băm là lá được ghép cặp từ trái qua phải H 1 với H 2, H 3 với H 4 và cho ra hai giá trị băm là
H 12 = H ash(H 1 + H 2) và H 34 = H ash(H 3 + H 4) .
Tiếp tụp ghép cặp từng tầng như vậy đến khi tạo được nút gốc của cây Merkle là:
H 1234 = H ash(H 12 + H 34)
Nói một cách khái quát: một cây Merkle được tạo ra bằng cách chia dữ liệu thành nhiều phần và là lá của
cây, sau đó được băm (hash) nhiều lần để tạo thành Merkle Root. Tiếp đó, người dùng có thể xác minh một
cách hiệu quả xem có vấn đề gì xảy ra với một phần dữ liệu hay không.
Vây tại sao cấu trúc cây Merkle lại được sử dụng trong Blockchain mà không phải là một loại cấu trúc dữ liệu
khác?
Mọi yêu cầu xác minh trên Bitcoin sẽ yêu cầu các gói thông tin siêu khổng lồ vì để xác thực dữ liệu, chúng ta
cần phải có chính dữ liệu đó. Máy tính được sử dụng để xác thực sẽ cần tiêu tốn nhiều năng lượng xử lý để so
sánh các sổ cái nhằm đảm bảo rằng không có thay đổi nào. Nếu có bất kỳ sự khác biệt nào giữa các sổ cái, nó
có thể ảnh hưởng đến tính bảo mật của mạng.
Cây Merkle giải quyết vấn đề này. Họ băm các bản ghi trong sổ cái, giúp tách biệt hiệu quả bằng chứng dữ liệu
khỏi chính dữ liệu. Việc chứng minh một giao dịch hợp lệ chỉ liên quan đến việc gửi một lượng nhỏ thông tin qua
mạng. Ngoài ra, nó cho phép bạn chứng minh rằng cả hai phiên bản của sổ cái đều giống nhau về sức mạnh
tính toán và băng thông mạng.
Sau Bitcoin, các đồng tiền mã hóa lần lượt được ra đời với cấu trúc phức tạp hơn ý tưởng ban đầu về cây
Merkle. Chẳng hạn như Ethereum, Ethereum sử dụng một phiên bản phức tạp hơn là cây Merkle Patricia. Cấu
trúc này có sự kết hợp của 3 cây Merkle riêng biệt sử dụng cho 3 đối tượng khác nhau trong các nền tảng
Ethereum.
stateRoot: đại diện cho trạng thái của khối, cập nhật theo thời gian thực.
ReceiptsRoot: chứa các biên lai giao dịch trong khối
Transaction Root: chưa toàn bộ các giao dịch.
1. Xác thực tính toàn vẹn của dữ liệu: chứng minh cả tính toàn vẹn và tính hợp lệ của dữ liệu.
2. Tốn ít dung lượng lưu trữ: So với các cấu trúc dữ liệu khác, cấu trúc Merkle Tree chiếm rất ít dung lượng
lưu trữ.
3. Dữ liệu được sắp xếp và cấu trúc để xác minh dễ dàng: Cây Merkle có thể được chia thành các phần dữ
liệu nhỏ để xác minh. Quá trình ghép nối các giá trị hash này được lặp lại cho đến khi tạo ra giá trị hash
cuối cùng. Giá trị hash cuối cùng cung cấp một bản tóm tắt về tất cả các giao dịch có trong block.
4. Xác minh thanh toán đơn giản hóa (SPV) - một cách xác minh giao dịch trong một khối mà không cần tải
xuống toàn bộ khối nên nhanh chóng và đơn giản.
Điều cần thiết đối với công nghệ Blockchain là một log có thể được chứng minh là hoàn chỉnh và nhất quán. Cây
Merkle giúp xác thực rằng các phiên bản sau của log bao gồm mọi thứ từ phiên bản cũ hơn. Cây Merkle cũng
đảm bảo rằng tất cả dữ liệu được ghi lại và trình bày theo thứ tự thời gian. Việc chứng minh rằng log nhất quán
có thể khó khăn, vì nó yêu cầu chứng minh rằng không có hồ sơ nào trước đó bị thay đổi, thêm vào hoặc giả
mạo. Ngoài ra, cũng cần phải chỉ ra rằng log chưa bao giờ được phân nhánh hoặc phân nhánh.
Cây Merkle mang lại lợi ích cho cả user và miner trên chuỗi khối. User có thể xác minh các phần riêng lẻ của
khối và cũng có thể kiểm tra các giao dịch bằng cách sử dụng hàm băm từ các nhánh khác của Cây Merkle.
Miner có thể tính toán giá trị băm dần dần khi họ nhận được giao dịch từ các đồng nghiệp của mình.
Để giải quyết cho thực trạng này thì ứng dụng sử dụng Non-fungible token (NFT) trong blockchain để xây dựng
nên những sản phẩm không thể bị sao chép, độc nhất và có chữ ký xác thực của chính chủ tác giả trên sản
phẩm.
NFT là một tài sản ảo đại diện cho các sản phẩm trong thế giới thực như nghệ thuật, âm nhạc, vật phẩm game,
và video. NFT được mua bán trực tuyến dưới hình thức thanh toán bằng tiền mã hóa (cryptocurrency).
Mỗi NFT có một chữ ký kỹ thuật số do đó NFT không thể thay thế được (non-fungible), nghĩa là không thể trao
đổi một NFT với một NFT khác.Người mua cũng có được quyền sở hữu độc quyền. Mỗi NFT chỉ có thể có một
chủ sở hữu tại một thời điểm. Nhờ có dữ liệu độc nhất vô nhị, NFT dễ dàng xác minh quyền sở hữu và chuyển
giao các token giữa các chủ sở hữu. Chủ sở hữu hay nhà sáng lập cũng có thể lưu trữ các thông tin cụ thể dưới
dạng các NFT.
Mặc dù chỉ mới xuất hiện hồi năm 2014, NFTs hiện đang được nhiều người biết đến bởi chúng đang ngày một
trở thành cách phổ biến để mua bán các tác phẩm nghệ thuật số. Ngày càng nhiều cá nhân và công ty đang bắt
đầu khởi nghiệp bằng cách bán những NFT tự tạo ra.
Vậy nếu muốn sở hữu một NFT thì phải chuẩn bị gì?
Trước hết, chúng ta cần có một ví điện tử cho phép lưu trữ
NFT, tiền mã hóa và một chút tiền mã hóa (tùy theo loại tiền mà người bán yêu cầu). Hiện nay, chúng ta có thể
mua tiền mã hóa bằng thẻ tín dụng trên các nền tảng như Coinbase, Kraken, eToro và thậm chí cả PayPal và
Robinhood. Sau đó, chúng ta sẽ có thể chuyển tiền mã hóa từ sàn giao dịch đó sang ví điện tử của mình.
4. Kết luận:
Với những tiềm năng hiện tại, công nghệ Blockchain đang dần trở thành xu hướng công nghệ và thay đổi kinh tế
và xã hội trong tương lai. Và việc đào tạo các Blockchain engineer đang là xu hướng và cũng dần trở nên cần
thiết trong các trường đào tạo về công nghệ thông tin. Vì vậy, ngay khi định hướng hiện tại của bản thân không
theo hướng Blockchain, những kiến thức cơ bản về lĩnh vực này là không thừa và cần được nắm rõ.
Công nghệ cây Merkle rất hữu ích trong các ứng dụng khoa học máy tính đặc biệt trong lĩnh vực blockchain vì
trong các hệ thống phân tán, cây Merkle cho phép dễ dàng xác minh thông tin mà không làm ngập mạng lưới
với dữ liệu không cần thiết. Có thể nói nếu không có cây Merkle thì Bitcoin hay các đồng tiền mã hóa khác khó
mà có thể tiện ích được như bây giờ. Tuy ý tưởng cây Merkle đã có từ rất lâu nhưng việc nó vẫn được sử dụng
trong một công nghệ mới như thế này cũng đã khẳng định được tầm quan trọng và những bước tiến trong công
nghệ mà nó tạo ra. Do vậy, để phát triển thêm về công nghệ Blockchain thì những kỹ sư lập trình cần có hiểu
biết về cấu trúc cây Merkle.
Được tham gia khóa học ở VIASM là một vinh dự và cũng là một trải nghiệm đầy thú vị của không chỉ em mà
còn nhiều bạn khác. Các bài giảng rất thú vị và bổ ích đến từ các diễn giả là các chuyên gia trong lĩnh vực
Blockchain trong và ngoài nước. Ngoài ra, các chủ đề của các diễn giả cũng rất đa dạng, đến từ nhiều góc nhìn:
góc nhìn từ tin học, toán học, kinh tế, ...
Trong các chuỗi bài giảng, có một bài giảng về ứng dụng của Blockchain trong quản lý chứng chỉ đào tạo của
một lab trong nước. Theo em nhớ thì họ có dự định xa hơn đó là muốn hợp tác cùng Bộ Giáo dục và Đào tạo
Việt Nam. Giáo sư David Trần cho rằng điều khiến việc này khó thực hiện được đó chính là tiền mã hóa không
được coi là tài sản theo Bộ luật Dân sự năm 2015 và cũng không được coi là hàng hóa theo quy định của pháp
luật thương mại. Việc một tổ chức cấp Trung ương sử dụng hay trao đổi một sản phẩm chưa được pháp luật
công nhận là không thể xảy ra. Để tiền mã hóa có thể được pháp luật công nhận nói riêng và blockchain có thể
phát triển mạnh hơn ở Việt Nam trong tương lai nói chung thì cần những bước tiến xa hơn về bảo mật, khắc
phục những nhược điểm còn tồn đọng và đẩy mạnh phát triển thêm các ứng dụng trong đời sống của
Blockchain.