프로젝트 소개
Sierpe는 사용자가 등록한 컨트랙트에 대해 Stellar 네트워크를 감시하고, 그 전체 이력을 운영자의 Postgres 데이터베이스에 저장하여 REST API와 내장 관리 UI를 통해 노출하는 자체 호스팅 서버입니다. 이 프로젝트는 v1.5.2 버전이며, docs/DESIGN.md에 기술된 설계는 안정적인 상태입니다. 이벤트, 컨트랙트 상태, 토큰 전송, 트러스트라인 및 토큰 이동 기능은 구현이 완료되어 테스트넷에서 작동합니다.
인덱싱 대상
- 등록된 컨트랙트에서 발생한 이벤트: 각 컨트랙트의 온체인 사양에서 발견하여 청크 단위로 백필한 후, 체인 끝단(tip)에서 계속 추적합니다.
- 컨트랙트 상태: 스토리지 항목의 변경 이력과 현재 스냅샷을 포함합니다.
- 디코딩된 토큰 전송(SEP-41 디코딩, CAP-67 muxed) 및 SAC 자산의 클래식 트러스트라인을 포함합니다.
- 컨트랙트로 유입되거나 유출되는 토큰 이동: 어떤 컨트랙트가 전송을 발생시켰는지와 관계없이 추적하며, 종류별 커버리지 보고서를 제공합니다.
- RPC 보존 기간 이전의 이력: Stellar RPC는 약 7일치의 이벤트만 유지하므로, Sierpe는 소스가 허용하는 한 제네시스부터 백필하며, RPC가 제공하지 않는 범위에 대해 공용 History Archives를 재생하도록 설계되었습니다. 아카이브 재생은 `-full` 이미지를 통해 제공됩니다.
사용 방법
배포는 빈 Postgres 데이터베이스 옆에 컨테이너를 배치하는 방식입니다. 컨트랙트는 코드가 아닌 데이터로서 런타임에 등록됩니다. 예를 들어 컨트랙트 ID와 `from: genesis`를 포함하여 POST /v1/contracts와 같은 인증된 호출을 통해 등록하면, 서버가 컨트랙트를 분류하고 이력을 백필하며 계속 추적합니다. 사용자는 getEvents-v2 스타일의 필터(예: topic0 및 커서)를 사용하여 이벤트를 쿼리하거나, 특정 키의 현재 스토리지 스냅샷 및 모든 스토리지 항목의 이력을 조회할 수 있습니다. 문서는 Railway, Docker Compose 및 일반 컨테이너 배포를 안내하며, README에서는 동일한 바이너리가 Railway, AWS, GCP 또는 소형 VPS에서 실행 가능하며 일반적인 프로젝트의 경우 월 비용을 10달러 미만으로 목표한다고 제안합니다. 요구 사항은 Docker 또는 Go 1.25+이며, DATABASE_URL, NETWORK, ADMIN_TOKEN을 통해 설정합니다.
API 동작 및 정직성 보장
README는 커버리지와 갭(gap)이 주요 데이터임을 강조합니다. 모든 응답은 `coverage`와 HAS_MORE, WAITING_FOR_LEDGERS, OLDEST_REACHED 또는 COMPLETE 중 하나의 `scanStatus`를 선언합니다. 따라서 빈 페이지는 데이터가 없거나 인덱싱이 해당 범위에 도달하지 않았음을 의미합니다. 페이지네이션은 쿼리 전체를 인코딩하는 불투명한 커서(opaque cursors)에 의존하여 데이터 드리프트를 방지합니다. 전체 API 표면은 docs/openapi.yaml에 명시되어 있으며, 메트릭은 docs/METRICS.md에 기록되어 있습니다. Grafana 대시보드와 상태 페이지가 어플라이언스 제공물에 포함되어 있습니다.
인터페이스 및 액세스 제어
`/` 경로에 관리 UI가 내장되어 있으며 컨트랙트 목록 엔드포인트가 제공됩니다. 공용 도메인에 배포하는 경우를 위해 전체 표면에 적용 가능한 선택적 Basic Auth 모드를 제공합니다.
명시적 비목표(Non-goals)
README에 따르면 이 프로젝트는 호스팅 서비스가 아니며, 분석 플랫폼(사용자 데이터에 대한 집계나 대시보드 없음), 체인 전체 인덱서(등록된 컨트랙트만 인덱싱), 프레임워크가 아닙니다. 이를 사용하기 위해 코드를 작성해야 한다면 그것은 버그로 간주됩니다.
로드맵
완료된 마일스톤으로는 스켈레톤(설정, 상태 확인, 마이그레이션, 연속성 체크가 포함된 커서 루프), 엔드-투-엔드 이벤트, 컨트랙트 상태, 어플라이언스 릴리스 v1.0.0, 토큰 전송 및 SAC 트러스트라인(v1.1), 아카이브 재생(v1.2), 내장 UI 및 컨트랙트 목록(v1.3), 선택적 Basic Auth(v1.4), 종류별 커버리지를 포함한 토큰 이동(v1.5)이 있습니다. 계획된 작업으로는 v1.6에서 wasm 해시를 등록하면 해당 해시로 배포된 모든 컨트랙트를 인덱싱하는 컨트랙트 클래스 발견 기능이 있으며, v2에서는 서명된 웹훅과 브로커 싱크를 통한 푸시 전송 기능이 예정되어 있습니다. MCP 서버는 탐색 중인 단계입니다.
프로젝트 자료
문서에는 docs/DESIGN.md(아키텍처, 데이터 모델, API 표면, 설정, 마일스톤), docs/DEPLOY.md, docs/KNOWLEDGE.md(운영 인덱서에서 추출한 29가지 원칙과 출처), CONTRIBUTING.md 및 SECURITY.md가 포함되어 있습니다. 이 프로젝트는 Apache-2.0 라이선스로 제공되며 이슈 제기와 피드백을 환영합니다.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.