Với khách hàng, do dữ liệu trên Blockchain là công khai, họ có thể theo dõi được toàn bộ quá trình sản xuất của sản phẩm đã được xác minh bởi các đơn vị có trách nhiệm thông qua ứng dụng
Trang 1NGHIÊN CỨU NỀN TẢNG CÔNG NGHỆ BLOCKCHAIN VÀ ỨNG DỤNG TRONG BÀI TOÁN TRUY XUẤT NGUỒN GỐC
SẢN PHẨM
Thuộc nhóm ngành khoa học: Khoa học máy tính
Trang 2NGHIÊN CỨU NỀN TẢNG CÔNG NGHỆ BLOCKCHAIN VÀ ỨNG DỤNG TRONG BÀI TOÁN TRUY XUẤT NGUỒN GỐC
SẢN PHẨM
Thuộc nhóm ngành khoa học: Khoa học máy tính
Sinh viên thực hiện: Trịnh Sỹ Tuấn Lớp, khoa: K23A ĐH CNTT – Khoa CNTT&TT
Năm thứ: 3 / Số năm đào tạo: 4 Ngành học: CNTT
Giảng viên hướng dẫn: PGS.TS Trịnh Viết Cường
THANH HÓA, THÁNG 04/2023
Trang 31.1 Tính cấp thiết của đề tài 8
1.2 Tổng quan tình hình nghiên cứu 8
CHƯƠNG 2: GIỚI THIỆU VỀ CÔNG NGHỆ BLOCKCHAIN VÀ FRAMEWORK BLOCKCHAIN HYPERLEDGER FABRIC 16
Trang 42.2.11 Smart Contract & Chaincode 38
2.2.12 Luồng thực hiện giao dịch trong Hyperledger Fabric 38
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG TRUY XUẤT NGUỒN GỐC SẢN PHẨM BẰNG CÔNG NGHỆ BLOCKCHAIN 43
3.1 Phân tích thiết kế hệ thống 43
3.1.1 Biểu đồ phân cấp chức năng tổng quát 43
3.1.2 Biểu đồ phân cấp chức năng mức dưới đỉnh 44
3.2 Phân tích thiết kế chức năng cơ sở dữ liệu 47
3.3 Giới thiệu phần mềm truy xuất nguồn gốc Blockchain 47
3.3.1 Cấu hình cài đặt 47
3.3.2 Giới thiệu phần mềm 48
3.4 Cách hoạt động của hệ thống Blockchain 61
CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG NGHIÊN CỨU 62
TÀI LIỆU THAM KHẢO 63
Trang 5DANH MỤC CHỮ CÁI VIẾT TẮT
API Application Programming
SDK Software Development Kit Bộ công cụ phát triển phần mềm JSON JavaScript Object Notation Định dạng đối tượng JavaScript
NC Network Configuation Cấu hình của mạng
CA Certificate Authority Cơ quan chứng nhận
Trang 6DANH MỤC CÁC BẢNG BIỂU
Bảng 1: Cấu hình cài đặt hệ thống Blockchain 48
Trang 7DANH MỤC HÌNH ẢNH
Hình 1: Giao diện của phần mềm truy xuất nguồn gốc Agridential 9
Hình 2: Màn hình điền thông tin email đăng ký tại Agridential 10
Hình 3: Màn hình điền thông tin doanh nghiệp phần mềm truy xuất nguồn gốc Agridential 10
Hình 4: Tạo tài khoản thành công 11
Hình 5: Giao diện chính của hệ thống truy xuất nguồn gốc Agridential 11
Hình 6: Giao diện thêm mới sản phẩm của phần mềm truy xuất nguồn gốc Agridential 12 Hình 7: Chuỗi khối 16
Hình 8: Block Header trong Blockchain 18
Hình 9: Các dự án trong Hyperledger 20
Hình 10: Cơ chế Leader – Follower trong cơ chế đồng thuận Raft 22
Hình 11: Kiến trúc mạng của mạng Blockchain Hyperledger Fabric 25
Hình 12: Khởi tạo mạng ban đầu với một Orderer Node 26
Hình 13: Thêm cấu hình mạng (nguồn Internet) 27
Hình 14: Thêm một consortium 27
Hình 15: Thêm một kênh mới vào mạng 28
Hình 16: Kết nối các peer vào kênh 29
Hình 17: Applications tương tác với mạng 30
Hình 18: Cấu trúc mạng hoàn thiện 31
Hình 19: Cấu trúc một idenity trong Hyperledger Fabric 32
Hình 20: Cấu trúc một Peers 33
Hình 21: Thông tin của một block được lưu trữ trong CouchDB 34
Hình 22: World State trong Hyperledger Fabric 35
Hình 23: Blockchain trong Hyperledger Fabric 36
Hình 24: Sơ đồ chuỗi block trong Hyperledger Fabric 36
Hình 25: Sơ đồ một block trong Hyperledger Fabric 37
Hình 26: Hiện tượng Fork trong hệ thống Blockchain 38
Hình 27: Thông tin về một Smart Contract 38
Hình 28: Thông tin về một giao dịch trong Hyperledger Fabric 39
Hình 29: Thêm một khối mới trong Hyperledger Fabric 41
Hình 30: Biểu đồ phân cấp chức năng mức đỉnh 43
Hình 31: Biểu đồ phân cấp chức năng đơn vị vận hành phần mềm 44
Hình 32: Biểu đồ phân cấp chức năng nhà sản xuất 45
Trang 8Hình 36: Giao diện phần mềm TRoot 48
Hình 37: Giao diện đăng nhập TRoot 49
Hình 38: Giao diện màn hình chính Đơn vị cung cấp phần mềm 49
Hình 39: Thêm mới một cơ quan sản xuất 50
Hình 40: Thêm mới cơ quan kiểm định tiêu chuẩn 50
Hình 41: Thêm mới Admin Nhà sản xuất 51
Hình 42: Thêm mới Admin nhà kiểm định 51
Hình 43: Xem trạng thái khóa công khai trong TRoot 51
Hình 44: Thông tin người dùng được gửi về Email trong TRoot 52
Hình 45: Giao diện của Admin nhà sản xuất trong TRoot 52
Hình 46: Thêm mới một nhân viên trong TRoot 53
Hình 47: Thêm mới sản phẩm trong TRoot 53
Hình 48: Thêm mới quy trình người dùng tự định nghĩa trong TRoot 54
Hình 49: Các chức năng về sản phẩm sau khi thêm mới sản phẩm 54
Hình 50: Xem mã QR cho sản phẩm trong TRoot 55
Hình 51: Tạo khóa của người dùng trong TRoot 55
Hình 52: Thông tin về khóa của người dùng trong TRoot 56
Hình 53: Thêm mới một người dùng trong TRoot 56
Hình 54: Phân công người xác thực quy trình trong TRoot 57
Hình 55: Nhân viên nhà sản xuất xem thông tin quy trình trong TRoot 57
Hình 56: Thông báo xác thực quy trình trong TRoot 58
Hình 57: Ký xác thực quy trình trong TRoot 58
Hình 58: Upload quyết định đạt chuẩn chất lượng trong TRoot 58
Hình 59: Thông tin người dùng tra cứu sản phẩm trên Mobile 59
Hình 60: Thông tin tra cứu sản phẩm trên Desktop 60
Hình 61: Script khởi tạo mạng……… 61
Trang 9THÔNG TIN KẾT QUẢ NGHIÊN CỨU
1 Tên đề tài: Nghiên cứu nền tảng công nghệ Blockchain và ứng dụng trong bài
toán truy xuất nguồn gốc sản phẩm
2 Cấp dự thi: Cấp trường 3 Nhóm sinh viên thực hiện
Họ và tên: Trịnh Sỹ Tuấn
Lớp: K23A - ĐHCNTT Khoa: CNTT-TT
Điện thoại: 0374.816.654 Email: trinh@sytuan.net
4 Giáo viên hướng dẫn: PGS.TS Trịnh Viết Cường
5 Thời gian thực hiện: 08 tháng, từ tháng 09/2022 đến 04/2023 6 Cơ quan quản lý đề tài: Trường Đại học Hồng Đức
7 Đơn vị chủ trì đề tài: Khoa Công nghệ thông tin và truyền thông, trường Đại
học Hồng Đức
Trang 10CHƯƠNG 1: MỞ ĐẦU 1.1 Tính cấp thiết của đề tài
Cuộc cách mạng công nghiệp 4.0 phát triển mạnh mẽ đã tạo nên một làn sóng mới, phương thức hoạt động mới trong việc giải quyết các vấn đề liên quan đến đến đời sống kinh tế và xã hội của con người Cùng với sự phát triển nhanh chóng và những thành tựu đạt được, lĩnh vực công nghệ nói chung và công nghệ thông tin nói riêng đã góp phần không nhỏ vào việc xử lý những khó khăn và nhu cầu cấp thiết của cuộc sống
Áp dụng công nghệ thông tin vào giải quyết những hạn chế trong việc quản lý, truy xuất nguồn gốc sản phẩm là một đòi hỏi thực tế hiện nay Trong bối cảnh thực phẩm giả, kém chất lượng xuất hiện tràn lan trên thị trường, niềm tin của người tiêu dùng đã không còn tuyệt đối, trở thành vấn đề đáng quan ngại trong xã hội Vì vậy, để nâng cao năng lực cạnh tranh của các doanh nghiệp sản xuất hàng hóa, yêu cầu cấp thiết là phải cho phép khách hàng truy xuất được nguồn gốc sản phẩm, tạo sự yên tâm khi quyết định mua hàng Ngoài ra, để đảm bảo vấn đề quản lý chất lượng hàng hóa cũng như vệ sinh an toàn thực phẩm, các cơ quan chức năng của Nhà nước cũng cần được tham gia vào việc giám sát toàn bộ quá trình sản xuất của doanh nghiệp
Với khách hàng, do dữ liệu trên Blockchain là công khai, họ có thể theo dõi được toàn bộ quá trình sản xuất của sản phẩm đã được xác minh bởi các đơn vị có trách nhiệm thông qua ứng dụng trên điện thoại (quét mã QR trên sản phẩm) hoặc truy cập từ website, từ đó tạo sự yên tâm khi quyết định chọn mua sản phẩm
Về mặt kỹ thuật, để đảm bảo tính chính xác về thông tin quản lý, độ bảo mật, cũng như tính minh bạch về thông tin thì cần thiết phải áp dụng những kết quả của công nghệ mới Trong cuộc cách mạng công nghiệp 4.0, Blockchain là một công nghệ rất quan trọng trong việc đẩy mạnh quá trình chuyển đổi số và xây dựng nền tảng công nghệ thông tin cho tương lai Nó đã được coi là một chìa khóa quan trọng trong việc tạo ra sự tiến bộ và thúc đẩy sự phát triển của các ngành công nghiệp khác nhau Với khả năng chia sẻ thông tin dữ liệu minh bạch theo thời gian thực và bảo mật cao, công nghệ Blockchain (chuỗi khối) là một trong những xu hướng công nghệ đột phá, có khả năng áp dụng rộng rãi, phù hợp với nhiều ứng dụng hiện nay Công nghệ Blockchain là một nền tảng quan trọng trong việc xây dựng ứng dụng truy xuất nguồn gốc sản phẩm, giúp đảm bảo chất lượng quản lý, truy xuất thông tin chính xác, đảm bảo an toàn dữ liệu cao
Với những lý do trên, việc nghiên cứu Framework Blockchain Hyperledger Fabric và xây dựng phần mềm truy xuất nguồn gốc sản phẩm bằng Blockchain là có tính thời
sự và cấp thiết, do đó em đã lựa chọn đề tài “Nghiên cứu nền tảng công nghệ Blockchain và ứng dụng trong bài toán truy xuất nguồn gốc sản phẩm”
1.2 Tổng quan tình hình nghiên cứu
Trang 111.2.1 Trên thế giới
Về mặt ứng dụng phần mềm truy xuất nguồn gốc sản phẩm, ứng dụng nổi trội nhất thế giới hiện nay là hệ thống phần mềm kết hợp giữa siêu thị Walmart và tập đoàn công nghệ IBM Phần mềm này cho phép khách hàng truy xuất thông tin sản phẩm bao gồm các thông tin sau:
- Thông tin chung về nguồn gốc sản phẩm
- Sản phẩm được sản xuất từ những quy trình nào, từng quy trình được kiểm định chất lượng bởi những cơ quan kiểm định nào
- Ngoài ra do dữ liệu được lưu lên hệ thống Blockchain, nên thông tin từng sản phẩm một khi được công khai cho khách hàng sẽ không thể thay đổi được và doanh nghiệp phải chịu trách nhiệm với thông tin đó
1.2.2 Trong nước
Ở Việt Nam hiện nay, một số công ty cũng đã xây dựng một số phần mềm về truy xuất nguồn gốc sản phẩm, cụ thể chi tiết như sau:
1 Phần mềm truy xuất nguồn gốc Agridential của Vietnam Blockchain
(agridential.vn) Khác với các phần mềm trên, phần mềm Agridential sử dụng Blockchain để lưu trữ dữ liệu về sản phẩm Tuy nhiên phần mềm trên cũng chỉ đưa ra thông tin về sản phẩm như: Tên sản phẩm, hình ảnh sản phẩm vv và các quy trình của sản phẩm do doanh nghiệp tự đăng ký Chưa có sự tham gia của các cơ quan chức năng để chứng thực quy trình
Quy trình đăng ký sử dụng phần mềm truy xuất nguồn gốc Agridential: Từ trang chủ phần mềm, bấm vào nút Dùng thử miễn phí
Hình 1: Giao diện của phần mềm truy xuất nguồn gốc Agridential
Trang 12Hình 2: Màn hình điền thông tin email đăng ký tại Agridential
Sau khi điền email, hãy điền thông tin doanh nghiệp và mật khẩu rồi bấm tiếp tục:
Hình 3: Màn hình điền thông tin doanh nghiệp phần mềm truy xuất nguồn gốc Agridential
Phần mềm hiện thông báo đăng ký thành công, bạn hãy xác nhận email để hoàn tất quá trình đăng ký tài khoản
Trang 13Hình 4: Tạo tài khoản thành công
Quy trình đăng ký sản phẩm trên ứng dụng Agridential
Tại trang chủ account của màn hình, bấm tạo mã QR sản phẩm để đăng ký sản phẩm
Trang 14Hình 6: Giao diện thêm mới sản phẩm của phần mềm truy xuất nguồn gốc Agridential
Giá của phần mềm truy xuất nguồn gốc Agridential:
- Đối với cá nhân sử dụng phần mềm trên hệ thống Blockchain có sẵn của phần mềm: 9.000.000 vnđ/User/ năm
- Đối với doanh nghiệp muốn xây dựng hệ thống Blockchain riêng có giá từ 700 Triệu / 1 lần duy nhất
2 Phần mềm truy xuất nguồn gốc CheckVN (trang web: www.checkvn.vn) Phần mềm này cho phép các doanh nghiệp đăng ký mặt hàng mà có thể cho phép người tiêu dùng truy xuất thông tin Thông tin được phép truy xuất bao gồm thông tin chung về nguồn gốc sản phẩm, các quy trình sản xuất, … Tuy nhiên các thông tin này đều là thông tin một chiều do nhà sản xuất đưa ra, không có sự kiểm định của các cơ quan chuyên môn chức năng, tức là các cơ quan chức năng không tham gia vào quá trình giám sát chất lượng của sản phẩm Ngoài ra thông tin về sản phẩm có thể dễ dàng thay đổi bởi doanh nghiệp hoặc kẻ tấn công bên ngoài, hệ thống của CheckVN cũng không sử dụng công nghệ Blockchain để đảm bảo an toàn cho dữ liệu Do vậy về bản chất phần mềm này cũng chỉ tương đương một website giới thiệu thông tin sản phẩm của doanh nghiệp
3 Phần mềm truy xuất nguồn gốc Vinacheck (trang web: www.vinacheck.vn) Tương đương phần mềm CheckVN, phần mềm Vinacheck cũng hỗ trợ doanh nghiệp đăng ký thông tin sản phẩm lên hệ thống như: Tên sản phẩm, giá sản phẩm, ngày sản xuất hay các chứng chỉ chất lượng của sản phẩm lên hệ thống Tuy nhiên, các thông tin được cung cấp trên phần mềm chỉ là các thông tin doanh nghiệp đưa lên và không có chứng thực bởi các cơ quan kiểm định Ngoài ra phần mềm cũng không đăng chi tiết
Trang 15các quy trình trong sản xuất sản phẩm và không sử dụng công nghệ Blockchain để bảo vệ thông tin cho người dùng
4 Phần mềm truy xuất nguồn gốc iCheck (trang web: www.icheckvn.com) Giống như các phần mềm truy xuất nguồn gốc đã đề cập ở trên, với phần mềm iCheck cũng giúp doanh nghiệp đăng ký sản phẩm lên hệ thống Khác với các phần mềm trên, iCheck hỗ trợ người dùng xem lịch sử thay đổi của sản phẩm, hỗ trợ người dùng để lại bình luận, góp ý cho phần mềm Tuy nhiên phần mềm vẫn chưa có sự tham gia của các cơ quan kiểm định để quản lý chất lượng sản phẩm và sử dụng công nghệ Blockchain để quyền lợi cho người tiêu dùng, do vậy phần mêm trên cũng chỉ tương đương như một trang web giới thiệu sản phẩm của doanh nghiệp
5 Phần mềm truy xuất nguồn gốc Traceverified (www.traceverified.com) Phần mềm này về mặt chức năng cũng hoàn toàn tương tự như phần mềm iCheck ở trên
6 Phần mềm truy xuất nguồn gốc OTS của AZteam (www.azteam.vn) Phần mềm này về mặt chức năng cũng hoàn toàn tương tự như phần mềm CheckVN ở trên
Như vậy, các phần mềm truy xuất nguồn gốc hiện nay ở Việt Nam chủ yếu có chức năng giúp doanh nghiệp cung cấp thông tin về sản phẩm, chưa có cơ chế phối hợp cùng các cơ quan kiểm định để kiểm tra chất lượng sản phẩm
Người tiêu dùng sẽ yên tâm hơn về chất lượng sản phẩm nếu chất lượng ở từng quy trình sản xuất của sản phẩm được kiểm tra bởi các cơ quan có trách nhiệm, và toàn bộ quy trình kiểm tra, ký xác thực bởi các cơ quan có trách nhiệm được cung cấp minh bạch cho người tiêu dùng Ngoài ra thông tin về sản phẩm một khi đã được cung cấp cho người tiêu dùng sẽ không thể thay đổi, tránh việc doanh nghiệp gian lận thông tin khi khách hàng khởi kiện thông tin không đúng về chất lượng sản phẩm
1.3 Mục tiêu và phạm vi đề tài
Mục tiêu đề tài:
Mục tiêu chung: Xây dựng phần mềm truy xuất nguồn gốc bằng Blockchain Mục tiêu cụ thể:
- Nghiên cứu về công nghệ Blockchain
- Nghiên cứu nền tảng Framework Blockchain Hyperledger Fabric
- Nghiên cứu về chữ ký điện tử và các nền tảng công nghệ ReactJS lập trình Website
Phạm vi nghiên cứu:
- Công nghệ Blockchain
Trang 161.4 Các quy định của pháp luật về truy xuất nguồn gốc hiện nay
1. Thông tư số 03/2011/TT-BNNPTNT ngày 21/01/2011 quy định về việc truy xuất nguồn gốc như sau:
- Truy xuất nguồn gốc: Khả năng truy xuất nguồn gốc có nghĩa là khả năng xác định nguồn gốc và quá trình sản xuất, chế biến, vận chuyển của một sản phẩm từ đầu đến khi nó đến tay người tiêu dùng
- Các cơ sở phải thiết lập hệ thống truy xuất nguồn gốc theo nguyên tắc là cơ sở phải lưu giữ thông tin để đảm bảo khả năng nhận diện được cơ sở sản xuất, kinh doanh/công đoạn sản xuất trước và cơ sở sản xuất, kinh doanh/công đoạn sản xuất tiếp theo sau trong quá trình sản xuất, chế biến và phân phối đối với một sản phẩm được truy xuất để đảm bảo khả năng nhận diện, truy tìm một đơn vị sản phẩm tại các công đoạn xác định của quá trình sản xuất, chế biến và phân phối sản phẩm
- Hệ thống truy xuất nguồn gốc phải bao gồm các nội dung như phạm vi áp dụng, thủ tục mã hóa và nhận diện sản phẩm, thủ tục ghi chép và lưu trữ hồ sơ, thủ tục truy xuất nguồn gốc, và phân công trách nhiệm
2 Quyết định số 100/QĐ-TTg của Thủ tướng chính phủ ngày 19/1/2019 về việc Phê duyệt đề án triển khai, áp dụng quản lý hệ thống truy xuất nguồn gốc, triển khai các đề tài, dự án, nhiệm vụ nghiên cứu, ứng dụng khoa học công nghệ để phát triển các giải pháp , công nghệ như: Blockchain, IoT và các công nghệ khác phù hợp với xu hướng phát triển của thế giới
3 Thông tư số 10/2020/TT-BKHCN ngày 30/12/2020 Thông tư quy định chi tiết và
biện pháp thi hành một số điều Nghị định số 132/2008/NĐ-CP ngày 31/12/2008 và Nghị định số 74/2018/NĐ-CP ngày 15/5/2018 của Chính phủ về sử dụng mã số, mã vạch
4 Quyết định số 2979/QĐ-BKHCN ngày 14/10/2019 về ban hành kế hoạch của Bộ
KH&CN triển khai Đề án “Triển khai, áp dụng và quản lý hệ thống truy xuất nguồn gốc”
5 Quyết định số 1221/QĐ-UBND ngày 07/4/2020 của UBND tỉnh Thanh Hóa về
việc phê duyệt “Kế hoạch triển khai, áp dụng và quản lý truy xuất nguồn gốc sản phẩm trên địa bàn tỉnh Thanh Hóa đến năm 2025”
6 Quyết định số 227/KH-UBND ngày 23/10/2020 của UBND tỉnh Thanh Hóa về
Kế hoạch đánh giá thực trang truy xuất nguồn gốc sản phẩm trên địa bàn tỉnh Thanh Hóa
7 Kế hoạch số 1043/KH-SCT của Sở công thương Thanh Hóa ngày 18/11/2020 về
việc “Triển khai thực hiện Quyết định số 1221/QĐ-UBND ngày 07/4/2020 của UBND tỉnh Thanh Hóa về việc “Phê duyệt Kế hoạch triển khai, áp dụng và quản lý truy xuất nguồn gốc sản phẩm, hàng hóa trên địa bàn tỉnh Thanh Hóa đến năm 2025”
Trang 178 Tiêu chuẩn quốc gia TCVN 12850:2019 về các tiêu chuẩn trong việc truy xuất nguồn gốc như: Yêu cầu chung của một hệ thống truy xuất nguồn gốc, các nguyên tắc trong truy xuất nguồn gốc, yêu cầu về khả năng tương tác, yêu cầu về dữ liệu của một hệ thống truy xuất nguồn gốc sản phẩm
9 Tiêu chuẩn quốc gia TCVN 15851:2019 quy định về tổ chức chứng nhận hệ
thống truy xuất nguồn gốc
10 Tiêu chuẩn VietGaps theo TCVN 11892-1:2017 trong hoạt động canh tác nông
Trang 18CHƯƠNG 2: GIỚI THIỆU VỀ CÔNG NGHỆ BLOCKCHAIN VÀ FRAMEWORK BLOCKCHAIN HYPERLEDGER FABRIC 2.1 Công nghệ Blockchain
2.1.1 Giới thiệu về công nghệ Blockchain
Blockchain là một công nghệ mới được phát triển và ứng dụng rộng rãi trong những năm gần đây Với cách thức lưu trữ thông tin độc đáo, Blockchain sử dụng các khối dữ liệu, được gọi là Block, các khối này được nối liên tiếp với nhau thành một chuỗi dài Mỗi khối kế tiếp được mã hóa với mã của khối trước đó, tạo nên một hệ thống bảo mật thông tin đáng tin cậy Nếu một khối trong chuỗi bị thay đổi, toàn bộ hệ thống sẽ phát hiện và không còn đảm bảo được sự toàn vẹn thông tin Khối đầu tiên trong chuỗi được gọi là khối khởi tạo (genesis block)
Hình 7: Chuỗi khối (nguồn Internet)
Ngoài ra, Blockchain còn có 2 tính năng quan trọng là tính đồng thuận và tính phân tán của dữ liệu
Dữ liệu trong Blockchain không được lưu trữ tập trung tại một nơi như mô hình Client – Server truyền thống mà được phân tán ra các người dùng tham gia vào hệ thống (được gọi là các Node) Các Node này đều giữ bản sao của dữ liệu Blockchain và khi một số Node vì một lý do nào đó mà ngừng hoạt động thì hệ thống vẫn hoạt động bình thường với các Node còn lại, điều này khác với mô hình Client – Server khi Server bị lỗi thì toàn bộ hệ thống sẽ ngưng hoạt động
Tính đồng nghĩa là không ai làm chủ của toàn bộ hệ thống, mà tất cả mọi người tham gia vào hệ thống đều là chủ Tính đồng thuận giúp cho mọi người tuy không quen biết nhau nhưng có thể giao dịch một cách an toàn Trong hệ thống Blockchain, khi có một giao dịch mới, nó sẽ gửi tới các Node trong mạng Các Node trong mạng sẽ kiểm tra thông tin giao dịch này xem có hợp lệ không Nếu hợp lệ thì các Node sẽ xác thực giao dịch này và một khối mới chứa thông tin giao dịch đó sẽ được tạo ra Để đảm bảo tính bảo mật thì thông tin chỉ được chấp thuận khi có tối thiểu 51% số Node trong hệ thống đồng ý chấp thuận giao dịch
Trang 192.1.2 Khối - Block
Dữ liệu được lưu vào các khối (Block) theo thời gian, tùy theo từng hệ thống Blockchain quy định bao lâu thì sẽ tạo ra một Block mới, ví dụ như trong hệ thống tiền ảo Bitcoin thì khoảng 10 phút sẽ có một block mới được tạo ra Dữ liệu hệ thống phát sinh trong khoảng thời gian này sẽ được lưu vào block đó Dữ liệu của toàn bộ hệ thống sẽ bao gồm tất cả các Block móc nối với nhau theo thứ tự thời gian (và đây cũng chính là cái tên của công nghệ Blockchain – chuỗi khối) Block số 0 được gọi là Block khởi tạo chứa các thông tin do người phát triển ra hệ thống Blockchain tạo
2.1.3 Node mạng – Người dùng
Về cơ bản trong công nghệ Blockchain có hai dạng Node mạng (hay có thể hiểu là người dùng) Dạng thứ nhất là Full Node (người dùng chủ chốt – active user) có chức năng chứa toàn bộ dữ liệu của hệ thống (tất cả các khối), ngoài ra nó còn đóng vai trò trong việc tạo ra Block mới thông qua cơ chế đồng thuận của hệ thống Dạng thứ hai là Node thông thường (người dùng thông thường) đăng ký tài khoản trên hệ thống và dùng các chức năng được cung cấp bởi hệ thống
Ví dụ như trong hệ thống tiền ảo Bitcoin, Full Node còn có thể phân ra làm hai chức năng là chứa dữ liệu và tạo Block mới Node mà chỉ tạo Block mới mà không chứa dữ liệu còn được gọi là Miner Node (Node đào Bitcoin) Node thông thường là người dùng thông thường đăng ký một tài khoản (ví điện tử) sau đó thực hiện các giao dịch thông thường, người dùng này không tham gia vào việc chứa dữ liệu của hệ thống hay tạo Block mới
2.1.4 Hàm băm
Hàm băm (Hash) là thuật toán xáo trộn mã nhị phân của dữ liệu kỹ thuật số, sao cho dữ liệu đầu vào dù dài hay ngắn, là File dưới dạng văn bản hay hình ảnh thì khi qua hàm băm sẽ cho kết quả là một chuỗi có chiều dài cố định và không trùng lặp Nghĩa là không có việc có 2 dữ liệu đầu vào khác nhau nhưng lại cho 2 mã băm giống nhau Và hàm băm cũng là cách tạo ra mã số định danh duy nhất của các khối trong Blockchain
Hăm băm là hàm một chiều, tức là cho dữ liệu đầu vào thì ta tính được ra hàm băm, nhưng cho hàm băm thì ta không thể tính ngược lại dữ liệu đầu vào
Trong thực tế, các hàm băm được sử dụng phổ biến như MD5, SHA-1, SHA-256 có thể xử lý các dữ liệu có kích thước lớn và tạo ra mã băm với độ dài cố định Thuật toán băm được sử dụng rộng rãi trong các ứng dụng bảo mật, hệ thống cơ sở dữ liệu và các lĩnh vực khác
Trang 202.1.5 Chữ ký điện tử
Chữ ký điện tử là một công nghệ cho phép người dùng xác nhận tính toàn vẹn và danh tính của người ký lên văn bản của một thông điệp hoặc tài liệu điện tử
Thay vì dùng chữ ký thủ công trên giấy như trong truyền thống, chữ ký điện tử sử dụng một cặp khóa bao gồm khóa công khai và khóa bí mật để mã hóa và giải mã một thông điệp(thường là mã băm của văn bản đó)
Khóa bí mật là khóa chỉ có chủ sở hữu biết và được sử dụng để ký, trong khi khóa công khai được chia sẻ rộng rãi để người nhận có thể xác nhận xem văn bản đó có đúng là chủ sở hữu ký hay không Với chữ ký điện tử, người dùng có thể đảm bảo rằng thông điệp hoặc tài liệu không bị thay đổi và xác minh được danh tính người đã ký lên văn bản đó
Hiện tại, có nhiều thuật toán về chữ ký điện tử như: RSA, ElGamal, DSS vv
2.1.6 Cơ chế đồng thuận
Trong công nghệ Blockchain nói chung, các Full Node (người dùng chủ chốt) sẽ phối hợp với nhau theo một cơ chế nào đó để tạo ra Block mới, cơ chế như vậy được gọi là cơ chế đồng thuận (Algorithm concensus) Hiện nay có hai cơ chế đồng thuận được sử dụng phổ biến trong các hệ thống Blockchain là cơ chế đồng thuận dựa trên bằng chứng công việc (Proof of Work – PoW) và cơ chế đồng thuận dựa trên bằng chứng cổ phần (Proof of Stake – PoS)
Giao thức đồng thuận PoW (Proof of Work) là một trong những giao thức đồng thuận quan trọng trong Blockchain PoW được sử dụng để xác nhận các giao dịch và tạo ra các khối mới trên mạng Blockchain Dựa vào tính chất của Blockchain là khối liền sau luôn có thông tin mã băm của khối liền trước đó, vì vậy giao thức đồng thuận PoW ra đời
Hình 8: Block Header trong Blockchain (nguồn Internet)
Trang 21Dựa vào hình 8, ta có thể thấy mỗi Block Header trong Blockchain bao gồm 4 tham số là: Mã băm khối trước, thời gian tạo ra Block, số nonce và mã băm của dữ liệu, trong đó tham số thời gian, mã băm của dữ liệu và mã băm của khối trước là không đổi, vì vậy để tạo ra Block mới ta cần phải tính toán số nonce phù hợp
Để tìm ra giá trị nonce, các thợ đào trên mạng phải sử dụng sức mạnh tính toán của các máy tính để giải một bài toán số học phức tạp Bài toán này thường là bài toán tìm kiếm một giá trị băm hash mà có độ khó vượt quá một ngưỡng nhất định Bằng cách thử và sai, các thợ đào sẽ tìm ra giá trị nonce phù hợp với bài toán này Khi một thợ đào tìm thấy giá trị nonce phù hợp, họ sẽ tạo ra một khối mới và chèn nó vào chuỗi khối Blockchain
Khi một khối mới được tạo ra, các nút mạng trên Blockchain sẽ kiểm tra tính hợp lệ của khối mới bằng cách xác nhận rằng giá trị băm hash của khối mới phải vượt quá ngưỡng độ khó được thiết lập trước đó Nếu giá trị băm hash của khối mới đáp ứng yêu cầu này, khối mới sẽ được chấp nhận và thêm vào chuỗi khối Blockchain Các giao dịch được chứa trong khối mới cũng sẽ được xác nhận và thêm vào Blockchain
Ngưỡng độ khó ở đây là số lượng số 0 ở đầu cho trước của mã băm Ví dụ trong hệ thống Bitcoin thì mã băm tạo ra phải có 10 chữ số 0 ở đầu thì giao dịch tạo Block đó mới được chấp thuận
Thuật toán này có ưu điểm là đạt được tính công bằng trong việc tạo Block, nhưng có nhược điểm là sẽ gây tốn rất nhiều tài nguyên để tạo Block
Trong giao thức đồng thuận PoS khác với việc đi tìm số nonce như giao thức PoW thì mỗi Full Node tham gia hệ thống sẽ có một lượng cổ phần tương ứng, lượng cổ phần có thể khác nhau tùy từng Full Node, do từng ứng dụng quy định Khi tạo mới một Block, các Full Node này sẽ „bầu‟ lên người có quyền tạo Block đó gọi là Leader, với mỗi Block khác nhau thì ta sẽ có các leader khác nhau Hiện tại có nhiều giao thức đồng thuận như: Algorand, Ouroburos, Raft, SBFT vv
2.1.7 Ứng dụng của Blockchain
Công nghệ Blockchain đã và đang được triển khai trong một số lĩnh vực có thể kể đến như:
Web 3.0: Tập trung vào việc tạo ra một môi trường web phi tập trung, nơi mà người dùng sẽ không cần phải tin tưởng vào các bên trung gian để thực hiện các giao dịch Thay vào đó, các giao dịch sẽ được xác minh và thực hiện thông qua các giao thức mã nguồn mở và công nghệ Blockchain
Tiền ảo: Áp dụng tính đồng thuận và khả năng không thể thay đổi của Blockchain
Trang 22Sản xuất – cung ứng: Áp dụng tính không thể làm giả, không thể phá hủy sẽ giúp người sử dụng truy xuất được nguồn gốc xuất xứ sản phẩm, tăng tính cạnh tranh cho doanh nghiệp và bảo vệ quyền lợi cho người tiêu dùng
Ngân hàng: Blockchain được ứng dụng trong ngân hàng nhằm tăng tính bảo mật và minh bạch trong các giao dịch tài chính do dữ liệu không thể thay đổi được
Thương mại điện tử: Blockchain giúp đảm bảo các giao dịch giữa các bên liên quan thông qua chữ ký số, giảm rủi ro và tăng cường sự tin tưởng giữa các bên
Blockchain cung cấp một giải pháp hữu ích cho việc truyền tải và lưu trữ dữ liệu một cách an toàn và minh bạch, giúp giảm thiểu rủi ro tài chính Sự kết nối an toàn và minh bạch giữa các thiết bị điện tử có thể được đảm bảo thông qua Blockchain Vì vậy, Blockchain đã trở thành công nghệ có tiềm năng lớn để thay đổi cách thức phát triển trong nhiều lĩnh vực khác nhau
2.2 Framework Hyperledger Fabric
2.2.1 Tổng quan về Hyperledger
Hyperledger là một dự án mã nguồn mở mà Linux Foundation khởi xướng lên từ năm 2015, tới nay dự án Hyperledger đã nhận được thêm sự hậu thuẫn từ các ông lớn làng công nghệ như UBM, Intel, SAP Ariba nhằm hỗ trợ phát triển hệ thống sổ cái phân tán và các ứng dụng liên quan dựa trên công nghệ Blockchain
Blockchain là một công nghệ đang được nghiên cứu và phát triển rộng rãi trong nhiều lĩnh vực khác nhau Nó không chỉ được ứng dụng trong doanh nghiệp mà còn trong các lĩnh vực khác như tài chính, y tế, giáo dục, web3 v.v Điều này giúp cho công nghệ Blockchain trở nên linh hoạt và có khả năng đáp ứng các yêu cầu khác nhau của mỗi lĩnh vực Kết quả là nó đang được sử dụng để tạo ra mạng lưới kinh doanh và giao dịch hiệu quả hơn
Hình 9: Các dự án trong Hyperledger (nguồn Internet)
Trang 23Các dự án trong Hyperledger Fabric: Framework:
Một số dự án con quan trọng của Hyperledger bao gồm:
1 Hyperledger Fabric: là một nền tảng Blockchain doanh nghiệp được thiết kế để
hỗ trợ các ứng dụng quản lý chuỗi cung ứng, giám sát tài sản và quản lý đồng thuận
2 Hyperledger Sawtooth: là một nền tảng Blockchain được thiết kế cho các ứng
dụng IoT và các ứng dụng liên quan đến quản lý tài sản
3 Hyperledger Burrow: là một nền tảng Blockchain được thiết kế để hỗ trợ các ứng
dụng phân quyền
4 Hyperledger Indy: là một nền tảng Blockchain được thiết kế để hỗ trợ các ứng
dụng liên quan đến danh tính số và xác thực
5 Hyperledger Iroha: là một nền tảng Blockchain được thiết kế cho các ứng dụng
thanh toán và quản lý tài sản
Tools:
1 Hyperledger Explorer: Quản trị Blockchain
2 Hyperledger Cello: Cấu hình mạng cho Blockchain
3 Hyperledger Caliper: Phục vụ đánh giá hệ thống Blockchain
4 Hyperledger QuiLt: Chuyển các giá trị giữa các hệ thống phân tán và không phân
tán
2.2.2 Tổng quan về Hyperledger Fabric
Hyperledger Fabric là một nền tảng Blockchain mã nguồn mở được phát triển bởi Linux Foundation, là một dự án của Hyperledger Fabric cung cấp một môi trường phát triển Blockchain cho các doanh nghiệp và tổ chức, cho phép họ xây dựng và triển khai các ứng dụng Blockchain với tính bảo mật cao, khả năng mở rộng và sự linh hoạt
Một trong những tính năng đáng chú ý của Fabric là nó cho phép các nhà phát triển xây dựng các smart contract bằng nhiều ngôn ngữ lập trình, bao gồm cả Java, Go và Node.js Điều này đảm bảo rằng các nhà phát triển có thể sử dụng ngôn ngữ thành thạo nhất để phát triển Blockchain
Với kiến trúc mềm dẻo và linh hoạt, Fabric có thể thích nghi và đáp ứng nhu cầu của nhiều ngành công nghiệp, bao gồm ngân hàng, tài chính, bảo hiểm và chăm sóc sức khỏe
Tuy nhiên, điều đặc biệt nổi bật của Fabric là khả năng hỗ trợ đồng thời nhiều giao thức đồng thuận khác nhau Hyperledger Fabric sử dụng các giao thức đồng thuận như PBFT và Raft để đảm bảo tính toàn vẹn và độ tin cậy của mạng Blockchain trong các
Trang 24mạng bằng cách cho phép các Node xử lý giao dịch độc lập và đồng bộ sau đó Việc kết hợp các giao thức đồng thuận giúp Hyperledger Fabric đáp ứng các yêu cầu khác nhau của các ứng dụng Blockchain và đảm bảo tính toàn vẹn của hệ thống trong nhiều tình huống khác nhau
Sự kết hợp giữa các tính năng này giúp Fabric trở thành một trong những Framework Blockchain tốt nhất hiện nay cả về tốc độ xử lý giaoo dịch và độ trễ xác nhân giao dịch
2.2.3 Thuật toán đồng thuận trong Hyperledger Fabric
Cơ chế đồng thuận được sử dụng trong Hyperledger Fabric là cơ chế đồng thuận Raft Raft là thuật toán đồng thuận được ra đời để giải quyết bài toán sao lưu log trong hệ thống phân tán, đảm bảo tính nhất quán và an toàn
Hình 10: Cơ chế Leader – Follower trong cơ chế đồng thuận Raft (nguồn Internet)
Thuật toán Raft là một thuật toán đồng thuận dựa trên mô hình Leader - Follower, nơi mà một leader sẽ được bầu và nó sẽ chịu trách nhiệm hoàn toàn trong việc quản lý tất cả các máy khác (cụm), cụ thể là nó sẽ thực hiện replicate các log mà nó nhận được từ phía client đến tất cả các Node trong cụm Thuật toán raft có ba trạng thái cơ bản cho các Node trong cụm:
- Follower: Đây là trạng thái mặc định của các Node Các Node ở trạng thái này sẽ
nhận và áp dụng các log từ leader, và bầu chọn cho leader khi có yêu cầu
- Candidate: Đây là trạng thái khi một Node không nhận được heartbeat từ leader
trong một khoảng thời gian ngẫu nhiên Node ở trạng thái này sẽ tự bầu chọn cho chính mình và yêu cầu các Node khác bầu chọn cho mình Nếu nhận được đa số phiếu bầu, Node sẽ chuyển sang trạng thái leader Nếu không, Node sẽ quay lại trạng thái follower hoặc bắt đầu lại quá trình bầu cử
Trang 25- Leader: Đây là trạng thái khi một Node nhận được đa số phiếu bầu từ các Node
khác Node ở trạng thái này sẽ gửi heartbeat định kỳ đến các Node khác để duy trì vai trò của mình Node ở trạng thái này cũng sẽ nhận các log từ client và replicate chúng đến các Node khác
Thuật toán Raft có ba giai đoạn chính để đảm bảo tính nhất quán của replicated log:
- Leader election: Đây là giai đoạn để bầu ra một leader cho cụm khi không có
leader hoặc leader hiện tại bị lỗi Giai đoạn này sử dụng một bộ đếm giờ ngẫu nhiên để tránh xung đột khi có nhiều Node cùng muốn trở thành leader Giai đoạn này kết thúc khi có một Node nhận được đa số phiếu bầu và gửi heartbeat đến các Node khác
- Log replication: Đây là giai đoạn để leader replicate các log mới nhận được từ
client đến các Node khác Giai đoạn này sử dụng một cơ chế gọi là index và term để xác định vị trí và nguồn gốc của các log Giai đoạn này kết thúc khi có quá nửa số Node đã nhận và áp dụng log mới vào state machine của họ
- Safety: Đây là giai đoạn để đảm bảo rằng không có hai log khác nhau có cùng
index và term trong replicated log Giai đoạn này sử dụng một số quy tắc để ngăn chặn việc ghi đè hoặc xóa các log đã được commit Giai đoạn này cũng yêu cầu rằng chỉ có log ở term hiện tại mới được commit
Cách bầu Leader trong thuật toán Raft:
- Raft sử dụng hai giá trị timeout để quản lý quá trình bầu chọn Leader: Election timeout và Heartbeat timeout Election timeout là khoảng thời gian chờ của một nút Follower cho đến khi chuyển sang trạng thái Candidate Heartbeat timeout là khoảng thời gian mà một nút Leader gửi tin nhắn trái tim (heartbeat) cho các nút Follower để duy trì quyền lãnh đạo của mình và kiểm tra sự sống còn của các Follower
- Khi một nút Follower không nhận được heartbeat từ Leader trong khoảng thời gian Election timeout, nó sẽ tự động chuyển sang trạng thái Candidate và bắt đầu một term bầu chọn mới Nó sẽ tăng số hiệu phiên bản (term) của mình lên một đơn vị, tự bầu cho mình và gửi yêu cầu bầu chọn (RequestVote) cho các nút khác trong nhóm Nó cũng sẽ reset lại Election timeout của mình để chờ kết quả bầu chọn
- Khi một nút nhận được yêu cầu bầu chọn từ một Candidate, nó sẽ kiểm tra xem nó đã bầu cho ai trong term hiện tại hay chưa và xem log của Candidate có cập nhật hơn log của nó hay không Nếu nó chưa bầu cho ai và log của Candidate không lỗi thời hơn log của nó, nó sẽ bầu cho Candidate và reset lại Election timeout của mình Nếu không, nó sẽ từ chối yêu cầu bầu chọn
Trang 26Candidate nào nhận được đa số phiếu bầu trong khoảng thời gian Election timeout, quá trình bầu chọn sẽ lặp lại với term mới
- Khi một Leader gửi heartbeat cho các Follower, nó sẽ đính kèm số hiệu phiên bản (term) của mình Nếu một Follower nhận được heartbeat có term lớn hơn term hiện tại của nó, nó sẽ cập nhật term của mình và chuyển sang trạng thái Follower Nếu một Leader nhận được heartbeat có term lớn hơn term hiện tại của nó, nó sẽ cập nhật term của mình và chuyển sang trạng thái Follower
Sau khi hệ thống chọn ra được leader, bất kỳ yêu cầu nào từ phía client đều sẽ được gửi đến leader, leader sẽ nhận yêu cầu này và bắt đầu gửi yêu cầu tới tất cả follower trong mạng Follower sẽ sao lưu dữ liệu từ leader gửi dưới dạng log và gửi thông báo sao lưu thành công tới leader Khi leader nhận được thông báo từ hơn một nửa follower trong hệ thống, nó sẽ báo các follower thêm block này vào state machine của mình
Sau khi tất cả các follower áp dụng yêu cầu mới vào state machine của mình, leader sẽ thông báo cho client biết rằng yêu cầu đã được thực hiện thành công
Nếu một số follower không xác nhận thành công, leader sẽ gửi lại yêu cầu đến các follower đó và tiếp tục thực hiện quá trình sao lưu và áp dụng yêu cầu cho đến khi đa số follower xác nhận thành công
Cơ chế đồng thuận Raft cũng giải quyết vấn đề split-brain, một tình huống xảy ra khi mạng phân tán bị tách ra thành hai phần không thể truy cập được lẫn nhau, nhưng cả hai phần đều vẫn hoạt động một cách bình thường Trong trường hợp này, Raft sử dụng một số quy tắc để đảm bảo rằng chỉ có một leader được bầu chọn, giúp giải quyết xung đột dữ liệu giữa hai phần mạng và đảm bảo tính nhất quán của hệ thống
Ngoài ra, Raft cũng cung cấp tính năng phục hồi, cho phép hệ thống khôi phục lại dữ liệu sau khi gặp sự cố Khi một follower bị lỗi, nó có thể yêu cầu log từ leader để cập nhật lại dữ liệu bị mất Nếu leader bị lỗi, các follower sẽ tự động chuyển sang chế độ ứng cử mới leader và tiếp tục hoạt động Điều này đảm bảo tính sẵn sàng cao của hệ thống, giảm thiểu thời gian chết và đảm bảo rằng các giao dịch trong hệ thống được xử lý một cách chính xác và an toàn
Các node tham gia vào giao thức đồng thuận đều có chứng chỉ CA từ MSP để xác minh danh tính và thông tin gửi tới các peer đều được mã hóa bằng TLS
2.2.4 Cấu trúc của một mạng Hyperledger Fabric
Kiến trúc đơn giản của một mạng Hyperledger Fabric
Trang 27Hình 11: Kiến trúc mạng của mạng Blockchain Hyperledger Fabric (nguồn Internet)
- N: Network (Mạng): Đây là toàn bộ hệ thống Hyperledger Fabric, bao gồm các
thành phần khác như orderer Node, peers, channels, smart contracts, ledgers và certificate authorities
- NC: Network Configuration (Cấu hình của mạng): Là các thiết lập được áp dụng
cho toàn bộ mạng, chẳng hạn như địa chỉ IP, mật khẩu và cấu hình mạng
- C: Channel (Kênh): Là một tập hợp các tổ chức vai trò nhất định trong cùng một
quy trình kinh doanh Ví dụ, trong một kênh về mua bán điện thoại thì sẽ có 2 tổ chức là: Nhà sản xuất điện thoại và nhà phân phối điện thoại
- CN: Channel Configuration (Cấu hình của kênh): Là các thiết lập được áp dụng
cho một kênh nhất định, chẳng hạn như số lượng và các tổ chức tham gia vào kênh đó
- R: Organization (Tổ chức): Là một tập hợp các thành viên trong mạng, được phân
chia thành các tổ chức khác nhau để quản lý quyền truy cập và quản lý dữ liệu Mỗi tổ chức có một số lượng peer và một kênh có thể có nhiều hơn 1 tổ chức
- O: Orderer Node: Là thành phần tham gia đồng thuận trong hệ thống Blockchain
Ví dụ trong hệ thống Public Blockchain thì tất cả các Node đều tham gia đồng thuận, nhưng trong Hyperledger Fabric chỉ có các Orderer Node tham gia đồng thuận
- P: Peer: Là một điểm tương tác giữa các tổ chức trong một kênh, cho phép các tổ
chức trao đổi thông tin và thực hiện các giao dịch với nhau Tất cả các giao dịch trên mạng đều phải được xác thực bởi một hoặc nhiều peer
- S: Smart Contract (Chaincode): Là một chương trình được cài đặt trên kênh, định
nghĩa rõ các struct, các hành động mà người dùng có thể thực hiện để tương tác với sổ cái
- L: Ledger (Sổ cái): Là một cơ sở dữ liệu phân tán được sử dụng để lưu trữ trạng
thái của các đối tượng trong mạng, bao gồm các giao dịch được xác thực và đồng thuận
Trang 28thực và đồng thuận trên mạng Sổ cái được lưu trữ trên mỗi peer Node, đảm bảo tính nhất quán của dữ liệu trên mạng Có thể sử dụng nhiều loại sổ cái khác nhau trên một mạng, tùy thuộc vào nhu cầu sử dụng của từng kênh và tổ chức tham gia
- CA: Certificate Authority (Cơ quan chứng nhận): Là một thành phần quan trọng
trong Hyperledger Fabric, CA có nhiệm vụ phát hành và quản lý các chứng chỉ và định danh cho các thành viên trong mạng Ví dụ người dùng Quỳnh thuộc tổ chức R1, khi muốn tham gia vào tổ chức R1 cần yêu cầu tổ chức này tạo ra một identity (định danh) bao gồm khóa công khai, khóa bí mật và các thông tin khác, từ đó về sau người dùng Quỳnh mới có thể dùng identity đó để tương tác với mạng, mạng sẽ tự động biết đó là người dùng Quỳnh đến từ tổ chức R1
- A: Application (Ứng dụng): Là một phần mềm trên web hoặc app giúp người dùng
tương tác với mạng Hyperledger Fabric
Quy trình xây dựng mạng
Bước 1 Bắt đầu định dạng và khởi tạo mạng
Hình 12: Khởi tạo mạng ban đầu với một Orderer Node (nguồn Internet)
Quy trình xây dựng mạng Hyperledger Fabric bắt đầu bằng việc định dạng và khởi tạo mạng Đầu tiên, cần tạo một Orderer Node, chẳng hạn như Node O4 trong hình với dịch vụ Ordering Services Tổ chức R4 sẽ có quyền quản trị mạng N và thông tin này sẽ được lưu trữ trong cấu hình mạng NC4 Bên cạnh đó, Node CA4 sẽ được sử dụng để phát hành các Identity cho người dùng, peer và ứng dụng đến từ tổ chức R4
Bước 2 Thêm một tổ chức quản trị
Trang 29Hình 13: Thêm cấu hình mạng (nguồn Internet)
Ban đầu, cấu hình mạng NC4 chỉ cho phép tổ chức R4 có quyền quản trị trên mạng Để thêm một tổ chức quản trị khác vào mạng, chẳng hạn như tổ chức R1, cần thực hiện các thao tác sau:
- Tổ chức R4 cập nhật cấu hình mạng NC4 để thêm tổ chức R1 làm quản trị viên Sau khi hoàn tất, cả R1 và R4 sẽ có quyền ngang nhau đối với việc quản trị mạng
- Thêm CA1 vào để cung cấp identity cho người dùng của tổ chức R1 Sau đó, tất cả người dùng từ cả R1 và R4 đều có quyền quản trị mạng
- Mặc dù Orderer Node O4 đang chạy trên một cơ sở hạ tầng của tổ chức R4, nhưng tổ chức R1 cũng sẽ có quyền truy cập và quản trị O4 cùng với R4
Bước 3 Định nghĩa 1 consortium
Mạng hiện tại được quản lý bởi R1 và R4 và hầu như không có nhiều hoạt động có thể thực hiện trên mạng Để đưa các hoạt động kinh doanh vào mạng, điều đầu tiên cần làm là xác định một consortium (tập đoàn) - một nhóm các tổ chức có chung mục tiêu hoạt động kinh doanh như sản xuất, phân phối sản phẩm, và cung cấp dịch vụ
Hình 14: Thêm một consortium (nguồn Internet)
Trong ví dụ này, một quản trị viên mạng (R1 hoặc R4) sẽ định nghĩa một
Trang 30theo CA2 là cơ quan cấp chứng chỉ cho người dùng, Node và ứng dụng đến từ tổ chức R2 trong consortium Tùy theo doanh nghiệp mà consortium có số lượng tổ chức tùy ý
Bước 4 Tạo một channel cho một consortium
Kênh là một phương tiện truyền thông thông qua đó các thành viên của một consortium có thể giao tiếp với nhau Một mạng có thể có nhiều consortium và nhiều kênh, tuy nhiên, mỗi consortium chỉ có thể có một kênh Ví dụ, một kênh được gọi là C1 đã được tạo cho consortium X1 Cấu hình của kênh C1 được lưu trữ trong cấu hình kênh CC1, hoàn toàn tách biệt với cấu hình mạng NC4 CC1 được quản lý bởi R1 và R2, hai tổ chức này có quyền ngang nhau đối với C1 và R4 không có quyền gì trong CC1
Hình 15: Thêm một kênh mới vào mạng (nguồn Internet)
Một kênh C1 đã được tạo cho consortium X1 Cấu hình của kênh C1 được lưu trong cấu hình kênh CC1, tách biệt hoàn toàn với cấu hình mạng NC4 CC1 được quản lý bởi R1 và R2, 2 tổ chức này có quyền ngang nhau đối với C1 R4 không có quyền gì trong CC1
Kênh C1 cung cấp một cơ chế liên lạc riêng cho các tổ chức trong X1 Mặc dù kênh này là một phần của mạng N, nhưng nó tách biệt hoàn toàn với mạng N tuy nhiên, kênh này chỉ dành cho xử lý giao dịch giữa R1 và R2, không bao gồm R4 Trong sơ đồ này, tổ chức R1 hoặc R4 có thể đã tạo ra kênh C1, và một kênh có thể có bất kỳ số lượng tổ chức nào được kết nối với nó
Cấu hình kênh CC1 chứa các quy định về quyền mà R1 và R2 có trên kênh C1, và R4 không có quyền gì trong kênh này R4 chỉ có thể tương tác với C1 nếu được thêm vào cấu hình kênh CC1 bởi R1 hoặc R2 R4 không thể tự thêm mình vào kênh C1
Hyperledger Fabric rất mạnh về tính riêng tư, và tính riêng tư của nó đến từ các kênh Các kênh cho phép các tổ chức chia sẻ cơ sở hạ tầng mà vẫn giữ được tính riêng tư của mình Bất kỳ cập nhật cho cấu hình mạng NC4 từ thời điểm này trở đi không ảnh hưởng trực tiếp đến cấu hình kênh CC1 Điều này cho phép các tổ chức cấu thành kênh
Trang 31có thể liên lạc riêng tư với nhau, và dữ liệu trong một kênh được cách ly hoàn toàn với phần còn lại của mạng, cũng như các kênh khác
Bước 5 Peer và Ledger
Kênh được sử dụng để kết nối các tổ chức với nhau trong hệ thống Mỗi peer sẽ lưu trữ một bản sao của sổ cái để người dùng thuộc các tổ chức khác nhau nhưng cùng một kênh có thể truy cập Ví dụ, peer P1 của tổ chức R1 lưu trữ bản sao sổ cái L1 để người dùng từ tổ chức R1 có thể truy cập
Hình 16: Kết nối các peer vào kênh (nguồn Internet)
Một peer P1 đã tham gia kênh C1 Mỗi Kênh sẽ chỉ có một sổ cái duy nhất, mỗi Peer sẽ lưu trữ 1 bản sao của sổ cái này để người dùng từ tổ chức tương ứng truy cập Chẳng hạn như P1 của tổ chức R1 lưu trữ bản sao của sổ cái L1 để người dùng từ tổ chức R1 truy cập
Sổ cái L1 được lưu trữ vật lý trên peer P1, nhưng được lưu trữ logic trên kênh C1 Nhờ đó, P1 và O4 có thể giao tiếp với nhau thông qua kênh C1.Lúc này, P1 và O4 có thể giao tiếp với nhau thông qua kênh C1
Mọi thành phần từ người dùng đến peer đều cần có 1 identity Vì thế P1 là cũng có một identity do CA1 cấp, xác định P1 thuộc tổ chức R1
Khi P1 được khởi động, nó có thể tham gia kênh C1 bằng cách gửi yêu cầu tham gia tới O4 Sau đó, O4 sử dụng cấu hình kênh CC1 để xác định quyền của P1 trên kênh này Ví dụ, CC1 xác định xem P1 có thể đọc và/hoặc ghi thông tin vào sổ cái L1 hay không
Bước 6 Application và Smart Contract ( Chaincode)
Lúc này, kênh C1 đã có một sổ cái trên đó, sau khi sổ cái được tạo trên kênh C1, các ứng dụng có thể kết nối và sử dụng các nghiệp vụ kinh doanh đã được định nghĩa
Trang 32Hình 17: Applications tương tác với mạng (nguồn Internet)
Một Smart Contract S5 được triển khai trên peer P1 Ứng dụng A1 của tổ chức R1 có thể sử dụng S5 để truy cập vào sổ cái L1 thông qua peer P1 Hiện tại, kênh có A1, P1 và O4
Mặc dù có vẻ như A1 có thể truy cập trực tiếp vào sổ cái L1 thông qua P1, thực tế là tất cả các quyền truy cập được quản lý thông qua Smart Contract S5 Nói cách khác, S5 định nghĩa các trường hợp sử dụng để truy cập vào sổ cái L1 và cung cấp một tập hợp các quy tắc mà theo đó sổ cái L1 có thể được truy cập hoặc cập nhật bởi ai và như thế nào Vì vậy, ứng dụng A1 phải thông qua Smart Contract S5 để tương tác với sổ cái L1
Các nhà phát triển ứng dụng trong mỗi tổ chức có thể tạo Smart Contract để triển khai các quy trình kinh doanh được chia sẻ bởi các thành viên của consortium Mỗi kênh có thể chứa nhiều Smart Contract để hỗ trợ nhiều quy trình kinh doanh khác nhau
Bước 6.1 Cài một smart contract
Sau khi hoàn thành việc code smart contract S5, quản trị viên trong tổ chức R1 cần cài đặt nó trên một hoặc nhiều peer trên kênh C1 Việc này sẽ cho phép peer P1 có thể truy cập vào logic triển khai của S5 - các đoạn mã mà smart contract sử dụng để truy cập sổ cái L1
Với nhiều peer trên một kênh, tổ chức có thể lựa chọn cài đặt smart contract trên các peer tùy ý, thay vì cài đặt trên tất cả các peer trên kênh
Để các thành phần khác trên kênh C1 biết về smart contract vừa được cài đặt, chúng ta cần khởi tạo nó trên kênh C1 Trong ví dụ này, chỉ có một peer P1, vì vậy một quản trị viên trong tổ chức R1 phải khởi tạo S5 trên kênh C1 bằng cách sử dụng P1 Sau khi khởi tạo, mọi thành phần trên kênh C1 đều biết về sự tồn tại của S5 và interface của smart contract đã được cung cấp cho các thành phần này Điều này có nghĩa là bây giờ S5 có thể được gọi bởi ứng dụng khách A1
Trang 33Mặc dù mọi thành phần trên kênh hiện có thể truy cập S5 thông qua giao diện đã được cung cấp, nhưng chúng không thể truy cập vào logic triển khai của S5 Việc truy cập logic này vẫn được giữ riêng tư đối với những peer đã cài đặt nó, trong trường hợp này là P1 Từ khái niệm, điều này có nghĩa là chỉ có giao diện của smart contract được khởi tạo Việc cài đặt một smart contract hiểu đơn giản là nó được lưu trữ trên một peer, trong khi việc khởi tạo smart contract hiểu là nó được giới thiệu và cung cấp cho các thành phần khác trên kênh
Endorsement policy ( chính sách chứng thực )
Chính sách chứng thực (endorsement policy) là một phần quan trọng trong định nghĩa chaincode tại thời điểm khởi tạo Chính sách này xác định các tổ chức nào phải phê duyệt các giao dịch trước khi chúng được chấp nhận vào bản sao của sổ cái bởi các tổ chức khác Chính sách chứng thực có thể được xác định dưới dạng "AND" hoặc "OR" giữa các tổ chức tham gia, ví dụ như "R1 AND R2" hoặc "R1 OR R2" Nó giúp đảm bảo tính toàn vẹn của sổ cái và ngăn chặn các hành động gian lận hoặc không đáng tin cậy
Invoking Smart Contract ( gọi hợp đồng thông minh )
Khi một smart contract được cài đặt và khởi tạo trên một kênh, nó có thể được gọi bởi ứng dụng thông qua việc gửi đề xuất giao dịch cho các peer thuộc sở hữu của các tổ chức được chỉ định bởi chính sách chứng thực Việc gọi smart contract sử dụng đề xuất giao dịch như là tham số đầu vào cho smart contract, bao gồm tên hàm và các tham số đầu vào của hàm đó Sau đó, smart contract sẽ sử dụng các tham số này để tạo ra phản hồi giao dịch được chứng thực và trả lại cho ứng dụng thông qua peer
Bước 7 Network completed
Hình 18: Cấu trúc mạng hoàn thiện (nguồn Internet)
Việc thêm các peer P2 và A2, CA2, cài đặt Smart contract cho P2 tương tự như đối với R1