Plutus Application Backend, hỗ trợ xây dựng các DApp trên Cardano

Plutus Application Backend, hỗ trợ xây dựng các DApp trên Cardano

Sơ lược

Bản nâng cấp giao thức Alonzo đã giới thiệu Plutus. Đây là một nền tảng cung cấp ngôn ngữ cho hợp đồng thông minh. Cùng với cơ sở hạ tầng và các công cụ cần thiết, Plutus Application Backend (PAB) hỗ trợ hợp đồng thông minh có thể triển khai hoạt động trên Cardano. PAB sẽ thực thi thành phần off-chain của các ứng dụng Plutus. Nó sẽ quản lý các yêu cầu ứng dụng đến phần backend và node của ví, lưu trữ trạng thái ứng dụng và cung cấp API HTTP để quản lý các phiên bản ứng dụng. Điều này có nghĩa là người dùng, nhà phát triển và tổ chức hiện có thể xây dựng các ứng dụng phi tập trung (DApps) một cách an toàn dựa trên các giải pháp hợp đồng thông minh.

Để hiểu cặn kẽ về PAB, trước tiên chúng ta cần nắm về ngôn ngữ Plutus

Plutus là ngôn ngữ hợp đồng thông minh native cho Cardano. Nó là một ngôn ngữ hoàn chỉnh Turing được viết bằng Haskell và các hợp đồng thông minh của Plutus là các chương trình Haskell hiệu quả. Bằng cách sử dụng Plutus, bạn có thể tự tin vào việc thực thi đúng các hợp đồng thông minh của mình. Nó được đúc kết từ nghiên cứu ngôn ngữ hiện đại để cung cấp một môi trường lập trình full-stake, an toàn dựa trên Haskell, ngôn ngữ lập trình hàm thuần tuý hàng đầu.

Các hợp đồng Plutus bao gồm các phần chạy trên blockchain (on-chain code) và các phần chạy trên máy của người dùng (off-chain hoặc client code). Cả mã on-chain và off-chain đều được viết bằng Haskell và các hợp đồng thông minh của Plutus là các chương trình Haskell hiệu quả. Off-chain code có thể được viết bằng PAF (Plutus Application Framework) và mã này sau đó được biên dịch bởi GHC (Glasgow Haskell Compiler), trong khi on-chain code (được viết bằng Plutus Core) được biên dịch bởi trình biên dịch Plutus (Plutus compiler)

Trong sơ đồ, PAB đóng vai trò thực thi thành phần off-chain của các ứng dụng Plutus

Có 2 khái niệm về Plutus cần nắm để hiểu rõ PAB bổ trợ cho điều gì:

    • – Mô hình UTxO mở rộng (eUTxO)
    • – Khung ứng dụng Plutus (PAF) – một phần ‘ngoài chuỗi’ của Plutus cho phép tương tác với các hợp đồng thông minh.

Mô hình kế toán được Plutus sử dụng – eUTxO

Cardano sử dụng mô hình chi tiêu UTxO mở rộng (Extended Unspent Transaction Output – eUTxO), một cải tiến so với mô hình UTxO (được sử dụng bởi Bitcoin)

Trong mô hình UTxO, một giao dịch có đầu vào và đầu ra, trong đó đầu vào là đầu ra chưa sử dụng từ các giao dịch trước đó. Tài sản được lưu trữ trên sổ cái dưới dạng kết quả đầu ra chưa sử dụng, thay vì trong tài khoản. Ngay sau khi một đầu ra được sử dụng làm đầu vào trong một giao dịch, nó sẽ được sử dụng và không bao giờ có thể được sử dụng lại.

Đối với eUTxO, mô hình cho phép các địa chỉ đầu ra chứa logic phức tạp để quyết định giao dịch nào có thể mở khóa chúng và bằng cách thêm dữ liệu tùy chỉnh vào tất cả các đầu ra. Mô hình này mang lại những lợi thế độc đáo so với các mô hình kế toán khác. Việc xác thực giao dịch thành công hay thất bại chỉ phụ thuộc vào bản thân giao dịch và các đầu vào của nó chứ không phụ thuộc vào bất kỳ thứ gì khác trên blockchain. Do đó, tính hợp lệ của giao dịch có thể được kiểm tra ngoài chuỗi (off-chain) trước khi giao dịch được gửi đến blockchain.

Để tìm hiểu chi tiết hơn về eUTxO, độc giả có thể xem tại bài viết này

PAB là một thư viện Haskell duy nhất giúp viết cơ sở hạ tầng off-chain và các tập lệnh on-chain dễ dàng hơn. Nhờ PAB, chúng ta không cần phải xem trạng thái sổ cái, chọn một số thông tin từ sổ cái và tập hợp tất cả lại với nhau để xây dựng một giao dịch với các phần dữ liệu phù hợp ở đúng vị trí như trong mô hình UTxO.

PAB giúp xây dựng các giao dịch UTxO theo hai cách:

    • – Đường dẫn đọc (The read path): lấy thông tin từ chuỗi và phản ứng với các sự kiện xảy ra trên chuỗi khối. Đường dẫn đọc hiện đang hoạt động trên testnet
    • – Đường dẫn ghi (The write path): xây dựng các giao dịch chạy các tập lệnh Plutus thực tế

Khung ứng dụng Plutus (Plutus Application Framework – PAF)

Trạng thái trên chuỗi của các tập lệnh trình xác thực chỉ có thể được sửa đổi bởi các giao dịch chi tiêu và tạo ra đầu ra tập lệnh. Khi viết một ứng dụng Plutus, chúng ta cần xem xét không chỉ phần on-chain của ứng dụng (các tập lệnh Plutus Core) mà còn cả phần off-chain xây dựng và gửi các giao dịch.

Mã off-chain được viết bằng Haskell, giống như mã on-chain. Bằng cách đó, chúng ta chỉ cần viết logic nghiệp vụ một lần. Sau đó, chúng ta có thể sử dụng nó trong tập lệnh trình xác thực và trong mã xây dựng các giao dịch chạy tập lệnh trình xác thực.

Nhiều ứng dụng cần theo dõi bộ UTxO để biết các thay đổi đối với các địa chỉ cụ thể, vì vậy nếu chúng ta viết hợp đồng của mình dưới dạng máy trạng thái (state machine), chúng ta cần theo dõi đầu ra chưa sử dụng đại diện cho trạng thái hiện tại của máy và cập nhật trạng thái cục bộ của chúng ta khi on-chain thay đổi trạng thái. Tương tự như vậy, nhiều ứng dụng cần giao tiếp với phần phụ trợ của ví để truy cập vào loại tiền điện tử mà chúng đang sử dụng cho các giao dịch.

PAB là một thành phần chính của Khung ứng dụng Plutus (PAF), cho phép các nhà phát triển tạo và kiểm tra các DApp tại cục bộ, trước khi triển khai chúng vào môi trường trực tiếp. Giống như Marlowe Playground cung cấp một “chiếc đồng hồ cát” cho các nhà phát triển để tạo và thử nghiệm các hợp đồng thông minh tài chính, PAB cung cấp một môi trường tương tự cho các nhà phát triển để tạo và thử nghiệm các DApp đầy đủ.

Mục đích của PAB là:

    • – Cung cấp một môi trường tiêu chuẩn hóa để các ứng dụng Plutus chạy trong nó
    • – Trình bày các giao diện có thể khám phá cho các máy khách bên ngoài (external clients)
    • – Theo dõi thông tin trên chuỗi để sử dụng hợp đồng thông minh
    • – Cho phép nhà phát triển làm việc trong môi trường giả lập hoặc không giả lập

PAB có thể chuyển đổi giữa các môi trường giả lập và không giả lập (mạng thực) một cách liền mạch. Điều này giúp viết các loại bài test dễ dàng hơn: test kiểm tra đơn vị, kiểm tra tích hợp, kiểm tra dựa trên thuộc tính, v.v… PAB cho phép các DApp dễ dàng giao tiếp với nó vì phần phụ trợ có thể nhận và gửi tin nhắn. Do đó, DApp có thể gửi các yêu cầu thông thường đến các điểm cuối (endpoint) mà PAB đã tiếp xúc và tương ứng với các hành động và hoạt động mà bất kỳ hợp đồng thông minh cụ thể nào có khả năng xử lý.

Các ứng dụng được triển khai bằng cách sử dụng các khung thư viện (framework’s libraries) có thể chạy trên PAB, cung cấp hỗ trợ thời gian chạy để truy cập vào blockchain để thực hiện thêm các hoạt động hợp đồng thông minh kích hoạt các giao dịch dựa trên mô hình eUTxO, cung cấp giao diện HTTP và WebSocket có thể được sử dụng để tương tác với ứng dụng từ trình duyệt web. Ngoài ra, PAB có chức năng cho tính bền bỉ, ghi nhật ký và giám sát.

Plutus Application Backend hỗ trợ phát triển DApp trên Cardano

Kết luận

PAB là một công cụ mạnh mẽ khác trên Cardano giúp phát triển DApps đơn giản hơn, an toàn hơn và tiết kiệm chi phí hơn bằng cách cung cấp thông tin từ các nguồn chuẩn ở dạng có thể sử dụng được. Nó giúp các nhà phát triển giảm bớt nhiều công việc thường ngày, giúp tiết kiệm thời gian hơn.

 

Source:

[1] https://iohk.io/en/blog/posts/2021/10/28/plutus-application-backend-pab-supporting-dapp-development-on-cardano/

[2] https://docs.cardano.org/plutus/Plutus-tools

[3] https://iohk.io/en/blog/posts/2021/04/13/plutus-what-you-need-to-know/

 

Leave a Reply

Your email address will not be published. Required fields are marked *