プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法

Book description

本書は、ひとつのビットコインライブラリに必要なすべての要素を実際にコーディングすることで、ビットコイン技術の理解を深めることを狙いとした技術学習書です。ゼロから順を追ってビットコインライブラリを作成していくことで、その内部構造を紐解き、ビットコインの動作を学ぶことができます。本書で学び終える頃には、トランザクションの作成ができるようになるのはもちろん、必要なデータをピアから受け取り、ネットワーク経由でトランザクションを送信できるようになります。数学、パース、ネットワーク接続、ブロック検証をはじめ、それらを可能にするために必要なものすべてを網羅しています。

Table of contents

  1.  大扉
  2.  原書大扉
  3.  クレジット
  4.  本書によせて
  5.  はじめに
  6.  1章 有限体
  7.   1.1 高等数学を学ぶ
  8.   1.2 有限体の定義
  9.   1.3 有限集合の定義
  10.   1.4 モジュロ演算
  11.   1.5 有限体の加算と減算
  12.   1.6 有限体の乗算とべき演算
  13.   1.7 有限体上の除算
  14.   1.8 べき演算の再定義
  15.   1.9 まとめ
  16.  2章 楕円曲線
  17.   2.1 定義
  18.   2.2 Pythonで楕円曲線をコーディング
  19.   2.3 点の加算
  20.   2.4 点の加算の数学的解説
  21.   2.5 点の加算のコーディング
  22.   2.6 x_1\neq x_2のときの点の加算
  23.   2.7 x_1\neq x_2のときの点の加算のコーディング
  24.   2.8 P1=P2のときの点の加算
  25.   2.9 P1=P2のときの点の加算のコーディング
  26.   2.10 特殊なケース
  27.   2.11 まとめ
  28.  3章 楕円曲線暗号
  29.   3.1 実数上の楕円曲線
  30.   3.2 有限体上の楕円曲線
  31.   3.3 有限体上の楕円曲線のコーディング
  32.   3.4 有限体における点の加算
  33.   3.5 有限体における点の加算のコーディング
  34.   3.6 楕円曲線のスカラー倍算
  35.   3.7 数学の群
  36.   3.8 スカラー倍算のコーディング
  37.   3.9 ビットコイン用の曲線の定義
  38.   3.10 公開鍵暗号
  39.   3.11 署名と検証
  40.   3.12 まとめ
  41.  4章 シリアライズ
  42.   4.1 非圧縮SECフォーマット
  43.   4.2 圧縮SECフォーマット
  44.   4.3 DER署名
  45.   4.4 Base58
  46.   4.5 ビッグ/リトルエンディアン再び
  47.   4.6 まとめ
  48.  5章 トランザクション
  49.   5.1 トランザクションのコンポーネント
  50.   5.2 バージョン
  51.   5.3 インプット
  52.   5.4 アウトプット
  53.   5.5 ロックタイム
  54.   5.6 トランザクションのコーディング
  55.   5.7 トランザクション手数料
  56.   5.8 まとめ
  57.  6章 Script
  58.   6.1 Scriptの仕組み
  59.   6.2 Scriptの動作
  60.   6.3 オペレーションの例
  61.   6.4 スクリプトフィールドのパース
  62.   6.5 スクリプトフィールドの連結
  63.   6.6 標準スクリプト
  64.   6.7 p2pk
  65.   6.8 p2pkの問題点
  66.   6.9 p2pkhで問題を解決
  67.   6.10 スクリプトは自由に構築可能
  68.   6.11 まとめ
  69.  7章 トランザクションの作成と検証
  70.   7.1 トランザクションの検証
  71.   7.2 トランザクションの作成
  72.   7.3 テストネットで自分のトランザクションを作成
  73.   7.4 まとめ
  74.  8章 Pay-to-script-hash
  75.   8.1 ベアマルチシグ
  76.   8.2 OP_CHECKMULTISIGのコーディング
  77.   8.3 ベアマルチシグの問題
  78.   8.4 Pay-to-script-hash(p2sh)
  79.   8.5 p2shのコーディング
  80.   8.6 まとめ
  81.  9章 ブロック
  82.   9.1 コインベース・トランザクション
  83.   9.2 ブロックヘッダー
  84.   9.3 Proof-of-Work
  85.   9.4 まとめ
  86.  10章 ネットワーキング
  87.   10.1 ネットワークメッセージ
  88.   10.2 ペイロードのパース
  89.   10.3 ネットワークハンドシェイク
  90.   10.4 ネットワークへの接続
  91.   10.5 ブロックヘッダーの取得
  92.   10.6 ヘッダーレスポンス
  93.   10.7 まとめ
  94.  11章 SPV(Simplified Payment Verification)
  95.   11.1 動機
  96.   11.2 マークルツリー
  97.   11.3 マークルペアレント
  98.   11.4 マークルペアレントレベル
  99.   11.5 マークルルート
  100.   11.6 ブロックのマークルルート
  101.   11.7 マークルツリーの使用
  102.   11.8 マークルブロック
  103.   11.9 まとめ
  104.  12章 ブルームフィルター
  105.   12.1 ブルームフィルターとは
  106.   12.2 BIP0037ブルームフィルター
  107.   12.3 ブルームフィルターの読み込み
  108.   12.4 マークルブロックの取得
  109.   12.5 対象トランザクションの取得
  110.   12.6 まとめ
  111.  13章 Segwit
  112.   13.1 Pay-to-witness-pubkey-hash(p2wpkh)
  113.   13.2 p2wpkhトランザクション
  114.   13.3 p2sh-p2wpkh
  115.   13.4 p2wpkhとp2sh-p2wpkhのコーディング
  116.   13.5 Pay-to-witness-script-hash(p2wsh)
  117.   13.6 p2sh-p2wsh
  118.   13.7 p2wshおよびp2sh-p2wshのコーディング
  119.   13.8 その他の改良点
  120.   13.9 まとめ
  121.  14章 応用トピックと次のステップ
  122.   14.1 今後の学習ガイド
  123.   14.2 コミュニティへの貢献
  124.   14.3 次に取り組むプロジェクト例
  125.   14.4 終わりに
  126.  付録A 解答
  127.   1章:有限体
  128.   2章:楕円曲線
  129.   3章:楕円曲線暗号
  130.   4章:シリアライズ
  131.   5章:トランザクション
  132.   6章:Script
  133.   7章:トランザクションの作成と検証
  134.   8章:Pay-to-script-hash
  135.   9章:ブロック
  136.   10章:ネットワーキング
  137.   11章:SPV(Simplified Payment Verification)
  138.   12章:ブルームフィルター
  139.  監訳者あとがき
  140.  著者紹介
  141.  奥付

Product information

  • Title: プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法
  • Author(s): Jimmy Song, 中川 卓俊, 住田 和則, 中村 昭雄, 星野 靖子
  • Release date: October 2020
  • Publisher(s): O'Reilly Japan, Inc.
  • ISBN: 9784873119021

You might also like

book

ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化

by Ilya Grigorik, 和田 祐一郎/株式会社プログラミングシステム社

現代のアプリケーションエンジニアは、UIやデータ処理、開発言語、プラットフォームの仕様や癖だけでなく、サーバやネットワークについても、上から下まで、表から裏まで広く知ることを求められます。本書は「ブラウザ」に関連し、インターネットで使用されるさまざまなネットワーク技術をまとめたものです。HTTP/2.0やWebRTCなどの最新技術、WebSocketやXMLHttpRequestなどのブラウザAPI、そしてそれらの土台となるTCPやUDPやトランスポート層についてまでを幅広くカバーします。また改善前後の性能・速さを可能な限り具体化し、それぞれの場面においてのパフォーマンス改善幅を示します。

book

行動を変えるデザイン ―心理学と行動経済学をプロダクトデザインに活用する

by Stephen Wendel, 武山 政直, 相島 雅樹, 反中 望, 松村 草也

深津貴之氏推薦!「行動経済学、データ分析、サービス設計のエッセンスが高度に統合された行動変容デザインの良書です」 本書は、行動経済学と心理学をもとに、人々の行動、日常習慣を変える“行動変容”を促すプロダクトをデザインするための書籍です。主にヘルスケア(健康管理)、金融(資産管理)など、これまでITプロダクト(サービス、アプリなど)がなかなか使われてこなかった分野を対象に、ユーザーがやりたいと思っていたものの実行できなかった行動の実現を助けるプロダクトを作り出すための、実践的な視点や知識を提供します。

book

マイクロインタラクション ―UI/UXデザインの神が宿る細部

by Dan Saffer, 武舎 広幸, 武舎 るみ

UIのディテールをほんの少し工夫するだけでUXは劇的に改善します。本書では効果的なマイクロインタラクション――ひとつの作業だけをこなす最小単位のインタラクション――の意味、有効性、デザイン手法を学びます。マイクロインタラクションを「トリガー」「ルール」「フィードバック」「ループとモード」に分解して豊富な実例とともにていねいに解説し、さらにプロトタイプやドキュメント作成、テストといった実践的な手法も紹介します。マイクロインタラクションを活用すれば、ありふれた製品も顧客を引きつける魅力的な製品に生まれ変わらせることができます。ドナルド・ノーマン推薦書!

book

入門 機械学習パイプライン ―TensorFlowで学ぶワークフローの自動化

by Hannes Hapke, Catherine Nelson, 中山 光樹

機械学習を用いた本番システムの構築には、データの前処理やモデルの学習、デプロイなどのステップが必要です。しかし、これらのステップは手動で実行されることが多く、エラーの原因となっています。そこで本書では、TensorFlowのエコシステムを使用した機械学習パイプラインの構築方法について学びます。パイプラインを用いて各ステップを自動化することで、レガシーなシステムの保守から解放され、新しいモデルの開発に集中できるようになります。