Skip to content

Lớp lập chỉ mục

CloudBank sử dụng Giao thức đồ thị được lưu trữ trên Goldsky để lập chỉ mục các sự kiện trên chuỗi thành GraphQL API có thể truy vấn. Biểu đồ con chuyển đổi các sự kiện blockchain thô thành các thực thể có cấu trúc được tối ưu hóa cho việc sử dụng giao diện người dùng.

Overview

Biểu đồ con được viết bằng AssemblyScript (ngôn ngữ giống TypeScript biên dịch thành WebAssembly) và được triển khai cho dịch vụ lập chỉ mục được lưu trữ trên máy chủ của Goldsky. Mục tiêu triển khai hiện tại BSC Chapel (BNB mạng thử nghiệm Chuỗi thông minh).

Nguồn dữ liệu

Biểu đồ con theo dõi các sự kiện từ nhiều loại hợp đồng, được định cấu hình dưới dạng cả nguồn dữ liệu trực tiếp và mẫu.

Nguồn dữ liệu trực tiếp

Đây là những hợp đồng được triển khai tại các địa chỉ cố định, đã biết:

Nguồn dữ liệuContractPurpose
FactoryRegistryFactoryRegistryTheo dõi đăng ký nhà máy và các sự kiện đăng ký thị trường
DCPPFactoryDCPPFactoryLập chỉ mục các sự kiện tạo thị trường nhị phân
MultiOutcomeMarketFactoryMultiOutcomeMarketFactoryChỉ số N-kết quả sự kiện tạo thị trường

Nguồn dữ liệu mẫu

Các mẫu được khởi tạo động khi hợp đồng mới được triển khai:

TemplateContractTrigger
BinaryCPMMBinaryCPMMĐược tạo bởi DCPPFactory cho mỗi thị trường mới

Khi phát hiện sự kiện MarketCreatedWithAMM, ánh xạ sẽ tạo một phiên bản mẫu BinaryCPMM mới để bắt đầu lập chỉ mục hoạt động giao dịch của thị trường đó.

Lược đồ thực thể

Sơ đồ con xác định các thực thể cốt lõi sau:

EntityDescription
ChợThị trường dự đoán với siêu dữ liệu, dự trữ, trạng thái và thông tin thanh toán
Buôn bánMột cá nhân giao dịch mua hoặc bán trên thị trường
Người dùngĐịa chỉ ví đã tương tác với nền tảng
UserPositionCổ phần hiện tại của người dùng trong một thị trường cụ thể (YES/NO cổ phiếu, cơ sở giá)
MultiOutcomeMarketThị trường quyền chọn N với các khe kết quả được liên kết
AMMMarketMappingLiên kết địa chỉ BinaryCPMM với thực thể Thị trường mẹ của nó
VolumeStatsThống kê khối lượng giao dịch tổng hợp (hàng ngày, hàng tuần, mọi thời điểm)

Trình xử lý sự kiện

Tạo thị trường

Sự kiện MarketCreatedWithAMM từ DCPPFactory kích hoạt việc tạo thực thể DCPPFactory mới với:

  • Nội dung câu hỏi, danh mục và thời gian kết thúc.
  • Dự trữ YES/NO ban đầu từ thanh khoản hạt giống.
  • Địa chỉ của người sáng tạo và số tiền cổ phần.
  • Một phiên bản mẫu BinaryCPMM mới để lập chỉ mục thương mại.

Lập chỉ mục thương mại

Các sự kiện giao dịch trên mỗi phiên bản BinaryCPMM được ánh xạ tới các thực thể BinaryCPMM:

EventLoại giao dịchDescription
CollateralSwappedForOutcomemuaNgười dùng đã mua mã thông báo kết quả bằng tài sản thế chấp
OutcomeSoldForCollateralbánNgười dùng đã bán lại mã thông báo kết quả để làm tài sản thế chấp
SwappedbánTrao đổi mã thông báo sang mã thông báo (được ghi là bán với siêu dữ liệu hoán đổi)

Mỗi giao dịch cập nhật khoản dự trữ Market liên quan, số lượng giao dịch của thực thể User cũng như cơ sở chi phí và số dư cổ phần UserPosition.

Tính toán PnL

Biểu đồ con tính toán lãi và lỗ thực hiện cho từng vị trí của người dùng một cách nhanh chóng:

realizedPnL = proceeds - (costBasis * sharesSold / totalShares)
  • costBasis — Tài sản thế chấp tích lũy để mua vị thế.
  • sharesSold — Số lượng cổ phiếu được bán trong giao dịch hiện tại.
  • totalShares — Tổng số dư cổ phần của người dùng trước khi giao dịch.
  • tiền thu được — Tài sản thế chấp nhận được từ việc bán.

Phương pháp dựa trên chi phí theo tỷ lệ này đảm bảo theo dõi PnL chính xác ngay cả khi các vị thế được xây dựng qua nhiều lần mua ở các mức giá khác nhau.

IPFS Siêu dữ liệu

Siêu dữ liệu thị trường (mô tả chi tiết, thẻ danh mục, nguồn phân giải) được lưu trữ trên IPFS và được CID tham chiếu trong sự kiện tạo thị trường. Sơ đồ con tìm nạp siêu dữ liệu này trong quá trình lập chỉ mục để trích xuất:

  • Danh mục — Được sử dụng để lọc giao diện người dùng (Thể thao, Tiền điện tử, Chính trị, v.v.).
  • Danh mục phụ — Phân loại chi tiết hơn trong mỗi danh mục.
  • Hình ảnh URL — Hình thu nhỏ của thẻ thị trường trong UI.

Việc tìm nạp IPFS được xử lý thông qua khả năng nguồn dữ liệu IPFS tích hợp sẵn của The Graph với logic thử lại đối với các lỗi cổng tạm thời.

Cấu hình mạng

ParameterValue
NetworkBSC Nhà nguyện (testnet, chuỗi ID 97)
Khối bắt đầuĐược định cấu hình cho mỗi nguồn dữ liệu dựa trên khối triển khai
HostingDịch vụ quản lý Goldsky
Điểm cuối truy vấnĐược Goldsky cung cấp sau khi triển khai

Sơ đồ con được triển khai thông qua Goldsky CLI như một phần của quy trình CI/CD, với các triển khai riêng biệt cho môi trường phát triển và dàn dựng.