クライアントには薄い財布があります。

less than 1 minute read

クライアントには薄い財布があります。そこには大きなバランスがあります。ただし、トランザクションをブロードキャストするには、新しい残高が必要です。ウォレットの合計サイズの新しい残高はわずかです。つまり、他のクライアントは、このクライアントでさえも、シンクライアント内でトランザクションを使用することはできません。非常に薄い財布を持つクライアントの問題は、大量のコインを持っている誰かによって攻撃される可能性があることです。これを悪用するために、攻撃者は非常に長いトランザクションのチェーンを作成します。作成したブロックには、チェーン内のトランザクションのすべての入力のすべてのトランザクションを含める必要があります。極端な場合、チェーンには、最大の出力を持つトランザクションだけでなく、すべてのトランザクションが含まれます。ウォレットの使用に興味があり(例:bitcoinj)、シンクライアントを使用している場合、トランザクションをブロードキャストできません。ウォレットから自分が管理するアドレスに送信します。私はそのシナリオでクライアントを実行したくない、または実行することができないので、私の残高はゼロにならず、クライアントのルールに違反します。 3番目のオプションがあり、バランスを気にしないことに注意してください(その場合は、完全なクライアントを使用することもできます)。以下にその仕組みを示します。ウォレットを使用する場合は、秘密鍵でメッセージに署名します。このメッセージには残高のハッシュが含まれています。このハッシュを使用すると、シンクライアントは次のような単純な関数を使用して残高を計算できます。このアルゴリズムは、いくつかのラウンドの計算を使用します。どのトランザクションのチェーンがどの入力を消費しているかを追跡しようとし、どの入力アドレスのチェーンがどの出力に属しているかも追跡します(そのため、ハッシュを計算する前にアドレスをハッシュする必要があります)。これにより、トランザクションが複数の出力を必要とする場合、シンクライアントが残高全体の計算を回避できるようになりますが、どの出力がどの残高を必要とするかを事前に知る方法はありません(願っています)。したがって、実際には、ウォレットは大量の計算を行いません。すべての入力を追跡し、より高いバランスの別の入力があり、その追加の出力のみを支払う場合にのみ、バランスをブロードキャストします。おそらく多くの人を悩ます取引手数料に関する最後の注意。