2019-02-01から1ヶ月間の記事一覧

Satoshi Nakamotoのgenesisブロックメッセージ

ブロックチェーンのgenesisブロックといわれるSaoshi Nakamotoが作った一番最初のブロックのに刻んだメッセージをプログラムでみてみましょう。 ちなみにこのgenesisブロックは、libbitocoinのソースに組み込まれているそうです。 mastering bitcoinのソース…

トランザクションの優先度

試しにマイニングのプログラミング組みたいな~ということで、マイニング周りをマイニングっと。 トランザクションの優先度 マイニングする際、トランザクションの優先度 Priority = Sum( Value of input * Input Age)/Transaction Size 新しく小さいvalueイ…

generationトランザクション

generationトランザクション ブロックの最初に追加されるトランザクション。 マイニングの報酬(今は12.5bitcoin) + トランザクションから得られた総トランザクション手数料 をマイナーのアドレスに送るトランザクションを入れる。 インプットとしてUTXOを…

マークルツリー

ちょくちょく出てきたけど、よくわからなかったマークルツリー そんなに難しいものでもないんですね。 マークルツリー トランザクションAを2回SHA256にかける。それをHaとする。 また、トランザクションBを2回SHA256にかけたものをHbとする。 次は、Ha+Hbを…

ビットコインブロックの構造

ビットコインのブロックの構造のまとめ ブロック構造 サイズ フィールド名 説明 4バイト Block Size この次のフィールドからブロックの最後までのデータサイズ(バイト単位) 80バイト Block Header nonceなどいくつかのフィールドがこのヘッダフィールドに…

トランザクションscript

ビットコインは、locking scriptとunlocking scriptで有効性をチェックする。 locking scriptはアウトプットに置かれている解除条件で将来アウトプットを使用する際に満たさなければいけない条件 scriptは、ほぼほぼハッシュ値だが、逆ポーランド記法で書か…

Vanityアドレス

Vanityアドレスとは、人が読めるまたは意味のある文字列を含むアドレスのこと。 例えば、 1deconstructionxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx とかです。 アドレスは、最後にハッシュ関数を使っているので、メールアドレスのようにほしいアドレスを簡単にとる…

開発環境CLionとPyCharmのインストール

しばらく、ビットコインのフォーマット、構成の話が主だったので、気分転換に開発環境として C++で評判のよいCLionとPythonで評判の良いPyCharmをインストールしてみました。 CLionのインストールと起動 $ wget https://download.jetbrains.com/cpp/CLion-20…

非決定性ウォレットと決定性ウォレット、HDウォレット

ウォレットの種類をっと ウォレットの中に秘密鍵を複数入れれるんだけど、その入っている秘密鍵同士の関係性で 大きく2つの種類のウォレットに分かれるみたい。 非決定性(nondeterministic)ウォレット ウォレットの中の秘密鍵がランダムで、秘密鍵同士に関…

Bitcoin Explorerのインストール

データの変換とか細かいことをやるには、Bitcoin Explorerがいいとのことでインストール Bitcoin Explorerのインストール ソースのコンパイルには、めっちゃ時間かかったので、バイナリをダウンロードがいいかと。 $ mkdir bx $ cd bx $ wget https://github…

ビットコインアドレス

ビットコインのアドレスってどうやって生成されるのか疑問だったんですが、 Mastering bitcoinの続きにちゃんと載っていました。 ビットコインアドレス ビットコインアドレスは、簡単に言うと公開鍵のハッシュ値です。 ウォレットの公開鍵 ↓ SHA-256ハッシュ…

トランザクションの生成からビットコインの送信まで

今日は、いよいよビットコインを送信してみます! 送信するには、bitcoin-cliコマンドでは、ちょっと手間がかかります。 メインのマシンのノードからサブのマシンのノードへの送金が目標。 1.トランザクションの生成 ビットコインの送信をするために、まずは…

ビットコインのブロックをみてみる

自分の取引したトランザクションを見てみたので、それが格納されているブロックをみてみる。 getblockメソッドにブロックの値をいれて $ bitcoin-cli getblock 00000000000000082ab84277aadf237ce04f6d70b38caca05cec9da2ee3842e3 { "hash": "00000000000000…

トランザクションを見てみる

昨日、ようやくビットコインをゲットできたので(テスト用だけど) その取引の内容をみてみる。 1.トランザクションのリストを見る 自分が取引したトランザクション全部?をリストでみるには、 listtransactionsメソッドを使って $ bitcoin-cli listtransact…

ビットコインアドレスとテスト用ビットコインをゲット

電子メールにメアドがあるように、ビットコインを受け取るためのアドレスがあります。 作り方は簡単 $ bitcoin-cli getnewaddress test 2N3byN8F5qWyqD4g9youtAMpRtDHYQm9Bkw 以上、これだけ ひとりでいくつでも作ることができます。 このアドレスってウォレ…

ビットコインウォレット(お財布)の作成

bitcoindは、フルノード(って言うんだっけ)なので、世界の全部のブロックをためるからか、めちゃくちゃディスク食いますね。。 最初40Gにしてましたが、ディスクを200Gまで拡張させました。 さてさて、今日はビットコインのお財布となるウォレットの作成で…