ブロックチェーンで仮想通貨つくってみた
背景
ビットコインのソースを見ても、既に文系の私には理解不能で全くcontributeできなそうなので、地道にゼロから作ってみることにした。
やること
ハッシュ関数(※2重のSHA256)に下記3つの引数を渡し、戻り値(16進数表記)の頭N桁が0になるまでnonceを0から順に入れまくる。(N桁が0になった時点で、これが新規ブロックのハッシュとなる)
- 直前ブロックのハッシュ
- 加えたい取引のハッシュ(Merkle Root)
- nonce(32bit乱数)
※hashlib.sha256(引数str)で計算できる模様。
しかし、nonceを全て試してもN桁が0になることはあまりないので、Merkle Rootをcoinbase transactionという採掘者が任意で設定できる値を書き換えて変更する。変更すると2の35乗分の1くらいの確率で新しいハッシュが手に入るらしい。
N桁は、現在17桁のようだ。↓下記サイトで現状確認可。
Bitcoin Block Explorer - Blockchain
この桁数は、採掘難易度dによって変わっていく。発掘難易度は発掘頻度が10分になるように調整するための値で、初期の1/d = 10分 となるような値になっている。
現在は475,705,205,061.63。
・・・
結果
仕組みを理解するために体力を使い果たしてしまったので、また後日改めて作り始める。
余談だが、bitcoinを使ったアプリのテスト環境というものがある。仮想通貨自体ではなく、bitcoinを使ったアプリを作る場合は、こちらを利用できる。
ロボアドバイザー作ってみた
背景
GS社がロボアドバイザー開発者を募集しているということなので、何ができれば(高給で)雇ってもらえるのか考えてみた。
前回のあらすじ
bitFlyerのAPIでシステムトレードを行う準備を整えた。
Open Exchange Ratesで為替の時系列データを持ってくれば、テクニカル分析ができる・・・ッというところで力尽きた。
今回の試み
OERのAPIを利用して、自動売買に必要な指標を計算し、BFの取引に反映させる。
月間1,000リクエストまでなら無料のAPIである。
やったこと
早速無料アカウントを発行して、現在のレートを取得。
無料アカウントはUSDベースでしか取得できないので、BTC/USDとJPY/USDを使って、BTC/JPYを計算した。
異変
時系列取得APIで、移動平均を計算する関数を書いたところで、401しか返ってこない異変が。
おや…
どうやら課金しないと使えないAPIだった模様。せっかく作ったし、課金してしまえと思って料金プランへ…
ふ
ふえぇ…
これは『覚悟して来てる人』にしかポチッと払えない金額…
今後の展望
ご興味ある方ご連絡お待ちしております。