提案ではなく

お気づきの方もいるかもしれないが、ビットコインについて私が気になることの一つは、トランザクション履歴の全体が完全に公開されていることである。これが物事を簡素化し、誰もがコインの有効性を証明しやすくするという利点は十分に理解している。

したがって、これはビットコインへの変更提案ではない。むしろ、何が可能で何が不可能かという問いかけである。

一般的な問いは、ブロックリストを完全なトランザクションを保存しない方法で実装できた(あるいは実装できていた)のかどうかということである。具体的には、おそらくブロックリストにインプットとアウトプットのハッシュのみを保存することが可能かもしれない。これらは現在行われているのとまったく同様にブロックリスト内でタイムスタンプ(公証)される。

主な違いは、完全なトランザクションの保存はコインの受取人の責任となることである。そしておそらく、履歴を示すために過去(X)世代分のトランザクションを保存しなければならないかもしれない。

そして受取人がコインを次の者に転送したい場合、現在行われているのとまったく同様にトランザクションを作成するが、検証のためにトランザクションの先行情報も提出しなければならない。検証では、インプットの各先行情報がハッシュ化され、ブロックリストに存在することが確認される。インプットはハッシュ化され、ブロックリスト内でまだ使用されていないことが識別される。その後、トランザクションは現在と同様に検証される。

すべてが正しく検証された場合、追加のインプット/アウトプットのハッシュがブロックに追加される。これによりトランザクションのインプットは閉じられ、新しいアウトプットのハッシュは未使用として記録される。

ノードがブロックを完成させたら(ハッシュコンテストに勝利することで)、ハッシュのブロックと関連するトランザクション+先行情報を他のノードに確認と承認のためにブロードキャストする。

大まかな例:

{block-9 hash-a, hash-b, hash-c, hash-x } {block-12 hash-a, hash-y, hash-c, hash-d } {block-17 hash-b, hash-d, hash-e, hash-z, hash-f }

{Transaction {in-points: hash-x, hash-y, hash-z} {address, signature and other transactions stuff} {out-points: hash-payed, hash-change }

{generating-block hash-x, hash-y, hash-z, hash-payed, hash-change }

つまり基本的に、入出力ポイントのハッシュがブロックリストに2回存在すれば、それは使用済みである。1回のみ存在すれば未使用である。

block-17の後: a、b、c、dは使用済み。 e、f、x、y、zは未使用。

トランザクションはx、y、zを使用し、hash-payedとhash-changeを作成するため、トランザクションは有効である。

generating-blockの後: a、b、c、d、x、y、zは使用済み。 e、f、payed、changeは未使用。

==== 目標:

目標は、既存システムと同じセキュリティをすべて提供しつつ、容易に相関分析できるすべてのトランザクションの公開グラフの作成を避けることである。この場合、ハッシュはブロック内で関連付ける必要すらない。ブロックは単にすべてのハッシュを昇順にソートすればよい。

実質的に、本物の金貨を作りたいのである。自分のコインを相手に渡すことはできるが、世界中の誰もがそれを知ることはない。相手は次の人にそれを渡すことができ、それが純金のコインであることを証明できる。なぜなら、コインの系譜を持っており、系譜のすべての世代が公的記録で公証されているからである。

==== 問い:

サトシは、セキュリティを損なうことなくマークルツリー構造を通じてブロックリストからトランザクションを削除できることを示した。私の本当の問いは:

「トランザクションを最も早く削除できるのはいつか?」

ノードがすべてを記憶し続けることも可能だと主張できるだろう(ウェブは忘れない)。しかし、新しいノードがハッシュのブロックリストのみを受信するようにプロトコルを構造化すれば、ノードはこの時点からのみ記憶できることになる。これにより、多少のプライバシーの向上が得られるだろう。(おそらく)

==== 何か考えはあるだろうか? 人々が不正を行って利益を得る明白な方法はあるだろうか?