Blocknetの支払いを、ウォレットが組み立てる要素に沿って追います。既存の資金、新しい出力、お釣り、ネットワーク手数料です。この解説では、1人への支払いに複数の出力ができる理由と、ウォレットの出力を使うことが、その全額を受取人に渡すことではない理由を説明します。会計例の金額は架空で、実装の参照にはリリース済みのcore v0.22.0ウォレットを用います。
Blocknetのトランザクションはどう資金を移す?
ウォレットは自分が所有する使用可能な出力を選んで入力に使い、受取人と必要なお釣りのために新しい出力を作ります。選択した価値は、受取人の金額とネットワーク手数料を賄います。プライバシー証明によりネットワークは支払いを検証でき、ウォレットは自分に属する新しい出力を認識します。
ウォレットがすでに所有する出力から始める
出力とは、以前のトランザクションで作られた価値のまとまりです。未使用で成熟のルールを満たしていれば、ウォレットは新しい支払いに選べます。残高には、過去の受け取り、マイニングの支払い、お釣りから生じた複数のまとまりが含まれることがあります。通常は自分で選ぶ必要はありません。
ウォレットが3 BNTの支払いに、10 BNTの出力を選んだとします。この既存の出力は丸ごと使われます。新しいトランザクションが、その価値を受取人、お釣り、手数料に割り当てます。他の出力は手つかずのままにでき、選択した合計が残高全体とは限りません。
小さな出力を複数使い、1つの支払いを賄うこともできます。リリース済みウォレットの作成処理は、受取人の金額と手数料を賄えるだけの成熟した資金を選びます。入力の選択とサイズに基づく手数料の見積もりは互いに影響するため、その時点のウォレットの確認画面が重要です。トランザクション手数料ガイドで計算方法と確認場所を説明しています。
この図はウォレットの会計として読んでください。1は選択した入力、2は受取人の出力、3は自分のお釣りの出力、4は手数料です。数字は説明用で、手数料は仮定した値であり、提示された見積額ではありません。矢印は所有関係と価値の配分を示し、エクスプローラーで公開されるつながりを示すものではありません。
1回の支払いで複数の出力ができるのはなぜ?
この例では、10 BNT = 3 BNT + 6.9995 BNT + 0.0005 BNTです。受取人は3 BNTを受け取り、自分のウォレットは6.9995 BNTのお釣りを受け取り、トランザクションは仮定した0.0005 BNTの手数料を支払います。1人にだけ支払うつもりでも、新しいウォレット出力は2つできます。手数料はトランザクションの独立した項目であり、3つ目の受取人向け出力ではありません。
出力が2つというのは分かりやすい例で、すべての支払いのルールではありません。作成処理は複数の受取人に対応し、高度な入力選択の処理ではお釣りを複数の出力に分けられます。選択した価値が受取人と手数料をちょうど賄う場合、お釣りの出力は不要です。一方、全額送信では、選択した使用可能な合計から手数料を引いて受取人の金額を計算します。
つまり、出力数はトランザクションの構造を表します。顧客、請求書、別々のウォレットの数を数えるものではありません。複数の出力が同じウォレットに属することも、複数の入力を使うトランザクションが1人に支払うこともあります。ウォレットの支払い記録と、エクスプローラーの短い構造の要約を比較するときは、この違いを意識してください。
お釣りはどこへ行く?
ウォレットは自分の鍵に対してお釣りを作ります。例では元の10 BNTの出力が消費され、6.9995 BNTのお釣りは同じウォレットが認識できる新しい出力になります。通常の送信では、2人目の受取人を入力したり、お釣り用アドレスを手動でコピーしたりする必要はありません。
受取人の出力とお釣りには、一度限りの出力鍵を使います。公開トランザクションに、普段の受取用アドレスが「お釣り」というラベルと並んで載るわけではありません。ウォレットは自分の出力を認識するための非公開情報を持っています。ステルスアドレスガイドでは、一度限りの鍵と再利用できる受取用アドレスの関係を説明しています。
お釣りにも、新しく作られた出力のルールが適用されます。送信後、残高の一部は自分の所有でありながら承認や成熟を待つ場合があります。新しいお釣りが保留中でも、手つかずの成熟した出力は使用可能なままでいられます。次の支払いを準備するときは使用可能残高を確認してください。送金時間ガイドで、配信から使用可能になるまでの段階を説明しています。
ネットワークの検証内容とエクスプローラーの表示
実際の入力にはそれぞれ、過去の出力候補の中にその入力を置くプライバシー証明があります。他のリングメンバーはおとりであり、その所有者の資金が自分の支払いに使われるわけではありません。キーイメージにより、ネットワークはどのリングメンバーが本当の送信元かを公開せず、重複した支出を検出できます。この仕組みはリング署名を参照してください。
ネットワークは金額コミットメントと証明も検証し、手数料を含めてトランザクションの収支が合うことなどを確認します。範囲証明ガイドでは、金額が隠れていてもこれらを確認できる仕組みを説明しています。公開データにはトランザクションハッシュ、入力と出力の構造、手数料が含まれます。ハッシュをエクスプローラーに貼り付けるだけで、例の非公開の会計内容が分かるわけではありません。
自分の受け取りとお釣りの識別にはウォレットを使い、トランザクションとブロックの公開状況にはエクスプローラーを使ってください。支払い情報の見え方ガイドでは、送信者、受取人、第三者が知れる内容と、意図的な共有方法を比較しています。
承認まで支払いを追う
送信を確定する前に、受取人の情報、受取金額、手数料、お釣りを合わせて確認します。送信後のトランザクションハッシュは、すべての入力と出力を含むトランザクション全体を識別します。受取用アドレスでも、受取人の出力だけの識別子でもありません。
配信、ブロックへの収録、使用可能になることは別々の段階です。受取人のウォレットは自分の鍵に属する出力を探し、自分のウォレットはお釣りを認識します。承認と成熟によって、それらの新しい出力を次のトランザクションに使える時点が決まります。送受信ガイドで実際のウォレット操作を説明しています。
支払いについて調べるときは、予定した金額とウォレットの記録から始め、次にトランザクションの状況を確認します。何を選び、受取人が何を受け取り、何がお釣りとして戻り、何が保留中かという見方ができます。資金が元々他の人から来た場合でも、マイニングプールの支払いから来た場合でも同じです。
よくある質問
Blocknetの支払いに出力が2つあるのはなぜですか?
金額を指定した支払いでは、受取人への出力と、入力の未使用分をお釣りとして自分のウォレットに戻す出力を作れます。受取人が複数、お釣りを分割、お釣りなしといった形もあります。出力数だけでは、何人に支払ったかは分かりません。
送信前にお釣り用のアドレスをコピーする必要はありますか?
確認したウォレットのトランザクション作成処理は、自分のウォレットの公開鍵でお釣りを作ります。意図した受取人の情報を入力すれば、お釣りの出力はウォレットが処理します。この出力は送信元のウォレットに属し、通常の承認と成熟のルールに従って使用可能になります。
入力のリングは全メンバーの資金を使いますか?
各入力が使うのは、送信者が所有する実際の出力1つです。他のリングメンバーはプライバシー証明で送信元の候補を提供しますが、その価値が支払いに加算されることはありません。トランザクションには複数の実際の入力を使え、それぞれに独自のリングとキーイメージがあります。