送金の仕組み
BTCZの送金について、二つのことが人々を驚かせます。少額の支払いが大金より時間がかかることがあること、そして時間とともに残高が静かに多数の小さなピースに分かれていくこと。どちらも、プライベートウォレットが実際にお金を保管する仕組みに関する一つのアイデアに起因しています。
基本のアイデア
残高は単一の数字ではありません。ノートと呼ばれる個別のコインの積み重ねです。送信速度は、ノートの価値ではなく、消費するノートの枚数 に依存します。なぜなら、各ノートにはそれぞれ独自のゼロ知識証明が必要だからです。この一つの事実が、「全額送信」が遅い理由、数百万が数秒で動く理由、そしてZ-Textが資金を多数の小さなノートに分割し続ける理由を説明しています。
残高はノートの積み重ね
ウォレットを開くと、一つの残高が表示されます。その下には、多数の個別のコインが積み重なっています。Z-Textのようなシールドウォレットでは、これらのコインをノートと呼びます(技術名は未使用トランザクション出力、またはUTXO)。各ノートは固定値を持ち、残高はすべてのノートの合計です。
重要なルール:ノートの一部ではなく、ノート全体を消費します。これは現金と同じです。10の価値の硬貨1枚を持っていて2を支払いたい場合、硬貨を半分に割ることはできません。硬貨全体を渡してお釣りを受け取ります。
支払いとお釣り
ノート全体を消費するため、ほぼすべての送信でお釣りが発生します。たとえば、0.01 BTCZのノートを使って0.0002を送信するとします。ネットワークは少額の手数料(0.0001 BTCZ)を徴収し、受信者は指定金額を受け取り、残りは新しいノートとしてあなたに戻ってきます。消費したノートはなくなり、代わりに新しいお釣りノートを持つことになります。
これがウォレットの使用中にノートの値が変化し続ける理由です。また、新しく作成されたお釣りノートは再び使用する前に確認が必要で、これは思っている以上に重要です(後述)。
速度がノートの枚数に依存し金額に依存しない理由
これが人々を驚かせる部分です。ノートをプライベートに消費するには、スマートフォンがそのノートのゼロ知識証明を構築する必要があります。これは、ノートを所有しており消費する権限があることを、どのノートかを明かさずに証明する小さな暗号学的証明です。1つの証明の構築には、スマートフォンで約1〜3秒かかります。
重要なのは、消費するノート1枚ごとに1つの証明が必要です。1枚のノートを消費するトランザクションには1つの証明が必要です。50枚のノートを消費するトランザクションには50の証明が必要です。金額の大きさはまったく関係ありません。重要なのはノートの枚数だけです。
目安
送信速度は、送信するBTCZの金額ではなく、消費するノートの枚数によって決まります。
| 送信内容 | 消費ノート | 証明数 | 速度 |
|---|---|---|---|
| 5,000,000 BTCZを1枚のノートで | 1 | 1 | 数秒 |
| 1 BTCZを100枚のノートに分散 | 多数 | 多数 | 数十秒〜数分 |
| 全額送信(すべて) | 保有するすべてのノート | すべて | 最も遅く、バッチで送信 |
具体的な例
メッセージ1件の送信
メッセージは小さなノート1枚を消費します。Z-Textはまさにこのために約0.0002 BTCZのノートを保持します。コンタクトへの0.0001の送信とネットワーク手数料0.0001をカバーするのに十分な量です。1枚のノート、1つの証明、数秒で完了します。双方向の会話では、送信した0.0001はコンタクトが返信するときに戻ってくるので、チャットの実質的なコストは手数料だけに近いです。
1枚のノートで500万BTCZと100枚のノートで1 BTCZ
500万BTCZがたまたま1枚のノートに入っている場合、それを送信するのは1つの証明で、数秒で終わります。一方、1 BTCZが100枚の小さなノートに分散している場合、そのほとんどを消費するには数十のノートを証明する必要があり、金額が何百万倍も小さいのにはるかに時間がかかります。枚数であり、金額ではありません。
全額の送信
「全額送信」は、ウォレットに依頼できる中で最も時間のかかる操作です。保有するすべてのノートを消費しなければならないからです。証明が多すぎて1つのトランザクションに収まらないため、ウォレットはいくつかの連続したトランザクション(それぞれ約50枚のノート)で残高を送信し、各バッチの証明を生成するために一時停止し、スマートフォンでバッチごとに約1〜2分かかります。200枚のノートを持つウォレットは約4つの連続したトランザクションになります。コストがノートの枚数によって決まり、金額ではないことの最も明確な証明です。
Z-Textが資金を分割する理由
多くのノートが送信を遅くするなら、なぜZ-Textはわざと資金を多数の小さなノートに分割するのでしょうか?メッセージングは逆の問題だからです。送信するメッセージごとに1枚のノートを消費します。残高全体が1枚のノートに入っていたら、一度に1つのメッセージしか送信できません。各送信後、次の送信前にお釣りが確認されるまで待たなければなりません。
多数の小さなノートのプールがあれば、各メッセージは異なる準備済みノートを掴むだけなので、待たずに多くのメッセージを連続して送信できます。1枚のノートは一度に1つのメッセージ、100枚のノートは100件のメッセージを同時に処理できます。
待機の罠
最初のメッセージのお釣りがまだ確認されていない間に2番目のメッセージを送信しようとすると、使える唯一のノートが使用済みになっているため送信が失敗します。確認済みのノートの健全なプールが、高速メッセージングを瞬時に感じさせます。確認には約1ブロック、およそ2分30秒かかります。
そのためZ-Textは、大きなノートを1つのトランザクションで多数の約0.0002 BTCZの小さなノートに分割し(1枚のノートが少額の手数料1回で100枚になります)、新しいライセンスにはすぐにチャットを始められる既製のノートプールが付属しています。
ノートプールを健全に保つ
これをすべて手動で管理する必要はありません。ウォレットはノート数を監視し、その健全性を表示します。快適なプールは約50枚以上のノートで、不足しているときに通知します。メッセージを受信するたびにトップアップされます。受信するメッセージごとにノートが返ってくるので、活発な会話は自然にプールを補充します。
手動でトップアップしたい場合、たとえばメッセージを集中して送信する前などに、設定 → ノート管理からワンタップで残高を新しいノートに分割できます。手数料は1回だけの単一のトランザクションです。
用語集
| 用語 | 意味 |
|---|---|
| ノート | 固定値を持つ単一のシールドコイン。残高はすべてのノートの合計です。 |
| UTXO | 「未使用トランザクション出力」— ノートの技術名。 |
| お釣り | 消費されたノートの残額で、新しいノートとして戻ってきます。 |
| ダスト | メッセージに添付された0.0001 BTCZのような非常に少額。 |
| ネットワーク手数料 | ブロックチェーンがトランザクションを処理するために徴収する少額(0.0001 BTCZ)。 |
| zk-SNARKプルーフ | 消費する各ノートのために構築されるゼロ知識証明。送信をプライベートにし、時間がかかる原因です。 |
| 確認 | トランザクションがブロックに含まれると、ノートは確実に使用可能になります。約2.5分ごとです。 |
よくある質問
全額送信がなぜ時間がかかるのですか?
保有するすべてのノートを消費し、各ノートには独自の証明が必要です。ノートが多い場合、ウォレットは残高を複数の連続したバッチで送信し、各バッチの証明を構築します。動いています、止まっているわけではありません。
少額の支払いがなぜ大きな支払いより遅くなることがあるのですか?
速度は支払いが使用するノートの枚数に依存し、金額には依存しないからです。多数の小さなノートを集める必要がある少額の支払いは、1枚の大きなノートを使用する大きな支払いより遅くなることがあります。
残高がなぜ多数の小さな金額に分かれたのですか?
これは意図的なものです。小さなノートのプールがあれば、お釣りの確認を待たずに多くのメッセージを素早く送信できます。
残高が分割されたときにコインを失いましたか?
いいえ。分割にかかるコストは少額のネットワーク手数料のみです。そして、メッセージに添付されたダストは双方向の会話で戻ってきます。
送信がしばらく続いています。何か壊れていますか?
通常は問題ありません。多くのノートを消費する送信は、すべての証明を構築するために時間が必要なだけです。ほとんどの場合、ネットワークや残高の問題ではなく、証明の生成中です。