メッセージング
Z-Textのメッセージはブロックチェーントランザクションです。すべてのメッセージは暗号化され、 永続的で、検閲耐性があります。
メッセージの送信
メッセージを送信するには、ハンドシェイク認証済みのコンタクトとの会話を開き、 メッセージを入力します。アプリが共有鍵で暗号化し、BitcoinZブロックチェーン上の シールドトランザクションとしてブロードキャストします。
- メッセージタブから会話を開く
- 入力フィールドにメッセージを入力
- 送信ボタンをタップ -- メッセージはローカルで暗号化されます
- シールドトランザクションが作成され、ネットワークにブロードキャストされます
- メッセージはmempool G-streamプッシュを通じてほぼ即座に配信されます(通常1〜5秒)
メッセージの配信
メッセージはmempool G-streamプッシュを通じてほぼ即座に配信されます。トランザクションが ブロードキャストされると、G-streamが未読メモを1〜5秒以内に受信者のデバイスにプッシュします。 ブロック確認はその後に行われ、ブロックチェーン上の永久的な決済となります。
| ステータス | 意味 |
|---|---|
| 送信中 | トランザクションの作成と署名中 |
| 保留中 | トランザクションがmempoolにブロードキャスト済み |
| 配信済み | mempool G-streamプッシュが受信者に到達 |
| 確認済み | トランザクションがブロックにマイニングされ永久決済完了 |
ハンドシェイクプロトコル
メッセージを送信する前に、暗号化ハンドシェイクを完了する必要があります。 これにより、双方がメッセージ暗号化に使用する共有秘密鍵が確立されます。
- 開始 -- シールドトランザクションに埋め込まれた公開鍵を含むハンドシェイクリクエストを送信
- 応答 -- 受信者が別のシールドトランザクションで自身の公開鍵を送り返して承認
- 鍵導出 -- 双方のクライアントがDiffie-Hellman鍵交換を使用して共有秘密を計算
- 準備完了 -- 共有秘密がローカルに保存され、今後のすべてのメッセージの暗号化/復号に使用
トラストレス検証
ハンドシェイクはトラストレスです -- サーバーが鍵交換を仲介することはありません。 双方の公開鍵はシールドトランザクションを通じて送信されるため、鍵交換自体も 外部の観察者から見えません。
暗号化の解説
Z-Textは二層暗号化モデルを使用しています:
- レイヤー1 -- zk-SNARKシールディング:トランザクションメモ(メッセージを含む)は、ブロックチェーンのネイティブなシールドトランザクション機構によって暗号化されます。送信者と受信者のz-addressのみが復号可能です。
- レイヤー2 -- 共有鍵暗号化:メモフィールドに格納される前に、メッセージはハンドシェイクで確立された共有鍵でさらに暗号化されます。つまり、z-addressのビューイングキーが漏洩しても、ハンドシェイクで導出された鍵なしではメッセージを読むことができません。
スタンプ
Z-Textは会話でスタンプ画像の送信をサポートしています。スタンプはテキストメッセージと 同様にエンコードされ、トランザクションメモに埋め込まれます。アプリには組み込みの スタンプパックが含まれており、プレミアムユーザーは追加パックにアクセスできます。
メッセージの制限
メッセージはトランザクションメモに保存されるため、ブロックチェーンのメモフィールドサイズに よって1メッセージあたりの文字数制限があります。長いメッセージの場合、アプリは自動的に コンテンツを複数のトランザクションに分割し、受信者側で再組み立てします。
プレミアム:高速メッセージ
プレミアムサブスクライバーは、最適化されたノードインフラを通じてルーティングすることで メッセージ配信時間を短縮できる優先トランザクションリレーの恩恵を受けられます。