ZooBC 위키
통합

익스플로러와 아카이브 노드

ZooBC 익스플로러는 누구나 블록, 트랜잭션, 계정, 노드를 둘러보고, 오래된 트랜잭션 메시지를 검색하고, 일일 통계를 읽을 수 있게 합니다. 그 대부분은 일반 노드가 아니라 아카이브 서비스에서 나옵니다. 아카이브 서비스는 등록 노드 옆에서 실행되며 체인 이력의 검색 가능한 인덱스를 보관하는 별도의 프로그램입니다.

일반 노드가 보관하는 것

일반 노드는 현재 상태(잔액, 기록, 레지스트리)와 최근 블록의 창, 즉 스냅샷 기간 1~2개(mainnet에서 30~60일)를 보관합니다. 이것으로 체인을 검증하고 새 노드가 스냅샷에서 합류하도록 돕기에 충분합니다(스냅샷과 빠른 동기화). 더 오래된 블록, 트랜잭션, 영수증은 정리되며(이력 정리), 이것이 노드를 가볍게 유지합니다. 정리된 이력을 로컬에 보관하려는 운영자는 node.conf에 keep_all_history를 설정할 수 있습니다.

그 결과 노드 혼자서는 "블록 0 이후의 모든 트랜잭션"에 답할 수도, 메시지 전체 텍스트 검색에 답할 수도 없습니다.

아카이브 서비스

아카이브 서비스 zoobc-archival-api가 그 빈틈을 채웁니다. 운영자가 archival_node = true를 설정한 노드가 이를 시작하고 감독합니다. 서비스는 노드 자체의 SQLite 데이터베이스를 읽고 블록과 트랜잭션의 인덱스를 MySQL 저장소에 보관하므로, 이력, 계정 타임라인, 통계, 검색에 답할 수 있습니다. 일반 경로의 아카이브 형태 외에도 자체 경로를 제공합니다.

경로답하는 것
/search/transactions메시지를 포함한 트랜잭션 검색
/stats/…네트워크 통계
/spine/blocks[[spine-chain스파인 체인]]의 블록
/network/map네트워크 지도
/archive/stats아카이브 자체에 관한 통계

응답을 비교하는 개발자에게 중요한 세부 사항이 하나 있습니다. 아카이브 서비스는 16진수 값을 대문자로 쓰고, 노드는 소문자로 씁니다.

체인에 선언하기

등록 노드의 소유자는 RegisterArchival(유형 46)로 아카이브 서비스를 선언합니다. 지정한 노드 키는 송신자가 소유한 등록 노드의 것이어야 합니다. 잠그는 스테이크는 없으며, UnregisterArchival(유형 47)로 항목을 철회합니다. 누구나 GET /api/v1/registry/archivals에서 선언된 서비스 목록을 볼 수 있으며, 웹 지갑은 게이트웨이가 실패하면 이 목록을 읽습니다.

상태와 최근 블록을 가진 노드. 아카이브 서비스가 그 데이터베이스를 읽어 블록, 트랜잭션, 메시지의 MySQL 인덱스를 만들고, 게이트웨이가 이를 바탕으로 익스플로러 페이지를 제공합니다. RegisterArchival이 서비스를 그 등록 노드와 연결합니다
상태와 최근 블록을 가진 노드. 아카이브 서비스가 그 데이터베이스를 읽어 블록, 트랜잭션, 메시지의 MySQL 인덱스를 만들고, 게이트웨이가 이를 바탕으로 익스플로러 페이지를 제공합니다. RegisterArchival이 서비스를 그 등록 노드와 연결합니다

익스플로러

익스플로러는 게이트웨이가 제공하는 웹 페이지입니다. 블록, 트랜잭션, 계정, 노드, 스파인, 통계, 검색 같은 아카이브 경로 위에 만들어집니다. 게이트웨이는 각 API 읽기 요청을 먼저 자신의 아카이브 서비스로 보내고, 아카이브 서비스에 없는 경로는 노드로 넘깁니다. 익스플로러는 각 노드의 소프트웨어 버전도 보여 주므로, 운영자와 관찰자는 누가 업데이트했는지 알 수 있습니다(릴리스와 업데이트).

이 모든 것은 공개된 체인 데이터입니다. 체인에서 행동하려면 키가 필요하지만, 보는 데는 결코 필요하지 않습니다(노드 API).

과거를 읽는 유일한 방법은 아닙니다

아카이브 서비스는 편의 수단이지, 체인의 기억이 아닙니다.

모든 노드가 아니라 분산 저장소가 블록 0 이후의 모든 스냅샷을 보관하므로, 누구나 스파인 체인을 따라 특정 시점의 스냅샷까지 거슬러 올라가 어떤 아카이브 노드에도 의존하지 않고 그때의 상태를 다시 만들 수 있습니다(아카이브와 과거 조회).

아카이브 서비스가 하지 않는 일도 있습니다. 블록을 만들지 않으며(블록은 등록 노드만 만듭니다), 노드들이 보고하는 ZooBC Foundation의 중앙 데이터베이스도 없습니다. 릴레이는 트랜잭션이 아니라 지갑 간 통화를 전달합니다(릴레이).

같이 보기