ZooBC ウィキ
インテグレーション

署名付きメッセージと暗号化メッセージ

すべての署名にトランザクションが必要なわけではありません。署名付きメッセージは、お金を動かさず、手数料も支払わずに、鍵を持っていることを証明します。暗号化メッセージは、受取人だけがそれを読めるようにします。このページではその両方と、ノード API が受け付ける 2 つの関連する署名を扱います。

アドレスを管理していることの証明

あなたが ZooBC のアドレスを管理していることを知りたいウェブサイトは、ランダムなチャレンジを送ってきます。あなたはそれに zbc-cli sign-message、または公開の コマンドラインツール のどの移植版でも同じ関数で署名し、サイトはその署名をあなたのアドレスと照合します。ネイティブの ZBC_ アドレスでは、アドレスが公開鍵そのものなので、他には何も要りません。支払いを送ることでも管理を証明できますが、それはトランザクションであり、手数料がかかります。代わりに秘密鍵を誰かに渡すことは決してしないでください。

この方式は ZBC-MSG-v2 と呼ばれます。Ed25519 で次のものに署名します。

SHA3-256("ZBC-MSG-v2" ‖ genesis hash ‖ message)

このダイジェストの 2 つの部分が重要です。

  • タグ。 トランザクションは別のタグ "ZBC-TX" で署名されます。したがって、メッセージの署名がトランザクションとして有効になることも、トランザクションの署名がメッセージとして有効になることも決してありません。
  • ジェネシスハッシュ。 これが署名を 1 つのネットワークに結び付けます。devnet 用に署名されたメッセージが testnet や mainnet で検証に通ることは決してありません(チェーン束縛署名)。

移行期間のあいだ、ツールの verify-message は、チェーンを含まない古い形式 ZBC-MSG-v1("ZBC-MSG" とメッセージの SHA3-256)も受け付けます。この期間はツールに定められた期限の時刻に終わり、その後は ZBC-MSG-v2 だけが検証を通ります。

タグ ZBC-MSG-v2、ジェネシスハッシュ、メッセージが SHA3-256 でハッシュされ、Ed25519 で署名され、ZBC_ アドレスと照合されます。ZBC-TX と ZBC-MSG-v2 のタグが入れ替わることは決してありません
タグ ZBC-MSG-v2、ジェネシスハッシュ、メッセージが SHA3-256 でハッシュされ、Ed25519 で署名され、ZBC_ アドレスと照合されます。ZBC-TX と ZBC-MSG-v2 のタグが入れ替わることは決してありません

メッセージの署名は、公開ツールとそれを採用するサービスの約束事であって、チェーンの機能ではありません。チェーン上には何も保存されず、ノードにはそのためのエンドポイントもありません。

暗号化メッセージ

すべてのトランザクションはメッセージを運ぶことができます(トランザクションのエンベロープ)。平文のメッセージは最大 256 バイトです。暗号化されたメッセージは "ZBE1" という印で始まり、その後に受取人の鍵宛ての libsodium の sealed box が続き、それを開けられるのは受取人の秘密鍵だけです。暗号化されたメッセージは最大 320 バイトで、テキストには最大 268 バイトが残ります。

暗号化されるのはメッセージだけです。送信者、受取人、金額など、トランザクションのそれ以外の部分は、他のどのトランザクションとも同じように公開されたままです。

署名付きの API リクエスト

ノード API のほとんどは開かれた読み取りで、トランザクションは自分の署名を運ぶため API キーを必要としません。リクエスト自体に署名が必要な場合、その署名はテキスト METHOD:PATH:TIMESTAMP:BODY に対する Ed25519 署名で、300 秒間有効です。5 分以内に署名付きの認証に 20 回失敗したクライアントは、300 秒間締め出されます。

保留中のトランザクションの取り消し

ノードのプールで待っているトランザクションは、DELETE /api/v1/transactions/pending/ にそのハッシュを続けたリクエストで、そのノードから取り下げることができます。リクエストは次のものに対する署名を運びます。

SHA3-256("ZBC-CANCEL" ‖ genesis hash ‖ transaction hash)

これが取り除くのは、そのノードのプールにあるコピーだけです。すでにそのトランザクションを持っている他のノードがそれをブロックに取り込むこともあるため、取り消しは保証ではなく要求です。

関連項目