min117の日記

初期desireもち。趣味Mac,メインFedora,仕事xp。

Bitcoin ウォレットを実装する(Ruby)

ビットコイン取引高日本一の仮想通貨取引所 coincheck bitcoin

仮想通貨。名前からして胡散臭い。とてもじゃないが関わりたくない。クレジットカードですら嫌いなのに、そんな投機的な臭いのするもには関わりたくないそう思っていた。つい先日までは。

しかし、偶然にも Bitcoin について調べてみて凄さがわかった。何だこれ。考えた人、天才すぎる。投資にはまったく興味がないが、技術的に面白すぎる

www.teradas.net

しかし、始め方がわからない。仮想通貨で取引できるのはいいが、最初の1円(というか1ビットコイン)をどうやって得るのかが分からない。

取引所や銀行から買うということはもちろんできるだろうが、それだと意味がない手数料(というお金)を払ってお金(=ビットコイン)すなわち交換価値を買う、というのは本当に愚かだ。

と思っていたら、仮環境で Bitcoin をお試しできるクライアントアプリがあるらしい。まずはここからやってP2P電子マネー(というか台帳共有システム)を経験してみることから始める。

qiita.com

さらに調べると、最高のサイトを見つけた。

bitcoin.peryaudo.org

なんと、ビットコインウォレット(Simplified Payment Verification、SPV型)を Ruby で実装している。たぶん、書いた人は天才なんだろう。

技術的な解説もとても丁寧。読むのも一苦労だったが、とても面白く読めて、合わせていろいろ調べた。

ブロックチェーンのうち、とあるブロックに含まれるトランザクションの数 N は、二分木は性質としてlog2(N)となるとのこと。何となくわかるけど、二分木を python か何かで実装してみないと、ちゃんと理解できなそうだ。

二分ヒープ - Wikipedia

「対数」なんて高校の時以来だ。

対数の定義

バイトオーダ - ビッグエンディアン/リトルエディアン

SPV型ではなく、サーバクライアント型で一番良さそうなのはこれみたい。

electrum.org

SPV型の Ruby実装 とのことなので、実際に書いて動かしてみる。