ゲートウェイ
ノードは自身のポートで平文の HTTP を話し、チェーンの保持に忙しくしています。ゲートウェイは、一般の人々のためにその前に立ちます。ドメインの証明書を持っているのでブラウザは HTTPS で接続でき、人々が開くページ、つまりウォレット、エクスプローラー、ファイル検証ページ、マニュアル、ダウンロードを提供します。ゲートウェイはチェーン上に一覧されているため、ウォレットは自分のゲートウェイが応答しなくなったときに別のものを見つけることができます。
ゲートウェイの役割
ゲートウェイは ZooBC のインストーラーが設定する役割で、ノードとは別のプログラムです。TLS(HTTPS の背後にある暗号化)を終端し、/api/v1/ の下の API のリクエストを 2 つのバックエンドに渡します。
- まず、深く検索可能な履歴を保持するアーカイブのサービスへ(エクスプローラーとアーカイブノード)。
- 次に、アーカイブのサービスが空の 404、つまりそのルートを持たないことを意味する応答を返した場合に、ノードへ。
したがって新しいトランザクションは最終的にフルノードに届きます。保留中のトランザクションのプールを持っているのはノードだけだからです。応答はチェーン自身のデータであり、ゲートウェイはそれを運ぶだけです。ゲートウェイは独自のクロスオリジン(CORS)ヘッダーを加え、GET、POST、OPTIONS と X-API-Key ヘッダーを許可し、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 と続き、支払額が 1 ZBC 未満になるところまでです。その後は毎週のリセットまで何も届きません。引き出した額はアドレスごと、またはインターネット(IP)アドレスごとに数えられるため、1 つの接続の背後にある多数のアカウントは 1 つの枠を共有します。フォーセットは、アトミック単位ではなく小数の ZBC で額を受け付ける唯一の場所です。
ZBC_… のアドレスに限らず、サポートされるどのアドレスにも支払います。Bitcoin、Ethereum、その他の外部のアドレスでもかまいません。それらの鍵は ZooBC のアカウントを管理できるからです(鍵とアカウントタイプ)。テスト用のコインを mainnet の ZBC と交換することはできず、それを販売する者もいません(devnet、testnet、mainnet)。