ビットコインについて、論文を読んだり、資料を読んだりして勉強したので、
完全に理解したとは言えませんが、自分なりにアルゴリズムをまとめました。
簡単に言うと、ビットコインは、P2P上のお金。すべての取引が正等であるように、
世界中のすべてのP2Pノードが取引を監視している(自分のパソコンで)。
監視しているボーナスとして、ビットコインがもらえる。
ただし、ビットコインが貰えるのは、最初にその取引の正当性を立証したたった一つのノード。
この正当性を示すのは、nonceと呼ばれる特殊な値を確定する。
1.取引(transaction)は、ハッシュと次の持ち主のパブリックキーで署名します。
2.そこで使うハッシュは公開されていて、タイムスタンプの代わりです。
3.だからそのハッシュは公開されていて誰もが履歴を知っていなければならない。
4.ではそのハッシュは誰が生成するかが問題。(チートされないために)
5.取引(transaction)は、発行と同時に世界中にP2Pネットワークで全ノードに配布される。
6.つまり、世界中が世界中の取引を知っている(実際はそんなことはないが、何割かが知っていればいい)
7.取引をいくつか集めたものをブロックと言う。
8.ブロックはそれ以前のハッシュ値と、取引データを持っている。
9.一般に逆ハッシュ問題は難しい(生成したハッシュから元の文字列を求める)
10.取引データから逆ハッシュ問題を解く? (nonce)
11.逆ハッシュ問題を解いて、元のハッシュとIDの列を割りだせたら、それが、
過去に使われていたものでないかを判定できる。
→ここで「取引」の正等性が立証されたので、正式に「取引」が実行されます。
立証したノードはその取引から、手数料を取ることができます。
(つまり、このノードが一瞬だけ、取引の仲介役(銀行)になるわけです。
この手数料が通常の手数料よりずっと安いので、ビットコインが使われる一因となった)
12.一番先に解けた(nonce値の確定した)人だけは偉い。
次のハッシュ値を発行し、皆に知らせる。
→ここでボーナスとして、ビットコインがもらえる(発掘)
13.このボーナスは次のブロックの最初の取引として設定される。
14.たぶん、ここで次のハッシュ値と nonce をP2Pでみなに知らせると、
それが解であることを確認して、自動的に次のブロックが生成される。
15.この他に、nonce を解いた人は、その取引について手数料を取ることができる。
だからビットコインが発掘され尽くしても手数料のために監視続ける。
ビットコインのしくみ
http://www.bitcoin.co.jp/docs/SatoshiWhitepaper.pdf