SlideShare a Scribd company logo
1 of 22
~原理からソースまで~
ビットコインとは? 
•勘違いが多い 
•雑な例え方 
•先入観は捨てて 
•素晴らしく見える 
•理解すれば簡単
ビットコインの始まり 
• 論文は2008年10月31日 
metzdowd.comにて公開 
• バージョン0.1は2009/01/09 
• Windowsのみ 
• CLI無し 
• wxWidgetsとBerkeleyDBと 
Boostを使用 
• MVSでコンパイル 
• 2010年中旬に 
Gavin Andresen & Jeff Garzikに舵を取ってもらった。
現リリースについて 
 ごちゃごちゃになっていたソースのモジュール化 
 ガヴィン氏がリードの座をウラジミール氏に譲渡 
 現在目標は新機能より、ソースの安定化 
 現UIはQt、ストレージはLevel DB 
 「テストネット」と「メインネット」 
 整数は殆どリトルエンディアン、IPアドレスと 
ポート番号のみビッグエンディアン
モジュール 
 P2Pネットワーク 
 採掘アルゴリズム 
 GUI / インターフェース 
 ブロックチェーン 
 取引 
 契約条件 
 ウォレット管理 
 ペイメント(送金)
形成アルゴリズム 
 ハッシュ(SHA-256 & RIPEMD-160) 
 公開鍵vs 公開鍵ハッシュ 
 ECDSA / secp256k1 
 マークルツリー 
 ブルームフィルター
ビットコインのP2Pネットワーク 
 DNSを用いてシードサーバーへ接続 
 1000ピア以下のリストをダウンロード 
 旧バージョンではIRCを使っていた(<0.6) 
 TCP/8333でリッスン状態 
 メッセージの送受信をピアと行う 
 「inv」メッセージで最新状態に 
 ちょうど先日(10/12)にヘッダ先同期が仮実装
取引とは 
 ビットコインの拡張性がここにあり 
 入力と出力の概念 
 コーディングのことを「契約条件」と呼ぶ 
 コード以外のデータも挿入可 
 未使用出力のことを「UTXO」と呼ぶ 
 採掘手数料は出力に当てられていない入力の余分 
 「コインベース」取引は特別
取引を見よう 
TXID: 'B' 
入力1 中の1: 
出力元: TX 'A' (Bob) 
入力額: 5 BTC 
出力1 中の1: 
出力先: Charlieの公開鍵ハッシュ 
出力額: 4 BTC 
採掘手数料: 1 BTC 
コインベースTXID 'A' 
報酬: 25 BTC 
採掘者: Bob 
出力先: Bobの公開鍵 
TXID: 'C' 
入力1 中の1: 
出力先: TX 'A' (Bob) 
入力額: 7 BTC 
出力1 中の1: 
出力先: Aliceの公開鍵ハッシュ 
出力額: 6.5 BTC 
採掘手数料: 0.5 BTC 
UTXO / 残高 
採掘者Bob: 13 BTC 
Charlie: 4 BTC 
Alice: 6.5 BTC 
採掘手数料: 1.5 BTC
取引の連鎖 
TXID 'B' 
TXID 'C' (複数入力) 
Block #300 
(最古) 
コインベース 
TXID 'A' 
Block #301 Block #302 Block #303 
(最新)
取引は契約なり 
 「送金」というのは行為というより記録 
 全取引は契約のように条件が盛り込まれている 
 Forthのようにスタック手法(registerなし)、 
チューリング完全でない 
 StackはLittle Endian、可変長整数、MSBで+-が決まる 
 False = 0、True = 0以外のデータ全て 
 エラーが無く、Stackの最上層がTrueなら成立 
 採掘者は採掘する前に契約のTrueさを確認 
 通常ピアも横渡しする前に確認
契約条件について 
 現在コマンドが100個程度 
 よく使われるのが十数個 
 'standard' vs 'non-standard' 
 四つほどの 
テンプレートが殆ど 
 間違いは巻き戻せない
ブロックとは? 
 承認(採掘)された取引の塊 
 平均的に1ブロック400-600取引程度 
 サイズの上限が1000 KiB 
 コインベース取引が1つ 
 前ブロックのヘッダのハッシュ 
 含まれた取引のマークルルーツ 
 ノンス
ブロックを見てみよう 
Block #299 
ヘッダ 
取引A 
取引B 
取引C 
取引D 
取引E 
取引F 
取引G 
ハッシュに含まれない: 
Magic No バージョン情報 
Blocksize malloc() and sanity 
Transaction count Sanity/speed opt. 
ハッシュに含まれる: 
Version 拡張性を見据えて 
hashPrevBlock 前ブロックID 
hashMerkleRoot 取引の承認 
Time タイムスタンプ 
Target Bits 難易度: 低=難 
Nonce Proof of work
ブロックチェーンとは? 
 特定の順番にあるブロックの連鎖 
 ビットコイン史上全ての取引が含まれている 
 大体33万ブロックでサイズが22GB程度(2014/10/12) 
 ブロック高さが絶対的な時間の位置 
 ブロック深さが最新ブロックに対する相対的な 
時間の位置 
 0.9以降はヘッダのみのSPVモードに対応(26MB程度) 
 ゆくゆくは非UTXOの取引を除く「Pruning」も可能
採掘者の仕事は? 
 ダブルスペンド防止と通貨の発行 
 もらった取引をブロックに入れていく 
 有効なブロックID(ハッシュ)を見つける 
 有効なブロック発見時にネットワークに配信 
 2016ブロック(約2週間)ごとに難易度が自動調整 
 ブロックのハッシュが前ブロックのハッシュに 
依存するため、攻撃者との競争がブロックを 
見つける度に再び0からスタートする
ブロックチェーンの動き 
300 
301 302 303 
304 305 306 
無効なブロック 
報酬無し 
無駄な時間 
= 
採掘者のお金の無駄 
短いチェーンが負ける 
有効なブロック 
=25 BTC の報酬 
ブロック高さ(時間) 
7 ブロック(約70分)
1ビットコインとは何か? 
100,000,000サトシ
サトシとは? 
 未使用出力(UTXO)の出力額 
 公開鍵ハッシュに宛ててある 
 取引の中 
 ブロックの中 
 ブロックチェーンの中
近い将来 
 x.509 とhttp 連動 
 NFC でネット不要 
 BIP 70 (瞬時確認) 
 契約条件解禁 
 サイドチェーン 
 BIPsのGithubを参照! 
https://github.com/bitcoin/bips
スケーリングについて 
 ビットコインは平均1秒1取引のペースで動く 
 今の上限は故意に抑えられた結果 
 本当の一番のネックは取引・ブロックの 
ハッシュ確認の処理時間 
 恐らく一般デスクトップ型のCPUでは 
1秒4,000取引が限界ではないかと 
 ネットワークの速度でいうと16 Mbps 
 ブロックチェーンの膨大化 
 サトシ氏の一番の悩みがネットワークが 
技術的成熟する前に広まりすぎてしまうこと
ご清聴ありがとうございます 
本日受講された皆様限定! 
https://bitbankwallet.jp/ 
ビットバンクウォレットを作成された方に 
もれなくビットコインをプレゼントします!

More Related Content

What's hot

What's hot (20)

今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID今なら間に合う分散型IDとEntra Verified ID
今なら間に合う分散型IDとEntra Verified ID
 
分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要分散型IDと検証可能なアイデンティティ技術概要
分散型IDと検証可能なアイデンティティ技術概要
 
Goで実装した UPSIDERの決済金額リミット機能
Goで実装した UPSIDERの決済金額リミット機能 Goで実装した UPSIDERの決済金額リミット機能
Goで実装した UPSIDERの決済金額リミット機能
 
磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!磯野ー!関数型言語やろうぜー!
磯野ー!関数型言語やろうぜー!
 
これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向これからの KYC と Identity on Blockchain の動向
これからの KYC と Identity on Blockchain の動向
 
Web3 Market Overview Global & Japan
Web3 Market Overview Global & JapanWeb3 Market Overview Global & Japan
Web3 Market Overview Global & Japan
 
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説クソコード動画「Managerクラス」解説
クソコード動画「Managerクラス」解説
 
Ethereumのシャーディング概論
Ethereumのシャーディング概論Ethereumのシャーディング概論
Ethereumのシャーディング概論
 
暗認本読書会7
暗認本読書会7暗認本読書会7
暗認本読書会7
 
MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要MicrosoftのDID/VC実装概要
MicrosoftのDID/VC実装概要
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
Stockfish NNUEプロジェクト - 第25回ゲームプログラミングワークショップ (GPW-20)
Stockfish NNUEプロジェクト - 第25回ゲームプログラミングワークショップ (GPW-20)Stockfish NNUEプロジェクト - 第25回ゲームプログラミングワークショップ (GPW-20)
Stockfish NNUEプロジェクト - 第25回ゲームプログラミングワークショップ (GPW-20)
 
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
 
JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門JavaScript経験者のためのGo言語入門
JavaScript経験者のためのGo言語入門
 
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptxネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
 
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)ビットコインとブロックチェーンを初めからていねいに(超基礎編)
ビットコインとブロックチェーンを初めからていねいに(超基礎編)
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣デキるプログラマだけが知っているコードレビュー7つの秘訣
デキるプログラマだけが知っているコードレビュー7つの秘訣
 

More from bitbank, Inc. Tokyo, Japan

DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるかDeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
bitbank, Inc. Tokyo, Japan
 

More from bitbank, Inc. Tokyo, Japan (20)

インフラチームの歴史とこれから
インフラチームの歴史とこれからインフラチームの歴史とこれから
インフラチームの歴史とこれから
 
ビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略についてビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略について
 
ビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdfビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdf
 
ビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメントビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメント
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
 
ビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdfビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdf
 
Lightning Network, Swap, Nloop
Lightning Network, Swap, NloopLightning Network, Swap, Nloop
Lightning Network, Swap, Nloop
 
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
 
bitbank Corporate Information
bitbank Corporate Informationbitbank Corporate Information
bitbank Corporate Information
 
ng build --prod & Continuous Delivery
ng build --prod & Continuous Deliveryng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
 
マーブル図で怖くないRxJS
マーブル図で怖くないRxJSマーブル図で怖くないRxJS
マーブル図で怖くないRxJS
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
 
中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
 
Introduction of bitbank frontend development environment
Introduction of bitbank frontend development environmentIntroduction of bitbank frontend development environment
Introduction of bitbank frontend development environment
 
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるかDeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
 
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介	ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
 
Daocasinoにおけるstate channel実装
Daocasinoにおけるstate channel実装Daocasinoにおけるstate channel実装
Daocasinoにおけるstate channel実装
 
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようTypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
 
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたことNode.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
 

Recently uploaded

Recently uploaded (11)

論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

ビットコイン~原理からソースまで~