SlideShare uma empresa Scribd logo
1 de 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/ 
ビットバンクウォレットを作成された方に 
もれなくビットコインをプレゼントします!

Mais conteúdo relacionado

Mais procurados

Hyperledger Fabric Private Chaincodeについて
Hyperledger Fabric Private ChaincodeについてHyperledger Fabric Private Chaincodeについて
Hyperledger Fabric Private ChaincodeについてHyperleger Tokyo Meetup
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)Naohiro Fujie
 
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltzHyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltzHyperleger Tokyo Meetup
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用MITSUNARI Shigeo
 
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...Sho Nakazono
 
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdfcomparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdfwei-li
 
階層的決定性ウォレットを理解しよう
階層的決定性ウォレットを理解しよう階層的決定性ウォレットを理解しよう
階層的決定性ウォレットを理解しようbitbank, Inc. Tokyo, Japan
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学MITSUNARI Shigeo
 
ビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶYuto Takei
 
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待Hyperleger Tokyo Meetup
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperleger Tokyo Meetup
 
ブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptAsteria Corporation
 
自己主権型IDと分散型ID
自己主権型IDと分散型ID自己主権型IDと分散型ID
自己主権型IDと分散型IDNaohiro Fujie
 
自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介MITSUNARI Shigeo
 
zk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてzk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてts21
 
KYC and identity on blockchain
KYC and identity on blockchainKYC and identity on blockchain
KYC and identity on blockchainmosa siru
 

Mais procurados (20)

Hyperledger Fabric Private Chaincodeについて
Hyperledger Fabric Private ChaincodeについてHyperledger Fabric Private Chaincodeについて
Hyperledger Fabric Private Chaincodeについて
 
SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)SSIとDIDで何を解決したいのか?(β版)
SSIとDIDで何を解決したいのか?(β版)
 
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltzHyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
Hyperledger Fabric活用事例:貿易プラットフォームTradeWaltz
 
集約署名
集約署名集約署名
集約署名
 
Hyperledger Fabric 概説
Hyperledger Fabric 概説Hyperledger Fabric 概説
Hyperledger Fabric 概説
 
暗認本読書会9
暗認本読書会9暗認本読書会9
暗認本読書会9
 
BLS署名の実装とその応用
BLS署名の実装とその応用BLS署名の実装とその応用
BLS署名の実装とその応用
 
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...輪読資料: Staring into the abyss  an evaluation of concurrency control with one t...
輪読資料: Staring into the abyss an evaluation of concurrency control with one t...
 
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdfcomparison with NFT marketplace(Opensea,Adam,My customized one).pdf
comparison with NFT marketplace(Opensea,Adam,My customized one).pdf
 
階層的決定性ウォレットを理解しよう
階層的決定性ウォレットを理解しよう階層的決定性ウォレットを理解しよう
階層的決定性ウォレットを理解しよう
 
暗号技術の実装と数学
暗号技術の実装と数学暗号技術の実装と数学
暗号技術の実装と数学
 
ビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶビットコインで使われている暗号の基礎を学ぶ
ビットコインで使われている暗号の基礎を学ぶ
 
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待
ブロックチェーン統合ツールCactusとトークンエコノミー実現への期待
 
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
Hyperledger Fabric 簡単構築ツール minifabricのご紹介 〜productionへの移行をminifabricで加速〜
 
ブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live ppt
 
自己主権型IDと分散型ID
自己主権型IDと分散型ID自己主権型IDと分散型ID
自己主権型IDと分散型ID
 
暗認本読書会5
暗認本読書会5暗認本読書会5
暗認本読書会5
 
自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介自作ペアリング/BLS署名ライブラリの紹介
自作ペアリング/BLS署名ライブラリの紹介
 
zk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてzk-SNARKsの仕組みについて
zk-SNARKsの仕組みについて
 
KYC and identity on blockchain
KYC and identity on blockchainKYC and identity on blockchain
KYC and identity on blockchain
 

Mais de bitbank, Inc. Tokyo, Japan

ビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略についてビットバンクのデプロイ戦略について
ビットバンクのデプロイ戦略についてbitbank, Inc. Tokyo, Japan
 
ビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdfビットバンク流 アジャイル開発の紹介.pdf
ビットバンク流 アジャイル開発の紹介.pdfbitbank, Inc. Tokyo, Japan
 
ビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメントビットバンクで求められるプロジェクトマネジメント
ビットバンクで求められるプロジェクトマネジメントbitbank, Inc. Tokyo, Japan
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境bitbank, Inc. Tokyo, Japan
 
ビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdfビットバンクのマッチングエンジン.pdf
ビットバンクのマッチングエンジン.pdfbitbank, Inc. Tokyo, Japan
 
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略bitbank, Inc. Tokyo, Japan
 
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜
持続的な運用開発のために社内基盤を整えている話 〜auditのCI組み込みやlintの社内PKG化〜bitbank, Inc. Tokyo, Japan
 
中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計中規模Angularアプリケーションの再設計
中規模Angularアプリケーションの再設計bitbank, Inc. Tokyo, Japan
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 bitbank, Inc. Tokyo, Japan
 
Introduction of bitbank frontend development environment
Introduction of bitbank frontend development environmentIntroduction of bitbank frontend development environment
Introduction of bitbank frontend development environmentbitbank, Inc. Tokyo, Japan
 
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるかDeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるか
DeveloperSuccess として何を届けられるか、様々な分野を経た先として何ができるかbitbank, Inc. Tokyo, Japan
 
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介	ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介
ビットコインウォレットで手軽にパスワードレス認証が可能なbitidについての紹介 bitbank, Inc. Tokyo, Japan
 
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようTypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようbitbank, Inc. Tokyo, Japan
 

Mais de 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についての紹介
 
Ethereumのシャーディング概論
Ethereumのシャーディング概論Ethereumのシャーディング概論
Ethereumのシャーディング概論
 
Daocasinoにおけるstate channel実装
Daocasinoにおけるstate channel実装Daocasinoにおけるstate channel実装
Daocasinoにおけるstate channel実装
 
TypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみようTypeScriptでライトニングネットワークを使ってみよう
TypeScriptでライトニングネットワークを使ってみよう
 

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