読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

Bitcoin 技術情報まとめを公開した。とりあえず分かったところまで。

bitcoin.clock-up.jp
↑というサイトを設置した。

Bitcoin の仕組みに興味があって、ここ数週間ずっと Bitcoin の学習・解析を行っていた。

本当はもっともっと掘り下げてから公開したかったんだけど今現在頭がヒートアップしていてちょっと休みたいのと、そのうち放り投げて日の目を出ない可能性もあるので中途半端だけど公開してしまうことにした(経験則的に自分はそういう逃げに走ることが多い)。

このサイトを読めば Bitcoin についての何かがすごく分かる、ということはまったくなくて、粒度バラバラの知見というか断片的なメモ書きの集合体みたいなサイトです。インターネットは広大なので足りない情報は他の情報発信者が補完してくれるだろうし、あくまでもこのサイトはある種の集合知の一助にでもなればと思う。

日本語の Bitcoin 技術情報について

去年、Bitcoin の技術に触り始めた頃、Bitcoin 技術解説にフォーカスした情報サイトがあまり無いなーと思っていて、当初はならば自分が一番詳しい日本語サイト作ってやる!って息巻いてたんだけど、割とちゃんと探してみるとけっこう詳しいサイトがポロポロ見つかったりして、あー俺のアンテナ精度が悪かっただけかー、、日本一の座は未来に保留しよう、と思った。

参考にしたサイトおよび書籍は以下。


あとソースコードを読んだりとか。


圧巻されたのは id:peryaudo 氏による トップ - ビットコインの仕組み:Bitcoinを技術的に徹底解説! で、このサイトは 2014年3月に公開されているのだが、これは Mastering Bitcoin (現時点ではおそらく最も詳しいであろう技術解説書) が登場する2014年12月よりも先駆けている。

実際どうやって学習したのかと聞いてみたところ、

やはり論文とソースコードおよびWikiくらいが情報源なのである。
僕は正直 Mastering Bitcoin の存在がなかったら腰も持ち上がらなかった。

彼は学生である。


僕はニュー・ジェネレーションに殺される日も近いな、と思った。

自分の学習と研究手法について

  • やはりまずは解説サイトや解説本を読み漁ること。
  • そして実際にプログラムを動かすこと。
  • あとプログラムのソースコードを読むこと。
  • あとソースコードをちょっと改造したりステップ実行したりして動作の流れを脳内ではなくデバッガ上で追うこと。

ちなみにステップ実行の方法であるが、自分の場合は Linux 上でデバッグビルド(--enable-debug)した bitcoind を WindowsVisual Studio から WinGDB という拡張経由でアタッチしてステップ実行したりしていた。このデバッグ環境はなかなか快適だった。

以下は https://github.com/bitcoin/bitcoin/blob/master/src/arith_uint256.cpp をステップ実行しているところ。
f:id:kobake:20170109124702j:plain:w700

あとは画面ばっか睨めっこしてても埒が明かないときはソースコードをプリントアウトしてペン入れしたりするとなかなか理解が捗ったりする。
f:id:kobake:20170109125412j:plain:w700

おまけ:関係ない知見「伝播」と「伝搬」


そんなわけで今回作ったサイトでも「伝播」は使わずに「伝搬」を使うことにしました。

おわり

以上、とりあえず http://bitcoin.clock-up.jp の設置報告まで。

本当は圧巻の技術情報網羅サイトを仕上げた上でご高説を垂れ流したかったのだがご高説を垂れ流せるほど情報がまとまる前に力尽きたのでもう僕はただサイトをインターネットの海に浮かべるだけ浮かべて布団に潜り込むしかないです。おやすみなさい。



三(:3[___]

});