게이트웨이
노드는 자기 포트에서 평문 HTTP로 통신하며 체인을 유지하느라 바쁩니다. 게이트웨이는 대중을 위해 노드 앞에 섭니다. 게이트웨이는 도메인의 인증서를 가지고 있어 브라우저가 HTTPS로 연결하게 하고, 사람들이 여는 페이지를 제공합니다. 지갑, 익스플로러, 파일 검증 페이지, 설명서, 다운로드입니다. 게이트웨이는 체인에 등록되어 있으므로, 지갑은 쓰던 게이트웨이가 실패하면 다른 게이트웨이를 찾을 수 있습니다.
게이트웨이가 하는 일
게이트웨이는 ZooBC 설치 프로그램이 설정하는 역할로, 노드와는 별개의 프로그램입니다. TLS(HTTPS 뒤의 암호화)를 종단하고, /api/v1/ 아래의 API 요청을 두 백엔드로 넘깁니다.
- 먼저 깊고 검색 가능한 이력을 가진 아카이브 서비스로 넘깁니다(익스플로러와 아카이브 노드).
- 아카이브 서비스가 빈 404, 즉 그 경로가 없다고 답하면 노드로 넘깁니다.
따라서 새 트랜잭션은 결국 풀 노드에 도착합니다. 대기 중인 트랜잭션의 풀은 노드만 가지고 있기 때문입니다. 응답은 체인 자체의 데이터이며, 게이트웨이는 그것을 전달할 뿐입니다. 게이트웨이는 GET, POST, OPTIONS와 X-API-Key 헤더를 허용하는 자체 교차 출처(CORS) 헤더를 붙이며, 이는 600초 동안 캐시됩니다.
게이트웨이는 결코 블록을 만들지 않으며(블록은 등록 노드만 만듭니다), 누구의 키도 보관하지 않고, 통화를 환전하지도 않습니다.
게이트웨이 등록
소유자는 RegisterGateway(유형 36)로 게이트웨이를 등록합니다. 여기에는 다음이 기록됩니다.
ZBG_…로 적는 게이트웨이 자신의 키- 도메인: 문자, 숫자, 점, 하이픈만으로 된 1~256자
- URL:
https://로 시작해야 하며 최대 1,024바이트
등록은 소유자의 계정에서 10 ZBC(1,000,000,000 원자 단위)의 스테이크를 잠급니다. 이 금액은 투표로 정하는 gateway_registration_cost이며, 모든 체인에서 10 ZBC로 시작하고 좌석들의 가격 투표로만 움직입니다.
목록에 남기
게이트웨이는 GatewayHeartbeat 트랜잭션(유형 37)으로 살아 있음을 증명합니다. 각 하트비트의 본문은 132바이트로, 게이트웨이 키, 최근 블록의 높이와 해시, 그리고 처음 68바이트에 대한 게이트웨이 키의 서명입니다. 하트비트가 지정하는 블록은 최상단에서 20블록 이내여야 하므로, 하트비트를 미리 준비해 둘 수 없습니다.
체인은 240블록의 하트비트 간격에 480블록의 유예 기간을 허용합니다. 720블록(3시간) 동안 침묵한 게이트웨이는 비활성 상태가 되며, 소유자는 스테이크를 돌려받습니다. 소유자는 UnregisterGateway(유형 38)로 언제든 떠날 수도 있으며, 이때도 스테이크가 돌아옵니다. 소각되는 것은 없습니다. 스테이크는 지불이 아니라 예치금이며, 구독료도 없습니다.
누구나 GET /api/v1/registry/gateways에서 게이트웨이 목록을 볼 수 있습니다. 이 경로의 응답 형식은 아카이브 서비스와 노드 중 어느 쪽이 답하느냐에 따라 다릅니다. 게이트웨이가 실패하면 웹 지갑은 릴레이와 아카이브 목록과 함께 이 목록을 다시 읽고 다른 곳으로 옮겨 갑니다. 각 게이트웨이에는 릴레이가 붙어 있을 수도 있습니다.
testnet 파우셋
코인에 가치가 없는 testnet에서는 게이트웨이가 /faucet/에서 파우셋도 제공합니다. 주소를 알려 주면 테스트 ZBC를 보내 줍니다. 받을수록 지급액이 절반씩 줄어듭니다. 첫 요청에 최대 100 ZBC, 그다음 50, 25, 12.5 ZBC 하는 식이며, 요청 한 번의 지급액이 1 ZBC 미만이 되면 매주 초기화될 때까지 더는 나오지 않습니다. 받아 간 양은 주소별 또는 인터넷(IP) 주소별로 세므로, 한 연결 뒤에 있는 여러 계정은 허용량 하나를 공유합니다. 파우셋은 원자 단위가 아니라 소수 ZBC로 금액을 받는 유일한 곳입니다.
파우셋은 ZBC_… 주소뿐 아니라 지원되는 어떤 주소에든 지급합니다. Bitcoin, Ethereum 등 외부 주소도 됩니다. 그 키들도 ZooBC 계정을 통제할 수 있기 때문입니다(키와 계정 유형). 테스트 코인은 mainnet ZBC로 바꿀 수 없으며, 아무도 이를 판매하지 않습니다(devnet, testnet, mainnet).