ずっとやりたかったことがあります。ビットコインの原論文を、最初から順に読むことです。
要約を読んだことはあっても、原典を通して読んだ人は意外と少ないのではないでしょうか。全9ページ、12の節しかありません。この連載では各節を順に取り上げ、原文をそのまま載せたうえで、訳と自分なりの解釈を書いていきます。読みながらPDFを行き来しなくて済むようにするためです。
原論文は MITライセンスで公開されているため、本文をそのまま引用できます。
- Satoshi Nakamoto, *Bitcoin: A Peer-to-Peer Electronic Cash System* — bitcoin.org/bitcoin.pdf
- 公式の日本語訳も公開されています — bitcoin.org/ja/bitcoin-paper
訳は解釈を挟まず、原文に沿えることを優先しました。解釈は解説に書きます。 訳語は原則として公式訳に合わせ、あえて違える箇所は記事末尾の一覧に理由を記しています。
「仮想通貨」という訳語がしっくり来ない
最初に、この連載を貫く視点を書いておきます。
日本語では一般に「仮想通貨」と呼ばれます。しかし私は、「デジタルコイン」と呼んだほうが実態に近いと感じています。二語とも入れ替えたいと思っています。
「通貨」ではなく「コイン」
「通貨」と言うと、価値の尺度や国家の裏付け、金融政策といった話に寄ります。一方この論文が扱うのは、もっと手触りのある問題です。硬貨を手渡すという行為を、通信路の上でどう再現するか。 私はこれを勝手に「コイン性」と呼んでいます。
論文の題名も *Electronic Cash System* であって、通貨制度の話ではありません。
「仮想」ではなく「デジタル」
そして「仮想」も外したい。この語には「実体がない」「本物ではない」という含みがあります。しかし論文が目指しているのは逆で、硬貨が持っていた性質を、実際に成り立たせることです。仮想と呼んでしまうと、その狙いが最初から否定されてしまいます。
論文自身の言葉も *electronic coin* です。仮想ではなく、電子的な/デジタルなコイン。素直に訳せばそうなります。
読み進めると、論文がまさにそこから出発していることが分かります。
1. Introduction
第1段落 — 信用に依存した仕組みの限界
Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments. While the system works well enough for most transactions, it still suffers from the inherent weaknesses of the trust based model. Completely non-reversible transactions are not really possible, since financial institutions cannot avoid mediating disputes. The cost of mediation increases transaction costs, limiting the minimum practical transaction size and cutting off the possibility for small casual transactions, and there is a broader cost in the loss of ability to make non-reversible payments for non-reversible services. With the possibility of reversal, the need for trust spreads. Merchants must be wary of their customers, hassling them for more information than they would otherwise need. A certain percentage of fraud is accepted as unavoidable. These costs and payment uncertainties can be avoided in person by using physical currency, but no mechanism exists to make payments over a communications channel without a trusted party.
インターネット上の商取引は、電子決済の処理を金融機関という「信頼された第三者」にほぼ全面的に頼るようになった。大半の取引ではこの仕組みで十分に機能するが、信用を前提とする以上、避けられない弱点が残る。完全に取り消し不能な取引は事実上成立しない。金融機関は紛争の仲裁から逃れられないからだ。仲裁にはコストがかかり、それが取引コストを押し上げ、実用的な最小取引額を引き上げてしまう。結果として、ちょっとした少額のやり取りは成り立たなくなる。さらに、取り消せないサービスに対して取り消せない支払いができない、という広い意味での損失もある。取り消される可能性があるために、信用の必要性はあちこちへ波及していく。販売者は顧客を警戒し、本来なら不要なはずの情報まで求めるようになる。一定割合の詐欺は、避けられないものとして受け入れられている。こうしたコストと不確実性は、対面で物理的な通貨を使えば避けられる。しかし通信路の上で、信頼された第三者を介さずに支払いを行う手段は存在しない。
論文の最初の段落が、いきなり本質を突いています。
注目したいのは、論文が比較対象として現金を持ち出していることです。ここまでの議論は銀行やクレジットカードの話でしたが、最後の一文で急に「対面で物理通貨を使えば避けられる」と言う。
対面で硬貨を手渡すとき、そこには仲介者がいません。受け取った側は誰にも確認を取りません。渡された時点で完了しています。この「何も要らなさ」が、通信路の上では丸ごと失われる。 論文はその欠落から書き始めています。
「信用の必要性はあちこちへ波及していく」という指摘も鋭いところです。取り消せるという一点があるだけで、販売者は顧客を疑い、余計な個人情報を集め、詐欺率を織り込んで価格を上げる。信用というコストは、決済の瞬間だけでなく、取引の周囲すべてに染み出します。
第2段落 — 何が必要なのか
What is needed is an electronic payment system based on cryptographic proof instead of trust, allowing any two willing parties to transact directly with each other without the need for a trusted third party. Transactions that are computationally impractical to reverse would protect sellers from fraud, and routine escrow mechanisms could easily be implemented to protect buyers. In this paper, we propose a solution to the double-spending problem using a peer-to-peer distributed timestamp server to generate computational proof of the chronological order of transactions. The system is secure as long as honest nodes collectively control more CPU power than any cooperating group of attacker nodes.
必要なのは、信用ではなく暗号学的な証明に基づく電子決済の仕組みである。それがあれば、取引を望む二者が、信頼された第三者を介さずに直接やり取りできる。計算量的に取り消しが不可能な取引は、販売者を詐欺から守る。買い手を守るためのエスクロー(第三者預託)も、通常の仕組みとして容易に実装できるだろう。本論文では、二重支払い問題への解決策を提案する。P2Pの分散タイムスタンプサーバを用いて、取引の時系列順序に対する計算上の証明を生成する、というものだ。善意のノードが攻撃者ノードの集団よりも多くのCPUパワーを合わせ持つ限り、この仕組みは安全である。
「信用の代わりに暗号学的な証明を置く」。これが論文全体の方針表明です。
そして最後の一文に、この論文のすべてが凝縮されています。時系列順序に対する計算上の証明。あとで見ますが、論文が提案する仕組みは要するにこれだけです。
ここで「順序」という語が出てくることは覚えておいてください。次の節で、これが偶然ではないことが分かります。
2. Transactions
第1段落 — コインの定義
We define an electronic coin as a chain of digital signatures. Each owner transfers the coin to the next by digitally signing a hash of the previous transaction and the public key of the next owner and adding these to the end of the coin. A payee can verify the signatures to verify the chain of ownership.
電子的なコインを、電子署名の連なりとして定義する。各所有者は、直前の取引のハッシュと次の所有者の公開鍵に対して電子署名を行い、それをコインの末尾に付け加えることで、次の所有者へコインを渡す。受取人は署名を検証することで、所有権の連なりを確認できる。
何度読んでも面白いのがここです。コインが「物」ではなく「履歴」として定義されています。
物理コインなら、コインという実体があり、それが人から人へ動きます。ところがここでは、実体が最初からありません。あるのは「誰から誰へ渡したか」という署名の連なりだけで、その連なり自体がコインだと言っています。
渡すという行為も、物を動かすことではなく、連なりの末尾に署名を書き足すこととして表現されます。渡すのではなく、書き足す。ここが物理コインとの決定的な違いです。
第2段落 前半 — 造幣局を置けば解決する。ただし元に戻る
The problem of course is the payee can't verify that one of the owners did not double-spend the coin. A common solution is to introduce a trusted central authority, or mint, that checks every transaction for double spending. After each transaction, the coin must be returned to the mint to issue a new coin, and only coins issued directly from the mint are trusted not to be double-spent. The problem with this solution is that the fate of the entire money system depends on the company running the mint, with every transaction having to go through them, just like a bank.
もちろん問題は、受取人が「過去の所有者の誰かがそのコインを二重に使っていないこと」を検証できない点にある。よくある解決策は、信頼された中央の権威、すなわち造幣局を置き、すべての取引について二重支払いがないかを検査させることだ。この方式では、取引のたびにコインを造幣局へ戻して新しいコインを発行してもらう必要があり、造幣局が直接発行したコインだけが二重支払いされていないと信頼される。この解決策の問題は、通貨システム全体の命運が造幣局を運営する会社に依存してしまうことだ。すべての取引がそこを通らねばならない以上、銀行と何も変わらない。
なぜ物理コインでは二重支払いが起きないのか。手渡したら、手元から消えるからです。
同じ硬貨を二人に渡すことは物理的に不可能です。誰の合意も要らず、宇宙の側が保証してくれています。
ところが署名は消えません。書き足したあとも、元の署名は手元に残ります。同じコインに対して、BさんあてとCさんあての署名を両方作れてしまう。作ること自体は誰にも止められません。
「渡したら手元から消える」という、物理コインでは無料で手に入っていた性質。これがデジタルでは自明に失われる。 コイン性の中核はここだと考えています。
そして造幣局案は、Introduction で否定したはずの「信頼された第三者」をそのまま連れ戻してしまう。論理としては当然ですが、ここを明示的に潰しているのが誠実だと思います。
第2段落 後半 — 問題が定義し直される
We need a way for the payee to know that the previous owners did not sign any earlier transactions. For our purposes, the earliest transaction is the one that counts, so we don't care about later attempts to double-spend. The only way to confirm the absence of a transaction is to be aware of all transactions. In the mint based model, the mint was aware of all transactions and decided which arrived first. To accomplish this without a trusted party, transactions must be publicly announced [1], and we need a system for participants to agree on a single history of the order in which they were received. The payee needs proof that at the time of each transaction, the majority of nodes agreed it was the first received.
受取人が「過去の所有者がそれ以前の取引に署名していないこと」を知る方法が必要である。我々の目的においては、最も早い取引こそが有効なものであり、後から行われた二重支払いの試みは問題にしない。ある取引が存在しないことを確認する唯一の方法は、すべての取引を把握していることだ。造幣局方式では、造幣局がすべての取引を把握し、どれが先に到着したかを決めていた。これを信頼された第三者なしに実現するには、取引が公に告知されなければならず、参加者が「受け取られた順序についての単一の歴史」に合意するための仕組みが必要になる。受取人は、各取引の時点で過半数のノードがそれを最初に受け取ったものと認めた、という証明を必要とする。
ここで問題が定義し直されています。 読み流しそうになりますが、連載全体の背骨になる箇所です。
「後から行われた二重支払いの試みは問題にしない」。つまり二重支払いを防ぐ必要はないと言っています。署名を二つ作ること自体は止められませんし、止める必要もない。必要なのは、そのうちどちらが先だったかを全員が同じように認識することだけです。
物理コインは「手元から消える」ことで、順序の問題を発生させませんでした。デジタルではそれが失われるので、代わりに順序についての合意を作らなければならない。コイン性の再現とは、つまるところこの合意をどう得るかという問題に帰着します。
Introduction の最後にあった「時系列順序に対する計算上の証明」が、ここで具体的な要求として立ち上がってきます。
まとめ
- 論文は銀行ではなく現金を引き合いに出して始まる
- 信用というコストは決済の瞬間だけでなく、取引の周囲すべてに染み出す
- コインは物ではなく、署名の連なりとして定義される
- 物理コインが無料で提供していた「渡したら手元から消える」性質が、デジタルでは失われる
- 二重支払いを防ぐ必要はない。どちらが先かの合意さえ得られればよい
- ただし造幣局を置くと、否定したはずの信用に逆戻りする
残る問いは一つです。中央の権威なしに、順序の合意をどうやって得るのか。
次回は「3. Timestamp Server」と「4. Proof-of-Work」を読みます。論文がこの問いに、時間と計算という二つの材料で答えていく部分です。
この連載の訳語
連載を通して訳語が揺れないよう、主要な語を先に決めておきます。原則は公式訳に合わせることです。読者が公式訳と行き来しやすいほうがよいと考えました。
意図的に違えているのは2語だけで、いずれも理由を添えています。
| 原語 | 公式訳 | 本連載 |
|---|---|---|
| electronic cash | 電子通貨 | 電子通貨 |
| electronic coin | コイン | コイン |
| chain of digital signatures | チェーンのように連続した電子署名 | 電子署名の連なり |
| digital signature | 電子署名 | 電子署名 |
| double-spending | 二重支払い | 二重支払い |
| trusted third party | 信用の置ける第三者 | 信頼された第三者 |
| mint | 造幣局 | 造幣局 |
| transaction | トランザクション/取引 | 取引 |
| node | ノード | ノード |
| honest nodes | 善意のノード | 善意のノード |
| attacker | 攻撃者 | 攻撃者 |
| proof-of-work | Proof of Work | Proof of Work |
| timestamp server | タイムスタンプサーバ | タイムスタンプサーバ |
| block / block chain | ブロック/ブロックチェーン | ブロック/ブロックチェーン |
| longest chain | 最長のチェーン | 最長のチェーン |
| hash | ハッシュ | ハッシュ |
| CPU power | CPUパワー | CPUパワー |
| peer-to-peer | P2P | P2P |
| public key | パブリック・キー | 公開鍵 |
| nonce / incentive / escrow | ナンス/インセンティブ/エスクロー | 同じ |
| Merkle Tree | マークル・ツリー | マークル・ツリー |
違えた理由
trusted third party → 「信頼された第三者」
公式訳は「信用の置ける第三者」です。自然な日本語ですが、「信用に値する」という評価のニュアンスが入ります。論文が問題にしているのは、その相手が本当に信用に値するかではなく、慣習として信用を置かざるを得ない立場に置かれていることのほうです。受動の含みを残したいので、この連載では「信頼された第三者」とします。
transaction → 「取引」
公式訳は「トランザクション」と「取引」が混在しています。技術用語としては前者が正確ですが、この論文の transaction は商取引そのものを指す場面が多く、連載を通して「取引」で統一したほうが読みやすいと判断しました。
chain of digital signatures → 「電子署名の連なり」
公式訳の「チェーンのように連続した電子署名」も内容は同じです。ただ本連載では「コインとは連なりそのものである」という点を繰り返し扱うため、名詞として扱いやすい形にしています。
public key → 「公開鍵」
公式訳は「パブリック・キー」ですが、一般的な表記に合わせました。