1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu về hyperledger fabric và xây dựng ứng dụng minh hoạ

56 343 6
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về Hyperledger Fabric Và Xây Dựng Ứng Dụng Minh Hoạ
Tác giả Dương Công Vũ
Người hướng dẫn ThS. Nguyễn Công Hoan
Trường học Đại Học Quốc Gia Tp.Hcm
Chuyên ngành Công Nghệ Phần Mềm
Thể loại Báo Cáo Đồ Án
Năm xuất bản 2021
Thành phố Tp.Hcm
Định dạng
Số trang 56
Dung lượng 4,12 MB

Cấu trúc

  • I. GIỚI THIỆU CHUNG (5)
    • 1. Thông tin nhóm (5)
    • 2. Tổng quan về đề tài (5)
      • 2.1. Giới thiệu về đề tài (5)
      • 2.2. Phạm vi nghiên cứu (5)
      • 2.3. Nội dung nghiên cứu (5)
      • 2.4. Kết quả hướng tới (5)
    • 3. Công cụ sử dụng (5)
  • II. CÔNG NGHỆ BLOCKCHAIN (6)
    • 1. Blockchain là gì? (6)
    • 2. Lợi ích của sử dụng Blockchain (7)
    • 3. Những bất cập của các mạng blockchain hiện tại (8)
  • III. HYPERLEDGER FABRIC (9)
    • 1. Giới thiệu về Hyperledger Foundation (9)
    • 2. Tổng quan về Hyperledger Fabric (10)
    • 4. Cộng đồng sử dụng (11)
    • 5. Tính năng nổi bật (11)
      • 5.1. Mạng blockchain phân quyền (11)
      • 5.2. Cơ chế đồng thuận linh hoạt (12)
      • 5.3. Tính module hoá (12)
    • 6. Kiến trúc và môi trường cài đặt (13)
    • 7. Khái niệm cơ bản (14)
      • 7.1. Identity (14)
      • 7.2. Membership Service Provider (MSP) (16)
      • 7.3. Policies (17)
      • 7.4. Peers (18)
      • 7.5. Ledger (19)
      • 7.6. Ordering Service (22)
      • 7.7. Smart Contract & Chaincode (23)
      • 7.8. Chaincode lifecycle (24)
  • IV. MINIFABRIC (26)
    • 1. Giới thiệu về Minifabric (26)
    • 2. Các câu lệnh cơ bản (27)
      • 2.1. Tải mã nguồn từ Github và cài đặt (27)
      • 2.2. Khởi chạy (28)
      • 2.3. Tắt mạng (29)
      • 2.4. Cài đặt một chaincode (29)
      • 2.5. Sử dụng chaincode (30)
      • 2.6. Truy vấn các khối (31)
      • 2.7. Sửa đổi channel (32)
      • 2.8. Thêm một tổ chức mới vào mạng (32)
      • 2.9. Truy vấn tình trạng của mạng (32)
      • 2.10. Khởi chạy Hyperledger Explorer (33)
    • 3. Các cài đặt cơ bản (34)
  • V. XÂY DỰNG ỨNG DỤNG MINH HOẠ (37)
    • 1. Giới thiệu ứng dụng minh hoạ (37)
    • 2. Kiến trúc hệ thống (39)
    • 3. Dữ liệu trong sổ cái (40)
    • 4. Các bước tiến hành (41)
      • 4.1. Thiết lập các cấu hình cho mạng, channel và chaincode (41)
      • 4.2. Lập trình chaincode (42)
      • 4.3. Khởi chạy mạng (46)
      • 4.4. Sử dụng chaincode (50)
      • 4.5. Lập trình ứng dụng (52)
  • VI. TỔNG KẾT (55)
    • 1. Kết quả đạt được (55)
    • 2. Mục tiêu hướng tới (55)
  • TÀI LIỆU THAM KHẢO (56)

Nội dung

GIỚI THIỆU CHUNG

Thông tin nhóm

- Thành viên 1 : Dương Công Vũ

Email : 19521110@gm.uit.edu.vn

Tổng quan về đề tài

2.1 Giới thiệu về đề tài

Hệ sinh thái Hyperledger, đặc biệt là Hyperledger Fabric, đang thu hút sự chú ý từ các nhà phát triển blockchain toàn cầu nhờ mã nguồn mở và tính linh hoạt trong cài đặt và vận hành Hyperledger Fabric hiện là công cụ phổ biến nhất để triển khai mạng blockchain phân quyền Trong bối cảnh các tập đoàn, chính phủ và cơ quan đang nỗ lực áp dụng công nghệ blockchain để giải quyết các vấn đề hiện tại, Hyperledger Fabric cung cấp cho nhà phát triển cơ hội tiếp cận dễ dàng với công nghệ này và xây dựng các ứng dụng liên quan.

Bài nghiên cứu này sẽ khám phá các thành phần và khái niệm cơ bản của Hyperledger Fabric, đồng thời phân tích chức năng và nhiệm vụ của từng thành phần Ngoài ra, chúng tôi sẽ trình bày phương pháp áp dụng công nghệ này trong việc xây dựng mạng blockchain.

Nghiên cứu này sẽ trình bày các khái niệm cơ bản về blockchain và giới thiệu dự án Hyperledger cùng với Hyperledger Fabric và các thành phần của nó Bài viết cũng sẽ đề cập đến Minifabric, một công cụ hỗ trợ việc vận hành và triển khai mạng Fabric một cách nhanh chóng, đồng thời hướng dẫn ứng dụng Minifabric để xây dựng một mạng blockchain đơn giản.

- Kiến thức về công nghệ blockchain

- Hiểu được kiến trúc của Hyperledger Fabric

- Sử dụng được các câu lệnh của Minifabric

- Xây dựng thành công mạng blockchain với Minifabric

Công cụ sử dụng

- Ngôn ngữ lập trình chaincode NodeJs

CÔNG NGHỆ BLOCKCHAIN

Blockchain là gì?

Khái niệm blockchain đã trở nên quen thuộc trong ngành công nghệ thông tin và nhiều lĩnh vực khác Các công ty, tập đoàn và chính phủ đang nỗ lực áp dụng công nghệ blockchain để tối ưu hóa hiệu suất công việc.

Blockchain là một hệ thống lưu trữ dữ liệu phân tán, trong đó dữ liệu được lưu trữ trên nhiều máy tính tham gia mạng, gọi là các node Mỗi node giữ một phiên bản của sổ cái, và tất cả các phiên bản này luôn đồng bộ, đảm bảo tính thống nhất về dữ liệu.

Sổ cái là kho lưu trữ dữ liệu và lịch sử giao dịch trên mạng blockchain, nơi các giao dịch được mã hóa và đóng gói thành các khối (block) Dữ liệu trong các block không thể thay đổi trực tiếp mà phải thông qua việc tạo thêm block mới Các block được liên kết với nhau nhờ giá trị mã hóa của block trước, tạo thành một chuỗi vững chắc khó bị phá vỡ Để thay đổi thông tin trên một block, cần phải thay đổi tất cả các block liên quan phía sau, điều này làm cho blockchain trở thành nơi lưu trữ thông tin an toàn Việc thay đổi dữ liệu trên sổ cái yêu cầu kiểm soát phần lớn các node trong mạng lưới.

Blockchain không chỉ mang lại lợi ích từ sổ cái phân tán mà còn cung cấp hợp đồng thông minh, là chương trình hoạt động trên mạng blockchain để xử lý dữ liệu Hợp đồng thông minh thực hiện giao dịch tự động và an toàn thông qua cơ chế đồng thuận, đảm bảo rằng dữ liệu trong mạng luôn nhất quán và đồng bộ Để một giao dịch được công nhận, cần có sự tham gia của nhiều node trong quá trình đồng thuận.

Lợi ích của sử dụng Blockchain

Công nghệ blockchain nổi bật với khả năng lưu trữ dữ liệu hiện đại, mang lại sự an toàn và minh bạch vượt trội so với các phương thức lưu trữ truyền thống như cơ sở dữ liệu tập trung hay giấy tờ Nhờ vào tính chất minh bạch và có thể kiểm chứng của các giao dịch trên mạng blockchain, tình trạng giả mạo thông tin giao dịch sẽ không còn xảy ra Hơn nữa, dữ liệu trên blockchain luôn đồng bộ, giúp ngăn chặn việc lợi dụng thông tin không đồng bộ để trục lợi.

Công nghệ blockchain cho phép các thành phần trong mạng giao dịch trực tiếp với nhau, loại bỏ sự cần thiết của bên trung gian, từ đó tiết kiệm chi phí và thời gian Trước đây, giao dịch thường yêu cầu bên thứ ba làm chứng, gây ra sự phức tạp và tốn kém Nhờ vào blockchain, nhà nông có thể bán hàng trực tiếp cho khách hàng mà không cần thương lái, giúp tối ưu hóa mô hình kinh doanh và chỉ giữ lại những thành phần chính.

Những bất cập của các mạng blockchain hiện tại

Blockchain mang lại nhiều lợi ích rõ ràng, nhưng vẫn tồn tại một số hạn chế khiến việc áp dụng công nghệ này trong thực tế gặp khó khăn.

Cài đặt một mạng blockchain yêu cầu một đội ngũ lớn các kỹ sư và chuyên gia do tính phức tạp và đặc thù của công nghệ này Mỗi mạng blockchain còn có những quy định hệ thống riêng, khiến việc thiết lập một quy trình chuẩn trở nên khó khăn.

Kích thước mạng lưới là yếu tố quan trọng để đảm bảo hiệu quả hoạt động của một mạng blockchain, yêu cầu số lượng lớn các node tham gia và duy trì Tuy nhiên, điều này gây khó khăn trong việc triển khai ứng dụng blockchain do thiếu tài nguyên nội bộ và không thể mở mạng công cộng cho các node bên ngoài tham gia, vì một số dữ liệu cần được bảo mật và chỉ được lưu hành trong phạm vi cơ quan.

Tính bảo mật trong mạng blockchain có thể bị đe dọa khi số lượng node quá ít, làm cho hệ thống dễ bị tấn công bằng cách chiếm quyền điều khiển một số node Hơn nữa, sự thiếu hụt quy định rõ ràng về quản lý và thực hiện giao dịch trên nền tảng blockchain khiến nhiều doanh nghiệp gặp khó khăn trong việc triển khai công nghệ này.

HYPERLEDGER FABRIC

Giới thiệu về Hyperledger Foundation

Hyperledger Foundation là tổ chức phi lợi nhuận cung cấp tài nguyên cần thiết cho sự phát triển hệ sinh thái blockchain mã nguồn mở Được khởi xướng bởi Linux Foundation vào cuối năm 2015, Hyperledger đã nhận được sự hỗ trợ từ các công ty công nghệ lớn như IBM, Intel và SAP Ariba để phát triển hệ thống sổ cái phân tán và các ứng dụng blockchain liên quan.

Mục tiêu của dự án là phát triển công nghệ sổ cái phân tán dựa trên blockchain để hỗ trợ các lĩnh vực như tài chính, công nghệ và logistics Dự án thiết lập các tiêu chuẩn thiết kế và tạo ra các module giúp vận hành mạng blockchain một cách dễ dàng và nhanh chóng Đồng thời, nó cung cấp công cụ kiểm soát, quản lý và vận hành mạng lưới blockchain, với các module phát triển độc lập nhưng dễ dàng kết hợp nhờ các tiêu chuẩn có sẵn Sau 6 năm phát triển, Hyperledger Foundation đã ra mắt 4 framework và 6 công cụ hỗ trợ trong việc xây dựng và vận hành mạng lưới blockchain, nhờ vào sự đóng góp của cộng đồng và các công ty công nghệ hàng đầu.

4 framework lớn đã được ra mắt:

- Hyperledger Caliper: Công cụ đo lường mạng blockchain

- Hyperledger Cello: Bộ công cụ phát triển blockchain

- Hyperledger Composer: Bộ công cụ xây dựng mạng blockchain cho môi trường doanh nghiệp

- Hyperledger Explorer: Ứng dụng web giúp giám sát mạng blockchain

- Hyperledger Quilt: Công cụ vận hành hệ thống blockchain

- Hyperledger Ursa: Thư viện mã hoá

Đội ngũ Hyperledger đang phát triển nhiều dự án mã nguồn mở, khuyến khích sự đóng góp từ cộng đồng Thông tin chi tiết về các dự án có thể được tìm thấy trên trang chủ của Hyperledger.

Tổng quan về Hyperledger Fabric

Hyperledger Fabric, được phát triển bởi IBM và Digital Asset, hiện là nền tảng blockchain phổ biến nhất cho các doanh nghiệp lớn Nền tảng này được thiết kế để phát triển các ứng dụng và giải pháp theo hướng mô-đun, cho phép dễ dàng kết hợp các thành phần như sổ cái, hợp đồng thông minh và các node để tạo thành mạng blockchain Với tính năng linh hoạt và khả năng mở rộng, Hyperledger Fabric đang trở thành công nghệ sổ cái phân tán hàng đầu hiện nay.

Hyperledger Fabric, một dự án được thành lập bởi Linux Foundation, tổ chức nổi tiếng với nhiều năm kinh nghiệm trong phát triển các dự án mã nguồn mở, hứa hẹn sẽ tiếp tục phát triển mạnh mẽ trong tương lai.

35 tổ chức và hơn 200 nhà phát triển đã đóng góp vào mã nguồn của Hyperledger Fabric

Công nghệ blockchain hiện nay, với sự linh hoạt và dễ sử dụng hơn so với các nền tảng như Ethereum hay NEO, đã được áp dụng rộng rãi trong nhiều lĩnh vực như nông nghiệp, vận tải, giáo dục, hành chính, bảo hiểm, y tế và cả trong phát hành nhạc kỹ thuật số.

Mặc dù Hyperledger là một công nghệ mạnh mẽ cho doanh nghiệp, nhưng việc thiết kế một mạng blockchain hoàn chỉnh đòi hỏi một đội ngũ phát triển có kỹ năng và kinh nghiệm dày dạn.

3 Lịch sử hình thành và phát triển Được ra mắt từ năm 2015 và ra bản alpha release (1.0) vào giữa năm 2016, Hyperledger fabric được xem như là dự án cốt lõi của dự án Hyperledger Phiên bản mới nhất thời điểm viết báo cáo là v2.3.3 ra mắt ngày 2/9/2021 Github của dự án đã tiếp nhận hơn 13.900 commit từ hơn 200 nhà phát triển

Hyperledger ngày càng được cải tiến qua các phiên bản cập nhật, mang đến nhiều tính năng và công cụ hỗ trợ cho lập trình viên trong việc phát triển ứng dụng Hiện tại, Hyperledger Fabric cho phép sử dụng các ngôn ngữ lập trình phổ biến như Java, Go và Node.js để viết mã nguồn cho hợp đồng thông minh, thay vì phải sử dụng ngôn ngữ riêng biệt như các công nghệ khác Điều này giúp đội ngũ phát triển tiết kiệm thời gian và công sức trong quá trình phát triển ứng dụng blockchain.

Hyperledger Fabric và Hyperledger Foundation đã phát triển một cộng đồng toàn cầu các nhà phát triển, nhờ vào sự hỗ trợ tích cực từ công nghệ, nhằm tạo điều kiện cho việc hỗ trợ và giúp đỡ lẫn nhau.

Cộng đồng sử dụng

Hyperledger Fabric là lựa chọn hàng đầu cho các doanh nghiệp và tập đoàn lớn trên toàn cầu muốn phát triển ứng dụng blockchain nhằm giải quyết các vấn đề kinh doanh Việc phát triển trên các công nghệ blockchain khác thường tốn nhiều thời gian và công sức, do đó, nhiều tập đoàn lớn như Walmart, British Columbia, Sony và Paypal đã triển khai Hyperledger Fabric để tối ưu hóa quy trình kinh doanh của họ.

Tính năng nổi bật

Khác với các công nghệ blockchain công cộng không phân quyền, Hyperledger Fabric tập trung vào các tập đoàn và tổ chức lớn, yêu cầu các thành phần trong mạng phải được phân quyền và nhận biết lẫn nhau Trong khi các mạng blockchain lớn như Bitcoin và Ethereum cho phép người dùng ẩn danh, dẫn đến sự không tin cậy khi các bên có thể tham gia với mục đích xấu, Hyperledger Fabric cung cấp một mạng lưới được quản trị và vận hành, nơi có sự "niềm tin" giữa các bên liên quan mà vẫn duy trì các đặc tính của công nghệ blockchain.

Trong mạng blockchain của Hyperledger Fabric, các thành phần tham gia được xác thực và cấp quyền truy cập thông qua cơ chế Identify, được quản lý bởi Membership Service Provider (MSP) Dữ liệu quan trọng của doanh nghiệp như hợp đồng thanh toán và lịch sử giao dịch được bảo mật và không bị lộ ra ngoài Các giao dịch chỉ diễn ra nội bộ, cho phép chỉ những bên liên quan xác minh tính hợp lệ của chúng Hơn nữa, mỗi giao dịch và hành động trong mạng đều có thể xác định rõ tác nhân thực hiện, khác biệt với các mạng blockchain ẩn danh hiện nay.

5.2 Cơ chế đồng thuận linh hoạt

Hyperledger Fabric nổi bật với cơ chế đồng thuận linh hoạt, cho phép nhà phát triển chọn lựa cơ chế phù hợp với quy mô ứng dụng, từ đó tối ưu hóa hiệu quả hoạt động và tránh lãng phí Hiện tại, hai cơ chế đồng thuận phổ biến trong công nghệ blockchain là "crash fault-tolerant (CFT)" và

Trong trường hợp các nhà phát triển xây dựng ứng dụng cho doanh nghiệp hoặc được điều hành bởi một bên đáng tin cậy, việc áp dụng cơ chế Byzantine Fault Tolerant (BFT) không cần thiết Thay vào đó, họ có thể dễ dàng chuyển sang cơ chế đồng thuận Crash Fault Tolerant (CFT) mà không cần thay đổi các thành phần khác của hệ thống.

Hyperledger Fabric hỗ trợ giao thức đồng thuận không cần năng lực tính toán cao như cơ chế Proof-of-Work (PoW) trong blockchain Điều này giúp tiết kiệm tài nguyên và giảm thiểu rủi ro từ các cuộc tấn công lợi dụng sức mạnh tính toán của nhiều máy tính để can thiệp vào dữ liệu trong mạng lưới.

Hyperledger Fabric được thiết kế với cấu trúc module hoá, cho phép các thành phần và công cụ tương tác linh hoạt và dễ dàng cài đặt Mỗi module có chức năng riêng, giúp nhà phát triển có khả năng tùy chỉnh và thay thế theo nhu cầu của doanh nghiệp Framework này cung cấp các module cơ bản, hỗ trợ tối ưu hóa thiết kế hệ thống.

- Ordering service: Thu thập sự đồng thuận của giao dịch rồi tổng hợp nhiều giao dịch lại thành khối và thêm vào sổ cái

- Membership Service Provider: Chịu trách nhiệm cho việc tổ chức, quản lí các thành phần trong mạng lưới với thông tin định danh được mã hoá

- Peer-to-peer gossip service: Phân tán khối được tạo ra bởi ordering service cho các peer

Hợp đồng thông minh hoạt động độc lập trong các container, cho phép người dùng dễ dàng thêm mới, cập nhật hoặc xoá bỏ một hợp đồng mà không ảnh hưởng đến các thành phần khác trong mạng lưới.

- Database manage system: Có thể linh hoạt sử dụng các hệ quản trị cơ sở dữ liệu khác nhau để lưu trữ trạng thái của sổ cái

- Endorsement & Policy: Các quy định về xác thực, đồng thuận được cấu hình độc lập cho các ứng dụng mà không làm ảnh hưởng tới hệ thống chung.

Kiến trúc và môi trường cài đặt

Blockchain là một hệ thống phân tán gồm các node kết nối qua mạng ngang hàng, được vận hành bằng các hợp đồng thông minh (chaincode) để xử lý dữ liệu và trạng thái của sổ cái Mỗi giao dịch cần được đồng thuận bởi các node và được các orderer xử lý để tạo thành khối, sau đó lưu vào sổ cái và cập nhật trạng thái.

Thành phần chính của mạng blockchain tạo bởi Hyperledger Fabric bao gồm:

Cấu tạo cơ bản của một mạng blockchain bao gồm ba tổ chức (R0, R1, R2) và được thiết lập thông qua CC1 (channel configuration 1), một loại chaincode Trong mạng này, kênh C1 (channel 1) đại diện cho một mạng nội bộ giữa các tổ chức Mỗi mạng có thể chứa nhiều kênh, và các kênh này hoạt động độc lập; chỉ những node tham gia vào kênh mới có thể tương tác với dữ liệu và chaincode trong kênh đó.

1 đang có 2 peer tham gia P1, P2 đại diện cho R1, R2 và R0 vận hành orderer node

Tất cả các node trong blockchain đều lưu trữ một phiên bản của sổ cái, vì đây là công nghệ phân tán, mỗi node giữ một bản sao Các sổ cái này được ánh xạ thành các trạng thái và lưu trữ trong cơ sở dữ liệu trạng thái để dễ dàng truy xuất Chỉ có phiên bản sổ cái của order node không chứa các trạng thái, vì điều này là không cần thiết.

Các ứng dụng A1 và A2 của các tổ chức được sử dụng để tương tác với kênh Để kết nối với mạng blockchain, các node, ứng dụng và tổ chức cần có chứng thực từ cơ quan cấp chứng chỉ, nhằm xác định danh tính và phân quyền trong mạng blockchain.

Khi người dùng tương tác qua ứng dụng sử dụng bộ công cụ Hyperledger Fabric (Fabric SDK), các giao dịch được gửi đến tất cả các peer có chức năng chứng thực theo chính sách Endorsing Các node này xác minh giao dịch và tạo ra một output dựa trên sổ cái mà chúng nắm giữ, sau đó gửi phản hồi về ứng dụng Ứng dụng thu thập phản hồi từ các node chứng thực và gửi đến node orderer Node orderer tổng hợp và so sánh các kết quả, và nếu đa số node chứng thực thành công, nó sẽ tạo ra một block và gửi đến tất cả các node trong kênh để cập nhật sổ cái.

Hyperledger Fabric có thể hoạt động trên nhiều hệ điều hành hỗ trợ Docker như Windows, MacOS và Ubuntu, cũng như trên các dịch vụ máy ảo như EC2 và hệ thống quản lý container như Kubernetes, nhờ vào việc các thành phần của nó chạy bên trong các container.

Khái niệm cơ bản

Trong mạng blockchain, tất cả các thành phần như peers, orderer, và ứng dụng, cũng như các thành phần bên ngoài muốn tương tác, đều cần có chứng chỉ định danh Hyperledger Fabric sử dụng chữ ký số X.509, một tiêu chuẩn chứng chỉ khoá công khai của Liên minh viên thông Quốc Tế Việc định danh các thành phần là rất quan trọng trong mạng phân quyền, vì nó đảm bảo rằng các nguồn tài nguyên và dữ liệu chỉ có thể được truy cập và thao tác khi có quyền Đồng thời, việc này cũng giúp Hyperledger Fabric xác định quyền hạn và thuộc tính của từng thành phần cũng như tổ chức vận hành chúng.

Certificates must be verified by a trusted entity, and Hyperledger Fabric includes a module known as the Membership Service Provider (MSP), which determines the permissions associated with a certificate.

Chứng chỉ kỹ thuật số theo tiêu chuẩn X.509 bao gồm các thuộc tính quan trọng giúp định danh thành phần, trong đó có "subject" và "public key" "Subject" chứa thông tin cơ bản về đối tượng được chứng thực như tên, địa chỉ và userID, trong khi "public key" được sử dụng để kiểm tra độ chính xác của dữ liệu trong chứng chỉ Để tạo ra chứng chỉ kỹ thuật số, cần có thêm một khoá bí mật (private key) để mã hoá dữ liệu trong chứng chỉ.

Hyperledger Fabric cung cấp một module gọi là Certificate Authority, cho phép tạo ra các chứng chỉ kỹ thuật số cho các tổ chức và thành phần tham gia vào mạng Để tương tác với mạng blockchain, mỗi tác nhân từ tổ chức cần có ít nhất một chứng chỉ kỹ thuật số, do đó tổ chức cần cài đặt ít nhất một Certificate Authority trong hệ thống Việc cài đặt Fabric CA trở nên dễ dàng hơn khi Hyperledger cung cấp một Docker image hỗ trợ quá trình này.

Chứng chỉ do Certificate Authority phát hành cần được xác thực bởi MSP trong mạng blockchain Mỗi thành phần trong mạng đều đi kèm với một MSP để xác thực chứng chỉ từ các thành phần khác MSP đóng vai trò quan trọng trong việc xác nhận quyền truy cập tài nguyên và thực hiện các hành động liên quan đến chứng chỉ.

Cơ chế hoạt động của MSP giống như một kho lưu trữ các public key của các thành phần trong hệ thống Để xác minh nguồn gốc của một giao dịch hoặc hành động, cũng như kiểm tra xem thông tin dữ liệu có bị thay đổi trong quá trình truyền tải hay không, MSP sẽ tra cứu public key và sử dụng chúng để xác thực thông tin.

MSP có 2 loại chính trong mạng blockchain bao gồm:

- Local MSP bên trong một node

- Channel MSP bên trong một channel

Local MSP là thành phần quan trọng trong mạng blockchain, giúp phân quyền cho các node như ứng dụng, peer và orderer Nó xác định quyền hạn của các node, chẳng hạn như ai là admin và có quyền điều hành, cũng như việc ứng dụng có được phép thực hiện giao dịch hay không Tất cả các node trong mạng blockchain cần cài đặt local MSP để hoạt động hiệu quả, cài đặt chaincode và sử dụng hợp đồng thông minh Local MSP được tổ chức dưới dạng file và folder, chứa thông tin cần thiết về các thành phần trong mạng.

Channel MSP được sử dụng để xác minh các thành phần trong hệ thống ở mức độ kênh, bao gồm các peers, nodes và ứng dụng từ các tổ chức khác nhau Khi một tổ chức tham gia vào channel, cần có local MSP để định danh các thành phần nội bộ, đồng thời thông tin của các thành phần này cũng phải được khai báo trong channel MSP Nếu không, các giao dịch và yêu cầu từ các thành phần đó sẽ không hợp lệ Channel MSP được tổ chức dưới dạng file config, trong đó bao gồm các tổ chức tham gia và các thành phần của những tổ chức này.

Policies trong mạng blockchain giống như một bộ luật, xác định các điều kiện cần tuân thủ Chẳng hạn, chúng quy định số lượng tổ chức cần đồng thuận để tạo ra một block mới, cách thức tạo block từ mỗi giao dịch, và các tổ chức nào được phép đồng thuận để thêm hợp đồng thông minh vào mạng Tóm lại, mọi hoạt động trong mạng blockchain đều dựa vào các điều khoản được quy định trong policies.

Khác với các mạng blockchain như Bitcoin hay Ethereum, nơi giao dịch được xác minh bởi bất kỳ node nào, Hyperledger Fabric là một mạng blockchain có phân quyền và chính sách rõ ràng Chính sách này quy định cách thức vận hành mạng lưới, giới hạn tài nguyên và hành động mà mỗi node có thể thực hiện, đồng thời đưa ra quy tắc đồng thuận khi thêm hoặc sửa đổi các thành phần như channel, organization, và chaincode Khi một giao dịch diễn ra, chính sách sẽ thu thập chữ ký số và xác nhận tính hợp lệ của các thành phần tham gia dựa trên các quy tắc đã được thiết lập trước đó.

Các điều khoản liên quan đến hành động sẽ được quy định trong các miền cụ thể, ví dụ như điều khoản thêm mới một peer nằm trong phần quản trị của tổ chức - nhóm Application Các quy định này được định nghĩa trong file “configtx.yaml” và có thể được chỉnh sửa khi hệ thống đã hoạt động.

Peer là thành phần cốt lõi của mạng blockchain, chứa sổ cái và hợp đồng thông minh, cho phép ứng dụng tương tác với dữ liệu Mỗi peer có khả năng lưu trữ nhiều sổ cái và chaincode nếu tham gia vào nhiều channel Các tổ chức trong mạng có thể sở hữu nhiều peer với các vai trò khác nhau.

Khi ứng dụng tương tác với peer, peer sẽ cung cấp dữ liệu dựa trên kết quả khởi chạy chaincode với sổ cái tương ứng Ứng dụng sẽ yêu cầu orderer xác minh giao dịch bằng cách so sánh kết quả với các peer khác trong hệ thống Nếu tất cả peer đều cho ra kết quả giống nhau, giao dịch sẽ được coi là hợp lệ Sau đó, orderer tạo ra một block và gửi đến các peer để cập nhật sổ cái.

Hyperledger Fabric sử dụng sổ cái phân tán để lưu trữ dữ liệu, với các sổ cái được lưu trữ trên nhiều peer khác nhau Mọi thay đổi sẽ được cập nhật đồng thời trên tất cả các sổ cái nhằm đảm bảo tính nhất quán của dữ liệu Sổ cái trong Hyperledger Fabric được chia thành hai phần chính: blockchain và world state.

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 dưới dạng key – value, giúp ứng dụng truy cập nhanh chóng mà không cần duyệt qua tất cả các giao dịch Dữ liệu này được lưu trữ trong cơ sở dữ liệu phi quan hệ (noSQL), cho phép nhà phát triển tùy chỉnh hệ quản trị theo nhu cầu Khi một giao dịch thay đổi dữ liệu trên blockchain được xác minh hợp lệ, dữ liệu mới sẽ được cập nhật lên world state, kèm theo phiên bản tương ứng để theo dõi lịch sử cập nhật của blockchain và truy vấn lịch sử thay đổi của dữ liệu.

MINIFABRIC

Giới thiệu về Minifabric

Hyperledger Fabric là công nghệ mạnh mẽ cho việc phát triển mạng blockchain phân quyền, nhưng độ phức tạp và yêu cầu quy mô lớn khiến nhiều nhà phát triển độc lập và tổ chức gặp khó khăn trong việc tiếp cận Để giải quyết vấn đề này, Minifabric, một dự án trong Hyperledger Labs, đã ra đời, giúp đơn giản hóa quá trình tạo dựng mạng blockchain dựa trên Hyperledger Fabric một cách nhanh chóng và dễ dàng.

Minifabric là công cụ hỗ trợ các nhà phát triển làm quen với việc phát triển smart contract bằng cách cung cấp thông tin kết nối cần thiết để tương tác với mạng Fabric Nó cho phép khởi tạo và triển khai mạng blockchain nhanh chóng, giúp người dùng hiểu rõ cách thức hoạt động của Fabric và các thành phần trong mạng Hiện tại, Minifabric đang được bổ sung liên tục các tính năng mới và nhận được đánh giá cao từ cộng đồng lập trình viên, với trang Github của Minifabric thu hút nhiều sự quan tâm.

Minifabric là công cụ mạnh mẽ cho phép nhà phát triển tạo mạng Fabric chỉ với vài lệnh đơn giản trên nhiều nền tảng như Linux, OS X, Windows và VirtualBox VM Không chỉ dừng lại ở việc là một project Lab, Minifabric còn hỗ trợ triển khai các mạng blockchain trong môi trường production cho các ứng dụng blockchain nhỏ và nội bộ nhờ tích hợp với Kubernetes Bên cạnh đó, các câu lệnh, cấu hình và khả năng chạy trên Docker giúp Minifabric trở nên linh hoạt và dễ dàng tiếp cận cho việc phát triển và triển khai mạng Fabric.

Tuy là một Lab project, Minifabric vẫn cung cấp đầy đủ các tính năng của Hyperledger Fabric như:

- Cài đặt và triển khai, mở rộng mạng Fabric

- Tạo channel và các đầy đủ các tương tác với channel

- Triển khai và cài đặt chaincode cũng như data collection

- Module giúp giám sổ cái thông qua Hyperledger Explorer

- Giám sát các node và tình trạng mạng

Môi trường để có thể cài đặt và sử dụng Minifabric:

- Ít nhất 5GB trống trong ổ đĩa

Các câu lệnh cơ bản

2.1 Tải mã nguồn từ Github và cài đặt

Câu lệnh này cho phép tải mã nguồn Minifabric từ Github về máy tính để sử dụng Sau đó, cần mở terminal trong thư mục minifab và thiết lập biến PATH cho hệ thống tới thư mục này, giúp bạn có thể sử dụng câu lệnh minifab từ bất kỳ đâu.

2.2 Khởi chạy Để khởi chạy một mạng Fabric hoàn toàn mới, chỉ cần sử dụng câu lệnh minifabric up trong thư mục minifab để bắt đầu khởi tạo mạng blockchain với những config có sẵn và với phiên bản Minifabric mới nhất Để có thể sử dụng câu lệnh này, mọi dữ liệu về certificate và sổ cái của lần chạy trước phải được xoá bỏ thông qua câu lệnh cleanup

Các cấu hình có thể được điều chỉnh linh hoạt theo mục đích sử dụng, cho phép bạn triển khai mạng blockchain với phiên bản cụ thể bằng cách sử dụng các tham số đầu vào phù hợp.

Một số tham số truyền vào cho câu lệnh minifab up bao gồm:

• -l | chaincode-language: Ngôn ngữ của chaincode sử dụng trong hệ thống (node, go, java)

• -i | fabric-release: Phiên bản Fabric sử dụng để khởi chạy mạng

• -s | database-type: Loại cơ sở dữ liệu sử dụng lưu trữ state của ledger (goleveldb, couchdb)

• -e | expose-endpoints: Mạng blockchain ra bên ngoài hay chỉ được sử dụng nội bộ (true, false)

Để khởi chạy mạng với dữ liệu cũ từ lần chạy trước, bạn cần sử dụng câu lệnh netup Khi thực hiện lệnh này, mạng sẽ được khởi động với các chứng chỉ và dữ liệu từ lần chạy trước đó.

When the Fabric network is launched, all certificates and data related to the blockchain are stored in the vars directory This directory houses chaincode, applications, profiles, wallets for network connectivity, policies, MSP, and other configurations.

Có 2 cách để tắt một mạng Fabric trong Minifabric bao gồm:

Câu lệnh down giúp tắt toàn bộ các thành phần trong mạng bằng cách xóa tất cả các Docker container mà không làm mất chứng chỉ đã tạo và dữ liệu trong sổ cái, cho phép khởi động lại hệ thống mà không cần cài đặt lại Trong khi đó, câu lệnh cleanup dừng toàn bộ mạng và xóa toàn bộ dữ liệu trong thư mục làm việc theo mặc định.

Chaincode là thành phần quan trọng trong mạng Hyperledger Fabric, giúp định hình hệ thống và tương tác với sổ cái Nó có thể được lập trình bằng NodeJs, Go hoặc Java Sau khi lập trình, chaincode cần được cài đặt lên mạng blockchain để sử dụng Tại Minifabric, các chaincode được lưu trữ trong thư mục vars/chaincode//, trong đó là tên chaincode và là ngôn ngữ lập trình Đặc biệt, Minifabric cho phép cài đặt nhiều chaincode với các ngôn ngữ khác nhau trong cùng một mạng, mang lại sự linh hoạt cho các nhà phát triển.

Minifabric cung cấp các mẫu chaincode như simple và samplecc, cho phép bạn tự triển khai bằng nhiều ngôn ngữ khác nhau Để triển khai các chaincode này, bạn có thể sử dụng lệnh ccup.

Trước khi cài đặt một chaincode, ta phải đem source code của chain code đó vào thư mục /vars/chaincode và cấu trúc thư mục giống như trên

Một số tham số của câu lệnh ccup:

• -n | chancode-name: Tên của chaincode được cài đặt

• -l | chaincode-language: Ngôn ngữ sử dụng để lập trình chaincode

• -v | chaincode-version: Phiên bản cài đặt của chaincode, khi cần cập nhật một chaincode, ta chỉ cần chạy lại câu lệnh trên với phiên bản mới hơn

• -r | chaincode-private: Xác định chaincode có xử lí các dữ liệu cần bảo mật hay không, mặc định sẽ là false

• -d | init-required: Xác định có hay không cần chạy hàm init của chaincode, mặc định sẽ là true

Câu lệnh ccup sẽ thực hiện các tiến trình sau để thêm hoặc cập nhật một chaincode vào mạng Fabric:

Một khi chaincode được thêm thành công vào mạng, ta có thể sử dụng câu lệnh invoke hoặc query để gọi các hàm trong chaincode:

Câu lệnh invoke được sử dụng để gọi các phương thức có khả năng thay đổi dữ liệu trong sổ cái, yêu cầu sự đồng thuận từ các node để thực hiện Trong khi đó, câu lệnh query phục vụ cho việc truy vấn dữ liệu trên sổ cái của peer mà ứng dụng đang kết nối.

Một số tham số của câu lệnh invoke hoặc query:

• -n | chaincode-name: Tên của chaincode được gọi

• -p | chaincode-parameters: Các tham số truyền vào để khởi chạy các phương thức Tham số đầu tiên là tên của phương thức được gọi

Minifabric cho phép truy vấn thông tin từ các block trong sổ cái, bao gồm các giao dịch được đóng gói Để thực hiện việc truy vấn này, người dùng có thể sử dụng câu lệnh blockquery.

Tham số -b khi được truyền giá trị "newest" sẽ cung cấp thông tin về block mới nhất Nếu truyền một số n, nó sẽ trả về block có thứ tự n+1, với thứ tự block bắt đầu từ 0.

Thông tin của block cần xem sẽ được trả về ở file /vars/mychannel_newest_txs.json hoặc ./vars/mychannel_6_txs.json

2.7 Sửa đổi channel Để cập nhật thông tin cho một channel, ta sử dụng câu lệnh channelquery để lấy về file config của server

Sau khi chỉnh sửa thông tin channel ở file _config.json ta sử dụng các câu lệnh channelsign và channelupdate để cập nhật thay đổi

2.8 Thêm một tổ chức mới vào mạng

Khi muốn thêm một tổ chức mới vào mạng Fabric, ta thực hiện các bước

1 Truy vấn thông tin channel bằng câu lệnh channlequery như ở trên

2 Tìm JoinRequest file của tổ chức cần thêm vào mạng, file này được tạo bởi Minifabric khi muốn thêm một tổ chức mới

3 Cập nhật file channel config và thêm nội dung của JoinRequetst vừa tìm được

4 Cập nhật channel với 2 câu lệnh channelsign, channelupdate như trên

2.9 Truy vấn tình trạng của mạng

Minifabric cung cấp câu lệnh stats để kiểm tra tình trạng các node và service trong mạng:

Hyperledger Explorer là một công cụ quan trọng trong hệ sinh thái Hyperledger, cho phép giám sát và thống kê thông tin của mạng blockchain qua giao diện web Nó cung cấp khả năng theo dõi các giao dịch và hiển thị trạng thái của các peer cũng như tổ chức trong mạng lưới Để kết nối Hyperledger Explorer với Minifabric, người dùng cần sử dụng câu lệnh cụ thể.

Sau khi câu lệnh được thực hiện thành công, ta truy cập vào giao diện của Hyperledger Explorer bằng tài khoản và mật khẩu: exploreradmin / exploreradminpw.

Các cài đặt cơ bản

Các cấu hình cho mạng Fabric đều có thể dễ dàng thiết lập trong Minifabric thông qua các file cấu hình tách biệt

3.1 Cấu hình thành phần mạng Để cài đặt các thành phần tham gia mạng như các tổ chức, các node peers, orederer,… ta thay đổi các giá trị trong file “spec.yaml”

Danh sách các Tổ chức Cấp Chứng chỉ (Certificate Authority - CA) là những thành phần quan trọng trong mạng, có nhiệm vụ cấp phát các chứng chỉ danh tính Mỗi tổ chức tham gia vào mạng đều cần phải khai báo ít nhất một CA để đảm bảo tính xác thực và bảo mật.

• peers: danh sách các peer của các tổ chức, một tổ chức có thể có nhiều hơn

• orderers: danh sách các order node trong mạng

• settings: cài đặt chế độ cho các thành phần (mặc định là chế độ DEBUG)

• netname: tên của mạng được khởi tạo

• endpoint_address: dùng để thay thế local ip bằng public ip trong trường hợp muốn deploy mạng

Container_options là cấu hình Docker chung cho các container, giúp các module mạng hoạt động hiệu quả Thông thường, nó được sử dụng để ghi log hoặc tự động khởi động khi máy chủ khởi động lại, đảm bảo tính liên tục và ổn định cho hệ thống.

• một số config khác về proxy,…

3.2 Thiết lập biến môi trường

Ngoài việc sử dụng các tham số trong các câu lệnh đã được giới thiệu trước đó để áp dụng thuộc tính, chúng ta còn có thể thiết lập các biến môi trường mặc định bằng cách chỉnh sửa file “envsettings”.

• CHANNEL_NAME: tên của channel mặc định áp dụng cho câu lệnh

• CC_LANGUAGE: ngôn ngữ lập trình chaincode mặc định

• IMAGETAG: tag phiên bản của các docker image

• CC_VERSION: version mặc định của chaincode

• CC_NAME: chaincode name mặc định

• DB_TYPE: CSDL sử dụng để lưu trữ ledger state

• CC_PARAMETERS: tham số mặc định truyền vào chaincode

• CC_INIT_REQUIRED: có hoặc không yêu cầu khởi chạy hàm init của chaincode

• EXPOSE_ENDPOINTS: có hoặc không public mạng ra bên ngoài

• BLOCK_NUMBER: block number mặc định dùng cho câu truy vấn

• CURREN_ORG: tên của tổ chức mặc định để khởi chạy các script

• RUN_OUTPUT: kiểu output của các câu lệnh

Và một số thiết lập khác có thể tuỳ chỉnh dễ dàng giúp nhà phát triển xây dựng mạng blockchain phù hợp với yêu cầu nhất

4 Các thành phần của Minifabric

Minifabric được chia làm các thành phần chính sau:

• Các file config: spec.yaml, Dockerfile, envsettings,…

• Thư mục Script chứa các script để người dùng tương tác với Minifab

• Chaincode: chứa các chaincode mặc định hoặc chaincode của người dùng thêm vào

• App: chứa một application mẫu được viết bằng các ngôn ngữ khác nhau

• Vars: thư mục chứa nội dung của một mạng đang khởi chạy (chaincode, app, config, wallets,…)

XÂY DỰNG ỨNG DỤNG MINH HOẠ

Giới thiệu ứng dụng minh hoạ

Hiện nay, nhiều tổ chức và cá nhân đang tích cực thực hiện các hoạt động từ thiện để hỗ trợ những hoàn cảnh khó khăn do thiên tai và đại dịch, nhận được sự đồng tình của xã hội Tuy nhiên, tình trạng thiếu minh bạch trong các giao dịch và hoạt động trao/tặng đã gây khó khăn, khiến người dân chưa nhận được sự giúp đỡ kịp thời Để khắc phục vấn đề này và nâng cao phúc lợi cho cộng đồng, tập đoàn X đã phát triển một hệ thống quản lý voucher điện tử dựa trên công nghệ blockchain Dự án này sẽ cung cấp các voucher miễn phí cho người dân trong khu dân cư, với thông tin được lưu trữ an toàn trên mạng blockchain do tập đoàn vận hành.

Cư dân có thể tải ứng dụng để yêu cầu voucher từ nhà cung cấp Khi nhận được voucher, người dùng có thể sử dụng để đổi lấy dịch vụ và hàng hóa tại các cửa hàng hoặc đại lý đã liên kết với tập đoàn.

Hệ thống bao gồm các ứng dụng client:

- Ứng dụng di động giành cho người dùng cuối

- Ứng dụng quản lý dành cho nhà cung cấp và đối tác bán hàng Server backend:

Mạng blockchain đóng vai trò quan trọng trong việc lưu trữ thông tin của các voucher một cách bảo mật và an toàn trên các sổ cái Điều này đảm bảo rằng các voucher chỉ có thể được sử dụng một lần, đồng thời cung cấp thông tin cho ứng dụng di động và ứng dụng quản lý.

Mạng blockchain MySQL Hyperledger Fabric voucher hoạt động theo thời gian thực, do nhà cung cấp (chủ sở hữu dự án) quản lý và các đối tác liên kết tham gia vận hành các node Các bên liên kết có thể sử dụng ứng dụng do nhà cung cấp cung cấp để thực hiện giao dịch bằng voucher, hoặc tự phát triển ứng dụng riêng để kết nối và giao dịch trên mạng blockchain.

Kiến trúc hệ thống

Hệ thống bao gồm một mạng blockchain do Supplier vận hành, với sự tham gia của các đối tác Mỗi tổ chức có thể sở hữu nhiều peer để quản lý sổ cái Server của Supplier kết nối trực tiếp với peer quản lý của mình để tương tác với sổ cái Các đối tác có thể phát triển ứng dụng tương tác với peer của tổ chức mình, trong khi giao diện người dùng cuối sẽ thông qua các server để tương tác với mạng blockchain.

Các thành phần trong mạng sẽ được phân quyền theo cơ chế Policy do nhà cung cấp quy định, yêu cầu các tổ chức hoàn thành cơ chế đồng thuận trước đó Việc thêm mới hoặc thay đổi chaincode cần sự đồng thuận từ đa số các node trong mạng Đối với giao dịch với voucher, sự đồng thuận của các bên liên quan là cần thiết; ví dụ, khi người dùng sử dụng voucher để đổi sản phẩm tại cửa hàng của đối tác B, giao dịch này cần có sự đồng thuận của cả B và nhà cung cấp.

Thiết lập mặc định của mạng sẽ bao gồm:

- 2 tổ chức tham gia: supplier.voucher.com và dealer1.voucher.com

- Mỗi tổ chức có một CA riêng

- Mỗi node vận hành 2 peer và 1 orderer

Hệ thống nhà cung cấp sẽ bao gồm hai peer: peer quản lý (manage peer) để quản lý server tương tác với mạng và peer người dùng (user peer) dành cho server người dùng tương tác với mạng Mạng sẽ được triển khai với tên gọi vouchernet, và kênh mặc định sẽ là voucherchannel.

Mạng sử dụng một chaincode mặc định "voucher" được phát triển bằng Javascript, với cơ sở dữ liệu couchDB để lưu trữ ledger state nhờ khả năng truy vấn mở rộng Ngoài ra, mạng được cấu hình cho phép người dùng bên ngoài máy chủ truy cập thông qua phương thức EXPOSE, và các câu lệnh chạy trong môi trường vận hành sẽ được ký bởi nhà cung cấp.

Dữ liệu trong sổ cái

Voucher được tạo ra khi nhà cung cấp chấp nhận yêu cầu hỗ trợ từ người dùng, bao gồm hai phần: Voucher (id, status, token) được lưu trữ trên MySQL Trường token chứa thông tin của người tạo và người dùng, trong khi khóa của voucher được lưu trên sổ cái Thông tin này được mã hóa và chỉ có thể giải mã bằng khóa bí mật của người dùng để thực hiện giao dịch thanh toán Dữ liệu trong VoucherDetail được lưu trữ trên sổ cái.

- Voucher_id: id của voucher

- Citizen_id: id của user sở hữu voucher (thông tin citizen được lưu trên MySQL)

- Supplier_id: id của supplier tạo voucher

- Dealer_id: id của dealer thực hiện thanh toán voucher (null nếu voucher chưa được sử dụng)

- Status: tình trạng của voucher (UNSE | USED | DELETED | OUTDATE)

- Type: loại hỗ trợ của voucher (SUPPORT | HELP | URGENT)

- Package_id: id của gói dịch vụ được trao đổi (null nếu voucher chưa được sử dụng)

- Created_at: thời gian khởi tạo của voucher

- Updated_at: thời gian thực hiện cập nhật gần nhất

- Valid_date: thời hạn sử dụng của voucher

Các bước tiến hành

4.1 Thiết lập các cấu hình cho mạng, channel và chaincode Để bắt đầu thiết lập mạng Fabric đầu tiên, ta cần cấu hình mạng và các thành phần của mạng Các thông tin cơ bản về tên mạng, các thành phần tham gia sẽ được cấu hình trong file “spec.yaml” và envsettings

4.2 Lập trình chaincode Để cung cấp khả năng tương tác cho các ứng dụng, ta cần lập trình voucher chaincode bao gồm các phương thức sau:

• CreateVoucher: tạo voucher mới và lưu vào sổ cái

• ReadVoucher: đọc thông tin của một voucher thông qua id

• CommitVoucher: xác nhận sử dụng voucher (phương thức được gọi bởi dealer)

• GetVoucherHistory: trả về lịch sử trạng thái của một voucher

• VoucherExists: kiểm tra sự tồn tại của một voucher

• InitLedger: phương thức khởi tạo mặc định cho chaincode

Chaincode được phát triển bằng Javascript với thư viện “fabric-contract-api” để tương tác với sổ cái Minifabric cung cấp một mẫu chaincode bằng Javascript trong thư mục chaincode, bao gồm một số hàm có sẵn cho các nhà phát triển tham khảo Chỉ cần sao chép thư mục chaincode đã có sẵn, đổi tên và bắt đầu lập trình chaincode.

Hàm CreateVoucher sẽ nhận vào các thông tin của voucher và lưu vào sổ cái:

Trước khi thêm mới voucher, cần kiểm tra sự tồn tại của key bằng hàm VoucherExists Sau khi lưu trữ thông tin voucher vào sổ cái bằng hàm putState, ta tạo một indexKey từ (voucher_id, citizen_id) và thêm vào cơ sở dữ liệu để tối ưu hóa truy vấn.

Phương thức VoucherExists nhận tham số đầu vào là một key và kiểm tra đã tồn tại document với key đó trong sổ cái hay chưa:

Phương thức ReadVoucher nhận tham số đầu vào là một key và trả về thông tin của một voucher nếu tồn tại:

The DeleteVoucher method takes a key as a parameter to remove a voucher from the ledger When deleting a data record, it is essential to remove both the record and its corresponding index key The function performs the voucher query, deletes the voucher, creates the index key, and removes the index key To retrieve the voucher's historical information, we implement the GetVoucherHistory function.

In the GetVoucherHistory function, an iterator for history is created using the getHistoryForKey function, and the predefined _GetAllResults function is employed to query the complete history of a document in the ledger.

Phương thức CommitVoucher dùng bởi Dealer để xác nhận một voucher đã được sử dụng bằng cách thay đổi trạng thái của voucher và thông tin về dealer, package,…

Phương thức InitLedger cho phép thiết lập kiểm tra chaincode đã được cài đặt và hoạt động trên mạng Trong hàm InitLedger, chúng ta có thể sử dụng các phương thức đã cài đặt để tương tác với sổ cái Ví dụ dưới đây minh họa cách sử dụng phương thức CreateVoucher để tạo và lưu một voucher mẫu vào sổ cái.

Sau khi hoàn tất các thiết lập và chaincode cho mạng, bước tiếp theo là xây dựng Docker image với tên tag “hyperledgerlabs/minifab:latest” Mặc dù có thể sử dụng image có sẵn trên Docker Hub, nhưng các thiết lập sẽ không được áp dụng, vì vậy nên tiến hành xây dựng image trên máy local Sử dụng lệnh: docker build -t hyperledgerlabs/minifab:latest để thực hiện.

Tiếp đến ta sử dụng câu lệnh:

/minifab up Để khởi chạy mạng

Ta có thể thấy các thuộc tính được thiết lập từ trước đã được áp dụng vào câu lệnh khi khởi chạy mạng

Minifabric sẽ khởi tạo các peer và orderer theo thông tin trong spec.yaml, cài đặt các kênh, thêm các node vào kênh, khởi tạo chaincode mặc định, thực hiện discovery và các thao tác khác để mạng hoạt động hiệu quả Hình ảnh dưới đây minh họa kết quả của lệnh khi mạng được khởi tạo thành công.

Tiếp theo ta kích hoạt module Expolorer để có thể quan sát các thành phần của mạng một cách trực quan hơn bằng câu lệnh:

Sau khi hoàn thành câu lệnh, bạn có thể truy cập vào đường dẫn và đăng nhập bằng tài khoản và mật khẩu để quan sát mạng Fabric một cách trực quan Trên màn hình chính của explorer, bạn sẽ thấy số lượng blocks, giao dịch, chaincode, nodes, các tổ chức trong mạng và các block mới nhất được thêm vào sổ cái Phần chaincode cho thấy chaincode voucher đã được thêm thành công vào mạng và sẵn sàng sử dụng.

Sau khi khởi tạo mạng và các thành phần mạng thành công, chaincode voucher đã sẵn sàng để sử dụng Để khởi động, chúng ta sẽ sử dụng phương thức InitLedger đã được khai báo.

Khi câu lệnh trả về với status: 200 nghĩa là smart contract đã được thực thi thành công

Khi kiểm tra thông tin block trên explorer, chúng ta nhận thấy một block mới đã được thêm vào với một giao dịch thành công Block này được tạo ra bởi các node orderer và được đưa vào sổ cái trên các peer Để truy vấn thông tin của block, chúng ta sử dụng câu lệnh phù hợp.

Sau khi hoàn thành câu lệnh, một tệp mới sẽ được tạo trong thư mục vars, chứa thông tin về block vừa được tạo, bao gồm các mã hash và các tham số được truyền vào smart contract.

Tiếp đến ta sử dụng câu lệnh query để lấy thông tin voucher vừa được thêm vào qua phương thức ReadVoucher:

Sau khi câu lệnh hoàn thành sẽ trả ra result là voucher đã được thêm vào trong phương thức InitLedger (câu lệnh query không tạo ra block mới)

4.5 Lập trình ứng dụng Để giúp người dùng tương tác với mạng blockchain, ta tạo ra một server trung gian xử lý các tác vụ của người dùng và gọi các chaincode trên mạng Các giao dịch sẽ được ký dưới danh nghĩa tổ chức và user được cấu hình trước Ta cần tạo ra một Ledger service để thay mặt người dùng thao tác với sổ cái Minifabric tạo ra cho chúng ta các profile kết nối nhằm dễ dàng sử dụng các SDK để lập trình ứng dụng

Trong bài viết này, chúng ta sẽ xây dựng ứng dụng sử dụng NestJs kết hợp với thư viện fabric-network Đầu tiên, cần tạo ra một Hyperledger Service để thiết lập kết nối đến mạng bằng profile do Minifabric cung cấp.

Hàm initWallet tạo kết nối giữa ứng dụng và mạng Fabric bằng cách sử dụng các biến config và profile đã được cung cấp Tiếp theo, chúng ta cài đặt Ledger service để thực hiện các tác vụ liên quan đến sổ cái thông qua các chaincode Các dịch vụ khác trong ứng dụng có thể tương tác với sổ cái thông qua các phương thức của Ledger service, bao gồm createVoucher, commitVoucher, deleteVoucher và getVoucher.

TỔNG KẾT

Ngày đăng: 15/01/2022, 21:44

HÌNH ẢNH LIÊN QUAN

Hình trên là cấu tạo cơ bản của một mạng blockchain do 3 tổ chức tham gia (R0, R1, R2) - Tìm hiểu về hyperledger fabric và xây dựng ứng dụng minh hoạ
Hình tr ên là cấu tạo cơ bản của một mạng blockchain do 3 tổ chức tham gia (R0, R1, R2) (Trang 13)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w