この記事は
https://learnblockchain.cnを元に編集したものです。
翻訳者のTwitter Account:taro03293
記帳原理について
ブロックチェーン(1.0)は、暗号理論に基づいた安全な分散元帳で、送金証明が簡単、且つ改ざんされない元帳のことです。
一般的に、スマートコントラクトと組み合わせたブロックチェーンはブロックチェーン2.0であると考えられています。
例えば、Ethereumは典型的なブロックチェーン2.0です。
多くの人はビットコインの存在を知っていますが、その背景のブロックチェーン技術までを理解していません。
実はビットコインは、ブロックチェーン技術を使用しているアプリケーションの一つです。
また同時に大抵の人はビットコインの価格上下だけに夢中で(最近はパッとしませんが、まだワンチャンあるかもしれません)、ブロックチェーン技術が持つ可能性にはあまり注目していません。
ブロックチェーンとは未来のことです。
もしあなたが未来に賭けたいと思うのなら、今後はコインの価格より、技術について目を向けたほうがいいでしょう。
この記事では、ブロックチェーン1.0テクノロジの実装方法について説明します。
ハッシュ関数
ブロックチェーンへの記帳について説明する前に、ハッシュ関数について説明しましょう。
ハッシュ関数はHash(元の値)(←この式をハッシュ化と呼ぶ)
のことで、“元の値”には任意の値を設定できます。
ハッシュ化すると、元の値を短いコードに変換(ハッシュ値、と呼ぶ)できます。
ハッシュ化の特徴
・どこの誰がいつ何時、同じ“元の値”をハッシュ化しても、得られる答えは常に同じ
・逆に“元の値”に少しでも変更があると、得られる答えは変わる
・ハッシュ値から“元の値”を予測する方法はない
例えば、
“張さんは李さんに100万を貸し、1%の利子、1年後に元金および利子を貸します”という文章をハッシュ化しましょう。
Hash(張さんは李さんに100万を1%の利子で貸し、李さんは1年後に元金および利子を返します)= AC4635D34DEF
(ハッシュ化された情報。これはあくまで例で、実際の答えとは異なります)。
このハッシュ値がブロックチェーン上に記帳されます。
ハッシュ関数の3つの機能
1.情報を単純化する : ハッシュ化すると、元の値が小さくなります
2.情報を識別する : 元の値が正しいか否かをAC4635D34DEFを使用して識別できます(AC4635D34DEFは元の値のIDとも呼ばれます)
3.情報を隠す : 通帳に記帳される情報はAC4635D34DEFのようなレコードであり、元の情報は匿名性が保たれます
例えば李さんが返済時にが詐欺的行為をした場合、両者は元の情報を確認するためにハッシュ関数とハッシュ値AC4635D34DEFを使用して、契約の真偽を検証することができます。
ハッシュ関数のこれら3つの機能は、ブロックチェーン技術で広く使用されています。
ブロックチェーン上に記帳する方法
例えば、下記の取引記録書のページ番号0があるとしましょう
口座 | 入金 | 出金 | 残高 | メモ |
---|---|---|---|---|
王さん | 100 | 190 | 報酬を受け取りました | |
趙さん | 100 | 30 | ガス代の支払い | |
李さん | 120 | 90 | 170 | 給料の受け取り&ローンの支払い |
記帳時間:2018-10-22 10:22:02 |
ブロックチェーンでは、この記録(ページ番号、記帳時間、取引記録)を元のデータとして、Hash化を行い、1つのHash値を求めます。
例 : Hash(ページ番号0、記帳時間、取引記録) = 787635ACD
ページ情報とHash値が組み合わさり、一つのブロックを作ります。
ビットコインシステムでは10分間に1度、ページに記録します。
すなわち10分に1つブロックが作成されています。
2枚目のページに記録する時には、前のブロックで求めたHash値+ページ番号2の情報をごっちゃにした情報を基にHashを作成します。
例 : Hash(前のブロックで求めたHash值、ページ番号1、記帳時間、取引記録) = 456635BCD
こうすることで、2つ目のブロックは、2つ目のブロックの記録と1つ目のブロックの記録両方を含むことができます。
これを繰り返すことで、新しいブロックは過去に起こった取引全ての記録を持っていることになります。
とても簡単に言うと、あなたが持っている通帳の最新ページに、そのページの取引記録+過去全ての取引が記録されているということです。
このような方法で作られたブロックチェーンは、過去の取引を検証するにあたり非常に便利であり(最後のブロックのHash値のみを検証すれば、それまでの過去の取引記録の真偽がわかる)、また過去の取引記録を変えることが非常に困難になる(過去のどれかのブロックのHash値を変えれば、それ以降のブロックのHash値も変化するので、どこで変わったのかすぐわかる)ので、ブロックチェーン上に記帳された情報を変更することは不可能です。
そして最後に、ブロックチェーン上に記帳するにはコストがかかります。
これはまた次に説明します。
4へ続く