Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

【ビットコインとか勉強会#1】トランザクションを読み解く

661 vues

Publié le

2016-09-20に行われたビットコインとか勉強会#1の資料です。

Publié dans : Logiciels
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

【ビットコインとか勉強会#1】トランザクションを読み解く

  1. 1. トランザクションを読み解く - bitcoin-cliで遊ぼう - 2016-09-20【ビットコインとか勉強会#1】 ceres Inc. 村田智英
  2. 2. 村田智英 - ソフトウェアエンジニア(Web系) - 株式会社セレス所属 @Derorisan https://www.facebook.com/tomohide.murata.1 Bitcoin界隈は4ヶ月目ぐらいの新参です。
  3. 3. what’s bitcoin
  4. 4. bitcoinで出て来る主なワード - ノード - ウォレット - ブロック - トランザクション - ビットコインアドレス
  5. 5. ノード P2Pネットワークのためサーバ、クライアントという概念がしっくり来ないので、 それぞれのパソコン(サーバでも)がノードとなります。 大まかに下記のノードタイプがあります。 - ウォレット - マイナー - フルブロックチェーン - ルーティングノード
  6. 6. ウォレット - 日本語でお財布 - 入出金に使用するビットコインアドレスなどを管理しています。 - ノードの機能の一部です。 - bitcoindではBerkeley DB4.8が使用されています。
  7. 7. ブロック - ブロックチェーンのブロックのこと - 中身 - ブロックサイズ - ブロックヘッダ - トランザクションのデータ ブロックヘッダにはいわゆるチェーンの肝になる親ブロックのハッシュなどが入 っています。
  8. 8. トランザクション 今回のメインテーマ 誰がどこにいくら送金するかのデータが入っています。 - 入出金履歴そのもの - インプットとアウトプット(ビットコインアドレスと金額が入る) - ウォレットの秘密鍵を使って署名される - ブロック内に保存されます - 未使用トランザクションアウトプット(UTXO)をみんなで消費していきます。 unspent transaction outputの略
  9. 9. bitcoin-cli - bitcoindはJSON-RPCで操作する - それをいじくるクライアントツール - 本家からDLしてインストールすればOK https://github.com/bitcoin/bitcoin - 手順の参考にどうぞ。http://qiita.com/murata- tomohide/items/a165ac2ad6a617b859df
  10. 10. コマンド使い方 $ /opt/bitcoin/bin/bitcoin-cli -conf=/opt/bitcoin/etc/bitcoin.conf help == Blockchain == getbestblockhash getblock "hash" ( verbose ) getblockchaininfo getblockcount getblockhash index getblockheader "hash" ( verbose ) getchaintips getdifficulty getmempoolancestors txid (verbose) ~snip; 詳しくはこちら https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_calls_list
  11. 11. 今回使うコマンド - getrawtransaction "txid" ( verbose ) - トランザクションのrawデータを返す。 - decoderawtransaction "hexstring" - rawデータをデコードしてjson形式にしてくれる。
  12. 12. let’s try
  13. 13. 中身まとめ1 - txid トランザクションID - hash - size トランザクションのサイズ - vsize - version 仕組みのバージョン。今のところ1固定(たぶん) - locktime 大体0。500,000,000以下の時にはブロック高として解釈されてソレより前のブロックには取り込まれない。ソレ より大きい場合にはunixタイムスタンプとして解釈されて、その時刻より前にコレが有効ではなかったことを意味する。 未来の時刻になっている場合にはソレまでまってからネットワーク全体に送信する。
  14. 14. 中身まとめ2 インプット - v in (インプットのこと)複数に分かれることもあります。 - txid UTXOトランザクションのハッシュ - vout - scriptSig unlocking Scriptのこと。後述のlocking scriptと組み合わせて有効性を確認します。独自の言語で入っています。 スクリプト言語というとperlとかphpを想像しますが、ちょっと違う言語です。とはいえ解説すると長いので、詳しくはま た今度。 - asm スクリプトが入ってる。 - hex ここからdecodescriptコマンドを使ってasmが見れます。 - sequence 何故か今のところ固定。
  15. 15. 中身まとめ3 アウトプット - v out アウトプットデータ - value 金額 - n 順番 - scriptPubKey locking scriptのこと。同じくhexでデコードできます。 - asm - hex - reqSigs - type locking scriptのタイプ。マルチシグを使うとmultisigとかになる模様。詳しくは https://github.com/bitcoin/bitcoin/blob/master/src/script/standard.cpp#L24 辺りを参考に。 - addresses 送金ビットコインアドレス(複数)
  16. 16. まとめ - トランザクションは署名される - インプットとアウトプットが入っている - トランザクションIDはtxid って名前がついてる - bitcoinにはいっぱいidがあるので注意 bitcoinアドレスやブロックアドレスな ど
  17. 17. ご清聴ありがとうございました。

×