Lớp hợp đồng thông minh
Lớp trên chuỗi của CloudBank được xây dựng bằng Solidity ^0.8.19 và chuỗi công cụ Foundry (rèn, đúc, đe). Kiến trúc sử dụng mô hình bản sao nhà máy để giảm thiểu chi phí triển khai trong khi vẫn duy trì khả năng nâng cấp đầy đủ cho các loại thị trường trong tương lai.
Phân cấp hợp đồng
Hệ thống phân cấp triển khai tuân theo cấu trúc bản sao đăng ký-nhà máy:
- FactoryRegistry — Cơ quan đăng ký trung tâm theo dõi tất cả các hợp đồng nhà máy được ủy quyền và thị trường triển khai của chúng. Đóng vai trò là điểm vào duy nhất để khám phá thị trường.
- DCPPFactory — Triển khai thị trường dự đoán nhị phân bằng cách sử dụng mẫu Proxy tối thiểu EIP-1167. Mỗi lệnh gọi tới DCPPFactory sẽ sao chép quá trình triển khai OptimisticController và ghép nối nó với nhóm thanh khoản BinaryCPMM.
- OptimisticController — Bộ điều khiển theo thị trường quản lý vòng đời từ giao dịch đến thanh toán. Được triển khai dưới dạng proxy tối thiểu (bản sao) để giảm chi phí gas xuống ~45 nghìn gas cho mỗi lần triển khai.
- BinaryCPMM — Nhà tạo thị trường tự động sản phẩm cố định cho giao dịch mã thông báo kết quả YES/NO.
- MultiOutcomeMarketFactory — Mở rộng hệ thống sang các thị trường N-option (ví dụ: "Ai sẽ thắng cuộc bầu cử?" với nhiều ứng cử viên), triển khai một tập hợp các vị trí kết quả có điều kiện.
EIP-1167 Mẫu proxy tối thiểu
Thay vì triển khai mã byte hợp đồng đầy đủ cho mọi thị trường, DCPPFactory sử dụng thư viện DCPPFactory của OpenZeppelin để triển khai các proxy hạng nhẹ ủy quyền tất cả lệnh gọi cho một hợp đồng triển khai duy nhất. Điều này giúp giảm chi phí triển khai trên mỗi thị trường khoảng 90%.
Khung mã thông báo có điều kiện
Tất cả các vị trí kết quả được thể hiện dưới dạng ERC-1155 mã thông báo thông qua Khung mã thông báo có điều kiện Gnosis (CTF). Điều này cung cấp:
- Chia sẻ kết quả có thể thay thế được (YES và NO mã thông báo) theo một hợp đồng
- Phân tách nguyên tử và hợp nhất tài sản thế chấp thành các bộ vị thế
- Mua lại được tiêu chuẩn hóa sau khi giải quyết thị trường
- Khả năng kết hợp với các giao thức DeFi khác hỗ trợ ERC-1155
Tích hợp Oracle
- SoraOracle — Một hợp đồng tiên tri yes/no tối thiểu trong đó các nhà cung cấp được chỉ định trả lời các câu hỏi nhị phân. Bao gồm thời gian hoàn tiền trong 7 ngày để xử lý tranh chấp.
- SoraYesNoOracleAdapter — Kết nối các phản hồi SoraOracle vào giao diện SoraYesNoOracleAdapter của CTF, dịch các câu trả lời boolean sang định dạng vectơ thanh toán mà khung mong đợi.
Tài trợ gas
CloudBankVerifyingPaymaster triển khai logic người trả tiền ERC-4337, cho phép nền tảng tài trợ phí gas cho người dùng. Người trả tiền xác thực chữ ký ECDSA ngoài chuỗi để ủy quyền tài trợ cho mỗi UserOperation.
Máy trạng thái thị trường
Mọi thị trường đều tuân theo một bộ máy trạng thái xác định được thực thi trên chuỗi bởi OptimisticController:
- TRADING — Thị trường đang hoạt động; người dùng có thể mua và bán mã thông báo kết quả.
- PROPOSED — Người tạo lập thị trường đã đề xuất một kết quả. Một khoảng thời gian tồn tại bắt đầu trong thời gian đó bất kỳ ai cũng có thể tranh chấp.
- DISPUTED — Một tranh chấp đã được đưa ra. Độ phân giải tăng lên SoraOracle.
- RESOLVED — Kết quả cuối cùng đã được ấn định. Người nắm giữ vị trí có thể đổi mã thông báo chiến thắng.
- CANCELLED — Thị trường bị vô hiệu. Tất cả các vị trí có thể được mua lại theo giá trị tài sản thế chấp ban đầu.
Luồng tạo thị trường
Nhà máy triển khai bản sao bộ điều khiển một cách nguyên tử, khởi tạo nhóm AMM, chuẩn bị điều kiện CTF và đăng ký thị trường trong một giao dịch duy nhất. Tính thanh khoản ban đầu do người tạo cung cấp được chia thành mã thông báo YES và NO và gửi vào nhóm BinaryCPMM.
Cân nhắc về bảo mật
- Tất cả các hợp đồng đều sử dụng OpenZeppelin của OpenZeppelin trên các chức năng sửa đổi trạng thái.
- Kiểm soát truy cập tuân theo mẫu owner/admin với sự phân tách vai trò rõ ràng.
- Các thông số thị trường (thời gian tồn tại, số tiền đặt cược tối thiểu) được xác thực tại thời điểm tạo.
- Mẫu nhà máy đảm bảo chỉ những nhà máy được ủy quyền mới có thể đăng ký thị trường trong FactoryRegistry.