Vải Hyperledger cho người giả

Nền tảng chuỗi khối cho doanh nghiệp

Vải Hyperledger cho người giả

Xin chào các độc giả thân mến, tôi tên là Nikolai Nefedov, tôi là chuyên viên kỹ thuật của IBM, trong bài viết này tôi xin giới thiệu với các bạn về nền tảng blockchain - Hyperledger Fabric. Nền tảng này dành cho việc xây dựng các ứng dụng kinh doanh cấp doanh nghiệp (lớp Enterprise). Cấp độ của bài viết dành cho người đọc chưa được chuẩn bị kiến ​​thức cơ bản về công nghệ CNTT.

Hyperledger Fabric là một dự án nguồn mở, một trong những nhánh của dự án nguồn mở Hyperledger, một tập đoàn của Linux Foundation. Hyperledger Fabric ban đầu được ra mắt bởi Digital Assets và IBM. Tính năng chính của nền tảng Hyperledger Fabric là tập trung vào các ứng dụng của công ty. Do đó, nền tảng được phát triển có tính đến tốc độ giao dịch cao và chi phí thấp, cũng như việc xác định tất cả những người tham gia. Những lợi ích này đạt được bằng cách tách dịch vụ xác minh giao dịch và hình thành các khối mới của sổ đăng ký phân tán, cũng như sử dụng cơ quan cấp chứng chỉ và ủy quyền cho người tham gia.

Bài viết của tôi là một phần của loạt bài viết về Hyperledger Fabric, trong đó chúng tôi mô tả dự án về một hệ thống đăng ký sinh viên vào một trường đại học.

Kiến trúc chung của Hyperledger Fabric

Hyperledger Fabric là một mạng chuỗi khối phân tán bao gồm các thành phần chức năng khác nhau được cài đặt trên các nút mạng. Các thành phần của Hyperledger Fabric là các bộ chứa Docker có thể được tải xuống miễn phí từ DockerHub. Hyperledger Fabric cũng có thể chạy trong môi trường Kubernetes.

Để viết hợp đồng thông minh (mã chuỗi trong bối cảnh Hyperledger Fabric), chúng tôi đã sử dụng Golang (mặc dù Hyperledger Fabric cho phép bạn sử dụng các ngôn ngữ khác). Để phát triển một ứng dụng tùy chỉnh, trong trường hợp của chúng tôi, Node.js đã được sử dụng với Hyperledger Fabric SDK tương ứng.

Các nút chạy logic kinh doanh (hợp đồng thông minh) – mã chuỗi, lưu trữ trạng thái của sổ đăng ký phân tán (dữ liệu sổ cái) và thực thi các dịch vụ hệ thống nền tảng khác. Một nút chỉ là một đơn vị logic, các nút khác nhau có thể tồn tại trên cùng một máy chủ vật lý. Điều quan trọng hơn nhiều là cách các nút được nhóm lại (Miền đáng tin cậy) và chức năng của mạng chuỗi khối mà chúng được liên kết.

Kiến trúc chung trông như thế này:

Vải Hyperledger cho người giả

Hình 1. Kiến trúc chung của Hyperledger Fabric

Ứng dụng người dùng (Submitting Client) là một ứng dụng mà người dùng làm việc với mạng blockchain. Để hoạt động, bạn cần thông qua ủy quyền và có các quyền thích hợp đối với các loại hành động khác nhau trên mạng.

Đồng nghiệp (Nút) có một số vai trò:

  • Chứng thực ngang hàng là một nút mô phỏng việc thực hiện giao dịch (thực thi mã hợp đồng thông minh). Sau khi xác thực và thực hiện hợp đồng thông minh, nút sẽ trả về kết quả thực hiện cho ứng dụng khách cùng với chữ ký của nó.
  • Dịch vụ đặt hàng là một dịch vụ phân tán trên một số nút, nó được sử dụng để tạo các khối mới của sổ cái phân tán và tạo một chuỗi để thực hiện các giao dịch. Dịch vụ đặt hàng không thêm khối mới vào sổ đăng ký (Đã chuyển sang Đồng đẳng cam kết để có hiệu suất tốt hơn).
  • Cam kết ngang hàng - một nút chứa sổ đăng ký phân tán và thêm các khối mới vào sổ đăng ký (được hình thành bởi Dịch vụ đặt hàng). Tất cả các Đồng nghiệp cam kết đều chứa một bản sao cục bộ của sổ cái phân tán. Người cam kết ngang hàng, trước khi thêm cục bộ một khối mới, sẽ kiểm tra tính hợp lệ của tất cả các giao dịch trong khối.

Chính sách chứng thực là một chính sách để kiểm tra tính hợp lệ của một giao dịch. Các chính sách này xác định tập hợp các nút cần thiết mà hợp đồng thông minh phải được thực thi để giao dịch được công nhận là hợp lệ.

Sổ đăng ký phân tán - Lerger - bao gồm hai phần: WolrldState (còn được gọi là State DataBase) và BlockChain.

BlockChain là một chuỗi các khối lưu trữ các bản ghi về tất cả các thay đổi đã xảy ra đối với các đối tượng sổ cái phân tán.

WolrldState là một thành phần đăng ký phân tán lưu trữ các giá trị (cực đoan) hiện tại của tất cả các đối tượng đăng ký phân tán.

WorldState là một cơ sở dữ liệu, ở phiên bản cơ bản - LevelDB hoặc phức tạp hơn - CouchDB, chứa các cặp khóa-giá trị, ví dụ: Tên - Ivan, Họ - Ivanov, ngày đăng ký trong hệ thống - 12.12.21/17.12.1961/XNUMX, ngày đăng ký sinh - XNUMX/XNUMX/XNUMX, v.v. WorldState và sổ cái phân tán phải nhất quán giữa tất cả các thành viên của một kênh nhất định.

Vì Hyperledger Fabric là một mạng trong đó tất cả những người tham gia đều được biết đến và xác thực, nên một cơ quan chứng nhận chuyên dụng được sử dụng ở đây - CA (Cơ quan chứng nhận). CA hoạt động trên cơ sở tiêu chuẩn X.509 và cơ sở hạ tầng khóa công khai - PKI.

Dịch vụ thành viên là dịch vụ mà qua đó các thành viên xác minh rằng một đối tượng thuộc về một tổ chức hoặc kênh cụ thể.

Trong hầu hết các trường hợp, một giao dịch là một bản ghi dữ liệu mới trong sổ cái phân tán.
Ngoài ra còn có các giao dịch để tạo kênh hoặc hợp đồng thông minh. Giao dịch được bắt đầu bởi ứng dụng người dùng và kết thúc bằng việc ghi vào sổ cái phân tán.

Kênh (Channel) là một mạng con khép kín bao gồm hai hoặc nhiều người tham gia trong mạng chuỗi khối, được thiết kế để thực hiện các giao dịch bí mật trong một nhóm người tham gia hạn chế nhưng đã biết. Kênh được xác định bởi những người tham gia, sổ cái phân tán, hợp đồng thông minh, Dịch vụ đặt hàng, WorldState. Mỗi thành viên của kênh phải được cấp quyền truy cập vào kênh và có quyền thực hiện các loại giao dịch. Ủy quyền được thực hiện bằng cách sử dụng Dịch vụ thành viên.

Kịch bản thực hiện giao dịch điển hình

Tiếp theo, tôi muốn nói về một kịch bản điển hình để thực hiện giao dịch bằng ví dụ về dự án của chúng tôi.

Là một phần của dự án nội bộ của chúng tôi, chúng tôi đã tạo ra một mạng lưới Hyperledger Fabric, được thiết kế để đăng ký và ghi lại các sinh viên vào các trường đại học. Mạng của chúng tôi bao gồm hai tổ chức, thuộc sở hữu của Đại học A và Đại học B. Mỗi tổ chức chứa một ứng dụng khách, cũng như Đồng đẳng cam kết và xác nhận của riêng mình. Chúng tôi cũng sử dụng các dịch vụ Dịch vụ đặt hàng, Dịch vụ thành viên và Cơ quan cấp chứng chỉ thông thường.

1) Bắt đầu giao dịch

Ứng dụng người dùng, sử dụng Hyperledger Fabric SDK, khởi tạo yêu cầu giao dịch và gửi yêu cầu đến các nút có hợp đồng thông minh. Yêu cầu có thể là thay đổi hoặc đọc từ sổ cái phân tán (Ledger). Nếu chúng tôi xem xét một ví dụ về cấu hình thử nghiệm của hệ thống kế toán cho sinh viên đại học, thì ứng dụng khách sẽ gửi yêu cầu giao dịch đến các nút của trường đại học A và B, được bao gồm trong chính sách Chứng thực của hợp đồng thông minh được gọi là. Nút A là một nút nằm trong trường đại học đăng ký một sinh viên mới đến và nút B là một nút nằm trong một trường đại học khác. Để một giao dịch được lưu vào sổ cái phân tán, điều cần thiết là tất cả các nút, theo logic kinh doanh, phải phê duyệt giao dịch, thực hiện thành công các hợp đồng thông minh với cùng một kết quả. Ứng dụng người dùng của nút A, sử dụng các công cụ Hyperledger Fabric SDK, nhận chính sách Chứng thực (chính sách phê duyệt) và tìm ra các nút sẽ gửi yêu cầu giao dịch tới. Đây là yêu cầu gọi (gọi) một hợp đồng thông minh nhất định (chức năng mã chuỗi) để đọc hoặc ghi dữ liệu nhất định vào sổ cái phân tán. Về mặt kỹ thuật, SDK máy khách sử dụng chức năng tương ứng, API của chức năng này được truyền một đối tượng có tham số giao dịch, đồng thời thêm chữ ký máy khách và gửi dữ liệu này qua bộ đệm giao thức qua gRPC tới các nút thích hợp (đồng nghiệp chứng thực).

Vải Hyperledger cho người giả
Hình 2. Bắt đầu giao dịch

2) Thực hiện hợp đồng thông minh

Các nút (Đồng nghiệp xác nhận), sau khi nhận được yêu cầu thực hiện giao dịch, kiểm tra chữ ký của khách hàng và nếu mọi thứ đều theo thứ tự, thì họ lấy một đối tượng có dữ liệu yêu cầu và chạy mô phỏng thực hiện hợp đồng thông minh (chức năng mã chuỗi) với những dữ liệu này. Hợp đồng thông minh là logic kinh doanh của một giao dịch, một tập hợp các điều kiện và hướng dẫn nhất định (trong trường hợp của chúng tôi, đây là kiểm tra sinh viên, đó là sinh viên mới hay anh ta đã đăng ký, kiểm tra tuổi, v.v.). Để thực hiện một hợp đồng thông minh, bạn cũng sẽ cần dữ liệu từ WorldState. Kết quả của việc mô phỏng hợp đồng thông minh trên đồng đẳng Chứng thực, thu được hai bộ dữ liệu - Tập đọc và Tập ghi. Read Set và Write Set là các giá trị WorldState gốc và mới. (mới - theo nghĩa thu được bằng cách mô phỏng hợp đồng thông minh).

Vải Hyperledger cho người giả
Hình 3. Thực thi hợp đồng thông minh

3) Trả lại dữ liệu cho ứng dụng khách

Sau khi mô phỏng hợp đồng thông minh, Người ngang hàng chứng thực trả lại cho ứng dụng khách dữ liệu ban đầu và kết quả của quá trình mô phỏng, cũng như Bộ RW được ký bởi chứng chỉ của họ. Ở giai đoạn này, không có thay đổi nào trong sổ cái phân tán. Ứng dụng khách xác minh chữ ký của Đồng đẳng xác nhận và cũng so sánh dữ liệu giao dịch ban đầu đã được gửi và dữ liệu được trả về (nghĩa là nó kiểm tra xem dữ liệu gốc mà giao dịch được mô phỏng có bị hỏng hay không). Nếu giao dịch chỉ dành cho việc đọc dữ liệu từ sổ đăng ký, thì ứng dụng khách sẽ nhận được Tập đọc cần thiết và trên đó, giao dịch thường hoàn tất thành công mà không thay đổi sổ đăng ký phân tán. Trong trường hợp giao dịch sẽ thay đổi dữ liệu trong sổ đăng ký, ứng dụng khách sẽ kiểm tra thêm xem chính sách Xác nhận đã được triển khai chưa. Có thể ứng dụng khách không kiểm tra kết quả của việc thực thi Chính sách chứng thực, nhưng nền tảng Hyperledger Fabric trong trường hợp này cung cấp khả năng kiểm tra các chính sách trên các nút (Comitting Peers) ở giai đoạn thêm giao dịch vào sổ đăng ký.

Vải Hyperledger cho người giả
Hình 4. Trả dữ liệu về ứng dụng khách

4) Gửi các tập hợp RW tới Đặt hàng ngang hàng

Ứng dụng khách gửi giao dịch cùng với dữ liệu liên quan đến dịch vụ Đặt hàng. Điều này bao gồm Tập hợp RW, chữ ký của các đồng nghiệp Chứng thực và ID Kênh.

Dịch vụ đặt hàng - Dựa trên tên gọi, chức năng chính của dịch vụ này là xây dựng các giao dịch đến theo đúng thứ tự. Cũng như việc hình thành một khối mới của sổ đăng ký phân tán và đảm bảo phân phối các khối mới được tạo tới tất cả các nút Cam kết, do đó đảm bảo tính nhất quán dữ liệu trên tất cả các nút chứa sổ đăng ký phân tán (Đồng cấp cam kết). Đồng thời, bản thân dịch vụ Đặt hàng không thay đổi sổ đăng ký theo bất kỳ cách nào. Dịch vụ đặt hàng là một thành phần quan trọng của hệ thống, vì vậy nó là một cụm gồm nhiều nút. Dịch vụ đặt hàng không kiểm tra tính hợp lệ của giao dịch, nó chỉ chấp nhận một giao dịch có ID kênh cụ thể, sắp xếp các giao dịch đến theo một thứ tự cụ thể và tạo các khối mới của sổ cái phân tán từ chúng. Một Dịch vụ đặt hàng có thể phục vụ nhiều kênh cùng một lúc. Dịch vụ đặt hàng bao gồm một cụm Kafka, duy trì hàng giao dịch chính xác (không thay đổi) (xem điểm 7).

Vải Hyperledger cho người giả
Hình 5. Gửi các bộ RW tới Ordering Peers

5) Gửi các khối được tạo tới Đồng đẳng cam kết

Các khối được hình thành trong Dịch vụ đặt hàng được phát tới tất cả các nút mạng. Mỗi nút, sau khi nhận được một khối mới, sẽ kiểm tra xem nó có tuân thủ Chính sách xác nhận hay không, kiểm tra xem tất cả các Đồng nghiệp xác nhận có nhận được cùng một kết quả (Write Set) do mô phỏng hợp đồng thông minh hay không và cũng kiểm tra xem các giá trị ban đầu có đã thay đổi (nghĩa là - Read Set - dữ liệu được đọc bởi hợp đồng thông minh từ WorldState) kể từ khi bắt đầu giao dịch. Nếu tất cả các điều kiện được đáp ứng, giao dịch được đánh dấu là hợp lệ, nếu không, giao dịch sẽ nhận được trạng thái không hợp lệ.

Vải Hyperledger cho người giả
Hình 6. Gửi các khối đã tạo đến Đồng đẳng cam kết

6) Thêm một khối vào sổ đăng ký

Mỗi nút thêm một giao dịch vào bản sao cục bộ của sổ cái phân tán và nếu giao dịch hợp lệ, thì Write Set được áp dụng cho WorldState (trạng thái hiện tại), tương ứng, các giá trị mới của các đối tượng bị ảnh hưởng bởi giao dịch được ghi . Nếu một giao dịch nhận được mã thông báo không hợp lệ (ví dụ: có hai giao dịch với cùng một đối tượng trong cùng một khối, thì một trong các giao dịch sẽ không hợp lệ, vì các giá trị ban đầu đã bị thay đổi bởi một giao dịch khác ). Giao dịch này cũng được thêm vào sổ cái phân tán với điểm đánh dấu không hợp lệ, nhưng Bộ ghi của giao dịch này không áp dụng cho trạng thái hiện tại của WorldState và theo đó, không thay đổi các đối tượng tham gia giao dịch. Sau đó, một thông báo được gửi đến ứng dụng người dùng rằng giao dịch đã được thêm vào sổ cái phân tán mãi mãi, cũng như trạng thái của giao dịch, nghĩa là giao dịch đó có hợp lệ hay không ...

Vải Hyperledger cho người giả
Hình 7. Thêm block vào registry

DỊCH VỤ ĐẶT HÀNG

Dịch vụ đặt hàng bao gồm một cụm Kafka với các nút ZooKeeper tương ứng và một Nút dịch vụ đặt hàng (OSN) nằm giữa các máy khách dịch vụ Đặt hàng và Cụm Kafka. Cụm Kafka là một nền tảng quản lý luồng (thông báo) phân tán, có khả năng chịu lỗi. Mỗi kênh (chủ đề) trong Kafka là một chuỗi bản ghi bất biến chỉ hỗ trợ thêm bản ghi mới (không thể xóa bản ghi hiện có). Một minh họa về cấu trúc chủ đề được đưa ra dưới đây. Chính tài sản này của Kafka được sử dụng để xây dựng nền tảng chuỗi khối.

Vải Hyperledger cho người giả
lấy từ kafka.apache.org

  • Hình 8. Cấu trúc chủ đề dịch vụ đặt hàng*

Liên kết hữu ích

Youtube - Xây dựng chuỗi khối cho doanh nghiệp với Dự án Hyperledger
Tài liệu vải Hyperledger
Cấu trúc Hyperledger: một hệ điều hành phân tán cho các chuỗi khối được phép

Sự nhìn nhận

Tôi bày tỏ lòng biết ơn sâu sắc tới các đồng nghiệp đã giúp đỡ trong việc chuẩn bị bài viết:
Bến du thuyền Nikolai
Igor Khapov
Dmitry Gorbachev
Alexander Zemtsov
Ekaterina Guseva

Nguồn: www.habr.com

Thêm một lời nhận xét