1, Thông tin chung:
- Là một framework, mã nguồn mở được thiết kế để hỗ trợ các ứng dụng kênh thanh toán và kênh trạng thái (state channels) không phụ thuộc vào blockchain cụ thể. Đây là một giải pháp mở rộng (scalability solution) nhằm giảm chi phí giao dịch và độ trễ bằng cách cho phép thực hiện các giao dịch trực tiếp giữa các bên (p2p) mà không cần ghi nhận từng giao dịch lên blockchain trong khi vẫn đảm bảo tính bảo mật nhờ các giao thức đã được chứng minh về mặt mật mã
- Công cụ mã nguồn mở thuộc Hyperledger Labs, thiết kế để hỗ trợ phát triển các kênh trạng thái (state channels) và kênh thanh toán (payment channels)
- Là các giải pháp mở rộng L2, giao dịch nhanh chóng, chi phí thấp mà không cần ghi nhận từng giao dịch lên main-chain.
- Ý tưởng chính là di chuyển phần lớn giao dịch ra off-chain, chỉ sử dụng blockchain như một lớp bảo mật cuối cùng khi cần thiết
2, Ý tưởng cốt lõi
- Payment channels: là một cơ chế cho phép hai hoặc nhiều bên thực hiện các giao dịch tài chính trực tiếp với nhau mà không cần ghi lại từng giao dịch trên blockchain. Chỉ khi các bên hoàn tất giao dịch hoặc có tranh chấp, trạng thái cuối cùng mới được cập nhật lên chuỗi.
- State channels: mở rộng khái niệm kênh thanh toán để xử lý không chỉ tiền tệ mà còn các trạng thái phức tạp hơn như smart contract, dữ liệu ứng dụng. Ví dụ, có thể chơi ván cờ vua trên blockchain mà không cần ghi lại từng nước đi lên chuỗi, chỉ trạng thái cuối cùng (kết quả ván cờ) được xác nhận
- Perun kết hợp hai khái niệm này, cho phép xử lý giao dịch tài chính lẫn các ứng dụng phức tạp hơn một cách hiệu quả.
a, Perun Protocol
- Cho phép chuyển giao dịch và thực hiện hợp đồng thông minh ra khỏi blockchain thông qua statement channels và payment channels. Các kênh này sẽ được tạo ra bằng cách khóa tiền trên blockchain và có thể được cập nhật trực tiếp giữa những người dùng và không có bất kỳ tương tác nào trên chuỗi
- Giúp nhanh hơn, rẻ hơn so với các giao dịch trên main-chain
- Đảm bảo các giao dịch ngoài chuỗi cuối cùng sẽ được thực thi trên chuỗi.
- Cung cấp các tính năng độc đáo: State-channel virtualization - ảo hóa kênh trạng thái: các kênh ảo được tạo và đóng ngoài chuỗi thông qua các trung gian mạng kênh trạng thái, sau khi mở thì kênh ảo được cập nhật trực tiếp ngoài chuỗi giữa 2 người dùng cuối Blockchain-agnostic: không phụ thuộc, thiết kế dạng module cho phép tích hợp linh hoạt các công nghệ state-channels vào bất kỳ hệ thống Blockchain hoặc sổ cái truyền thống nào Interoperability: từ 2 cái trên cho phép giao dịch và có các smart contract ngay cả trên các blockchain khác nhau - chức năng liên chuỗi, các tính năng được thiết kế để có thể tùy chỉnh theo từng trường hợp. High security
b, Framework Components
perun-eth-contracts
- Cung cấp các hợp đồng thông minh trên Ethereum cần thiết để triển khai giao thức Perun
- Assetholder.sol: Quản lý tài sản (ETH hoặc token) được khóa trong kênh thanh toán.
- Adjudicator.sol: Đóng vai trò "trọng tài", xử lý tranh chấp khi xảy ra bất đồng giữa các bên trong kênh thanh toán.
- App.sol: Cho phép tích hợp các ứng dụng tùy biến, ví dụ: trò chơi, cá cược, giao dịch cụ thể.
go-perun
- Một SDK triển khai các thành phần cốt lõi (đề xuất kênh trạng thái, máy trạng thái hỗ trợ tính bền bỉ và trình theo dõi) và chuỗi kết nối khối trên Ethereum, được thiết kế để không phụ thuộc vào blockchain-agnostic.
- Channel logic: Triển khai các quy tắc, trạng thái và cập nhật của kênh thanh toán. Các thành phần phụ trợ:
- Blockchain: Giao tiếp với blockchain như Ethereum. Nếu các blockchain khác thì chỉ cần viết smart contract và adapter tương ứng với go-perun
- Network: Giao tiếp mạng giữa các bên trong kênh thanh toán.
- Persistence: Lưu trữ trạng thái kênh, checkpoint, v.v.
- Logging: Ghi log hoạt động hệ thống.
perun-node
- Một node đa người dùng sử dụng go-perun SDK để chạy và cung cấp giao diện cho người dùng quản lý khóa, off-chain networks; open, transact and settle state-channels.
3, Các loại kênh
a, Ledger channel - kênh sổ cái
- Tiền được gửi trực tiếp vào smart contract trên blockchain
- Cho phép bất kỳ số lượng giao dịch off-chain giữa những người tham gia
- Phải được thiết lập trên blockchain
b, Sub-channel - kênh phụ
- Khi đã có kênh sổ cái, tiền sẽ bị khóa trên sổ cái nên không cần bất kỳ tương tác nào với blockchain
c, Virtual channel - kênh ảo
- Không thiết lập sổ cái chung, mỗi bên một kênh sổ cái với một bên trung gian chung
- Tiền được khóa trong hai kênh sổ cái của chính họ với bên trung gian chung nên có thể thiết lập một kênh ảo mà không cần bất kỳ tương tác nào với blockchain
4, go-perun:
a, Tổng quan:
- Client - ứng dụng phía người dùng: nơi người dùng tương tác với hệ thống
- Wire - tầng giao tiếp mạng: tầng trung gian giữa client và các thành phần khác
- Channel - tầng kênh: một tầng trừu tượng hóa để quản lý các giao dịch và trạng thái
- Blockchain backend: Tầng lưu trữ và xử lý dữ liệu blockchain (có thể là Ethereum hoặc một blockchain mô phỏng).
- Log (Tầng nhật ký): Tầng ghi lại các sự kiện hoặc giao dịch. Đặc biệt, Blockchain Backend Abstraction (lớp trừu tượng hóa tầng Blockchain) cho phép hệ thống hỗ trợ nhiều blockchain khác nhau (như Ethereum, blockchain mô phỏng, hoặc các blockchain khác trong tương lai) Lớp trừu tượng hóa này hoạt động bằng cách định nghĩa một giao diện chung (common interface) mà tất cả các blockchain backend phải tuân theo. Giao diện này bao gồm các phương thức (methods) hoặc chức năng mà tầng Channel cần để tương tác với blockchain backend, chẳng hạn như:
- SubmitTransaction(tx): Gửi một giao dịch lên blockchain.****
- GetState(address): Lấy trạng thái (state) của một địa chỉ cụ thể.
- GetBlock(height): Lấy thông tin của một block tại chiều cao (height) cụ thể.
- SignTransaction(tx, key): Ký một giao dịch bằng khóa riêng.
b, Cách triển khai:
- Tầng Channel chỉ gọi các phương thức trong giao diện chung này, mà không quan tâm đến việc backend thực sự là gì.
- Mỗi blockchain backend (Ethereum, blockchain mô phỏng, hoặc các blockchain khác trong tương lai) sẽ triển khai (implement) giao diện này theo cách riêng của nó:
- Ethereum Backend: Chuyển các phương thức này thành các lệnh gọi đến Ethereum (ví dụ: sử dụng giao thức JSON-RPC để tương tác với một node Ethereum).
- Simulated Backend: Mô phỏng một blockchain trong bộ nhớ (in-memory) hoặc trên một cơ sở dữ liệu đơn giản, không cần kết nối đến một mạng blockchain thực sự.
- Blockchain khác (tương lai): Một blockchain mới (như Solana, Polkadot) có thể được tích hợp bằng cách triển khai giao diện này theo cách phù hợp với blockchain đó. Để tích hợp một blockchain mới ngoài Ethereum vào hệ thống kênh thanh toán, bạn cần:
- Tận dụng Blockchain Backend Abstraction để tách biệt logic của hệ thống khỏi chi tiết triển khai của blockchain.
- Viết một triển khai mới của giao diện BlockchainBackend cho blockchain mục tiêu (như Solana, BSC).
- Điều chỉnh các thành phần như ví, tài sản, và đơn vị tiền tệ để tương thích với blockchain mới.
- Triển khai Funder và Adjudicator cho blockchain mới, có thể cần viết hợp đồng thông minh hoặc chương trình nếu blockchain không có sẵn các mô-đun như Perun Pallet.
- Thử nghiệm với node cục bộ và tinh chỉnh hệ thống.
c, node-perun:
Phần mềm đa người dùng nhằm hỗ trợ người dùng mở, giao dịch và giải quyết các kênh trạng thái. Nó sử dụng SDK go-perun để chạy giao thức perun và triển khai các chức năng khác (được mô tả trong phần sau) trên đó. Việc triển khai đầu tiên được thực hiện trong golang và hiện hỗ trợ các kênh thanh toán. Chạy một phiên bản perun-node sẽ khởi động một máy chủ API hoạt động như một giao diện để người dùng tương tác với nút.
5, Kết luận
Perun Framework là một framework giúp hỗ trợ kết nối giữa các blockchain khác nhau mà không cần quan tâm đó là blockchain gì, giúp người dùng không cần lo ngại trong vấn đề chuyển giao giữa các nền tảng blockchain với nhau.
BracyCrafts
BracyCrafts website ứng dụng NextJs để triển khai, dự tính sẽ được ứng dụng BlockChain - Perun Framework, mọi người có thể xem qua trang tại https://bracycrafts.id.vn/ để tìm hiểu thêm.