GIỚI THIỆU CÔNG NGHỆ BLOCKCHAIN
Cơ chế hoạt động của Blockchain: một nút trong mạng tạo một giao dịch và ký giao dịch này bằng khóa riêng của nút. Tiếp theo giao dịch sẽ được quảng bá tới các nút trong mạng dựa trên các thiết lập có sẵn. Các nút trong mạng Blockchain sau khi nhận được giao dịch sẽ xác thực tính hợp lệ của giao dịch bằng cách sử dụng thuật toán đồng thuận. Có rất nhiều thuật toán đồng thuận như Proof of work, Proof of Stake, Delegated proof of Stake... và mỗi thuật toán có cơ chế hoạt động khác nhau. Sau khi được xác nhận hợp lệ, khối mới chứa giao dịch được tạo, được thêm vào sổ cái và liên kết với khối trước đó bằng mã băm. Đồng thời khối này cũng được phân phối tới toàn bộ các nút trong mạng Blockchain để xác nhận và cập nhật vào sổ cái phân tán trên mỗi nút.
Sự khác nhau cơ bản về kiến trúc giữa một ứng dụng web truyền thống và ứng dụng phi tập trung (Decentralized application - Dapp) [2] được xây dựng trên nền tảng Blockchain. Bài báo này tác giả sử dụng kiến trúc của public Blockchain Ethereum.
Giao dịch (Transaction) là đơn vị cơ bản của Blockchain. Một giao dịch thể hiện sự chuyển giao giá trị từ địa chỉ này sang địa chỉ khác.
Hợp đồng thông minh (Smart contract) là các chương trình chạy trên Blockchain bao gồm các thỏa thuận, các quy tắc nghiệp vụ chi phối việc thực hiện giao dịch và thực thi tự động khi các điều kiện được đáp ứng.
Khối (Block) bao gồm phần header và body. Phần Header của mỗi khối bao gồm các thành phần như giá trị băm của header khối trước đó, dấu thời gian, số nonce, giá trị merkle root,... Phần Body của khối chứa các giao dịch [1].
ỨNG DỤNG BLOCKCHAIN TRONG GIÁO DỤC ĐẠI HỌC
Phân tích hiện trạng và lựa chọn giải pháp
Chuyển đổi số là một phần tất yếu trong quá trình phát triển của giáo dục đại học. Trong đó ứng dụng công nghệ Blockchain để đảm bảo tính toàn vẹn, minh bạch cũng đang được quan tâm. Hiện nay, các trường đại học hầu như đang sử dụng các hệ quản trị cơ sở dữ liệu truyền thống để lưu trữ dữ liệu học tập của sinh viên. Tuy nhiên nếu ứng dụng công nghệ Blockchain để lưu trữ, quản lý dữ liệu sinh viên sẽ mang lại một số lợi ích sau so với cách lưu trữ truyền thống:
Cung cấp thông tin tin cậy của sinh viên như điểm số trong suốt quá trình học, điều này sẽ đảm bảo công khai minh bạch cho tất cả các bên liên quan, gồm sinh viên, giảng viên cũng như cho các phòng, ban chức năng.
- Tạo một cổng thông tin tra cứu thông tin về điểm, văn bằng, chứng chỉ, đề tài nghiên cứu trong quá trình học của sinh viên một cách tin cậy, xác thực giữa trường học và doanh nghiệp do dữ liệu không thể làm giả, đồng thời giảm bớt các thủ tục hành chính rườm rà.
- Giảm thiểu đáng kể rủi ro về mất dữ liệu do đặc tính của Blockchain là các bản sao của dữ liệu sẽ được lưu trên nhiều nút phân tán.
Có thể thấy rằng dữ liệu sinh viên cần phải do bên tin cậy nhập vào hệ thống lưu trữ, năng lực tính toán của các nút trong mạng không cần quá mạnh, không yêu cầu quá nhiều nút trong mạng. Vì vậy cần phải xây dựng một mạng được quản trị, vận hành mà trong đó các bên tham gia phải tin cậy lẫn nhau nhưng vẫn giữ được những đặc tính của công nghệ Blockchain. Do đó cần phải lựa chọn ứng dụng loại Blockchain đáp ứng được nhu cầu này nên tác giả lựa chọn ứng dụng private Blockchain. Phần tiếp theo tác giả sẽ trình bày chi tiết về nền tảng private Blockchain Hyperledger Fabric đã được lựa chọn và đưa ra mô hình đề xuất để triển khai ứng dụng Blockchain vào quản lý dữ liệu sinh viên.
Nền tảng Hyperledger Fabric
Hyperledger Fabric là nền tảng được phát triển chính thức bởi IBM và Digital Asset. Hyperledger Fabric là một mạng Blockchain phân quyền và có cơ chế đồng thuận linh hoạt. Khác với public Blockchain, Hyperledger Fabric có các mô-đun như Membership service provider, Peer, Ledger, Chaincode, Ordering service với các chức năng riêng biệt để giúp hệ thống Blockchain hoạt động. Đối với mạng public Blockchain là bất kỳ nút nào cũng có thể tham gia vào quá trình đồng thuận, trong mạng Blockchain dựa trên nền tảng Hyperledger Fabric các nút orderer sẽ thực hiện việc đồng thuận trên mạng. Từ Hyperledger Fabric phiên bản 2.x sẽ chỉ sử dụng cơ chế đồng thuận Raft. Trong cơ chế đồng thuận này mỗi nút Orderer sẽ có 3 trạng thái Leader, Candidate, Follower. Một nút có thể trở thành Leader nếu nhận được đa số phiếu bầu từ đa số nút Follower trong quá trình bầu Leader.
Hai quá trình của cơ chế đồng thuận
Quá trình bầu cử Leader [3]: Raft có một giá trị thời gian ngẫu nhiên trong khoảng từ 150ms đến 300ms được gọi là election timeout để kiểm soát các cuộc bầu cử. Sau khoảng thời gian election timeout các Follower không nhận được thông báo heartbeat từ Leader thì Follower sẽ tự nâng hạng lên thành Candidate, tự bầu cho chính mình và sẽ gửi yêu cầu bầu cử tới các nút khác. Nếu nút nhận được chưa bỏ phiếu trong nhiệm kỳ này thì nút sẽ bỏ phiếu cho Candidate và đặt lại thời gian chờ bầu cử. Mỗi một nút sẽ bỏ phiếu cho một ứng cử viên trong một thời hạn nhất định trên cơ sở yêu cầu đến trước bỏ phiếu trước. Một Candidate có đa số phiếu bầu sẽ trở thành Leader. Leader này sẽ định kỳ gửi thông báo heartbeat tới Follower để thiết lập và duy trì quyền hạn. Nhiệm kỳ bầu cử này sẽ tiếp tục đến khi một Follower ngừng nhận được thông báo này trong khoảng thời gian chờ selection timout và trở thành Candidate.
Quá trình sao chép bản ghi [3]: Tất cả những thay đổi trong hệ thống hiện tại đều phải thông qua Leader. Mỗi thay đổi được thêm vào nút dưới dạng bản ghi.
Bản ghi này chưa được xác nhận nên sẽ không làm thay đổi giá trị của nút. Để bản ghi này được xác nhận thì Leader cần gửi các bản ghi này đến các nút Follower. Thay đổi được xác nhận khi đa số Follower nhận được nó. Lúc này bản ghi sẽ được xác nhận trên nút Leader và cập nhật giá trị của nút. Leader sẽ thông báo cho các Follower bản ghi đã được xác nhận và trạng thái của hệ thống được thống nhất.
Sổ cái trong mạng Fabric được chia làm hai phần là World State và Blockchain. World State là một hệ cơ sở dữ liệu lưu trữ trạng thái hiện tại của dữ liệu. Khi một giao dịch làm thay đổi dữ liệu trên Blockchain được xác minh là hợp lệ, dữ liệu mới sẽ được cập nhật lên World State. Dữ liệu sẽ được lưu trữ kèm trường version tương ứng với lịch sử cập nhật của Blockchain để có thể theo dõi sự thay đổi của dữ liệu. Phần Blockchain sẽ lưu lại toàn bộ lịch sử giao dịch và các thay đổi dẫn đến giá trị hiện tại được lưu trữ ở World State.
Cơ chế hoạt động của Hyperledger Fabric
Có hai loại giao dịch xảy ra trong mạng Blockchains đó là truy vấn giao dịch và cập nhật giao dịch. Đối với các truy vấn giao dịch các nút trong mạng có thể gọi chaincode để truy vấn vào sổ cái và trả về giá trị mà người sử dụng mong muốn. Tuy nhiên đối với các cập nhật giao dịch cần phải có sự đồng thuận của các nút trong mạng. Cơ chế hoạt động trong quá trình cập nhật giao dịch gồm 3 giai đoạn [3]:
Giai đoạn 1 đề xuất giao dịch: Khi người dùng tương tác qua các ứng dụng sẽ tạo ra một đề xuất giao dịch và gửi tới tất cả các nút có chức năng xác thực giao dịch. Các nút này sẽ thực thi độc lập một chaincode sử dụng đề xuất giao dịch nhận được từ ứng dụng làm đầu vào để tạo ra một phản hồi gửi lại cho ứng dụng. Các nút này sẽ không áp dụng bản cập nhật này cho sổ cái mà chỉ ký số giao dịch bằng khóa riêng của nó và gửi lại cho ứng dụng. Khi ứng dụng đã nhận đủ số lượng đề xuất đã được ký (đa số các nút) thì giai đoạn này sẽ hoàn tất.
Giai đoạn 2 sắp xếp và đóng gói các giao dịch thành các khối: Trong giai đoạn này các ứng dụng sẽ gửi các giao dịch có chứa phản hồi nhận được trong giai đoạn 1 cho nút Leader Orderer. Và tiếp theo sẽ thực hiện quá trình đồng thuận (đã trình bày ở trên). Nút này sẽ sắp xếp các giao dịch theo một trình tự nhất định và đóng gói thành các khối.
Giai đoạn 3 xác thực và thêm giao dịch vào khối: Các nút Orderer sẽ phân phối khối tới các nút kết nối với nó. Các nút này sẽ xử lý giao dịch một cách độc lập theo trình tự xem các giao dịch này đã được xác nhận bởi các nút được yêu cầu trong chính sách định trước chưa? Kiểm tra tính nhất quán bằng cách kiểm tra trạng thái hiện tại của sổ cái có tương thích với trạng thái của sổ cái sau khi bản cập nhật được thêm vào. Sau khi nút xác minh thành công sẽ cập nhật sổ cái. Các giao dịch không thành công sẽ không được áp dụng cho sổ cái, tuy nhiên chúng vẫn được giữ lại để phục vụ cho mục đích kiểm toán nhưng được thêm thông tin để thể hiện việc giao dịch không hợp lệ.
Đề xuất mô hình
Hệ thống sẽ được chia làm 3 phần chính:
- Phần client: người sử dụng sẽ sử dụng web browser để tương tác với hệ thống. Vue.js framework được sử dụng để xây dựng giao diện người dùng.
- Phần máy chủ trung gian sẽ xử lý các tác vụ của người dùng, gọi các chaincode trong mạng Blockchain, chứa các thông tin kết nối đến CA, kênh, nút trong Hyperledger Fabric sử dụng Fabric SDK.
Phần cơ sở dữ liệu: là hệ thống Hyperledger Fabric. Trong mô hình đề xuất hệ thống Fabric bao gồm 03 nút có chức năng xác thực, 03 nút Orderer tham gia vào quá trình đồng thuận và 01 nút chỉ có chức năng lưu trữ sổ cái. Các nút này có thể đặt tại các phòng ban chức năng như phòng đào tạo, phòng khảo thí, phòng giáo vụ... 01 máy chủ CA có chức năng định danh cho toàn bộ các nút, kênh tham gia vào hệ thống Blockchain. Mỗi nút này đều sẽ được cài đặt mô-đun Local Membership service provider để xác định quyền của các nút và mô-đun này cũng chứa khóa công khai của các nút khác để xác minh danh tính và tính toàn vẹn của dữ liệu nhận được. Các nút này sẽ cùng nằm trên một kênh do cùng chia sẻ một số cái chứa dữ liệu học tập của sinh viên. Mỗi nút đều sẽ lưu trữ một bản sao của sổ cái (Lsv) và một chaincode (Ssv) có chức năng cập nhật dữ liệu sinh viên nếu hợp lệ. Dữ liệu có thể được nhập vào từ người dùng hoặc chuyển từ các hệ thống phần mềm hỗ trợ thi, kiểm tra của sinh viên (việc này cần phải có giải pháp hỗ trợ là Decentralized Oracle). Luồng dữ liệu giao dịch sẽ được thực hiện như sau:
(1) Khi người dùng muốn cập nhật dữ liệu sinh viên (thêm, sửa, xóa) thì người dùng cần đăng nhập vào hệ thống.
(2) Khi người dùng tạo một giao dịch cập nhật dữ liệu hệ thống sẽ sử dụng private key của người dùng để ký, sau đó gửi giao dịch đến nút xác thực.
(3) Nút xác thực nhận được giao dịch sẽ chạy chaincode để thực hiện nhưng chưa cập nhật giao dịch này vào sổ cái mà chỉ ký nếu giao dịch hợp lệ và gửi lại cho máy chủ.
(4) Máy chủ trung gian sẽ đợi nhận được đa số các phản hồi từ các nút xác thực và gửi các phản hồi này tới nút Orderer để thực hiện cơ chế đồng thuận.
(5) Thực hiện cơ chế đồng thuận Raft tại Ordering Services và tạo ra các khối mới.
(6) Các khối mới này sẽ được gửi tới các nút trong mạng Blockchain để cập nhật. Trước khi cập nhật các nút này sẽ tiến hành kiểm tra tính hợp lệ một lần nữa dựa vào cơ sở dữ liệu World State nội bộ.
KẾT LUẬN
Bài viết đã nêu được các cơ chế hoạt động, các thành phần cơ bản của mạng Blockchain nói chung và mạng private Blockchain Hyperledger Fabric nói riêng.
Đồng thời tác giả cũng đưa ra mô hình đề xuất để triển khai một hệ thống private Blockchain quản lý dữ liệu sinh viên sử dụng nền tảng Hyperledger Fabric.