Pythonと数学と音楽とetcの落書き帳

かなりテキトーに、断片的に離散的にプログラミングや、音楽やいろいろなことを書いていく。洋楽のレビューのついでにPythonその他のブログや本のノート、備忘録を書いていきます。

ビットコイン、ブロックチェーンを動かすマラソン!!

おはようございます。
抱えていた口内炎も治り、新しい仕事もはじまり、気分一新な朝ですが、

最近自然言語処理のことしか勉強してなかったんですが、春休みそういえばブロックチェーンビットコインアルゴリズムの方も勉強したかったんだってことを思い出しまして。


仮想通貨愛好会にもお声をかけていただいているので、ご期待に添える知識をつけるべく。

Pythonでのブロックチェーンの実装と、Mastering BitcoinとBlock Chainのオライリーの本を一気にバッと今日で読み切ろうかなとか考えています。

でもこういうの勉強してる時話しかけられるの嫌いなんだよな。。
あなたの都合で、僕の神聖なる集中の意識を濁さないでくれ本当にって。なってしまいます。
今日オフィスに人が来たりしたら途中で終えます。

さて!今日読んでいくもの、書籍をご紹介します!
書籍とはいえ、全てネットに落ちているものなので、完全にトレースできます!オライリーは、型落ちの本とか意外とPDFで落ちてるんですよね。
お金がなかったりなんだったりしても、一度はぐぐってみるものです

Pythonのデコレータについて - Qiita

python3でブロックチェーンを作ってみる - Qiita

Translations – Mastering Bitcoin



Introduction

さて!ようやくやくBitcoinのアルゴリズムの勉強に移ります!!オソスギィ!
最近なんだか得体がしれないけど、すごいとか金の数字に目を奪われて思考停止でブロックチェーンビットコインという言葉を使っている人が多いです、。
僕は思考停止でブロックチェーンとかビットコインに手を出すことに反対はしませんが、せめて手を出した後にはもっと勉強すべきだと思います。

成功とかお金儲けは確率的な要素がかなり多いので多分向こう見ずでいろんなことに取り組む人にそういったものが集中するものだと思いますが。
そういうのの確率的な要素を操作するためにはやはり論理的な考え方、基本原理についての知識などが必要になります

僕は、少しでも人生の失敗を減らしたいし(でも失敗などは歓迎すべきもの)苦しい時間を減らして、クリティカルに成功していく時間を味わいたいという欲があるので、しっかり自分の予測の源となるような、脳の筋肉を育てていきたいと思います。

さて!
自然言語処理のようにざっくりと概要と、わからなくてハマったところを要所調べてまとめます。
の前に今日のヘビロテソング。


The Chainsmokers - Inside Out (Audio) ft. Charlee

chainsmorkersエモい。
Inside outで好きになる恋愛って理想ですけど、僕はわりとスタイルとか顔とかから性格を許容していくOutside inな思考が多いんですが、まあ長く続けることとか考えたらやっぱInside outですよねって(多分この曲のmeaningはちょっと違うかも。しらん)

概要と考えたこととか

ブロックチェーンを作ることで学ぶ 〜ブロックチェーンがどのように動いているのか学ぶ最速の方法は作ってみることだ〜 - Qiita

・概要
PythonのFlask, requestsライブラリ使ってブロックチェーン作るよ!!
PoWの実装と、トランザクションの実装をする!

・その他参考
僕はオブジェクト指向プログラミングてのがあんまりよくまだわかんなくて、Classとかも正直ありがたみがいまいちわかってない状況だったんですが、
Pythonのデコレータについて - Qiita
ブロックチェーンクラスのメソッドについてる@マーク。たまにPythonのコードに現れるけどなんなのかしらなかった
デコレーターというもので、関数をなにやら修飾するものらしい(そのまんまやん)
Python
def name():で関数を定義しますが、なにやらその↑に@関数名で、既存の関数で修飾するらしいですね。
関数を関数でデコレートする感じですかね。既存の関数を変更せずに使えるって感じかな
Pythonで classmethod、staticmethod を使う - Qiita
ブロックチェーンの記事には、staticmethod,propertyがデコレータ使って宣言されてますね
その2つもまだよくわからん
し、そんなのまだまだ序の口で、Flask使うあたりからもうさっぱり、githubのコードcloneしても動かなかった。。

python3でブロックチェーンを作ってみる - Qiita

・概要
Pythonでただ時間とかをインプットにハッシュ値を生成するブロックチェーンコマンドラインで動かす!
僕のコマンドラインでも動いた!

Block 1 has been added to the blockchain!
Hash: 199ee2b48adaae1ee3a2764b98e144a4bd4020774ad3d57cc82c304d266c3fb2

Block 2 has been added to the blockchain!
Hash: ad67df2e682f0205ff309e9af37fb39cf78f4b1ec30e8c524056cda294b6c811

Block 3 has been added to the blockchain!
Hash: 85f0b778e00fba0ae64840438c80d16355a97f299a2354f439b92b7af205ea85

生成時の時間とか、ブロックのインデックス、前のブロックのハッシュ値を引数にハッシュを通すのをfor ループしてる

超簡易ブロックチェーンって感じPythonのHash関数のupdateとかようわからんな

・わからない
ハッシュ関数アルゴリズムとか、気になるよね
・参考
14.1. hashlib — セキュアハッシュおよびメッセージダイジェスト — Python 2.7.14 ドキュメント

Mastering Bitcoin

Translations – Mastering Bitcoin
・概要
とりあえず邦訳のもの読みましたが、けっこーHTTPの知識とか、Linuxコマンドとか乗って解説があって、ちょっとそこに触れないように読んで(つまりBitcoinの理論のエッセンシャルなところだけ読んだ)みたんですが、まあほとんどわからん。
やっぱBitcoinのコアなところは暗号理論にもとづいてどんだけ信用されるかってところなんで、あんまり理解できないですねわからない用語ばかりです。

Bitcoinは、金融機関を通さない直接的オンライン取引で、二重使用問題へのソリューションとして革新的な技術であるってところが味噌な気がします。
(紙の紙幣でいう、製造技術、印刷技術を暗号技術によって肩代わりするもの)
数独(Number Place)に似た方法でトランザクションの記録を行うマイニングとか。


トランザクションの仕組みなども、、C++,Pythonのコードで書かれています。(PythonにBitcoin用のライブラリがあるのは知らんかった。)

なんかとにかく暗号理論とHTTPとかネットワークの知識の融合した技術であって、まだまだ理解するには経験と知識足りないなって感じでした。

ハッシュ関数SHA256、公開鍵秘密鍵楕円曲線記号、マルチシグネチャ

おわりに

最近流行りのBitcoinビジネスとか、まあ前からあるんですがバブル的な対象のビジネスに対しては、僕も同じような商材を扱って営業したこともあってすごく思い入れがあります。

馬鹿が馬鹿に対して売るようなビジネスをなくしてフェアな消費活動を行える経済を作りたいなと思います。

学校教育って、手法とか体制に問題がかなりあるんですが、そこでやってるコンテンツ(数学、文学、言語学)ってとても人間の人生を豊かにするのに役立つ宝石のようなものだなと最近思うんですが、
なんかそれが軽視されてるのって、今のビジネスってやっぱITリテラシーのない人々の情報格差につけこんだマーケティングが、簡単でそれなりに成り立ってしまうからだなって思うんです。
もちろんそういった行動力は人間の貴重な部分ではあるんですが、僕は堀江さん(元ライブドア堀江貴文さん)が言うように、もっとフェアな戦いしたいなと。(まあ考えること放棄して人に雇われていきたいとかいう人はおいといて)

現代の流れを読み解いて、自分の人生の時間を投資する対象を選ぶための道標としての学問がもっと尊重されるように、社会の方のリテラシーあげたいなって思いました。

まあこんなこと言っててもしょうがないので、僕が社会的にImpressionを持った人間になれるように、数学とプログラミング(とあわよくば英語コミュニケーション)を武器に戦える人間になれるようにしっかり実践ベースの勉強をしたいと思います。



次にBitcoinの勉強するために読むのはサトシナカモトの原著邦訳にしましょう
http://www.kk-kernel.co.jp/qgis/HALTAK/FEBupload/nakamotosatoshi-paper.pdf
それと、ブロックチェーンの本ですね
http://w2.blockchain-tec.net/blockchain/blockchain-by-melanie-swan.pdf

今日の午後は春休み明けの次の学期に向けて数学の勉強もしておきたいので、がっつり数論の本とか読んで暗号理論と数学への橋渡しをしようと思います。

はじめての数論 原著第3版 発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

はじめての数論 原著第3版 発見と証明の大航海‐ピタゴラスの定理から楕円曲線まで

参考