bitcoin.clock-up.jp
↑というサイトを設置した。
Bitcoin の仕組みに興味があって、ここ数週間ずっと Bitcoin の学習・解析を行っていた。
本当はもっともっと掘り下げてから公開したかったんだけど今現在頭がヒートアップしていてちょっと休みたいのと、そのうち放り投げて日の目を出ない可能性もあるので中途半端だけど公開してしまうことにした(経験則的に自分はそういう逃げに走ることが多い)。
このサイトを読めば Bitcoin についての何かがすごく分かる、ということはまったくなくて、粒度バラバラの知見というか断片的なメモ書きの集合体みたいなサイトです。インターネットは広大なので足りない情報は他の情報発信者が補完してくれるだろうし、あくまでもこのサイトはある種の集合知の一助にでもなればと思う。
日本語の Bitcoin 技術情報について
去年、Bitcoin の技術に触り始めた頃、Bitcoin 技術解説にフォーカスした情報サイトがあまり無いなーと思っていて、当初はならば自分が一番詳しい日本語サイト作ってやる!って息巻いてたんだけど、割とちゃんと探してみるとけっこう詳しいサイトがポロポロ見つかったりして、あー俺のアンテナ精度が悪かっただけかー、、日本一の座は未来に保留しよう、と思った。
参考にしたサイトおよび書籍は以下。
- ビットコインはどのようにして動いているのか? ビザンチン将軍問題、ハッシュ関数、ブロックチェーン、PoWプロトコル Kindle版
- とっかかりがまずこれ。これは技術者でなくてもなんとか読める内容でありながらけっこう仕組みの話に踏み込んでおり納得のいく一冊だった。(しかし文章が縦書きなのが解せぬ。まぁ読み物という括りなのだろう)
- Satoshi Nakamoto 論文
- https://bitcoin.org/bitcoin.pdf … 原文(英語)
- 日本語で読むビットコイン原論文 [by Satoshi Nakamoto] | coincheck(コインチェック) … 日本語訳
- 日本語訳があるので原文は読んでないが。ちょくちょく数式なども出てくるが文量自体は多くないので流し読みくらいはしておくと良いと思う。
- オライリー本「Mastering Bitcoin」の各言語翻訳版(日本語版もある)
- Translations of Mastering Bitcoin | Mastering Bitcoin
- これは技術を触るなら必読。おそらく現時点(2017年1月)で最も詳しい技術解説書だと思う(少なくとも日本語で読める範囲内においては)。
- Bitcoin日本語情報サイト ~ 仮想通貨(暗号通貨)ビットコインのチャート・入手・使い方等日本語解説サイト
- Bitcoin 利用者向け (主に非技術者向け?) まとめ
- Bitcoin カテゴリーの記事一覧 - Develop with pleasure!
- id:techmedia-think 氏の技術解説ブログ記事。めちゃくちゃ記事数多い(正直読み切れてない)。
- トップ - ビットコインの仕組み:Bitcoinを技術的に徹底解説!
- id:peryaudo 氏による技術情報まとめサイト。Ruby によるウォレット実装サンプルあり。
あとソースコードを読んだりとか。
圧巻すべきは id:peryaudo 氏による トップ - ビットコインの仕組み:Bitcoinを技術的に徹底解説! で、このサイトは 2014年3月に公開されているのだが、これは Mastering Bitcoin (現時点ではおそらく最も詳しいであろう技術解説書) が登場する2014年12月よりも先駆けている。
実際どうやって学習したのかと聞いてみたのだが、
@kobake_ 読んでいただきありがとうございます。そうですね、まだどの書籍も出ていない時期に書いたので元の論文とBitcoin Coreのソースコード(とBitcoin Wiki)で独学しました。2014年の2月ごとに1月半ほどかけて作成しました。
— ぺりゃ (@peryaudo) January 8, 2017
やはり論文とソースコードおよびWikiくらいが情報源なのである。
僕は正直 Mastering Bitcoin の存在がなかったら腰も持ち上がらなかった。
彼は学生である。
僕はニュー・ジェネレーションに殺される日も近いな、と思った。
自分の学習と研究手法について
- やはりまずは解説サイトや解説本を読み漁ること。
- そして実際にプログラムを動かすこと。
- あとプログラムのソースコードを読むこと。
- あとソースコードをちょっと改造したりステップ実行したりして動作の流れを脳内ではなくデバッガ上で追うこと。
ちなみにステップ実行の方法であるが、自分の場合は Linux 上でデバッグビルド(--enable-debug)した bitcoind を Windows の Visual Studio から WinGDB という拡張経由でアタッチしてステップ実行したりしていた。このデバッグ環境はなかなか快適だった。
以下は https://github.com/bitcoin/bitcoin/blob/master/src/arith_uint256.cpp をステップ実行しているところ。
あとは画面ばっか睨めっこしてても埒が明かないときはソースコードをプリントアウトしてペン入れしたりするとなかなか理解が捗ったりする。
おまけ:関係ない知見「伝播」と「伝搬」
Mastering Bitcoin の日本語訳の中で「伝搬」という言葉が使われているのを見て、「ん?」って思ったんだよね。「伝播」は見たことあるけど「伝搬」はこれまで見たことなかった。https://t.co/DXb5hWDZfM
— こばやん (@kobake_) December 28, 2016
@ufcpp おお。そもそも「播」って漢字、普通に考えると馴染みがなさすぎるので「搬」のほうがなんかマイルドで発音もしやすくて良い気がしてきました。
— こばやん (@kobake_) December 28, 2016
@kobake_ いまwikipedia見て「何言ってんだ」と思った https://t.co/NGJHvNmKQh電波伝播 pic.twitter.com/fRnfhEDadE
— くま害 (@tinbotu) December 28, 2016
電波法の中では「伝搬」の用語が使われているので法律用語でもあるし、無線の界隈では「伝搬(でんぱん)」は広く使われる用語ですねhttps://t.co/i8CosfVaPQ https://t.co/Z7fSV9Q2G4
— s/v (@sockety_v) 2016年12月28日
@kobake_ 無線の世界は「音声のみ、口頭伝達のみ」という場面が多くて(というかそういう時代が長くて)、その際に伝達ミスをなくすことが重視されるので、「でんぱ」と言うと電波のことを言ってるのか伝播のことを言ってるのか分からないってことで「伝播」は避けられやすい用語です
— s/v (@sockety_v) 2016年12月28日
そんなわけで今回作ったサイトでも「伝播」は使わずに「伝搬」を使うことにしました。
おわり
以上、とりあえず http://bitcoin.clock-up.jp の設置報告まで。
本当は圧巻の技術情報網羅サイトを仕上げた上でご高説を垂れ流したかったのだがご高説を垂れ流せるほど情報がまとまる前に力尽きたのでもう僕はただサイトをインターネットの海に浮かべるだけ浮かべて布団に潜り込むしかないです。おやすみなさい。
三(:3[___]