CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ BLOCKCHAIN 1. Giới thiệu tổng quan về công nghệ Bockchain Blockchain ban đầu được phát minh và thiết kế bởi Satoshi Nakamoto vào năm 2008 và được thực hiện hóa vào năm sau đó với Bitcoin [3] Blockchain là mô hình tính toán mạng lưới, tổ chức theo mô hình phi tập trung, các nút mạng nối nhau từng nhóm. Blockchain có dữ liệu ghi dưới dạng sổ cái phân tán, đồng bộ nhờ cơ chế đồng thuận. Blockchain được đảm bảo an ninh bằng hàm băm mật mã, chữ ký số và cấu trúc lưu trữ móc xích các khối dữ liệu.
Mỗi block chứa đựng các thông tin về thời gian khởi tạo, các thông tin giao dịch và được liên kết với các khối trước đó thông qua con trỏ hash. Blockchain được thiết kế để chống lại sự thay đổi dữ liệu do được thiết kế trên nền tảng dữ liệu phi tập trung. Thông tin các block trong blockchain được đảm bảo toàn vẹn bằng hàm hash và lưu trữ trên tất cả các nút, mỗi nút sẽ chứa thông tin không thể bị thay đổi và chỉ được bổ sung thêm khi có sự đồng thuận của tất cả các nút trong hệ thống. Ngay cả khi nếu một phần của hệ thống blockchain sụp đổ, những máy tính và nút khác sẽ tiếp tục hoạt động để bảo vệ thông tin.1 Mô hình Blockchain e 5 Đặc biệt blockchain có khả năng truyền tải dữ liệu mà không đòi hỏi trung gian để xác nhận thông tin.
Hệ thống blockchain bao gồm nhiều nút độc lập có khả năng xác thực thông tin mà không đòi hỏi "dấu hiệu của niềm tin". Về cơ bản blockchain là một chuỗi các máy tính (mỗi máy tính là một node) mà tất cả các nút này phải chấp thuận một giao dịch (nếu giao dịch đó là hợp lệ) trước khi nó có thể được xác nhận và ghi lại. Với blockchain, ngoài việc có thể trỏ tới block trước đó, mỗi block còn có thể lưu giá trị digest (giá trị hash) của khối được trỏ tới. Thông qua việc kiểm tra giá trị hash, chúng ta có thể nhận dạng khối được trỏ tới có bị thay đổi hay không.
Cấu trúc blockchain như vậy cho phép chúng ta chỉ cần lưu giá trị của con trỏ chỉ tới khối cuối cùng, đồng thời vẫn kiểm soát được nội dung của các khối còn lại không bị thay đổi.2 Các block trong Blockchain (Nguồn internet) Trong hình trên, hash là mã băm của block hiện tại, previous hash là mã băm của block trước. Ví dụ điển hình cho Blockchain đó là Bitcoin. Bitcoin là một tập hợp các khái niệm và công nghệ tạo nên nền tảng của một mạng lưới tiền mật mã. Tính chất của blockchain Về cơ bản, blockchain có các tính chất dưới đây [6]: Không lặp: Cơ chế đồng thuận phi tập trung của bitcoin đảm bảo rằng không có giao dịch nào bị trùng lặp.
e 6 Tính bất biến: Một khi giao dịch được ghi lại trong blockchain và gắn vào các block tiếp theo thì giao dịch trở nên bất biến. Tính bất biến được đảm bảo bởi sức mạnh của năng lực tính toán vì việc viết lại dữ liệu blockchain đòi hỏi chi phí rất lớn cho việc tính toán để tạo ra “Bằng chứng công việc”. Tính trung lập: Mạng bitcoin phi tập trung lan truyền các giao dịch hợp lệ bất kể nguồn gốc hay nội dung của các giao dịch đó. Điều này có nghĩa là bất cứ ai cũng có thể tạo ra một giao dịch hợp lệ với mức chi phí và độ tin cậy phù hợp, giao dịch có thể lan truyền và đưa vào blockchain bất cứ lúc nào.
Ngưỡng thời gian an toàn: Các cơ chế đồng thuận từ chối bất kỳ block nào có nhãn thời gian quá xa trong quá khứ hoặc tương lai. Điều này đảm bảo rằng nhãn thời gian trên các block có thể tin cậy được. Nhãn thời gian của một block có ý nghĩa đảm bảo các giao dịch trong block đó. Tính toàn vẹn: Một giao dịch sẽ được ký bởi SIGHASH_ALL hoặc các phần của giao dịch được ký không thể bị sửa đổi mà không có chữ ký, chính vì vậy đảm bảo giao dịch không bị thay đổi trong quá trình truyền đi 1.
Nguyên lý cấu tạo của Blockchain 1. Cấu trúc giao dịch Giao dịch (Transaction) là một thành phần quan trọng trong Blockchain – Bitcoin. Mọi thành phần khác đều được thiết kế nhằm đảm bảo rằng các giao dịch có thể được tạo ra, lan truyền trên mạng, xác thực và ghi vào sổ cái (blockchain). Giao dịch là cấu trúc dữ liệu mã hóa hóa sự chuyển giao giá trị giữa các đối tượng trong Blockchain.
Mỗi giao dịch là một mục ghi chép công khai trong Blockchain – còn được gọi là sổ cái [4] e 7 Hình 1.3 Cấu trúc giao dịch trong Blockchain (Nguồn dựa trên hình ảnh tại website readthedocs.io) Khi một node hình thành một giao dịch, node đó sẽ gửi giao dịch này tới các node lân cận, từng node trong đó sẽ kiểm tra tính hợp lệ (validate) giao dịch nhận được nếu hợp lệ nó sẽ lưu vào bộ nhớ cục bộ (mempool) và chuyển tiếp giao dịch đó cho những node lân cận của mình, các node lân cận đó lại tiếp tục kiểm tra hợp lệ- lưu vào mempool và chuyển tiếp, cứ như vậy giao dịch được lan truyền đi toàn mạng. Cuối cùng giao dịch sẽ được đóng trong một block nào đó và được đào bởi thợ đào (miner) lúc đó giao dịch mới được xác thực và lưu lại trong sổ cái blockchain. Giao dịch có kích thước khoảng 300-400 bytes (với hệ thống bitcoin). Mỗi một nút trong Blockchain đều phải kiểm tra tính hợp lệ của giao dịch, việc kiểm tra này nhằm nâng cao tính xác thực của chủ sở hữu, tăng tính an toàn cho giao e 8 dịch.
Thường trong blockchain sẽ có 2 loại giao dịch đó là Coinbase Transaction và Regular Transaction. Cấu trúc của Block Mỗi block trong blockchain được xác định bằng một mã băm do thuật toán băm mật mã SHA256 tạo ra trong tiêu đề block (block header). Mỗi block đều chứa mã băm của block trước đó trong tiêu đề của chính nó. Chuỗi các mã băm liên kết từng block tới block trước tạo thành một chuỗi mắt xích đi ngược trở về cho tới block được tạo ra đầu tiên, gọi là block gốc (genesis block).
Mỗi block chỉ có một block trỏ đến, có thể có trường hợp rẽ nhánh, 2 block cùng trỏ đến 1 block trước nhưng đến một thời điểm có 1 nhánh dài hơn và khi đó nhánh ngắn hơn sẽ phải xóa bỏ và dữ liệu trên nhánh này phải rollback trở lại.4 Liên kết các block Block bao gồm một tiêu đề để chứa dữ liệu, theo sau là một danh sách giao dịch. Tiêu đề block có kích thước cố định 80 byte, trong khi một giao dịch trung bình chứa e 9 tối thiểu 250 byte và block trung bình chứa hơn 500 giao dịch.5 Cấu trúc block a. Tiêu đề của Block Hình 1.6 Block header Tiêu đề của block bao gồm 3 bộ dữ liệu mô tả. Đầu tiên là một tham chiếu tới một mã băm của block kế trước, liên kết block này với block kế trước trong một mạng blockchain.
Bộ siêu dữ liệu thứ hai, được đặt tên là độ khó (difficulty), nhãn thời gian (timestamp), và số nonce (số dùng một lần), số này chính là thông số quan trọng của quá trình miner (đào). Phần dữ liệu thứ 3 là gốc cây merkle, một cấu trúc dữ liệu được sử dụng để ánh xạ toàn bộ giao dịch trong một block. Định danh block: e 10 Định danh block chính là mã băm mật mã của nó, là một vân tay số được tạo ra bằng cách băm tiêu đề của block hai lần qua thuật toán SHA256. Mã băm 32 byte kết quả được gọi là mã băm block – mã băm tiêu đề block.
Mã băm của một block luôn luôn xác định một block đơn lẻ duy nhất và rõ ràng, có thể được tạo ra một cách độc lập bởi bất kỳ nút nào đơn giản bằng cách băm tiêu đề block. Một cách thứ hai để xác định một block là bằng vị trí của nó trong blockchain, được gọi là chiều cao block. Block đầu tiên từng được tạo ra có chiều cao là 0. Cấu trúc mạng blockchain và mô hình mạng ngang hàng P2P a.
Mô hình ngang hàng P2P: Mạng ngang hàng Peer-2-peer bao gồm rất nhiều các nút mạng liên kết trực tiếp với nhau, trong đó mỗi nút mạng có vai trò và vị trí như nhau. Một ví dụ về ứng dụng của mô hình này là Bittorrent, giao thức chia sẻ dữ liệu qua Internet ngày nay, hoặc Napster ứng dụng chia sẻ nhạc trực tuyến những năm 1990 Mạng ngang hàng cho phép hàng triệu người sử dụng có thể kết nối với nhau, hình thành một khối khổng lồ với khả năng tính toán và băng thông của tất cả các mạng gộp lại.7 Mô hình tính toán P2P Trong mạng P2P, do không tồn tại một đơn vị trung tâm kiểm soát thông tin, độ tin cậy của mạng này phụ thuộc vào độ tin cậy của từng nốt mạng. Do đó, vấn đề đặt ra phải có một giải pháp chia sẻ thông tin đảm bảo được tính bền vững của các giao dịch và quản lý dữ liệu ngay cả khi không có được sự trung thực của tất cả các nốt mạng. Blockchain được đề cập đến như một giải pháp giải quyết việc triển khai mô e 11 hình ngang hàng kết hợp với các giải pháp ký số nhằm hướng tới khả năng chia sẻ khổng lồ và xác thực.
Cấu trúc mạng Blockchain: Mô hình tính toán P2P trong công nghệ blockchain được ứng dụng một cách khoa học. Bất cứ máy tính nào kết nối với blockchain Bitcoin được coi là một node. Bất kỳ các node nào thực thi đầy đủ các quy tắc của Bitcoin được gọi là “full nodes” (nút đầy đủ). Hầu hết các nodes trên mạng là các nodes nhỏ, nhưng các nút đầy đủ mới là xương sống của mạng lưới.
Nút đầy đủ tải về mọi khối và giao dịch, kiểm tra chúng theo nguyên tắc đồng thuận cốt lõi của Blockchain. Mỗi node xác minh mỗi giao dịch và mỗi khối nó nhận được trước khi chuyển nó sang các node khác. Nếu một giao dịch hoặc một khối vi phạm các quy tắc đồng thuận (có nghĩa là giao dịch hoặc khối đó được 1 node xác minh là không hợp lệ), nó hoàn toàn bị từ chối khỏi mạng, ngay cả khi mọi node khác trên mạng cho rằng nó là hợp lệ. Đây là một đặc tính quan trọng nhất của các nodes: Chúng thực hiện đúng nguyên tắc dù có bất cứ chuyện gì xảy ra.
Nếu giao dịch (hoặc khối) là hợp lệ, node sẽ lưu trữ chúng lại và chuyển đi tất cả các node khác trong mạng lưới kết nối với node đó.