[参考:せっかく仮想通貨取引はじめたので、世界を変える技術と言われる、難しすぎるブロックチェーンについても勉強しておこう]



 

“ブロックチェーン”、ビットコインってなに?っていう話になると必ずでてきますね。

 

そのブロックチェーン、昨今では、仮想通貨は通貨として価値はゼロ、そのうちなくなる、という、おえらいさん方が多いのに、

ブロックチェーンという技術、これだけは、いろいろなところで使われるのではないか、革新的な技術だ、という方々が多いのです。

 

 

<↓2018年11月8日追加記事>

ニュースサイトで野口悠紀雄氏のブロックチェーンの講演についての記事を読んだので参考まで。

この野口悠紀雄氏は、元官僚の経済学者でブロックチェーンにもものすごい詳しいようです。

 

↓著書もあります。とてもわかりやすいですが、わたしのような凡人には、大作なみの情報量であたまに入りきれません。

わたしもNHKの「欲望の経済史」という経済の歴史のわかりやすい番組があって、好きでよく見ていましたが、これにも

出演していました。とてもわかりやすい話でした。

 

著書もありますね。ものすごく詳しいですね。さすがです。

この方の講演で、公開分散台帳、というブロックチェーンがどうすごいのか簡単に説明していました。

 

集中管理の台帳と分散台帳では、3つの点が違う。

(1)コスト:集中管理者が手数料を取り放題。分散管理者はボランティア。

(2)安全度:集中管理者が情報を失えば終わり。分散管理者がゼロになることは皆無。

(3)信用:集中管理は、集中管理者を信用できなくなれば終わり。分散管理はシステムが信用できればよい。人ではない。

 

こういう話から考えると、ファイナンスというのは、これが本来の形なんだろうなと思いますね。

しかし、デファクトスタンダードというのは、理論だけで成り立たないのですね。

 

「欲望の経済史」でも最後にでてきた、”不確実性”というものがあるのですね。

だれも、未来を正確に予測することはできない、というわけです。

理屈だけでいえば、ブロックチェーンを使った社会システムがいずれきてもおかしくはないのですね。

 

じゃ、これ、いい機会だから勉強しとくに、こしたことはないです。どこかで使える可能性もあるわけです。

それで、調べ始めました。いや、難しいですね。よくわからん、の一言ですね。

 

そうわいっても、少しずつ勉強すれば、わからんことはなにもないのです。

わたしの経験上、最初はわからんでも、そのうちわかっちゃうんだから、人間ってのはすごいもんです。

自分がすごいんじゃなくて、だれでもそうなんだと思います。人間ってのはすごいんですね。

 

為せば成る、なんですね。

 

ですので、少しずつ勉強しましょう。

ビットコインのはじまりは、サトシ ナカモトなる謎の日本人(日本人でないという説もあり)が、残した論文が、はじまりと言われています。

その論文は、「Bitcoin: A Peer to Peer Electronic Cash System」という論文だそうです。

 

いまの、ブロックチェーンのシステムを、このサトシナカモトがすべて作ったわけでは、ないようですが、論文のタイトルに、

“Peer to Peer “という言葉が入っていますね。これが、分散管理するという元になっているのですね。

 

それで、ブロックチェーンの技術は、”分散型台帳管理”の技術と言われるわけです。

要は、1つのサーバー等に集中管理されるわけではなく、個々のコンピュータに分散管理されているということになりますね。

 

ネットワークにつながったコンピュータに、同じ台帳が、保存されていることになります。

ですので、1つのコンピュータをハッキングして書き換えたとしても、他のコンピュータに同じデータがあるので、

 

このデータ違うよ、となって、書き換えることができないわけです。

しかし、この分散管理しているコンピュータすべてを書き換えれば、改ざんできるわけです。

 

事実上不可能ですが、”51%攻撃(51%Attack)”という方法がある、と言われています。

 

 

<↓2019年1月17日追加記事>
51%攻撃は事実上不可能と思っていましたが、イーサリアムクラシックで発生したというニュースが最近でています。

また、前にもモナコインで発生したニュースを見ました(台帳に記載されるタイムラグを利用した方法で51%攻撃)。モナコインの場合は、システムの穴をついた特殊な51%攻撃でしたが、通常は、51%買い占めることができない、ということで不可能なわけですが、総資産が少ない仮想通貨なら十分ありえてしまう、ということになります。したがって、マイナーコインを買う場合は、十分ありうる、という認識で取引しないといけない、ということになります。困ったものですね。

 

 

いわゆる半数以上を改ざんしてしまえば、改ざんされていない方が間違ったデータとなってしまうわけですね。

しかし、事実上不可能な状況になっているわけです。これ、株式保有割合に似ているかもしれませんね。

ありえないとも言えないかもしれませんが、実際には、改ざんすること自体ができないと思われるわけです。

そこに暗号技術があるからですね。ハッシュ関数なるものが、登場するわけです。

 

ハッシュ関数とは、なんぞや?となるわけです。

 

これ、暗号学なる学問分野があるようですね。軍事関連でアメリカで発展したもののようですね。

アメリカの国家安全保障局(NSA)で発明されたようですね。

 

日本が戦争に負けたのは、暗号がばればれだったため、とも言われていますね。

戦艦大和がどう動くか、まるわかりだったようですね。アメリカってのは、昔からすごいもんですよ。

いまは、アップル、グーグルとITの先端技術をいってるのもアメリカ企業ですからね。

それはさておき。

 

ハッシュ関数にはいくつか種類があるようですが、SHA-1というものが、まずでてきますね。

このSHAというのは、Secure Hash Algorismの略で、まさにハッシュ関数という意味なんですね。

関数というよりも、ハッシュプログラム、といったところでしょうかね。

 

“Hash”というのは、英語で”こま切れ肉”といった意味のようです。ハッシュドビーフのハッシュってのと同じ意味なんでしょう。

原形がわからないように細切れにする、というような意味なんでしょう。

このSHA-1ってなんなの?ということですね。

 

これ、理論はさておき、SHA-1という暗号化プログラム(ハッシュ関数を計算するプログラム)を使って文章を文字列に変換できるんですね。

下記のサイトで、SHA-1で文章を暗号化すると、どういう文字列になるか確認できます。

http://www.convertstring.com/ja/Hash/SHA256 ←ハッシュジェネレータなるサイト

どんな文章でも変換できますね。長い文章でも短い文章でも、変換後は、64個の文字列になります。

そして、1文字でも元の文章が異なると、異なる64個の文字列になります。

 

たとえば、太郎と次郎を暗号化してみましょう。

“太郎”をハッシュ関数で暗号化↓

3E63216AEC8DBDF61F8A4E80BAB42F3A30AB9C58EBF824B5AF7241C6E30988ED

“次郎”をハッシュ関数で暗号化↓

3F46E8D95187FE3F7ACF97F7703CFA381E61F47CD11EC7EA8D7C9E29D8F4EF05

と違っています。これ、2次元バーコード(QRコード)変換に似てますね。

 

どんな文字列でも違ったQRコードにできますね。まあ、ある種、暗号化でしょうね。

 

これはさておき、

元の文章が1文字でも違えば、ハッシュ関数で変換後の文字列は、まったく違うものになります。

ですので、元の文章を変えることができない、ということですね。

 

変換後の文字列は、分散管理されていますから、改ざん不可能なわけです。

しかも、変換前の文章を書き換えれば、変換後の文字列が必ず変化しますから、わかるわけです。

 

当たり前なのですが、そういうことで改ざんが不可能なわけですね。

おおよその理屈はそういうことでしょう。

 

では、どんなデータをこのハッシュ関数で変換しているのかですね。

元のデータはなんなのか?

 

これを、”トランザクション”といいますね。”取引”のことです。

このトランザクション、どういうデータなのかというと、

 

下記の4つの項目で構成されているとのことです。

(1) UTXO(Unspent Transaction Outputの略、未使用の取引の出力という意味)

(2) OUTPUT(取引の出力、つまり送金したというデータのこと)

(3) INPUT(取引の入力、つまり入金されたというデータのこと)

(4) META DATA(メタデータ、データがどんな種類のデータかを説明したデータのこと(データの容量、データID))

 

※タイムスタンプという時間のデータも入ります。これが意外とややこしい。改ざんという点では非常に重要。

 

ここで、(1)のUTXOってのがくせものですね。わかりにくい。

このUTXOてのは、ウォレットのことを意味するようです。

 

要は、仮想通貨は、ウォレットがないとコインを保有できないのですが、ウォレットというのは、取引のデータそのものを

意味していることになりますね。ウォレット(財布)という言い方をして、お金のイメージになるわけですが、

収入と支出の差額を誰がもってるのか、というデータということだと思います。まだ使っていない額のデータということですね。

 

これは、わかりにくいのです。お金として、この方法を使っているからこういう概念になるわけですが、まったく違うものに

応用した場合は、これは、ウォレット(財布)ではないわけですね。

 

このトランザクション(取引)データを使って、ブロックを作るわけですね。

ブロックは、このトランザクションのハッシュ値と、直前のブロックのハッシュ値の2つをハッシュ値にするわけですね。

 

ですので、ブロックには、2つのハッシュ値があることになります。

(1)今回の取引データのハッシュ値

(2)直前のブロックのハッシュ値

 

一番最初のブロックは、直前のブロックがありませんので特別なものになりますね。Genesisブロック(起源ブロック)と言われます。

これについても、技術的な話がでてくるわけです。

 

とにかく、直前のブロックのハッシュ値が入っているので、つながっていくわけですね。

そんな難しい話ではないのですが、いままでなかったシステムということで画期的と言われているわけです。

 

おおよその概要は、こんなところだと思いますが、これが具現化するともっと難しいことになるようですね。

ブロックチェーンのシステムには、マイニングという検証・承認作業があるわけです。

こういったものもあるので、信頼性が非常に高いわけですね。

 

この書籍を購入して勉強してみました。非常にわかりやすく勉強になります。

ブロックチェーンの技術的なことを理解したいのであれば、この本がおすすめです。

まあ、抽象的な本ばかり読んでも、頭からぬけてしまうので、この本でソフトとプログラムをさわってみるのが

いちばん理解できますね。

 

228ページから、”ERC20準拠のトークン作成”という部分があります。

この通りやってみると、いわゆるICOトークンが作れます。ERC20は、イーサリアムのブロックチェーンを利用したトークンです。

 

ERCというのは、Ethereum Requests For Commentsの略です。

Truffle(トリュフ)というソフトを利用すると簡単に作成することができます。

(設定等で間違えるとややこしくなりますが、プログラムコードなどは複雑ではなく問題ありません。ただ書き写すだけです。)

手順をざっと記載してみます。

 

Truffleでプロジェクトファイルを作成して、OpenZeppelinというライブラリをインストールします。

プロジェクトファイルにSolidityプログラム(Solidityというのはプログラミング言語です)の記載を追加、

JavaScriptプログラムの記載を追加します。

 

これは、本に記載されている通り入力すればいいだけです。

Geth(Go Ethereum)というソフトで、ローカル環境にブロックチェーン(プライベートネット)を作成して、

デプロイしてテストします(ローカル環境でテストをするということ。デプロイとはプログラムを設置すること。)。

 

そのあと、イーサリアムのテストネットにデプロイします(ネットワーク環境でのテスト)。

実際に仮想通貨として取引されれているブロックチェーンは、メインネットと言われるブロックチェーンです。

テストネットは、それと同等の機能をもつ、テスト用のブロックチェーンです。

 

仮想通貨であるトークンを送金するには、手数料であるGasというものが必要なので、メインネットでやると

Gasで実際に取引されているイーサリアムが必要ですので、お金がかかります。

 

最終的にICO等でつかうためには、取引されているイーサリアムと交換する必要があるのでメインネットでやらないとなりません。

 

しかし、テストネットは、テスト用のブロックチェーンなので、イーサリアムのGasはかかりますが、テスト用の

イーサリアムなので、Faucetという方法でただで手に入れることができます。

 

それでテストネットにまずデプロイします(Infraという無料のWebサービスがあり、これを利用することでブロックチェーンに同期してデプロイできるようにしてくれるようです)。メインネットにデプロイするのも同じ方法でできますので、テストネットにデプロイできれば、完成です。

 

META MASKというGoogle Chromeのウェブアプリがあります。これは、無料で入手できるイーサリアム用のウォレットです。

デプロイ後は、このウォレットで送金確認などをすることができます。

 

 

実際に作ってみました。”LOTO7″というトークンを作ってみました。1コイン(1トークン)の単位は、LT7です。

1コインは、1 LT7となります。これを買う人がいれば、儲けることができます。

 

ですので、これが、なにに使われるのか確認しないで買ってはいけません。いくらでもつくれますから。

意味不明のコインをつくって、だまして儲けるICOがあとをたたないのは、お金をかけなくてもトークンが作れることを知らないからですね。

 

このコインただですよ。なにかに使えば意味がでてくるのです。

なにも使われなければ、ただのデータにすぎません。

 

何コイン作っても、作るのにお金はかかりません。今回10億コイン作ってみました。

ちなみにロト7の当選最高金額が10億円ですね。

 

イーサリアムのブロックチェーンの情報をみることができるEtherscanのリンクはこちら

 

↓Etherscanの画面。LOTO7トークンのブロックチェーンの情報を見ることができる。

 

 

 

 

 

 

 

 

 

 

 

 

LOTO7トークンが、テストネットワーク(Ropstenというテストネット)に確かに存在していますね。

META MASKにLOTO7トークンを追加した画面のコピー。残高が10億コインあります。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

しかし、この仮想通貨(トークン)は、なにかに使うこともできますね。

 

たとえば、このトークンとなにかを交換できますよ、といって売る、ということは可能です。

その場合、この仮想通貨をもっていれば、銀行振り込み等が必要なくなるので、振り込み手数料の節約にもなるし、

 

個人情報(個人の名前はわかりません。アドレスのみしかわかりません)を秘密にすることもできます。

そういう意味では、このトークンを単に売るということならば、詐欺ですが、なにかに使うための仲介として使うのであれば、

便利なものになるのでは、と思います。

 

ですので、このサイトでもなにか仲介するものとして使ってみたいとも考えていますが、仮想通貨自体がもっと普及しないと

だめですね。仮想通貨が詐欺やハッキングの温床になっていて、使いにくいとなれば、ユーザーが少ないので、やるメリットが

なくなります。ほんとうに、仮想通貨犯罪がなくなればいいのに、と思います。こういう犯罪者のせいで技術が終わってしまう

可能性もありますからね。

 

<このサイトで作った仮想通貨を使う方法案>

いまは、予測情報を20回分すべて購入という販売方法にしていますが、この仮想通貨を20枚販売して、購入したい回だけこの仮想通貨で購入してもらう、という方法があります。

送金は簡単ですから、送金元アドレスとメールアドレスがひもづいていれば、締め切り時間を決めておけば、購入したい回だけ、仮想通貨を送金して、予測情報を購入することができます。現金の送金は、手数料がかかりますので、少額の送金は無駄が多すぎますが、仮想通貨なら手数料がほとんどかからないのでいいですね(テストモードで使えば手数料はただですね)。

 

 

コインチェックのCOO(最高執行責任者)を務める大塚氏の著書。

ブロックチェーンの概要が分かりやすく解説されています。まずは一読する価値あり。

 

DMM.comの研究者が著者の書籍。

かなり詳しく書かれた大型本。これを一通り理解できれば、応用に進めると思います。