Giới thiệu
Trong các lĩnh vực, ngành kinh doanh dịch vụ như du lịch, nhà hàng, ăn uống, các nhà cung cấp dịch vụ thường phải xây dựng các thoả thuận, điều khoản dịch vụ (service-level agreement, viết tắt là SLA) Các SLA thường phản ánh sự thoả thuận giữa bên cung cấp và khách hàng, cũng như các hình thức thưởng/phạt nếu vi phạm hợp đồng dựa trên nhiều yếu tố như phản hồi của khách hàng, độ tin tưởng, sự hài lòng, khả năng thanh toán, Các SLA thể hiện mối quan tâm, cầu nối giữa những người mang lại dịch vụ cho khách hàng, qua đó thể hiện chất lượng cũng như độ tin cậy của dịch vụ đối với người dùng cuối Việc giám sát các SLA một cách thủ công mang lại những khó khăn về mặt quản lý cũng như còn duy trì tính chủ quan trong quá trình giám sát truyền thống Vượt qua các rào cản trên, việc tự động hoá các SLA sẽ là một bước đột phá trong quy trình vận hành và giám sát các hợp đồng nghiệp vụ Với bối cảnh đó, đề tài đề xuất bài toán giải quyết việctự động hoá các hợp đồng nghiệp vụ.
Business contract automation Tự động hoá các hợp đồng nghiệp vụ là một chương trình được thiết kế để quản lý các thoả thuận pháp lý, lưu trữ các hồ sơ, hợp đồng nghiệp vụ và phát triển các tài liệu, triển khai các điều khoản đã thoả thuận từ trước Việc này mang lại nhiều lợi thế giúp quá trình vận hành doanh nghiệp, triển khai các mô hình kinh doanh nhanh hơn, tốt hơn và an toàn hơn [2].
Blockchain lần đầu được giới thiệu vào năm 2008 và hiện thực vào năm 2009 [3] Nó được xem là sổ cái công cộng, nơi lưu trữ toàn bộ các giao dịch dưới danh sách các khối liên kết với nhau Khả năng ghi nhận các giao dịch theo cách an toàn và khả xác nhận giúp cho Blockchain không bị giới hạn tính ứng dụng ở lĩnh vực tài chính hay bất kỳ lĩnh vực hẹp nào khác Ngày nay, việc áp dụng Blockchain được mở rộng sang các lĩnh vực giám sát & tự động hoá Hơn nữa, quá trình thực thi các điều khoản cũng như các quy tắc phạt/thưởng theo các SLA một cách thủ công dễ dẫn tới các tranh chấp mang tính chủ quan không đáng có Bởi vậy, việc áp dụng Blockchain vào trong ngữ cảnh này được xem như phương thức đáng tin cậy và an toàn nhờ vào cơ chế đồng thuận Smart contract giúp quá trình thực thi các luật thưởng/phạt một cách tự động giúp giảm thiểu thời gian cũng như khả năng xảy ra các tranh chấp.
Kết hợp tự động hoá các hợp đồng nghiệp vụ và ưu điểm mà smart contract mang lại, đề tài đề xuất phương pháp tự sinh mã smart contract dựa trên tập hợp các luật định nghĩa sẵn về một miền tri thức đại diện cho một lĩnh vực, nghiệp vụ cụ thể.
Ý nghĩa khoa học & thực tiễn
Giá trị khoa học
Bài toán và cách giải quyết của đề tài mang lại các ý nghĩa về mặt khoa học.
Phương pháp đề xuất có khả năng mở rộng Giải pháp đề tài đưa ra nhằm tự động hoá một phần các ràng buộc được định nghĩa trong smart contract cuối Các ràng buộc này được chia thành nhiều loại [13] Hướng giải quyết có thể mở rộng để áp dụng cho tất cả các loại còn lại và có thể phát triển thành giải pháp cuối cùng có khả năng áp dụng cho công nghiệp.
Bộ công cụ làm việc với tập luật Đề tài hiện thực các bộ duyệt luật cung cấp dưới định dạng OWL và tương thích với các ràng buộc của các SLA Các bộ duyệt này có thể mở rộng để đáp ứng đa dạng các tập luật khác nhau, cho các lĩnh vực, miền tri thức khác nhau.
Sinh mã nguồn smart contract cuối cùng Smart contract cuối cùng, cũng là đầu ra của đề tài, là phiên bản hoàn chỉnh, có thể được triển khai và vận hành trực tiếp trên mạng lưới Blockchain mà không cần bất kỳ thay đổi thủ công nào.
Giá trị thực tiễn
Bên cạnh các giá trị khoa học, đề tài mang lại ý nghĩa thực tiễn, có giá trị với các ngành lĩnh vực kinh doanh khác nhau. Áp dụng trực tiếp Giải pháp đề ra chưa phải là giải pháp cuối để triển khai cho các nhà cung cấp dịch vụ như là người dùng cuối Tuy nhiên, đề tài có đưa ra ví dụ trong quá trình hiện thực việc áp dụng nó trong các dịch vụ thường nhật như cho thuê xe, giảm giá dịch vụ (phần 5), cho thấy khả năng áp dụng trực tiếp của đề tài vào thực tiễn là có sẵn và hoàn toàn tuỳ biến theo nhu cầu của các ngành dịch vụ khác nhau.
Tăng tốc xử lý Lấy ví dụ về cải thiện một quy trình bán hàng cơ bản, áp dụng tự động hoá hợp đồng nghiệp vụ Nhân viên bán hàng sẽ không phải tốn thời gian và công sức ngồi viết và tổng hợp tài liệu, thay vào đó chỉ cần chú trọng vào việc tìm kiếm các khách hàng tiềm năng Tự động hoá hợp đồng nghiệp vụ giúp giảm thiểu thời gian trong trường hợp này Phần lớn các quy trình phát triển hợp đồng liên quan tới sự phê duyệt, và các phê duyệt này thường thay đổi qua nhiều vòng khác nhau Thông thường các thay đổi này bị lạc khi mang sang từ tài liệu này sang tài liệu khác, hay bị đặt sai chỗ.
Một số công ty sử dụng email, bảng tính hay tài liệu Word để theo dõi và quản lý các chỉnh sửa, thì các phần mềm tự động hoá hợp đồng nghiệp vụ giúp các thay đổi, chỉnh sửa luôn được giám sát và đồng bộ xuyên suốt quá trình Hay nói cách khác, các công ty không phải giám sát từng phiên bản của hợp đồng nữa.
Tận dụng tự động hoá quy trình, quá trình phê duyệt được đơn giản hoá: Giảm thiểu các bước trung gian, giảm thiểu thời gian xử lý cũng như các lỗi thuộc về con
Các công trình liên quan
Service-level agreement
Trong nghiên cứu Leveraging Blockchain in Monitoring SLA-oriented Tourism Service Provisioning [4], các tác giả đã chỉ ra rằng các hệ thống đánh giá dịch vụ nhằm giúp người dùng đưa ra quyết định sử dụng dịch vụ đó hay không, là không đáng tin đối với người dùng cuối Lý do chính bởi vì các kết quả đánh giá có thể bị làm giả bởi một bên thứ ba hay các cuộc tấn công mạng Qua đó, nhóm tác giả giới thiệu khái niệm vềservice-level agreement (SLA) SLA có thể được hiểu theo các góc độ khác nhau, có thể từ góc nhìn của khách hàng, hay từ phía nhà cung cấp dịch vụ Nó chỉ ra các chi tiết về dịch vụ cũng như quy mô mà dịch vụ mang lại Trong một bản SLA, nhà cung cấp liệt kê một hoặc nhiều tiêu chuẩn mà họ phải triển khai hoặc bị phạt nếu vi phạm theo điều khoản đề ra.
SLA giúp nhà cung cấp dịch vụ có cơ hội thể hiện những mong muốn rõ ràng đến với từng du khách Tất cả các bên liên quan đều hiểu được mong muốn từ các bên còn lại Do đó, du khách và nhà cung cấp dịch vụ có thể thực hiện nghĩa vụ, trách nhiệm mà mỗi bên đảm nhiệm Khi có tranh chấp xảy ra trong điều khoản giữa các bên, SLA giúp việc xử lý nhanh hơn nhờ có các kỳ vọng cũng như các luật phạt đã quy định.
Bên cạnh đó, nghiên cứu còn đề xuất kiến trúc mang tên BlockSLAgiúp đánh giá và thực thi các thoả thuận dựa trên nền tảng Blockchain BlockSLA cho phép quá trình thẩm định được giữ an toàn, bảo mật và tin cậy thông qua cơ chế đồng thuận của Blockchain Từ các thẩm định này, smart contracts trên nền tảng Blockchain tự động thực thi các hoạt động bồi thường, thưởng phạt ngay lập tức và các bên liên quan
1.3 Các công trình liên quan 4
(du khách, nhà cung cấp dịch vụ) có thể theo dõi các thay đổi này ngay trên các thiết bị của họ.
Imperative & declarative smart contract
Như Guido Governatori và các đồng tác giả [5] đã chỉ ra các khía cạnh và so sánh các đặc điểm của ngôn ngữ mệnh lệnh (imperative language) và ngôn ngữ khai báo (declar- ative language) trong ngữ cảnh các kiến trúc blockchain Trong khi ngôn ngữ mệnh lệnh thường đựợc dùng để hiện thực các smart contract, thì ngôn ngữ khai báo phù hợp để giải quyết các vấn đề của các hợp đồng pháp lý cũng như quản lý sự tự động hoá.
Nhóm tác giả cũng đưa ra các khái niệm về hợp đồng pháp lý (legal contract) và hợp đồng thông minh (smart contract) Ở đó, hợp đồng pháp lý đại diện cho ngôn ngữ tự nhiên, ngôn ngữ của con người, xác lập bởi các bên liên quan, trong khi đó, hợp đồng thông minh được định nghĩa dựa trên nội dung được đồng thuận và hiện thực một cách tự động Khi không có tài liệu nào ghi lại các thoả thuận giữa các bên, bản thân smart contract sẽ chứa các biểu diễn ràng buộc của các thoả thuận này.
Các hệ thống sổ cái phân tán hỗ trợ xây dựng các smart contract bằng khả năng lưu trữ hoặc tự động thực thi Hơn nữa, tính sẵn sàng của các loại hình tiền điện tử giúp tự động chuyển nhận tiền, như là một nhu cầu của việc hiện thực hợp đồng Do đó, các hệ thống sổ cái phân tán đóng góp nhiều hơn việc chỉ đơn giản là một hệ thống cơ sở dữ liệu phân tán [6]; các nền tảng tính toán phi tập trung giúp các dịch vụ tích hợp có thể chạy trên số lượng lớn các smart contract Các hệ thống sổ cái phân tán được vận hành bởi các node ngang hàng (peer-to-peer network), chúng có thể phá vỡ cấu trúc cũng như hoạt động truyền thống nơi cần có các bên thứ ba đáng tin cậy phụ trách Chúng cũng mở ra nhiều cơ hội mới cho tự động hoá hợp đồng nghiệp vụ, được ứng dụng trong nhiều mảng ứng dụng và lĩnh vực khác nhau, nhưng cũng dấy lên các vấn đề về tính pháp lý.
Qua nghiên cứu của Guido Governatori, đề tài đã xác định được loại ngôn ngữ để áp dụng xây dựng các cấu trúc thể hiện ràng buộc hợp đồng nghiệp vụ, cũng như ngôn ngữ để thể hiện liên kết giữa cấu trúc trên sang kiến trúc của smart contract.
Auto-Generation of Smart Contracts from Domain-Specific On-
Trong nghiên cứu của mình [7], Olivia Choudhury và các đồng tác giả đã chỉ ra các ràng buộc về thời gian và chi phí trong quá trình sinh mã cho các smart contract Nhóm tác giả đã đề xuất nền tảng cho phép thông dịch các ràng buộc đã được mã hoá trong miền biểu diễn tri thức sang các yêu cầu đối với blockchain Nền tảng này sử dụng các bản thể luận (ontologies [8]) và các luật ngữ nghĩa (semantic rules) để mã hoá các tri thức trong một lĩnh vực nhất định, sau đó xây dựng cây cú pháp trừu tượng (abstract syntax tree) để kết hợp các ràng buộc cần thiết Nhóm tác giả đã chứng minh được tính hiệu quả của phương pháp này trong hai lĩnh vực riêng biệt: Thông dịch các điều kiện y học lâm sàng và ứng dụng cho thuê xe.
1.3 Các công trình liên quan 5
Nghiên cứu trình bày về việc sử dụng các khái niệm cần thiết như ontology để thể hiện các ý tưởng và tri thức về lĩnh vực cụ thể nào đó dưới định dạng mà máy có thể hiểu được Ontologies có thể được biểu diễn dưới nhiều hình thức khác nhau, nhưng phổ biến nhất là Web Ontology Language (OWL) [9] OWL có hạn chế nhất định khi không thể biểu diễn mối quan hệ giữa các thuộc tính kết hợp (composite properties), ví dụ như mối liên kết giữa các thuộc tính "cha", "con" với các thuộc tính "chú" Hạn chế này được chỉ ra trong OWL2, cho phép xác định chuỗi thuộc tính chỉ khi thuộc tính tổng hợp là thuộc tính phụ của một trong các thuộc tính tổng hợp đó Semantic Web Rule Language (SWRL) [10] được sinh ra để mở rộng khả năng biểu diễn của OWL.
Sau khi đã xây dựng được bộ các quy tắc ngữ nghĩa cho bài toán của mình, nghiên cứu trên tiến hành xây dựng một khuôn mẫu smart contract bằng ngôn ngữ Golang nhằm thể hiện các chức năng, dựa trên các luật dẫn xuất từ các ontologies và giao thức. Việc này giống như xây dựng khung sườn cho việc tạo ra phiên bản smart contract cuối cùng để vận hành trên mạng lưới blockchain Trong quá trình này, lúc chuyển đổi từ khuôn mẫu sang biểu diễn dưới dạng AST [11], một quá trình duyệt cây diễn ra nhằm tìm các giá trị ràng buộc và cập nhật lại bằng các giá trị quy định trong các luật đề ra.
Nghiên cứu trên đã đề xuất một phương pháp xây dựng cơ chế chuyển đổi các luật ngữ nghĩa sang smart contract thông qua các bước xây dựng trung gian Quá trình này cho phép cập nhật các mối liên kết giữa các thuộc tính một cách linh hoạt, cũng như các giá trị ràng buộc được đảm bảo nhất quán xuyên suốt Đề tài đề xuất sử dụng các bước trung gian này để tham khảo áp dụng và xây dựng cơ chế chuyển đổi phù hợp với ngữ cảnh bài toán đề ra.
Overview of Blockchain Technology
Trong nghiên cứu này [12], nhóm tác giả đã trình bày các khái niệm cơ bản của một mạng lưới Blockchain Nhóm tác giả đã đưa ra so sánh về các hình thức Blockchain khác nhau như: Public Blockchain, Consortium Blockchain và Private Blockchain.
Property Public blockchain Consortium blockchain Private blockchain Consensus determination All miners Selected set of nodes One organization
Read permission Public Could be public or restricted Could be public or restricted Immutability Nearly impossible to tamper Could be tampered Could be tampered
Consensus process Permissionless Permissioned Permissioned
Bảng 1: So sánh Public & Consoritum & Private Blockchain
Theo mục tiêu và bài toán đặt ra, đề tài chọn Private Blockchain để lưu trữ và thực thi các smart contract sinh ra, cụ thể sử dụng nền tảng Hyperledger Fabric 1
1 https://www.hyperledger.org/projects/fabric
1.3 Các công trình liên quan 6
A Semantic Contract Model and Knowledge-driven Process for
porting Controllability in Service-oriented Approaches
Trong nghiên cứu của mình [13], tác giả Jaramillo đã đề xuất một mô hình ngữ nghĩa để xây dựng bộ chuẩn hoá các thành phần của một hợp đồng dịch vụ Tác giả sử dụng logic mô tả (Description Logic - DL) và các ontologies để thể hiện các chuẩn hoá này.
Mô hình đề xuất được xác thực thông qua biểu diễn dưới định dạng XML với các ví dụ thực tiễn được áp dụng.
Tác giả đã chỉ ra ngữ pháp của DL bao gồm:
• Các khái niệm (Concepts): Là các đối tượng hay lớp các đối tượng cùng thuộc về một miền tri thức cụ thể nào đó Ví dụ như lớp Khách hàng, lớp Dịch vụ, lớp Nhà cung cấp,
• Các vai trò (Roles): Thể hiện quan hệ giữa các khái niệm.
• Các cá thể (Individuals): Các đối tượng cụ thể của mỗi khái niệm, hay là các phần tử thuộc cùng một lớp Ví dụ như Khách hàng Nguyễn Văn A, Nhà cung cấp Entp,
• Các tiên đề (Axioms): Là các câu khẳng định mô tả mối liên kết giữa các khái niệm và vai trò Ví dụ Nhà cung cấpcung cấp dịch vụ cho Khách hàng.
• Bộ khởi tạo (Constructors): Tạo nên các mô tả phức tạp bằng các giới hạn của khái niệm hay các vai trò Ví dụ, một Dịch vụ có chính xác một nhà Cung cấp.
Việc mô hình hoá các khái niệm liên quan tới hợp đồng đóng vai trò quan trọng trong xây dựng các bước tiền xử lý, xác định vai trò các ngữ nghĩa xuất hiện trong các tập luật.
Trong giới hạn đề tài, việc hiện thực xoay quanh việc tự động trích xuất và cập nhật các ràng buộc của cácRoles trong khái niệm mô hình của một hợp đồng dịch vụ(hình 1) Trong đó, tập trung vào tập con củaRoles gồm các thành phần:hasAttribute,hasClassValue, hasLiteralValue sẽ được trình bày chi tiết trong phần 2.2.
Hình 1: Ngữ pháp của các hợp đồng dịch vụ
2 Mục tiêu, giới hạn & đối tượng nghiên cứu
Mục tiêu nghiên cứu
Nhìn lại lịch sử phát triển của công nghệ, đặt trong bối cảnh các công trình cần thiết mang tính hỗ trợ cho sự phát triển của thương mại điện tử, chúng ta có Secure Socket Layer (SSL) 2 lần đầu được thêm vào trình duyệt Netscape vào năm 1994, hay Tim Berners-Lee đã giới thiệu trình duyệt web đầu tiên vào năm 1990 [14] Giao thức mạng TCP/IP đặt nền tảng cho Internet được thử nghiệm lần đầu bởi hai trường đại học vào năm 1975 và chỉ được khám phá một cách miễn cưỡng trong các phòng nghiên cứu vào những năm 1984 3 Về cơ bản, phải mất 20 năm để hình thành nên khái niệm thương
2 https://www.cloudflare.com/learning/ssl/what-is-ssl/
3 https://history-computer.com/Internet/Maturing/TCPIP.html
2.1 Mục tiêu nghiên cứu 8 mại điện tử, và mất thêm 20 năm nữa để thương mại điện tử có thể phát triển & trưởng thành Tuy nhiên, trong thời đại Internet of Transactions, khoảng cách ấy có thể được rút ngắn Đặc biệt, trong bối cảnh của nền kinh tế B2B, nơi mà cơ sở hạ tầng pháp lý còn hạn chế, hay trong các khu vực vốn có hành lang pháp lý tương đối ít phức tạp, việc thử nghiệm và phát triển các smart contracts là hoàn toàn khả thi và giúp cho quá trình phát triển của nền kinh tế thương mại điện tử được rút ngắn thời gian hơn nhiều.
Về lâu dài, các hình thức tự động hoá ngang hàng được hỗ trợ bởi Internet, Web agents, smart transaction hay smart contract sẽ ngày càng trở nên hứa hẹn Cuối thập niên 20 của thế kỷ XXI sẽ giống như giai đoạn bùng nổ của kỷ nguyên dot-com cuối những năm 1990 Lúc đó, hàng trăm các công ty khởi nghiệp về lĩnh vực Blockchain được thành lập cùng với sự hỗ trợ từ các nhà đầu tư sẽ giúp cho lĩnh vực này phát triển cả về chiều rộng lẫn chiều sâu Giai đoạn này diễn ra giống như cách mà Gartner gọi là Làn sóng của sự giác ngộ (Trough of Disillusionment) [15] nhằm tiếp cận, thích nghi và áp dụng một môi trường giao dịch rất khác biệt so với những gì đang xảy ra hiện tại.
Hình 2: Tính ứng dụng của smart contract từ đơn giản đến phức tạp
Như hình 2 có thể thấy tính ứng dụng của smart contract không chỉ dừng ở việc xây dựng các ứng dụng trao đổi giá trị điện tử (đại diện là các loại tiền điện tử) mà nó còn có thể ứng dụng trong vận chuyển mạng ngang hàng P2P, thanh toán các loại chi phí giao thông đường bộ, chi phí điện nước hay phức tạp hơn, hướng tới xây dựng chính phủ tự trị phân tán hay xã hội tự trị phân tán bằng việc thiết lập các thoả thuận tự động thực thi đáng tin cậy.
Tốc độ tiếp cận, chấp nhận và áp dụng công nghệ Blockchain cũng như smart con- tract ngày càng lớn Do đó, nhìn nhận một cách khách quan, chúng ta có thể thấy được sự cần thiết của các công cụ, các nền tảng thông dịch nhằm chuyển đổi các ràng buộc từ các giao thức hay thoả thuận pháp lý sang smart contract Quá trình tự động sinh tạo, sinh mã smart contract giúp giảm thời gian, cũng như tăng tính tái sử dụng
Giới hạn & đối tượng nghiên cứu
khi áp dụng trên các lĩnh vực khác nhau thông qua một khuôn mẫu chung. Đó là một trong những động lực giúp đề tài xác định mục tiêu nghiên cứu và định hình rõ ràng mong muốn mà đề tài muốn đạt được - đó là xây dựng công cụ tự động hoá các hợp đồng nghiệp vụ và chuyển đổi sang smart contract để tự động thực thi với nỗ lực tối thiểu cần thiết, giúp giảm thiểu thời gian cần phát triển một smart contract hoàn chỉnh Ngoài ra đề tài còn mong muốn chứng minh phương pháp nghiên cứu có khả năng mở rộng và tăng khả năng tuỳ biến với đa dạng ứng dụng khác nhau Qua đó, đóng góp vào sự phát triển chung của việc ứng dụng smart contract nói riêng và công nghệ Blockchain nói chung vào các khía cạnh thực tiễn của đời sống.
Mục tiêu đề tài đặt ra như sau:
1 Xây dựng công cụ tự động sinh mã smart contract dựa trên tập luật OWL định sẵn trong một lĩnh vực thực tế và mẫu smart contract định nghĩa luồng luận lý của chương trình Smart contract sinh ra sẽ là phiên bản hoàn chỉnh để triển khai trên nền tảng Fabric blockchain mà không cần chỉnh sửa hay can thiệp thủ công nào từ phía lập trình viên.
2 Biểu diễn tính ứng dụng của công cụ trong lĩnh vực cho thuê xe và chứng minh tính tuỳ biến của phương pháp nghiên cứu đề ra Qua đó, có thể mở rộng sang các lĩnh vực hay đa dạng các loại hình khác nhau của tập luật OWL định nghĩa ban đầu.
2.2 Giới hạn & đối tượng nghiên cứu Đề tài tập trung vào giải quyết bài toánTự động sinh mã smart contract dưa trên tập luật định sẵn, thuộc tập con của bài toán mà đề tài đưa ra đó làGiám sát & tự động hoá.
Việc tự động hoá nội dung các điều khoản của một hợp đồng dịch vụ cần nỗ lực và thời gian rất lớn Như trong nghiên cứu của Jaramillo [13] đã chỉ ra, ngữ pháp để mô hình hoá một hợp đồng có nhiều thành phần khác nhau, trong đó mỗi thành phần lại chia thành nhiều tập con nhỏ hơn Trong giới hạn nghiên cứu, đề tài tập trung vào các tập luật thuộc phân loạihasAttribute, hasClassValue, hasLiteralValue của thành phần Roles Do đó, các tập luật đầu vào sẽ giới hạn trong 3 phân loại này.
Ngoài ra, mạng lưới Blockchain là rất đa dạng, tuỳ thuộc vào từng mục đích sử dụng khác nhau Nhu cầu của đề tài sẽ tập trung vào hình thức Private blockchain, nhằm mang lại tính khả thi khi áp dụng vào trong các bài toán cụ thể của doanh nghiệp, tổ chức hay các công ty riêng biệt Cụ thể, trong giới hạn đề tài, phương pháp nghiên cứu sẽ triển khai trên nền tảng Hyperledger Fabric.
Các lĩnh vực được sử dụng để thể hiện tính ứng dụng của đề tài thuộc về các loại dịch vụ chia sẻ, ví dụ như dịch vụ cho thuê xe, dịch vụ tặng voucher ăn uống trên nền tảng giao đồ ăn nhanh, Đây là các loại hình dịch vụ có các mô tả điều khoản về thành lập hợp đồng, hoặc thưởng/phạt cụ thể, các điều khoản này có thể lượng hoá để phù hợp với các thành phần quan hệ trong tập luật đề ra.
2.2 Giới hạn & đối tượng nghiên cứu 10
Bên cạnh đó, kết quả của đề tài sẽ bao gồm:
• Đối với ứng dụng thực tế, đầu ra sẽ là mẫu smart contract sinh ra từ tập luật, với các giá trị ràng buộc và điều kiện được định sẵn bởi người dùng, là smart contract hoàn chỉnh có thể triển khai trên mạng lưới Blockchain mà không cần can thiệp thủ công nào.
• Đối với hướng mở rộng nghiên cứu, các thành phần của đề tài có thể được sử dụng để phát triển như bộ duyệt luật theo ngữ pháp LL (sẽ trình bày ở phần3.3) và phương pháp cập nhật smart contract mẫu bằng AST.
Ontology
Ontology khái niệm hoá và biểu diễn tri thức của một lĩnh vực cụ thể sang định dạng mà máy móc có thể đọc đươc Nó biểu diễn một tập các khái niệm và quan hệ giữa chúng (hay còn gọi là các terms) bằng các từ khoá Ontologies thường được sử dụng trong việc quản lý tri thức nhằm hỗ trợ khả năng tổ chức và phân tích các thông tin hơn là chỉ thể hiện thông tin [16].
Các thành phần cơ bản của ontology là lớp (class), cá thể (individual), thuộc tính (property) và quan hệ (relation) Lớp đại diện cho các khái niệm trong một lĩnh vực nào đó Nó là khái niệm trừu tượng nhằm gom cụm các đối tượng có chung một hoặc vài đặc tính Mộtlớp con (subclass) chỉ ra một tập con của lớp chứa các đặc tính độc nhất mà không có mặt trên toàn bộ các đối tượng của lớp đó Qua đó, các lớp có thể được tổ chức dưới dạng thừa kế, ở đó, mỗi lớp có thể có nhiều lớp cha Ví dụ, tồn tại một lớp Staff chứa toàn bộ các nhân viên của một trường đại học, thì lớp Professor chỉ ra lớp con là các đối tượng nhân viên của trường nhưng đảm nhận vị trí giảng dạy trong trường đó Các cá thể là các thể hiện của lớp và đóng vai trò là các thành phần mang tính phân chia cấp độ của một ontology Chúng có thể là các đối tượng riêng biệt (trái cây, con người hay xe cộ), đồng thời cũng có thể là các cá thể mang tính trừu tượng (chữ viết, con số) Sự kết hợp của một ontology và các thể hiện của nó tạo nên cơ sở tri thức Thuộc tính thể hiện các đặc tính phổ biến của các thể của một lớp.
Nó thường được dùng để chỉ ra các quan hệ trong các ontologies Một thuộc tính định nghĩa một mối quan hệ giữa các cá thể đó Một thuộc tính dữ liệu liên quan một cá thể với một giá trị dữ liệu hoặc giá trị nguyên (literal) Ví dụ thuộc tính hasStudent liên kết một cá thể professor với một cá thể student, và là một thuộc tính đối tượng; thuộc tính hasID là thuộc tính dữ liệu, liên kết một đối tượng với một giá trị ID cụ thể Các thuộc tính có thể dùng để thêm các ràng buộc như cá ràng buộc về mặt giá trị, hay các giá trị thay thế.
Ontology thường được biểu diễn dưới dạng ngôn ngữ luận lý, do đó mang lại sự khác biệt về độ chi tiết, tính chính xác, thống nhất cũng như ý nghĩa thông qua các lớp, thuộc tính và quan hệ Một số công cụ cho phép biểu diễn các luận lý một cách tự động sử dụng ontology Qua đó, cung cấp các chức năng tiên tiến cho các ứng dụng thông minh như: tìm kiếm và trích xuất các ngữ nghĩa/khái niệm, hệ hỗ trợ ra quyết định, công cụ hiểu ngôn ngữ/lời nói tự nhiên, hệ quản trị cơ sở tri thức thông minh và các ứng dụng thương mại điện tử.
Ontology có thể được sử dụng để cải tiến các ứng dụng nền tảng Web hiện có Một số ứng dụng của web ontology có thể kể đến như:
1 Cổng thông tin web (Web portal): Một cổng thông tin web cung cấp các nội dung về một vấn đề nổi bật, ví dụ như một thành phố nào đó hay một lĩnh vực đang được quan tâm Một cổng thông tin cho phép các cá nhân quan tâm tới một chủ đề có thể nhận tin tức, tìm kiếm và nói chuyện với các cá nhân khác, xây dựng cộng đồng, hay tìm kiếm các đường dẫn tới các tài nguyên web về các vấn đề họ quan tâm.
2 Bộ sưu tập đa phương tiện: Ontology có thể được sử dụng để cung cấp các chú thích ngữ nghĩa về một tập các hình ảnh, âm thanh hay các đối tượng phi văn bản khác nhau Việc trích xuất các ngữ nghĩa có ích từ các tài liệu đa phương tiện khó hơn nhiều so với trích xuất từ ngôn ngữ tự nhiên đối với máy móc Do đó, các loại tài liệu này thường được lập chỉ mục bằng cách đặt tiêu đề hoặc đánh thẻ metatag Tuy nhiên, vì mỗi người khác nhau có thể biểu diễn các loại tài liệu này theo các cách khác nh, do đó việc tìm kiếm chỉ dựa trên các từ khoá đơn giản này là rất khó khăn Lý tưởng hơn cả là áp dụng ontology để phân tích các thông tin thêm về miền tri thức qua đó có thể dùng để cải thiện việc tìm kiếm, truy xuất hình ảnh, âm thanh hay bất kỳ tài liệu phi văn bản nào khác.
3 Quản lý website cho các tập đoàn: Các tập đoàn có quy mô thường có số lượng lớn các trang web liên quan đến thống cáo báo chí, dịch vụ sản phẩm, quy trình hoạt động, các sản phẩm nội bộ, bản tóm tắt và so sánh, các bài báo, hay các bản mô tả quy trình Ontology có thể được dùng để lập chỉ mục cho các loại tài liệu này giúp cho quá trình truy xuất tối ưu hơn Mặc dù các tổ chức lớn thường hay phân loại để tổ chức thông tin, nhưng điều này là không đủ Một ontology đơn thường bị giới hạn bởi tính phân loại trong một góc nhìn hay một miền tri thức nào đó Cho nên, khả năng tìm kiếm với nhiều thông số khác nhau, một cách đồng thời, thường đem lại nhiều kết quả tốt hơn so với việc tìm kiếm trên một từ khoá thông qua phân loại.
4 Thiết kế tài liệu: Thường được áp dụng trong các tài liệu kỹ thuật Các loại tài liệu này có thể là tài liệu thiết kế, tài liệu sản xuất hay tài liệu thử nghiệm Các ontologies có thể được sử dụng để xây dựng một mô hình thông tin cho phép khám phá không gian thông tin theo các mục được trình bày, các liên kết giữa các mục, các thuộc tính của các mục và các liên kết đến tài liệu mô tả và định nghĩa chúng.
5 Web agents & web services: Semantic Web có thể cung cấp cho các agents khả năng hiểu và tích hợp các nguồn thông tin đa dạng Một ví dụ cụ thể là một người lập kế hoạch hoạt động xã hội, có thể lấy sở thích của người dùng (chẳng hạn như thể loại phim nào họ thích, loại thực phẩm nào họ hay dùng, v.v.) và sử dụng thông tin này để lên kế hoạch cho các hoạt động của người dùng cho buổi tối Nhiệm vụ lập kế hoạch cho các hoạt động này sẽ phụ thuộc vào sự phong phú của môi trường dịch vụ được cung cấp và nhu cầu của người dùng Trong quá trình xác định/kết hợp dịch vụ, các dịch vụ xếp hạng và đánh giá cũng có thể được đề xuất để tìm ra sự phù hợp nhất với sở thích của người dùng (ví dụ: tư vấn đánh giá và xếp hạng phim và nhà hàng để tìm ra nơi phù hợp nhất với khách hàng).
Các kỹ thuật biểu diễn tri thức dựa trên các ontologies đã được triển khai trong các dịch vụ web ở cấp độ Business-to-Business để tự động hóa việc tích hợp các dịch vụ, tạo ra các lĩnh vực nghiên cứu mới gọi là dịch vụ web ngữ nghĩa (semantic web service) và web ngữ nghĩa hướng dịch vụ (service-oriented semantic web).
Logic mô tả (Description Logic - DL) là cốt lõi của việc định nghĩa các ontologies bằng cách cho phép thêm một ngữ nghĩa vào các đặc tả sẵn có của các khái niệm hiện
Semantic Web Rule Language (SWRL)
tại cũng như hỗ trợ cho các cơ chế suy luận DL có tính diễn đạt cao hơn logic mệnh đề, nhưng kém hơn logic ưu tiên thứ tự (First Order Logic - FOL) Theo nghiên cứu [13] đã trình bày, cấu thành của một DL bao gồm: Concepts, Roles, Individuals, Axioms, Constructors Trong đó, các thuộc tính (Attributes) là một phần không thể thiếu khi định nghĩa cácConcepts của contract bằng cách mô tả các thuộc tính liên quan tới nó. Các thuộc tính thường được mô tả bởi quan hệ hasAttribute Mô tả này được thể hiện trong FOL theo cấu trúc quan hệ ba ngôi sau: hasAttribute(< concept >, < attrN ame >, < attrV alue >) Hay có thể biểu diễn dưới dạng quan hệ hai ngôi như sau: hasV alue(a, < attrV alue >) với a ∈hasAttribute(< concept >, < attrN ame >).
Ontology có thể được thể hiện dưới nhiều định dạng khác nhau, trong đó ngôn ngữ phổ biến và được sử dụng rộng rãi nhất là Web Ontology Language (OWL) [17] OWL được mô hình hoá theo hướng tiếp cận hướng đối tượng, nhằm thể hiện các tri thức dưới dạng lớp và các thuộc tính của nó OWL cung cấp một tập các từ vựng lớn hơn và thể hiện ngữ nghĩa tốt hơn so với các định dạng nguyên thuỷ như XML, RDF hay RDF Schema OWL chia làm ba nhánh ngôn ngữ bao gồm: OWL Lite, OWL DL, và OWL Full Mỗi ngôn ngữ đều có các đặc trưng về cách diễn đạt riêng biệt, việc lựa chọn ngôn ngữ phụ thuộc vào mục đích sử dụng ontology.
3.2 Semantic Web Rule Language (SWRL)
Một trong các điểm hạn chế của OWL đó là khả năng biểu diễn bị giới hạn Mặc dù OWL cung cấp tập hợp khá đầy đủ các cách xây dựng lớp, nhưng nó không thể biểu diễn mối quan hệ giữa các thuộc tính kết hợp (composite properties), ví dụ liên kết giữa thuộc tính "cha" và "anh trai" với thuộc tính "chú" Hạn chế này đã được chỉ ra trong phiên bản OWL2, ở đó cho phép định nghĩa các chuỗi thuộc tính chỉ khi một thuộc tính kết hợp là thuộc tính con của một trong các thuộc tính kết hợp đó Semantic Web Rule Language (SWRL) [18] là một ngôn ngữ quy tắc được thiết kế để mở rộng khả năng diễn đạt của OWL SWRL kết hợp OWL DL hoặc OWL Lite với một tập con của Rule Markup Language [20] SWRL mang lại khả năng suy diễn mạnh mẽ bằng cách cho phép người dùng viết các luật dạng Horn (Horn-like rules) được xây dựng trên các khái niệm của OWL Các luật này tương tự như các ngôn ngữ Prolog hay Datalog SWRL được dựa trên nền tảng miêu tả luận lý giống OWL và có các cơ chế tương tự nhằm đảm bảo tính lý luận và suy diễn Một luật SWRL bao gồm tiền đề (antecedent) hay còn gọi là body, và kết quả (consequent) hay còn gọi là head Khi các điều kiện trong body đúng, thì các điều kiện trong head bắt buộc phải đúng Body và head bao gồm các liên kết dương của các atoms, ví dụ: atom∧atom∧ →atom∧atom Một atom là biểu thức có dạng: p(arg 1 , arg 2 , arg n )
3.2 Semantic Web Rule Language (SWRL) 14
Với p là ký hiệu vị ngữ (predicate symbol) và arg 1 , arg 2 , arg n là các tham số của biểu thức p SWRL hỗ trợ năm dạng vị ngữ: lớp OWL (class), thuộc tính OWL (property), kiểu dữ liệu (data type), phạm vi dữ liệu (data range), và hàm dựng sẵn (built-in) Các tham số có thể là các cá thể OWL, các giá trị dữ liệu hoặc các biến tham chiếu Tất cả các biến trong OWL dược coi là định lượng, và có giới hạn nhất định theo một quy tắc nào đó [21].
Data valued property atom hasAge(?p, ?age)
Different individuals atom differentFrom(“Mike”, “John”)
Same individuals atom sameAs(“Mike”, “Michael”)
Built-in atom swrlb:greaterThan(?age, “18”)
Data range atom xsd:int(?x)
Bảng 2: Các loại atom hỗ trợ bởi SWRL và ví dụ
SWRL hỗ trợ bảy dạng atoms khác nhau (bảng 2) P erson, Car là các lớp của OWL, hasCar, hasAgelà thuộc tính đối tượng và thuộc tính giá trị,
• Class Atom bao gồm một lớp OWL hoặc biểu thức lớp và một đối số duy nhất đại diện cho một cá thể OWL Ví dụ P erson(?p), M an(F red) Ở đây, P erson vàM an là các lớp OWL ,?p là một biến đại diện cho một cá thể OWL vàF red là tên của một cá thể OWL Một quy tắc ví dụ đơn giản sử dụng các class atom để chỉ rằng tất cả các cá thể thuộc loại M an cũng hoặc loại P erson được biểu diễn:
• Individual Property Atom bao gồm một thuộc tính đối tượng OWL và hai tham số đại diện cho các cá thể OWL Ví dụhasBrother(?x,?y),hasSibling(F red,?y). Ở đây, hasBrother và hasSibling là các thuộc tính đối tượng OWL , ?x và ?y là các biến đại diện cho các cá thể OWL và F red là tên của một cá thể OWL. Một quy tắc SWRL ví dụ một người có anh chị em có anh trai, do đó sẽ yêu cầu nắm bắt các khái niệm về người, nữ, anh chị em và anh trai trong OWL Theo trực giác, khái niệm người và con trai có thể được nắm bắt bằng cách sử dụng lớp OWL có tên là P erson với một lớp phụ M an; mối quan hệ anh chị em và anh trai có thể được thể hiện bằng cách sử dụng các thuộc tính đối tượng OWL hasSibling và hasBrother với một miền và phạm vi của P erson Luật trong SWRL được thể hiện:
• Data Valued Property Atom bao gồm một thuộc tính dữ liệu OWL và hai tham số, với tham số đầu tiên đại diện cho một cá thể OWL và tham số thứ hai là một giá trị dữ liệu Ví dụ hasAge(?x,?age), hasHeight(F red,?h), hasAge(?x,232),
3.2 Semantic Web Rule Language (SWRL) 15 hasN ame(?x,”F red”) Ở đây, hasHeight, hasAge và hasN ame là các thuộc tính dữ liệu của OWL , ?x là một biến đại diện cho một cá thể OWL, F red là tên của một cá thể OWL và ?h và ?age là các biến đại diện cho các giá trị dữ liệu Sử dụng một thuộc tính có giá trị dữ liệu boolean, một luật khẳng định rằng tất cả những người sở hữu một chiếc xe nên được phân loại là người lái xe sau đó có thể được viết là:
Các cá thể được đặt tên trong ontology cũng có thể được gọi trực tiếp Ví dụ, có thể viết lại luật trên để phân loại một cá thể tên Fred làm tài xế như sau:
P erson(F red)∧hasCar(F red, true)→Driver(F red)
Cần lưu ý là luật này chỉ đúng với một cá thể biết trước tên là F red Không thể tạo một cá thể mới bằng cách sử dụng các luật của hình thức này.
• Different Individuals Atom bao gồm các ký hiệudif f erentF romvà hai tham số đại diện cho hai cá thể OWL Ví dụ dif f erentF rom(?x,?y) và dif f erentF rom(F red, J oe), ở đây ?x,?y là hai biến đại diện cho hai cá thể còn
F red, J oe là tên của các cá thể.
• Same Individual Atom tương tự như Different Individuals Atom nhưng mang ý nghĩa đối nghịch, được biểu diễn bởi ký hiệusameAs Ví dụ sameAs(?x,?y) và sameAs(F red, J oe).
• Data Range Atom bao gồm một tên kiểu dữ liệu hoặc một tập hợp các giá trị (literal) và một tham số duy nhất biểu thị một giá trị dữ liệu Ví dụ xsd : int(?x),[3,4,5](?x), ở đây ?x đại diện cho một giá trị dữ liệu.
• Built-In Atom: Một trong những tính năng mạnh mẽ nhất của SWRL là khả năng hỗ trợ các built-in do người dùng định nghĩa Một built-in là một vị từ nhận một hoặc nhiều tham số và có giá trịtrue nếu các tham số số thỏa mãn vị ngữ Ví dụ, built-in equal nhận vào hai tham số x, y và trả về giá trị true nếu hai tham số này bằng nhau Một ví dụ sử dụng built-in để biểu diễn ràng buộc kiểm tra một người có phải là vị thành niên không như sau:
P erson(?p)∧hasAge(?p,?age)∧swrlb:greaterT han(?age,17)→Adult(?p)
Theo quy ước, các built-in của SWRL sẽ có tiền tố là swrlb Khi thực thi, luật trên sẽ phân loại các cá thể thuộc lớp P erson có giá trị của thuộc tính hasAge lớn hơn 17 sẽ được xếp vào lớpAdult.
Một luật dùng built-in xử lý chuỗi dùng để xác định số điện thoại của một người có bắt đầu bằng mã ký tự quốc tế "x" hay không có thể thể hiện như sau:
P erson(?p)∧hasN umber(?p,?number)∧swrlb:startsW ith(?number,” + ”)
Ngữ pháp LL
SWRL cho phép việc định nghĩa các thư viện built-in để sử dụng trong các luật. Người dùng có thể tự định nghĩa để thực hiện một loạt các tác vụ như chuyển đổi tiền tệ, thao túng thời gian và tìm kiếm phân loại.
Quay lại hạn chế đã trình bày ở trên về OWL, một luật SWRL có thể giải quyết hạn chế này như sau: parent(?x,?y)∧brother(?y,?z)→uncle(?x,?z)
Kết hợp các ontology OWL và các luật SWRL mang lại nền tảng tri thức có thể khai thác để suy luận và tham khảo.
Trong lý thuyết ngôn ngữ [19], ngữ pháp LL là một ngữ pháp phi ngữ cảnh (context- free grammar) có thể được phân tích cú pháp bởi bộ duyệt LL Bộ duyệt này sẽ đọc đầu vào từ trái sang phải (Left to right) và sinh ra một dẫn xuất ngoài cùng bên trái (Leftmost derivation) Do đó, ngữ pháp này được gọi là LL Đề tài sẽ xây dựng bộ duyệt ngữ pháp LL1, do đó sẽ tập trung vào chi tiết của phần này.
Bộ duyệt LL(1) Một bộ duyệt ngữ pháp bất kỳ thường được chia làm 2 loại: Top- down và Bottom-up Bộ duyệt LL được xếp vào loại Top-down (hình 3) Trong đó, bộ duyệt dự đoán (predictive parser) là một bộ duyệt đệ quy giảm, với khả năng dự đoán dẫn xuất nào được sử dụng để thay thế cho chuỗi đầu vào.
Một bộ duyệt LL được gọi là LL(k), nếu như đọc vào k ký tự/từ (token) để xử lý.
Do đó, bộ duyệt LL(1) được thiết kế để đọc vào 1 token tại một thời điểm để đưa ra các hành động xử lý tiếp theo Nhiệm vụ của bộ duyệt LL(k) là phải dự đoán được luật dẫn xuất nào được sử dụng để thay thế cho các ký tựnon-terminal Một giải thuật LL căn bản sẽ bắt đầu với stack [S, $] và thực hiện một trong các bước sau:
1 Nếu đỉnh của stack là non-terminal, thay thế đỉnh đó bằng các dẫn xuất Sử dụng k token tiếp theo để đưa vào stack (không thay đổi vị trí duyệt chuỗi đầu vào hiện tại).
2 Nếu đỉnh của stack làterminal, đọc token tiếp theo từ đầu vào Nếu trùng nhau, pop ra khỏi stack và tiếp tục Nếu không, quá trình duyệt thất bại, kết thúc chương trình.
3 Nếu stack rỗng, bộ duyệt kết thúc và xem như quá trình duyệt thành công (thường sẽ xác định dựa vào ký tự kết thúc chuỗi - $).
Một ngữ pháp LL phải thoả mãn 2 tiêu chí là: Không tồn tại left-factoring và left- recursion.
Left-factoring & Left-recursion Ngữ pháp được gọi là left-factored khi có dạng sau:
Hình 3: Phân loại bộ duyệt LL
Hay các luật dẫn bắt đầu bằng chung một (hoặc một tập) các terminal Lúc đó, việc lựa chọn một phép sinh trong luật dẫn A ở trên là không rõ ràng Do đó, cần phải viết lại A như sau (trong đó các ký hiệu α, β là cácterminal, là ký tự kết thúc).
A 0 →β1 |β2 |β3 | |βn Đối với left-recursion, ngữ pháp có luật sinh vớiright hand side - RHS có biến trái cùng trùng với biến của left hand side - LHS Ví dụ:
Ngữ pháp có luật sinh thuộc left-recursion sẽ làm cho bộ duyệt LL xử lý sai, vì bản chất phương pháp Top-down không thể xử lý các ngữ pháp left-recursion Để loại bỏ left-recursion, cần viết lại luật sinh trên như sau:
Tập FIRST & FOLLOW Bộ duyệt LL là non-backtracking, do đó không thể sử dụng backtrack để phân tích cú pháp Kết hợp hai tập FIRST & FOLLOW sẽ tạo thành bảng duyệt, giúp cho 3 bước đã trình bày ở trên của giải thuật LL(1) sẽ xác
Blockchain
định được luật sinh nào được sẽ áp dụng dựa vào giá trị đầu vào.
Mục đích của tập FIRST là tìm ra các terminal của ngữ pháp Các terminal đầu tiên trước mỗi ký hiệu sẽ được đưa vào tập FIRST Ví dụ các ngữ pháp sau:
A→αB|=⇒F IRST(A) = α, Đối với tập FOLLOW, sẽ kiểm tra vị trí bên phải của ký tự cần kiểm tra, với $ là ký tự bắt đầu Ví dụ:
Do c là ký tự bên phải của A nên F OLLOW(A) = {c,$}.
Blockchain là một sổ cái kỹ thuật số không thể chỉnh sửa, nơi các giao dịch được công khai và ghi lại theo thời gian Blockchain thực hiện điều này nhờ vào cơ chế đồng thuận, với nhiều máy tính phân tán cùng tham gia vào quản lý sổ cái này [22].
Phi tập trung và cơ chế đồng thuận mang lại sự an toàn và chủ động Với sổ cái truyền thống, tất cả thông tin nằm ở một nơi - điều đó có nghĩa là tin tặc có thể tìm thấy một điểm tấn công duy nhất Ngược lại, blockchain là một sổ cái phi tập trung. Thay vì một tổ chức hoặc cơ quan quản lý dữ liệu, một mạng lưới lớn các máy tính cá nhân quản lý, xác minh và xác thực thông tin Những máy tính này, được gọi là các nút (node), tạo ra một hệ thống tập thể, dựa trên sự đồng thuận để đảm bảo độ chính xác.
Có nhiều cơ chế đồng thuận khác nhau để đảm bảo tính thống nhất và chính xác của dữ liệu Sự kết hợp giữa phi tập trung và cơ chế đồng thuận giúp dữ liệu trên blockchain gần như không thể thay đổi Khi một sự thay đổi xảy ra dù lớn hay nhỏ, các nút xác minh sự thay đổi với bản sao của sổ cái Nếu các sổ cái không phù hợp dù với một nút duy nhất, thì thay đổi bị từ chối Do đó, tin tặc sẽ phải tấn công từng nút riêng biệt (nền tảng Ethereum có hơn 1 triệu nút) để tạo một thay đổi trái phép Điều này yêu cầu khả năng tính toán cực kỳ lớn để có thể ghi đè lên các thông tin của mạng lưới.
Loại bỏ nhu cầu đối với các bên trung gian Các lĩnh vực hầu hết đều có các trung gian đáng tin cậy Ví dụ, các khách hàng tin tưởng và sử dụng Airbnb để thuê nhà ở. Tuy nhiên, nếu nhìn ở các lĩnh vực không có một bên trung gian rõ ràng - như cơ sở quản lý và trao đổi hồ sơ y tế điện tử - việc sử dụng blockchain có thể ít tốn chi phí và thời gian hơn so với việc thiết lập và vận hành một bên trung gian đáng tin cậy khác.
Như đã trình bày ở phần 1.3, có ba loại blockchain chính, được phân biệt theo cách mà các máy tính thành viên tham gia mạng lưới thực hiện giao thức đồng thuận và duy trì chia sẻ sổ cái, bao gồm: công cộng (public), riêng tư (private), hay trao quyền(permissioned/consortium) Theo như giới hạn đề tài đã đặt ra, nội dung trình bày sẽ
Hyperledger Fabric
tập trung chủ yếu vào private blockchain. Đối với private blockchain, mạng lưới chỉ bao gồm các nút được mời (invitation- only) Các nút mới tham gia vào mạng phải được xác nhận bởi các cá nhân thiết lập mạng lưới hoặc thông qua một tập luật xác định trước bởi các cá nhân đó Khả năng ghi thông tin và xác nhận các giao dịch thuộc về một tổ chức, còn quyền đọc có thể được công khai hoặc bị hạn chế Các private blockchain phù hợp nhất đối với các ứng dụng nội bộ cho một công ty/tổ chức Private blockchain giúp các tổ chức tận dụng lợi thế có thể thiết lập một nhóm các đối tượng có quyền xác nhận giao dịch nội bộ. Điều này đặt vấn đề về bảo mật đối với private blockchain vì nó tương đồng như các hệ thống tập trung, đối ngược với public blockchain được bảo mật bởi các cơ chế khuyến khích Tuy nhiên, private blockchain được sử dụng trong các trường hợp liên quan đến khả năng mở rộng và tuân thủ quyền riêng tư dữ liệu quy tắc và các vấn đề quy định khác Private blockchain cung cấp các giải pháp cho các ngành, lĩnh vực liên quan tới việc yêu cầu tuân thủ các quy định một cách nghiêm ngặt như Luật an toàn sức khoẻ (Health Insurance Portability and Accountability Act, viết tắt HIPAA), Xác thực khách hàng (Know Your Customer, viết tắt là KYC) hay Chống rửa tiền (Anti-money Laundering, viết tắt là AML).
Hyperledger là một tập hợp các dự án nguồn mở được dẫn dắt bởi The Linux Founda- tion để thúc đẩy ứng dụng công nghệ blockchain vào công nghiệp Dự án Hyperledger bao gồm năm nền tảng riêng biệt: Fabric, Sawtooth, Burrow, Iroha và Indy Những các dự án nhằm cung cấp một sự thay thế cho mô hình blockchain dựa trên tiền điện tử như các nền tảng trước Hyperledger cũng duy trì các mô-đun, gồm một bộ phần mềm được sử dụng để triển khai và duy trì blockchain, kiểm tra dữ liệu trên sổ cái, và thiết kế, tạo mẫu và mở rộng mạng blockchain.
Lần đầu được giới thiệu bởi IBM, Hyperledger Fabric từng được xây dựng để trở thành nền tảng phát triển các ứng dụng blockchain với kiến trúc mô-đun Trong năm dự án của Hyperledger, thì Fabric là dự án thành công nhất, và được đông đảo cộng đồng lập trình viên ủng hộ và đóng góp Đa số các doanh nghiệp đang phát triển các ứng dụng blockchain yêu cầu cao về quyền riêng tư và tính phân quyền đều đang sử dụng Fabric.
Ngôn ngữ lập trình: Go chaincode hoặc Java.
Cơ chế đồng thuận: Apache Kafka [24] (Cơ chế bỏ phiếu phân quyền Leader thực hiện việc sắp xếp Chỉ có các bản sao đã cập nhật với sổ cái mới có thể tham gia bỏ phiếu trở thành Leader mới).
• Quản lý danh tính: Để kích hoạt các mạng phân quyền, Hyperledger Fabric cung cấp dịch vụ nhận dạng thành viên để quản lý ID người dùng và xác thực tất cả
4 https://hyperledger-fabric.readthedocs.io/en/release-1.4/functionalities.html
3.5 Hyperledger Fabric 20 người tham gia Danh sách kiểm soát truy cập (Access control list - ACL) có thể được sử dụng để cung cấp các lớp quyền bổ sung thông qua ủy quyền trên các hoạt động mạng cụ thể Ví dụ: ID người dùng cụ thể có thể được phép gọi ứng dụng chaincode, nhưng bị chặn triển khai chaincode mới.
• Quyền riêng tư và bảo mật: Các kênh riêng là các đường dẫn có thể được sử dụng để cung cấp quyền riêng tư và bảo mật giao dịch cho các tập thành viên cụ thể trong mạng Tất cả dữ liệu, bao gồm thông tin giao dịch, thành viên và kênh, trên một kênh là vô hình và không thể truy cập được đối với bất kỳ thành viên mạng nào không được cấp quyền truy cập rõ ràng vào kênh đó.
• Xử lý hiệu quả: Hyperledger Fabric gán vai trò mạng theo loại nút Để cung cấp tính đồng thời và song song cho mạng, việc thực hiện giao dịch được tách biệt khỏi sắp xếp giao dịch và cam kết Thực hiện các giao dịch trước khi sắp xếp cho phép mỗi nút ngang hàng xử lý đồng thời nhiều giao dịch Việc thực hiện đồng thời này làm tăng hiệu quả xử lý trên mỗi thiết bị ngang hàng và đẩy nhanh việc phân phối các giao dịch đến dịch vụ sắp xếp Ngoài việc cho phép xử lý song song, việc phân công này giải phóng các nút sắp xếp khỏi các yêu cầu thực hiện giao dịch và bảo trì sổ cái, trong khi các nút ngang hàng được giải phóng khỏi khối lượng công việc sắp xếp (đồng thuận) Sự phân chia vai trò này cũng giới hạn việc xử lý cần thiết cho ủy quyền và xác thực; tất cả các nút ngang hàng không phải tin tưởng tất cả các nút sắp xếp và ngược lại, vì vậy các quy trình trên một nút có thể chạy độc lập với xác minh của các nút khác.
• Tính năng chaincode: Các ứng dụng Chaincode mã hóa logic được gọi bởi các loại giao dịch cụ thể trên kênh Ví dụ, Chaincode xác định các tham số để thay đổi quyền sở hữu tài sản, đảm bảo rằng tất cả các giao dịch chuyển quyền sở hữu phải cùng tuân theo các quy tắc và yêu cầu Chaincode hệ thống được phân biệt là chaincode xác định tham số vận hành cho toàn bộ kênh Vòng đời và cấu hình chaincode hệ thống xác định các quy tắc cho kênh; hệ thống chaincode đảm bảo và xác định các yêu cầu để chứng thực và xác nhận các giao dịch.
• Thiết kế mô-đun hoá: Hyperledger Fabric thực hiện kiến trúc mô-đun để cung cấp lựa chọn chức năng cho các nhà thiết kế mạng (blockchain) Ví dụ các thuật toán cụ thể để nhận dạng, sắp xếp (đồng thuận) và mã hóa, có thể được thêm vào bất kỳ mạng Hyperledger Fabric nào Kết quả là một kiến trúc blockchain phổ quát mà bất kỳ ngành công nghiệp hoặc lĩnh vực nào cũng có thể áp dụng, với sự đảm bảo rằng các mạng này sẽ có thể tương tác vượt qua các giới hạn lĩnh vực thị trường, quy định và địa lý.
Một số ưu điểm có thể kể đến của nền tảng này:
• Hỗ trợ từ doanh nghiệp: Sự ủng hộ mạnh mẽ từ doanh nghiệp và các công ty. Trong một hệ sinh thái thay đổi nhanh chóng, sự ủng hộ này có thể mang lại sự ổn định và động lực giúp nền tảng này tồn tại và phát triển bền vững.
• Độ trưởng thành: Là dự án thành công nhất của Hyperledger.
• Kênh riêng tư: Nền tảng smart contract và sổ cái phân tán của Fabric cho phép tạo kênh riêng tư Trong một mạng lưới blockchain lớn và chỉ có nhu cầu chia
Smart contract
sẻ thông tin cho một số bên nhất định, có thể tạo các kênh riêng tư với các đối tượng này.
• Kiến trúc mô-đun hoá: Cho phép sử dụng các thành phần (component) như cơ chế đồng thuận hay dịch vụ thành viên khi cần thiết.
• Smart contract: Trong Fabric, khái niệm "chaincode" được dùng thay thế cho smart contract.
Bên cạnh đó, Fabric vẫn có một số nhược điểm:
• Chưa hoàn thiện: Phiên bản 1.0 của Hyperleger Fabric lần đầu được giới thiệu vào 7/2017 và các nhà sáng lập thừa nhận vẫn còn nhiều thứ để cải thiện đối với phiên bản đầu tiên này Thay vì mang tới nhiều tính năng mới, thì phiên bản này chỉ gồm các bản vá lỗi, kiểm thử tính bảo mật, cải thiện giao diện và cập nhật tài liệu Tuy nhiên, tới thời điểm hiện tại của bài báo cáo thì Fabric đã phát hành phiên bản 1.4 với các tính năng mới như: Sử dụng cơ chế chịu lỗi Raft [23], cải tiến mô hình lập trình để phát triển ứng dụng hay các cải tiến về vận hành và dịch vụ như cung cấp các dịch vụ kiểm tra ghi nhật ký, trạng thái, số liệu
• Việc hỗ trợ từ các doanh nghiệp: Đây cũng được xem là hạn chế của Fabric, khi quá trình phát triển chịu ảnh hưởng từ các công ty công nghệ lớn.
• Thiếu chuỗi công khai: Hiện tại Fabric chưa có các chuỗi công khai để hỗ trợ quá trình chạy thử nghiệm.
• Thiếu tiền điện tử: Không giống như Ethereum blockchain với loại hình tiền điện tử Ethereum, Fabric không yêu cầu một loại tiền điện tử có sẵn bởi vì cơ chế đồng thuận đạt được không thông qua quá trình khai thác (mining) Việc phát triển một loại tiền hoặc token điện tử trong Fabric yêu cầu tài nguyên và đầu tư đáng kể để phát triển.
Trong giới hạn của đề tài, Hyperledger Fabric được ứng dụng để triển khai chaincode (smart contract) sinh ra và kiểm thử tính đúng đắn.
Khái niệm về hợp đồng (contract) được sử dụng trong lĩnh vực kinh doanh, thương mại và cuộc sống hàng ngày để ghi nhận thoả thuận giữa các bên và chi phối sự tương tác của các bên đó trên cơ sở một lần duy nhất hoặc trong một khoảng thời gian nhất định.
Trước đây, nhiều hệ thống máy tính thương mại được xem như là các ứng dụng quản lý hợp đồng, đã được phát triển để hỗ trợ việc tự động hóa các hợp đồng pháp lý (legal contract) Trong bối cảnh này, thuật ngữ "e-contract" được sử dụng để thể hiện hình thức điện tử của hợp đồng, phù hợp với các hoạt động tự động hóa hợp đồng và đã có một số sáng kiến nhằm tiêu chuẩn hóa các khái niệm liên quan đến hợp đồng điện tử Thuật ngữ e-contract thường được sử dụng như một thuật ngữ chung cho bất kỳ hợp đồng nào có thể được xử lý hoặc giải quyết bởi các hệ thống máy tính, ví dụ, thông qua trao đổi email hoặc qua các trang web Theo một nghĩa cụ thể hơn, thuật ngữ này
3.6 Smart contract 22 được sử dụng để thể hiện các hợp đồng bao gồm các thành phần tính toán, chẳng hạn như các trường dữ liệu và các quy tắc Các thành phần tính toán này sau đó được dùng trong các hoạt động tự động hóa hợp đồng tiếp theo, như soạn thảo, đàm phán, giám sát và thi hành Các hệ thống sử dụng e-contract thường tập trung vào hai chức năng chính là quả lý tài liệu và đảm bảo tính tuân thủ điều khoản Tính năng thứ hai còn được gọi là quản lý các cam kết, thường được áp dụng trong các hợp đồng cung ứng, các điều khoản dịch vụ, ứng dụng ngân hàng và hợp đồng sức khoẻ Các hệ thống quản lý cam kết thường liên hệ các khái niệm về hợp đồng với các giao dịch và quá trình xử lý, nhằm tăng tính hiệu quả và khả năng giám sát hành vi của các bên Thông thường, các hệ thống này được phát triển bởi một công ty một cách truyền thống với các hệ thống nội bộ Hiện nay, chúng được triển khai bởi các bên thứ ba, hay còn được biết đến với mô hình "Software as a Service" Các hệ thống quản lý hợp đồng hiện nay sử dụng nhiều hình thức khác nhau của e-contract: một số dưới dạng ác quy tắc hợp đồng, và được dịch thành các thủ tục máy tính (computer procedure) thông qua các hệ thống nhau, và cuối cùng thể hiện dưới hình thức là các hợp đồng tự động, như smart contract.
Khái niệm"smart contract" lần đầu được giới thiệu vào những năm 1990 bởi Szabo (1997) [25], xuất phát từ ý tưởng về một nền tảng công nghệ pháp lý giúp cho thương mại giảm thiểu được chi phí và các tranh chấp phát sinh Ý tưởng về smart contract xuất hiện vào thời điểm mà một số hệ thống và tiêu chuẩn để ký kết hợp đồng đã được thiết lập, chẳng hạn như Trao đổi dữ liệu điện tử (Electronic data interchange, viết tắt EDI) để truyền dữ liệu có cấu trúc giữa máy tính của các đối tác giao dịch Các hệ thống và tiêu chuẩn lúc bấy giờ chỉ tập trung vào các giao thức và cấu trúc thông điệp dùng trong các giao dịch thương mại, nên đã hạn chế khả năng trình bày của smart contract so với khả năng mà smart contract mang lại như thời điểm hiện tại Smart contract có tính ràng buộc về mặt pháp lý, vì code của chúng là thể hiện hợp lệ duy nhất của thỏa thuận hợp đồng giữa các bên Do đó, một smart contract có ý nghĩa pháp lý là một chương trình máy tính vừa thực hiện một số tác vụ nhất định, vừa chỉ ra rằng các tác vụ này mang lại các giá trị về pháp lý (nghĩa vụ và quyền lợi) được giả định bởi tác vụ đó từ trước Ví dụ, hãy xem xét một smart contract đại diện cho một khoản vay, chỉ định các hoạt động bao gồm chuyển 100$ từ A sang B, tại thời điểm t hoặc chuyển 1 đơn vị từ B sang A mỗi tháng sau thời điểmtcho đếnt+1và chuyển100$từ B sang A, tại thời điểm t+ 1 Ở đây, yêu cầu thể hiện rằng A và B đồng ý về một smart contract đã ra một hợp đồng cho vay ràng buộc về mặt pháp lý, liên quan đến nghĩa vụ của A phải chuyển tiền tạit và nghĩa vụ của B là phải trả lại khoản vay cộng với tiền lãi cho
A Nói chung, code của smart contract đề cập đến các điều khoản hợp đồng có thể ở dạng logic có điều kiện, trong đó cả điều kiện tiền đề và kết quả tương ứng, đều được chỉ định chính xác và cụ thể Do đó, một điều khoản hợp đồng liên kết một kết quả pháp lý nhất định với một điều kiện cụ thể được thể hiện dưới dạng một đoạn mã kiểm tra các điều kiện và kích hoạt các thay đổi (chuyển một khoản tiền tại một thời điểm nhất định) tương ứng với hiệu lực pháp lý (nghĩa vụ trả số tiền đó trước thời điểm quy định).
Trước khi các cá nhân có thể giao dịch với nhau, phải xác định một tập các hợp đồng bao gồm các điều khoản, dữ liệu, quy tắc, khái niệm và quy trình chung Kết hợp với nhau, các hợp đồng này đưa ra mô hình nghiệp vụ chi phối tất cả các tương tác giữa các bên giao dịch.
Hình 4: Một smart contract trong Fabric
Smart contract xác định các quy tắc giữa các tổ chức khác nhau dưới dạng mã thực thi Các ứng dụng gọi một smart contract để tạo ra các giao dịch và được ghi lại trên sổ cái Trong hình 4, chúng ta có thể thấy hai tổ chức ORG1 và ORG2 đã xác định smart contract car như thế nào để query, transf er, update xe Các ứng dụng từ các tổ chức này gọi smart contract này để thực hiện một bước đã thỏa thuận trong quy trình kinh doanh, ví dụ như để chuyển quyền sở hữu một chiếc xe cụ thể từ ORG1 sang ORG2.
Hyperledger Fabric thường sử dụng các khái niệm smart contract và chaincode thay thế cho nhau Nói chung, smart contract xác định logic của giao dịch kiểm soát vòng đời của một đối tượng nghiệp vụ có trong thế giới thực Sau đó, nó được đóng gói thành một chaincode sau đó được triển khai lên mạng lưới blockchain Các smart contract được coi như khả năng kiểm soát các giao dịch, trong khi đó chaincode chi phối cách các smart contract được đóng gói để triển khai.
Hình 5: Smart contract và chaincode trong Fabric
Smart contract được xác định trong một chaincode Nhiều smart contract có thể được xác định trong cùng một chaincode Khi một chaincode được triển khai, tất cả các smart contract trong chaincode đó sẽ được sẵn sàng để sử dụng cho các ứng dụng.
Trong hình 5, chúng ta có thể thấy một chaincode vehicle có chứa ba smart con- tract: car, boat, truck Chúng ta cũng có thể thấy một chaincode insurance có chứa bốn smart contract: policy, liability, syndication, securitization Trong cả hai trường hợp, các hợp đồng này bao gồm các khía cạnh chính của quy trình kinh doanh liên quan đến xe cộ và bảo hiểm Lấy hợp đồng car làm ví dụ Chúng ta có thể thấy rằng smart contract là một chương trình cụ thể liên quan lến một lĩnh vực cụ thể, trong khi đó, chaincode là một tập hợp của một nhóm các smart contract có liên quan với nhau nhằm hỗ trợ việc cài đặt và khởi tạo.
Có thể hiểu, một blockchain ghi lại các giao dịch một cách bất biến cập nhật trạng thái vào một sổ cái Smart contract có thể truy cập theo hai thành phần riêng biệt của một sổ cái - blockchain, ghi lại lịch sử của tất cả các giao dịch và world state lưu giữ giá trị tạm thời của các giá trị hiện tại của các trạng thái này, vì đó là giá trị hiện tại của một đối tượng đang được yêu cầu Smart contract chủ yếu tương tác put, get, deletetrên các trạng thái trong trạng thái này và cũng có thể truy vấn lịch sử giao dịch bất biến trên blockchain.
• getthường đại diện cho một truy vấn để lấy thông tin về trạng thái hiện tại của một đối tượng.
• put thường tạo một đối tượng mới hoặc sửa đổi một đối tượng hiện có trong trạng thái hiện tại của sổ cái.
• deletethường đại diện cho việc loại bỏ một đối tượng ra khỏi trạng thái hiện tại của sổ cái, chứ không phải là lịch sử của nó.
Smart contract có nhiều API có sẵn hỗ trợ ba tác vụ trên Quan trọng hơn hết là trong mọi trường hợp, cho dù các giao dịch tạo, đọc, cập nhật hoặc xóa các đối tượng ở trạng thái hiện tại, blockchain đều chứa một bản ghi bất biến về những thay đổi này.
Định nghĩa ontology cho miền tri thức
Như đã trình bày ở phần 3.1, ontology là nền tảng để biểu diễn tri thức trong một lĩnh vực, bao gồm các khái niệm và quan hệ giữa chúng Đề tài định nghĩa các ontology cho các lĩnh vực sử dụng chuẩn OWL Khi đã xác định được các khái niệm và thực thể đại diện cho lĩnh vực đó, tạo các lớp OWL tương ứng Đối với quan hệ giữa các lớp, tạo các thuộc tính đối tượng, tương tự với quan hệ giữa các đại diện lớp và các giá trị nguyên, tạo các thuộc tính giá trị Ở đây, đề tài sử dụng trình chỉnh sửa ontology Protege 5 để khởi tạo các ontologies.
Ví dụ về một hợp đồng cho thuê xe với các ràng buộc, điều khoản về tuổi tác, bằng lái xe, loại thẻ thanh toán được thể hiện xuyên suốt quá trình nghiên cứu của đề tài. Trong đó, các luật này yêu cầu người đăng ký đạt độ tuổi tối thiểu cho phép, có bằng lái xe, có hồ sơ lái xe và có thẻ thanh toán tín dụng Dựa trên các điều kiện trên, có thể thiết kế ontology lớp P erson với các thuộc tính tên, tuổi, giới tính Lớp License chứa số bằng lái, ngày hết hạn, ngày cấp, trạng thái Lớp DrivingRecord chứa tên, tuổi, số bằng lái, các kỳ thi sát hạch, của người đó LớpCreditCard chứa thông tin công ty, mã số thẻ, tên chủ thẻ, ngày hết hạn Nếu một người có thẻ tín dụng, có bằng lái và hồ sơ đầy đủ, sẽ được biểu diễn bởi các thuộc tính đối tượng liên kết lớpP erson với ba lớp trên Cuối cùng, lớp RentalCompany với các thuộc tính về công ty và các điều kiện cho thuê Thuộc tính rentsCar chỉ ra rằng một người thoả mãn đủ các tiêu chí trên đạt yêu cầu có thể thuê xe từ công ty (hình 9).
Các lớp trên được thể hiện trong Protege như hình 10.
5 Protege - https://webprotege.stanford.edu/
Định nghĩa các luật ngữ nghĩa
Hình 9: Ontology OWL để thiết kế các luật SWRL thể hiện các tiêu chí của hợp đồng
Hình 10: Thể hiện các lớp của hợp đồng mẫu trong Protege
4.2 Định nghĩa các luật ngữ nghĩa
Khi đã có các ontologies đại diện cho một lĩnh vực, tiến hành định nghĩa các ràng buộc sử dụng SWRL Các luật ngữ nghĩa là tập hợp của các atoms Do đó, phải phân loại và gán các atom phù hợp với từng ontology đã định nghĩa ở trên Ví dụ, đối với các lớp phải sử dụng class atom, hay với thuộc tính giá trị phải sử dụng data valued property atom Dựa trên ontology thể hiện ở hình 9, sử dụng tất cả các loại atoms cũng như một số built-in atoms như swrlb để so sánh, ta có luật SWRL như sau:
Hiện thực bộ duyệt ngữ pháp LL1
P erson(?person)∧RentalCompany(?rental)∧hasAgeCriteriẳrental,?ageCriteria)
∧hasAge(?person,?age)∧swrlb:greaterT han(?age,?ageCriteria)
∧CreditCard(?cc)∧hasCreditCard(?person,?cc)∧swrlb:equal(?cc,”V isa, M astercard”)
∧License(?license)∧ownsLicense(?person,?license)
∧hasLicenseStatus(?license,?licensestatus)∧swrlb:equal(?licensestatus,”valid”)
∧DrivingRecord(?drivingRecord)∧ownsDrivingRecord(?person,?drivingRecord)
∧hasRecordStatus(?drivingRecord,?recordstatus)∧swrlb:equal(?recordstatus,”clean”)
Trong Protege, ở mục Rules, để đơn giản hoá các luật đã định nghĩa ở trên, chúng ta có thể tối giản như hình 11 Trong đó, Person, CreditCard, DriverLicense, Eligible-
ForRentallà cácclass atom,hasAge làdata valued property atom,hasCreditCard, hasDriverLicense là các individual property atomvà equal là các built-in atoms thuộc tập swrlb.
Hình 11: Thể hiện các luật SWRL của hợp đồng mẫu trong Protege
4.3 Hiện thực bộ duyệt ngữ pháp LL1
Mỗi ontology hay luật ngữ nghĩa xác định ở bước trên sẽ được thể hiện dưới dạng ngữ pháp phi ngữ cảnh (context-free grammar) Như có thể thấy, mỗi luật SWRL là một kết hợp giữa các phép kiểm tra khác nhau Phép kiểm tra đầu tiên là bước kiểm tra điều điện lớp-đối tượng, ví dụ Class(?object), theo sau là một chuỗi các luật có thể phân loại thành các phép kiểm tra ràng buộc về thuộc tính, ví dụ mệnh đề hasP roperty(?object,?property) Ngoài ra còn có các cú pháp toán tử có sẵn như swrlb:equal(?attribute,”value”) Đoạn mã dưới thể hiện ngữ pháp của các chuỗi luật khi trình bày dưới dạng LL(1) [26].
4.3 Hiện thực bộ duyệt ngữ pháp LL1 31
< rule−seq > ::=< rule >|< rule > ∧< rule−seq >
< class−propertycheck > ::=has < class−property >(?class,?< class−property >)∧
< class−constraint > ::=swrlb:< operator >(?< class−property >,?< value >)
< class−property−>::=P roperty 1 |P roperty 2 | |P roperty n
< operator > ::=equal|greaterT han |lessT han
< value > ::=int|string Quy ước các ký hiệu:
• RS (rule sequence): chuỗi các luật
• C (class): định nghĩa các lớp
• CPC (class property check): biểu thức kiểm tra thuộc tính của một lớp
• CPCS (class property check sequence): chuỗi các biểu thức kiểm tra thuộc tính
• CP (class property): thuộc tính lớp
• CI (class individual): đối tượng của lớp
• CC (class constraint): ràng buộc của lớp
• O (operator): các built-in hỗ trợ bởi tập swrlb
Khi đó, có thể viết lại ngữ pháp trên như sau:
CP CS ::= CP C |CP C∧CP CS
CP C ::= hasCP(?CI,?CP)∧CC
O ::= greaterT han|lessT han|equal
4.3 Hiện thực bộ duyệt ngữ pháp LL1 32
Tuy nhiên, như có thể thấy, trong ngữ pháp LL(1) trên vi phạm tiêu chuẩn left- recursion đã trình bày ở phần 3.3, ví dụ:
CP CS ::=CP C |CP C∧CP CS
Do đó, phải triệt tiêu các vi phạm này bằng cách thêm vào các non-terminal bổ trợ RS’, CPCS’ Ngữ pháp mới sau khi triệt tiêu vi phạm left-recursion trở thành:
CP CS ::=CP C∧CP CS 0
CP CS 0 ::=CP C∧CP CS 0
CP CS 0 ::CP C ::=hasCP(?CI,?CP)∧CC
Trong đó, là ký tự kết thúc (terminal).
Hình 12: Các thành phần của bộ duyệt ngữ pháp LL1
Hình 12 mô tả các thành phần của bộ duyệt ngữ pháp LL1 ở trên Xét ví dụ là chuỗi luật ở phần 4.2 Qua bộ phân tích từ vựng (lexical analyzer), chúng ta sẽ có tập các LexToken thuộc các kiểu sau:
• IDENT: Kiểu đại diện cho các lớp, các thuộc tính, tên riêng,
4.3 Hiện thực bộ duyệt ngữ pháp LL1 33
• CIRCUMFLEX_ACCENT, QUESTION_MARK, LEFT_PARENTHESIS, RIGHT_PARENTHESIS,
COMMA, COLON: Lần lượt là các ký tự ’∧’, ’ ?’, ’(’, ’)’, ’,’ và ’:’.
• HAS, SWRLB, GREATER_THAN, LESS_THAN, EQUAL: Lần lượt là các từ khoá định sẵn ’has’, ’swrlb’, ’greaterThan’, ’lessThan’ và ’equal’.
• ILLEGAL, EOF, WS: Các ký tự đặc biệt như không phù hợp, kết thúc chuỗi, khoảng trắng.
Sau khi chuỗi ban đầu được phân tách thành các LexToken, sẽ qua bộ phân tích cú pháp để cho ra tập hợp các bộ Token có cấu trúc như sau - lấy ví dụ cho chuỗi:
P erson(?person)∧hasAge(?person,?age)∧swrlb:greaterT han(?age,18)
Duyệt luật bằng bộ duyệt LL(1) và sinh ra các ràng buộc
Bước cuối cùng là xây dựng các thành phần cần thiết để duyệt ngữ pháp LL1 như đã mô tả trong phần 3.3.
Hình 13: Xác định các tập Nullable, First, Follow
4.4 Duyệt luật bằng bộ duyệt LL(1) và sinh ra các ràng buộc
Sử dụng Transition table sinh ra từ bước trên, song song với hiện thực Stack để xử lý chuỗi đầu vào Bộ duyệt thay thế các ký tự X ở vị trítop của Stack và thay thế bằng các luật sinh trong Transition table, cho đến khi gặp ký tự kết thúc $. Áp dụng cho luật sau:
4.4 Duyệt luật bằng bộ duyệt LL(1) và sinh ra các ràng buộc 35
Hình 14: Xác định Transition table
P erson(?person)∧hasAge(?person,?age)∧swrlb:greaterT han(?age,18) Ở bước này, chúng ta sẽ có kết quả như hình 15 Kết quả này được trực quan bởi ứng dụng của Đại học Princeton 6
Hình 15: Trực quan hoá kết quả của bước xây dựng bộ duyệt LL1
Kết quả mong muốn là xác định các giá trị của các ngữ nghĩa CP, V và O Nhắc lại, CP là tên các thuộc tính của lớp, V là giá trị (nguyên, hoặc chuỗi) của các thuộc
6 LL(1) Parser Generator - https://www.cs.princeton.edu/courses/archive/spring20/ cos320/LL1/
Tạo mẫu cho smart contract
tính và O là các toán hạng hỗ trợ của tập swrlb Trích xuất các thông tin này từ bộ kết quả của bước cuối cùng của bộ duyệt ta có:
4.5 Tạo mẫu cho smart contract
Hyperledger Fabric smart contract và chaincode có thể được hiện thực bằng ngôn ngữ
Go, cũng như sử dụng Go để thực hiện các bước kế tiếp nên Go là ngôn ngữ chính được đề tài sử dụng để hiện thực Ở bước này, đề tài dùng Go để hiện thực một mẫu smart contract dựng lên các tính năng dựa theo các ontologies và luật đã xác định ở trên. Mẫu smart contract này có thể được xem là khung sườn cho phiên bản cuối cùng, và cũng là phiên bản để triển khai lên blockchain Các giao thức định nghĩa nên các ràng buộc về tính năng và luận lý, còn ontology định nghĩa các lớp, các thuộc tính giá trị liên quan cũng như quan hệ giữa chúng Qua đó, tạo ra các cấu trúc dữ liệu tương đương với các lớp và chứa các thuộc tính liên quan Ví dụ, để tạo một mẫu smart contract cho ví dụ trên, có thể định nghĩa một hàm Create, với các ràng buộc định nghĩa sẵn ageConstraint, driverLicenseConstraint, creditCardConstraint nhận các giá trị rỗng như hình 16 Hàm trên nhận vào các tham số để kiểm tra tính hợp lệ của các ràng buộc trên, kèm theo các thông tin cần thiết để tạo một hợp đồng cho thuê xe đầy đủ.
Cập nhật smart contract bằng các ràng buộc thông qua AST
AST Để tạo ra smart contract hoàn thiện, đề tài sử dụng tính năng của Go cho phép xây dựng Abstract Syntax Tree (AST) 7 từ mã nguồn của mẫu contract ở bước trên Hiện thực một đoạn mã để xuất và thao tác trên AST này Đoạn mã sẽ tiến hành duyệt với hàm Inspect để tìm ra các tên biến ràng buộc (left-hand side) cũng như các giá trị tương ứng (right-hand side) Sau đó, duyệt giá trị của các CP, V, O ở bước 4.4 và thay thế giá trị cho các biến giá trị, biến ràng buộc trên Như vậy, các giá trị hiện tại trong AST 17 đã được cập nhật đúng theo kết quả đầu ra của bộ duyệt LL(1) và phản ánh đúng các ràng buộc từ các luật SWRL.
Sau khi quá trình cập nhật kết thúc, tiến hành ghi AST mới vào file Go, và là phiên bản hoàn thiện của smart contract (Hình 18) Với phiên bản này, có thể triển khai trực
7 https://golang.org/pkg/go/ast/
4.6 Cập nhật smart contract bằng các ràng buộc thông qua AST 37
Hình 16: Hàm mẫu của smart contract cho việc tạo hợp đồng thuê xe
Hình 17: AST node cho ageConstraint tiếp lên Fabric blockchain để bắt đầu quá trình khởi tạo và thực thi Giới hạn đề tài sẽ không trình bày chi tiết về quá trình triển khai này, chi tiết có thể tham khảo ở trang
4.6 Cập nhật smart contract bằng các ràng buộc thông qua AST 38 chủ của Hyperledger Fabric 8
Hình 18: Đoạn mã được cập nhật trong mẫu smart contract ban đầu sau khi AST được cập nhật giá trị
8 https://hyperledger-fabric.readthedocs.io/en/release-1.4/tutorial/commercial_ paper.html
5 Kết quả thực nghiệm & đánh giá
Kiểm tra tính đúng đắn của smart contract hoàn chỉnh
Dựa trên tập luật ví dụ và mẫu smart contract xây dựng, qua các bước xử lý của đề tài đưa ra, chúng ta có một phiên bản smart contract cuối cùng có thể triển khai trên Fabric blockchain Để đánh giá tính đúng đắn của smart contract này, đề tài mô phỏng một mạng lưới Fabric blockchain cục bộ, chạy trên máy tính có cấu hình chi tiết như ở bảng 3.
Hệ điều hành MacOS Catalina Version 10.15.6
Bộ xử lý 2.2 GHz Quad-Core Intel Core i7
Bảng 3: Thông số máy tính triển khai môi trường kiểm thử smart contract trên Fabric blockchain
Sau khi triển khai smart contract trên Fabric blockchain, thử gọi hàm khởi tạo một hợp đồng cho thuê xe mới với các điều kiện thoả mãn và không thoả mãn các tập luật ban đầu.
Trường hợp giá trị đầu vào hợp lệ.
Với các giá trị đầu vào như sau:
Gọi hàm khởi tạoCreate bằng đoạn mã tương tác với Fabric blockchain Câu lệnh này sẽ thử tạo một hợp đồng thuê xe với mã xeCR545341 với các thông tin như trên.
Đánh giá
Khi các ràng buộc của hợp đồng hay các tập luật thay đổi
Phương pháp truyền thống Để hiện thực một smart contract có thể chạy tốt và đúng trên các nền tảng blockchain (ở đây là Fabric) thì chi phí về thời gian và công sức là không nhỏ Điều này càng lớn hơn khi các yêu cầu ban đầu của công ty, doanh nghiệp hay tổ chức hoạt động trong một lĩnh vực có sự thay đổi (và điều này là tất yếu và thường xuyên xảy ra) Khi đó, gần như phải hiện thực lại toàn bộ smart contract đã có và cập nhật trên mạng lưới blockchain Có những công cụ, ví dụ như Fabric Deployer 9 , giúp giảm thiểu chi phí cập nhật và triển khai lại smart contract Tuy nhiên, khi yêu cầu về nghiệp vụ đã thay đổi, là nội dung của smart contract bắt buộc thay đổi theo, và việc phải can thiệp thủ công là điều không thể tránh khỏi.
Phương pháp tự động hoá.Khi có yêu cầu về hợp đồng, về nghiệp vụ thay đổi, hay thứ tự chính các tập luật thay đổi, có 2 trường hợp sẽ xảy ra:
1 Thay đổi về các giá trị của ràng buộc Trong giới hạn đề tài đã đặt ra, thì việc thay đổi các yếu tố này đã được xử lý, nên khi có yêu cầu này xảy ra, chương trình sẽ cập nhật lại smart contract dựa trên các ràng buộc & tập luật mới. Không cần sự can thiệp thủ công nào vào smart contract cuối cùng để triển khai.
2 Thay đổi về luồng luận lý của ràng buộc Trong giới hạn của đề tài, việc thay đổi luồng luận lý của hợp đồng bắt buộc nội dung của bản mẫu smart contract phải thay đổi theo Điều này là một hạn chế của đề tài Vì phương pháp hiện thực yêu cầu một bản mẫu với luồng luận lý đã cố định, chỉ có các giá trị ràng buộc là được thay đổi.
Giới hạn về tập luật OWL
Trong giới hạn đề tài, các ngữ pháp thuộc loại hasAttribute, hasClassValue, hasLiter- alValue trong định nghĩa mô hình hoá các hợp đồng dịch vụ 1.3.5 được hiện thực Do đó, nếu các tập luật OWL thuộc các loại ngữ pháp này, thì bất kỳ tuỳ biến nào của luật đều được hỗ trợ và có thể tương thích với phương pháp hiện thực Hay nói cách khác, không có giới hạn về tập luật OWL cần định nghĩa theo phương pháp đề tài đưa ra.
Lấy ví dụ một dịch vụ chia sẻ/cho thuê khách sạn, homestay có các ràng buộc để các chủ nhà/chủ khách sạn có thể đăng ký nhà/khách sạn của mình với dịch vụ này. Trong đó lớp bất động sản cho thuê định nghĩa bởiProperty(?p) Các ràng buộc có thể được chuyển sang ngữ pháp OWL để tích hợp vào chương trình như sau:
- Số lượng phòng tối thiểu là 5: hasRoom(?p,?num)∧swrlb:greaterT hanOrEqual(?num,5)
- Bắt buộc phải có máy điều hoà: hasConditioner(?p,?num)∧swrlb:greaterT han(?num,0)
9 Fabric Deployer - https://www.fabricdeployer.com/
- Có dịch vụ dọn dẹp mỗi ngày: hasDailyService(?p,?service)∧swrlb:equal(?service,”f loor_cleaning”)
- Cấm hút thuộc: hasP rohibitedActivity(?p,?activity)∧swrlb:equal(?activity,”smoking”)
Với ngữ pháp trên, hoàn toàn khả thi khi tái sử dụng chương trình và mẫu smart contract để sinh ra smart contract cuối cùng, thoả mãn các yêu cầu chủ dịch vụ đưa ra Và sẵn sàng đưa smart contract này để tích hợp vào Fabric blockchain, triển khai sử dụng cho dịch vụ trên.
Lấy ví dụ khác về điều khoản áp dụng chương trình nhận voucher khuyến mãi của dịch vụ vận chuyển/giao đồ ăn G đối với khách hàng của mình Có thể định nghĩa lớp khách hàng thành viên làMember(?m) Khi đó các ràng buộc có thể được chuyển sang ngữ pháp OWL như sau:
- Số lượng đơn hàng của thành viên phải đạt ít nhất 10: hasN umOrder(?m,?num)∧swrlb:greaterT han(?num,10)
- Các quán ăn nhất định mới hỗ trợ voucher: hasF oodBrand(?m,?brand)∧swrlb:equal(?brand,”Lotteria”)
- Tổng giá trị đơn hàng từng đặt phải đạt ít nhất 1 triệu đồng: hasM imimumExpense(?m,?total_expense)
∧swrlb:greaterT hanOrEqual(?total_expense,”1,000,000”)
Tỉ lệ tự động sinh mã
Nếu lấy tiêu chí là số dòng mã (LoC) trên smart contract cuối cùng để đưa ra tỉ lệ tự động hoá so với thủ công, dựa trên ví dụ hợp đồng cho thuê xe từ đầu báo cáo, tỉ lệ đó sẽ là27/110, tương đương khoảng 25% số dòng mã được tự động sinh ra.
Tuy nhiên, nên nhắc lại là mỗi smart contract mẫu phải tự định nghĩa có thể tái sử dụng lại trong trường hợp các giá trị của ràng buộc hay các tập luật thay đổi, mà không cần bất kỳ điều chỉnh thủ công nào để sinh ra smart contract hoàn chỉnh Do đó, khả năng tái sử dụng các smart contract mẫu cũng là một ưu điểm của phương pháp.
6 Hướng phát triển & kết luận
Với tính ứng dụng ngày càng tăng cao của công nghệ blockchain trong nhiều lĩnh vực khác nhau, smart contract trở thành một giải pháp đầy hứa hẹn để đảm bảo tính minh bạch của việc thực thi các logic nghiệp vụ, đảm bảo tính toàn vẹn dữ liệu, cũng như tăng tính tương tác giữa các bên liên quan Tuy nhiện, việc hiện thực các smart contract yêu cầu đầu tư về thời gian và kinh nghiệm chuyên môn Đồng thời, các tính năng, cấu trúc cơ bản của smart contract có thể sử dụng ở nhiều trường hợp khác nhau trong cùng một lĩnh vực Dựa trên các vấn đề trên, đề tài đưa ra phương pháp và hiện thực công cụ cho phép tự động sinh smart contract dựa trên các cơ sở tri thức của một lĩnh vực cụ thể Xậy dựng các ontologies và các luật ngữ nghĩa thể hiện các tri thức về các ràng buộc; tận dụng cơ chế duyệt và thao tác trên AST để cập nhật tương ứng dựa trên các yêu cầu đặt ra Việc định nghĩa các mẫu smart contract giúp giảm thời gian hiện thực cũng như tăng khả năng tái sử dụng, chỉ cần thay đổi chi tiết các ràng buộc, smart contract hoàn thiện sinh ra với các yêu cầu tương ứng thể hiện bởi các ràng buộc dựa trên cùng một mẫu smart contract và có thể triển khai trên mạng lưới blockchain Hyperledger Fabric mà không cần bất cứ can thiệp thủ công nào Phương pháp cũng đã thể hiện tính ứng dụng trên dịch vụ cho thuê xe với các điều kiện về tuổi tác, trạng thái bằng lái xe, loại thẻ thanh toán để cho phép tạo hợp đồng cho thuê.
Phương pháp nghiên cứu sử dụng ngôn ngữ Golang trong quá trình hiện thực nhưng vẫn có thể triển khai trên các ngôn ngữ lập trình khác Hay smart contract được triển khai giới hạn trên các private blockchain, cụ thể là Hyperledger Fabric, nhưng vẫn có thể mở rộng sang các nền tảng blockchain khác như Etherum với ngôn ngữ Solidity, NEO với JavaScript hay EOS với C++.
Các giới hạn về tập luật trong mô hình khái quát các hợp đồng dịch vụ có thể được mở rộng sang các Role khác như uses, owns, requests, bằng cách mở rộng cấu trúc ngữ pháp LL mà đề tài đã đề xuất; cải thiện bộ duyệt LL để chương trình đọc hiểu được các ràng buộc mới; cũng như phát triển bộ cập nhật AST để tương thích với các mẫu smart contract khác hỗ trợ các loại luật mới nêu trên.
Quá trình tự động hoá các hợp đồng nghiệp vụ bao gồm rất nhiều bước, cũng như có thể chia thành nhiều thành phần khác nhau để ứng dụng tính tự động hoá Hướng tiếp cận hiện tại của đề tài yêu cầu đầu vào phải là các ontology và các luật ngữ nghĩa đã được dựng sẵn dựa trên miền tri thức nhất định Trong tương lại, đề tài đề xuất tự sinh các luật cần thiết dựa trên các kỹ thuật phân tích ngôn ngữ tự nhiên Hay hiện tại các smart contract phải được triển khai trên một mạng blockchain dựng sẵn, đề tài đề xuất quá trình tự động triển khai mạng lưới blockchain dựa trên một file cấu hình cho trước Hai đề xuất trên là cách giúp cho quá trình tự động hoá các hợp đồng nghiệp vụ và ứng dụng blockchain giảm thiểu chi phí và thời gian, cũng như giảm bớt độ phức tạp trong quá trình áp dụng các giải pháp liên quan đến blockchain Qua đó,đóng góp chung cho việc khuyến khích áp dụng công nghệ blockchain vào các lĩnh vực thiết thực và hữu ích.
[1] David Z Morris, Tesla Could Deliver ‘Full Self-Driving’ Within Weeks November
[2] Steve Wilson, business.com writer,How Contract Automation Is Changing the Busi- ness World Dec 20, 2017
[3] Wikipedia contributors (2019, December 11) Blockchain In Wikipedia, The Free Encyclopedia Retrieved 17:59, December 12, 2019, from https://en.wikipedia. org/w/index.php?title=Blockchain&oldid0295903.
[4] Trung-Viet Nguyen, Khuong Nguyen-An, Lam Son Le, Bo Dao - Leveraging Blockchain in Monitoring SLA-oriented Tourism Service Provisioning, Faculty of Computer Science & Engineering, HCMC University of Technology (VNU-HCM), Vietnam
[5] Governatori, G., Idelberger, F., Milosevic, Z et al Artif Intell Law (2018) 26:
377 On legal contracts, imperative and declarative smart contracts, and blockchain systems https://doi.org/10.1007/s10506-018-9223-3
[6] Tan KL (2009) Distributed Database Systems In: LIU L., ¨OZSU M.T (eds) Ency- clopedia of Database Systems Springer, Boston, MA https://doi.org/10.1007/ 978-0-387-39940-9
[7] Choudhury, Olivia & Rudolph, Nolan & Sylla, Issa & Fairoza, Noor & Das, Amar. (2018) Auto-Generation of Smart Contracts from Domain-Specific Ontologies and Semantic Rules 10.1109/Cybermatics_2018.2018.00183.
[8] Thomas R Gruber A Translation Approach to Portable Ontology Specifica- tions.Knowledge Acquisition, 5(2):199-220, 1993.
[9] D L McGuinness, F Van Harmelen et al., “OWL web ontology language overview,” W3C recommendation, vol 10, no 10, p 2004, 2004.
[10] I Horrocks, P F Patel-Schneider, H Boley, S Tabet, B Grosof, M Dean et al., “SWRL: A semantic web rule language combining OWL and RuleML,” W3C Member submission, vol 21, p 79, 2004.
[11] Kim, Jaehyun & Lee, Yangsun (2018) A Study on Abstract Syntax Tree for Development of a JavaScript Compiler International Journal of Grid and Distributed Computing 11 37-48 10.14257/ijgdc.2018.11.6.04.
[12] Zheng, Zibin & Xie, Shaoan & Dai, Hong-Ning & Chen, Xiangping & Wang, Huaimin (2017) An Overview of Blockchain Technology: Architecture, Consensus, and Future Trends 10.1109/BigDataCongress.2017.85.
[13] Jaramillo, Gloria A Semantic Contract Model and Knowledge-driven Process for Supporting Controllability in Service-oriented Approaches Diss Université de Pau et des Pays de l’Adour, 2016.
[14] Wikipedia contributors (2019, November 27) History of the web browser.
In Wikipedia, The Free Encyclopedia Retrieved 17:58, December 12, 2019, from https://en.wikipedia.org/w/index.php?title=History_of_the_web_ browser&oldid8183584.
[15] Blockchain and smart contract automation: How smart contracts automate digital business?, https://declara.com/content/YamDM4e5.
[16] OWL Web Ontology Language - Use Cases and Requirements, W3C Recommen- dation 10 February 2004, https://www.w3.org/TR/webont-req/#onto-def.
[17] OWL Web Ontology Language - Overview, W3C Recommendation 10 February
2004, https://www.w3.org/TR/2004/REC-owl-features-20040210/#s1.
[18] SWRL: A Semantic Web Rule Language Combining OWL and RuleML, W3C Member Submission 21 May 2004, https://www.w3.org/Submission/SWRL/#1.
[19] Wikipedia contributors (2020, July 5) LL grammar In Wikipedia, The Free En- cyclopedia Retrieved 17:15, July 24, 2020, from https://en.wikipedia.org/w/ index.php?title=LL_grammar&oldid6152948
[20] "SWRL: A Semantic Web Rule Language Combining OWL and RuleML". www.w3.org Retrieved 21 December 2017 https://www.w3.org/Submission/ SWRL/.
[21] "The SWRLAPI: A Development Environment for Working with SWRL Rules" M.J O’Connor, R.D Shankar, C Nyulas, A.K Das, M.A Musen OWL: Experiences and Directions (OWLED), 4th International Workshop, Washington, D.C., U.S.A, 2008.
[22] The innovator’s Guide to picking the right Blockchain, Ben Wald and Bill Brock.
[23] In Search of an Understandable Consensus Algorithm (Extended Version), Diego Ongaro and John Ousterhout, Stanford University, https://raft.github.io/ raft.pdf.
[24] Hyperledger Architecture, Volume 1 - Introduction to Hyperledger Busi- ness Blockchain Design Philosophy and Consensus, Hyperledger, https: //www.hyperledger.org/wp-content/uploads/2017/08/Hyperledger_Arch_ WG_Paper_1_Consensus.pdf.
[25] Nick Szabo - Smart Contracts: Building Blocks for Digital Markets, http:// www.fon.hum.uva.nl/rob/Courses/InformationInSpeech/CDROM/Literature/ LOTwinterschool2006/szabo.best.vwh.net/smart_contracts_2.html.
[26] Wikipedia contributors (2019, September 5) LL grammar In Wikipedia, The FreeEncyclopedia Retrieved 18:13, December 10, 2019, from https://en.wikipedia.org/w/index.php?title=LL_grammar&oldid4163888.
+ӑYjWrQNKDLVLQK3KҥP7KjQK&{QJ3KiL1DP
'kQWӝF.LQK 7{QJLiR.K{QJ ĈӏDFKӍWKѭӡQJWU~7ӏQK&KkX734XҧQJ1JmL ĈӏDFKӍOLrQOҥF(&ѭ;i3K~7Kӑ+Rj347kQ%uQK73+&0 ĈLӋQWKRҥL(PDLOFVHWKDQKFRQJ#JPDLOFRP
1JKӅQJKLӋSQѫLOjPYLӋF.ӻ6ѭ3KҫQ0ӅP&{QJ7\&ә3KҫQ&{QJ1JKӋ ӬQJ'өQJ'69
7ӕWQJKLӋS7UѭӡQJ9LӋQ7UѭӡQJĈ+%iFK.KRDĈ+4*73+&0
7KӵFWұSNKRDKӑFNӻWKXұWWӯÿӃQ
1Jj\YjQѫLEҧRYӋOXұQYăQWKҥFVƭ
4XiWUuQKKӑFWұSYjOjPYLӋFFӫDEҧQWKkQWӯNKLKӑFÿҥLKӑFÿӃQQD\
7ӯ1Jj\ ĈӃQ1Jj\ +ӑFKRһFOjPYLӋFJu ӢÿkX 7KjQKWtFK