인덱싱 레이어
CloudBank은 Goldsky에서 호스팅되는 The Graph 프로토콜을 사용하여 온체인 이벤트를 쿼리 가능한 GraphQL API로 인덱싱합니다. 하위 그래프는 원시 블록체인 이벤트를 프런트엔드 소비에 최적화된 구조화된 엔터티로 변환합니다.
Overview
하위 그래프는 AssemblyScript(WebAssembly로 컴파일되는 TypeScript과 유사한 언어)로 작성되고 Goldsky의 호스팅 인덱싱 서비스에 배포됩니다. 현재 배포 대상은 BSC 채플(BNB 스마트체인 테스트넷)입니다.
데이터 소스
하위 그래프는 직접 데이터 소스와 템플릿으로 구성된 여러 계약 유형의 이벤트를 추적합니다.
직접 데이터 소스
알려진 고정 주소에 배포된 계약은 다음과 같습니다.
| 데이터 소스 | Contract | Purpose |
|---|---|---|
| FactoryRegistry | FactoryRegistry | 공장 등록 및 시장 등록 이벤트를 추적합니다. |
| DCPPFactory | DCPPFactory | 인덱스 바이너리 시장 생성 이벤트 |
| MultiOutcomeMarketFactory | MultiOutcomeMarketFactory | 지수 N-결과 시장 창출 이벤트 |
템플릿 데이터 소스
새 계약이 배포되면 템플릿이 동적으로 인스턴스화됩니다.
| Template | Contract | Trigger |
|---|---|---|
| BinaryCPMM | BinaryCPMM | 각각의 새로운 시장에 대해 DCPPFactory에 의해 생성됨 |
MarketCreatedWithAMM 이벤트가 감지되면 매핑은 새로운 BinaryCPMM 템플릿 인스턴스를 생성하여 해당 시장의 거래 활동을 인덱싱하기 시작합니다.
엔터티 스키마
하위 그래프는 다음과 같은 핵심 엔터티를 정의합니다.
| Entity | Description |
|---|---|
| 시장 | 메타데이터, 보유량, 상태 및 정산 정보가 포함된 예측 시장 |
| 거래 | 시장에서 개인이 구매 또는 판매하는 거래 |
| 사용자 | 플랫폼과 상호작용한 지갑 주소 |
| UserPosition | 특정 시장에서 사용자의 현재 보유량(YES/NO 주식, 비용 기준) |
| MultiOutcomeMarket | 연결된 결과 슬롯이 있는 N-옵션 시장 |
| AMMMarketMapping | BinaryCPMM 주소를 상위 시장 엔터티에 연결합니다. |
| VolumeStats | 집계된 거래량 통계(일일, 주간, 전체) |
이벤트 핸들러
시장 창출
DCPPFactory의 MarketCreatedWithAMM 이벤트는 다음을 사용하여 새로운 DCPPFactory 엔터티 생성을 트리거합니다.
- 질문 텍스트, 카테고리, 종료 시간입니다.
- 초기 YES/NO은 시드 유동성에서 확보됩니다.
- 제작자 주소 및 지분 금액.
- 무역 색인을 위한 새로운 BinaryCPMM 템플릿 인스턴스입니다.
무역 색인
각 BinaryCPMM 인스턴스의 거래 이벤트는 BinaryCPMM 개체에 매핑됩니다.
| Event | 거래 유형 | Description |
|---|---|---|
CollateralSwappedForOutcome | 구입하다 | 사용자가 담보로 구매한 결과 토큰 |
OutcomeSoldForCollateral | 팔다 | 사용자가 결과 토큰을 담보로 다시 판매했습니다. |
Swapped | 팔다 | 토큰 간 스왑(스왑 메타데이터와 함께 판매로 기록됨) |
각 거래는 관련 Market 준비금, User 법인의 거래 수, UserPosition 비용 기준 및 주식 잔액을 업데이트합니다.
손익 계산
하위 그래프는 즉석에서 각 사용자 위치에 대한 실현 손익을 계산합니다.
realizedPnL = proceeds - (costBasis * sharesSold / totalShares)- costBasis — 포지션 획득에 소요된 누적 담보입니다.
- sharesSold — 현재 거래에서 처분된 주식 수입니다.
- totalShares — 거래 전 사용자의 총 주식 잔액입니다.
- 수익 — 판매를 통해 받은 담보입니다.
이 비례 비용 기반 방법은 서로 다른 가격으로 여러 구매에 걸쳐 포지션이 구축되는 경우에도 정확한 손익 추적을 보장합니다.
IPFS 메타데이터
시장 메타데이터(자세한 설명, 카테고리 태그, 해결 소스)는 IPFS에 저장되고 시장 생성 이벤트에서 CID에 의해 참조됩니다. 하위 그래프는 인덱싱 중에 이 메타데이터를 가져와서 다음을 추출합니다.
- 카테고리 — 프런트엔드 필터링(스포츠, 암호화폐, 정치 등)에 사용됩니다.
- 하위 카테고리 — 각 카테고리 내에서 더욱 세분화된 분류입니다.
- 이미지 URL — UI에 있는 시장 카드의 썸네일입니다.
IPFS 가져오기는 일시적인 게이트웨이 오류에 대한 재시도 로직이 포함된 The Graph의 내장 IPFS 데이터 소스 기능을 통해 처리됩니다.
네트워크 구성
| Parameter | Value |
|---|---|
| Network | BSC 채플(테스트넷, 체인 ID 97) |
| 블록 시작 | 배포 블록을 기반으로 데이터 소스별로 구성 |
| Hosting | Goldsky 매니지드 서비스 |
| 쿼리 끝점 | 배포 후 Goldsky에서 제공 |
하위 그래프는 개발 및 스테이징 환경을 위한 별도의 배포와 함께 CI/CD 파이프라인의 일부로 Goldsky CLI을 통해 배포됩니다.