SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
Copyright ©2016 HAW International Inc. all rights reserved.
neo4jを使った
ブロックチェーンデータの解析
2016/07/02
株式会社ハウインターナショナル
安土茂亨
Copyright ©2016 HAW International Inc. all rights reserved.
株式会社ハウインターナショナル
Blockchainに関する取り組み
•研究
‣カラードコインの電子投票などへの応用
‣Open Assets Protocolの実装の一つである
openassets-rubyを独自開発しOSSとして公開
•製品・サービス開発
‣Congrechain
Blockchainを使った投票システム
‣Chaintope
Blockchainの実証実験環境
‣Open Assets Explorer
Open Assets Protocolに対応したBlockchain Explorer
Copyright ©2016 HAW International Inc. all rights reserved.
弊社のドメイン
•ブロックチェーンの上位レイヤー技術の研究開発
‣ 下層は普及しているブロックチェーン(Bitcoinなど)を利用
‣ アセットの変換・ステート管理・トリガー・秘匿化など
•ブロックチェーンの関連ツール等の提供
TCP/IP
HTTP, SSL etc
Side Chain Bitcoin/Altcoin
Colored Coins
FinTechやIoTなどのビジネス応用
Bitcoin
2.0
Blockchainの上位プロトコル
Private
Chain
OAuth, DKIM etc
Copyright ©2016 HAW International Inc. all rights reserved.
P2Pネットワークを利用した分散DB
Transaction
broadcast
broadcast
broadcast
フルノードのディスクサ
イズは70〜80GBほど
Bitcoinを送るというのは、
Bitcoinの送付トランザザクションを
生成してブロードキャストすること
ブロードキャストされたトラン
ザクションはマイナーによっ
てブロックに格納される
各ノードが全取引データを保持してい
て、任意のノードがダウンしても Bitcoin
のネットワークは動作し続ける
世界中のノードで取引データ
が確認できる
Copyright ©2016 HAW International Inc. all rights reserved.
【Blockchain】
発生した取引(トランザクション)を10分毎に1つのブロックに取りまとめ、
そのブロックを時系列的につなげたチェーンで、非可逆的な記録台帳。
Blockchainのデータ構造
Block
Transaction Input
Output
Block Block Block
Transaction
Transaction
Input
Output
Output
Output
10min
Proof of Work
10min
Proof of Work
10min
Proof of Work
Copyright ©2016 HAW International Inc. all rights reserved.
Transactionの中身
{
"txid" : "1643a94f90f27741841984e98444718af7ba48bbde4308906df0f72818eb0058",
"vin" : [
{
"txid" : "97aa4752a511f698390f0214ef6c514dd0e02b8c79bc7e22386c118ae55e7e51",
"vout" : 2,
"scriptSig" : {
"asm" :
"304402201ef071f974592da3acf6d879fb4d7ebed19ff3d19d96ea3ed747c4d09a7e71de022003bd1fa9c0b5311c956223a9b45e05901004b6be3
9cc7cac73d75580d082290f01522601a9c035f03f7efb6f82c40ae65079249c31b4e668581357dd",
"hex" :
"47304402201ef071f974592da3acf6d879fb4d7ebed19ff3d19d96ea3ed747c4d09a7e71de022003bd1fa9c0b5311c956223a9b45e05901004b6b
e39cc7cac73d75580d082290f0121026454f388522efb6f82c40ae65079249c31b4e668581357dd"
}
}
],
"vout" : [
{
"value" : 0.00019400,
"n" : 0,
"scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 24b3d405bc60bd9628691fe28bb00f6800e14806 OP_EQUALVERIFY OP_CHECKSIG",
"hex" : "76a91424b3d405bc60bd9628691fe28bb00f6800e1480688ac",
"reqSigs" : 1,
"type" : "pubkeyhash",
"addresses" : [
"14M4kbAtn71P1nnNYuhBDFTNYxa19t1XP6"
]
}
}, ...
],
"blockhash" : "000000000000000008d8232a809318cf1f2a78112bbe3867b3efe59916db8146",
"confirmations" : 7412,
"time" : 1440672183,
"blocktime" : 1440672183
}
送付先のBitcoinアドレス
出力
Bitcoin送付スクリプト
入力
送るBitcoinの量
Copyright ©2016 HAW International Inc. all rights reserved.
第三者機関によるオーソリティ
が必要
Bitcoin以外のアセットの流通
Open Assets Protocol
Bitcoinに色付けをすることで株式、証券、ユーザ独自通貨等のあらゆる資産
(アセット)を表現し、Blockchain上でアセットの発行や送付を可能にするプロトコル。
Bitcoinと異なり、発行主体が存在するため債権債務関係などを構成できる。
従来の権利の移転
Blockchainにおける権利の移転
Block Block Block
Transaction
Output
Input
第三者機関
ブロードキャスト
署名
Copyright ©2016 HAW International Inc. all rights reserved.
P2P型の投票システム
Copyright ©2016 HAW International Inc. all rights reserved.
P2P型の投票システムCongrechain
CongreChainはブロックチェーン 上
で投票権の発行とその移転を分散
記録するシステム。
併せてOpenAssetsProtocol
(Bitcoinのブロックチェーン上で独自
資 産 を 発 行 できる 拡 張 仕 様)の
Ruby 実 装 であるopenassets-ruby
を開発し、オープンソースとして公開
(MITライセンス)。
第8回 フクオカRuby大賞
優秀賞受賞
Copyright ©2016 HAW International Inc. all rights reserved.
Blockchain実証環境
Copyright ©2016 HAW International Inc. all rights reserved.
Blockchain実証環境Chaintope
• 検証に適したマネージド・ブロックチェーン環境
‣複数のノードで構成されるブロックチェーンクラスタの作成と管理
‣ブロックチェーンの基本操作(ブロックや簡単なトランザクションの作成など)
‣ブロックチェーンおよびトランザクションの可視化
‣ブロックチェーンクラスタ全体のスナップショット取得と復元
Copyright ©2016 HAW International Inc. all rights reserved.
ブロックチェーンデータの解析
ブロックチェーン上のデータから以下のようなデータの抽出、
ビジュアライズをしたい
● 取引履歴の取得
● 流通するBitcoin/アセットのトラッキング
● アセット保有者の確認
● アドレスをキーにした流通状況
● 指定期間内に取引が多いアドレスの抽出
● 指定金額以上の取引の抽出
● etc..
Copyright ©2016 HAW International Inc. all rights reserved.
公式実装ノードのDB
wallet
【BerkeleyDB】
blocks
chainstate
【LevelDB】
自身のウォレットデータで
鍵やトランザクション、メタデータを管理
ブロックチェーンのデータを管理
Bitcoin Coreでは2つのDBを利用
いずれもシングルプロセス(Bitcoind)
での利用が前提
Copyright ©2016 HAW International Inc. all rights reserved.
移行しやすいDBへの移行
Transaction
Input
Output
Input
Output
Output
Transaction
Input
Output
Output
Transaction
Input
Output
Input
Output
Output
Transaction
Input
Input
…
入力は必ず既存の
トランザクションの出力と
1対1になる
入力に使われていない出力(UTXO)が
使用可能なBitcoinの量
前提となるブロックチェーンのデータ構造
Copyright ©2016 HAW International Inc. all rights reserved.
Blockchainのデータをneo4jに
RDBやKVSと異なり、関係性を表現するのに特化したデータモデルで
複雑なデータ探索に最適
【NODE】
BLOCK
【NODE】
BLOCK
【NODE】
Tx
【NODE】
Tx【NODE】
Input
【NODE】
Input
【NODE】
Output
【NODE】
Output
【NODE】
Input
【NODE】
Address
【NODE】
Output
【NODE】
Tx
previous block
out point
send
send
Copyright ©2016 HAW International Inc. all rights reserved.
BitcoinCoreからデータをインポート
P2P message
import
P2P message
RPCのIFがあるので順次
Block Heightを指定してインポート
ビジュアライズ
Copyright ©2016 HAW International Inc. all rights reserved.
Cypher Query Language
neo4jにデータをインポートできたら、neo4jのデータに
対してデータ処理を行う際に利用するSQLライクな
クエリ言語Cypher QLを使ってデータ抽出が可能。
(例)送金量の多い出力をピックアップ
MATCH (n:`Graphdb::Model::TxOut`) RETURN n
order by n.value desc LIMIT 25
Copyright ©2016 HAW International Inc. all rights reserved.
Cypherレスで便利にデータ操作
neo4j便利だけどゴリゴリCypherを書きたくない
neo4jのノードの構造を
RailsのActive Recordライクな
モデルとして扱えるライブラリ
Copyright ©2016 HAW International Inc. all rights reserved.
● property
neo4jのノードのプロパティを宣言
● callback
Active Recordと同様のフックポイントをサポート
● validation
Active Modelのvalidationをサポート
● association
has_many、has_oneでノード間の関連を宣言
neo4jrbでモデル化
ActiveNode
ActiveRel
class Block
include Neo4j::ActiveNode
property :block_hash, index: :extract
property :height, type: :integer
has_many :in, :transactions, origin: :block
validates :block_hash, :presence => true
after_create :chain_previouse_block
end
関連の定義のみを別途モデル化
Copyright ©2016 HAW International Inc. all rights reserved.
neo4jrbでモデル化
class Block
include Neo4j::ActiveNode
property :block_hash, index: :extract
property :height, type: :integer
has_many :in, :transactions, origin: :block
validates :block_hash, :presence => true
after_create :chain_previouse_block
end
Node
Relation
Property
neo4jの構成要素
Copyright ©2016 HAW International Inc. all rights reserved.
neo4jrbでモデル化
query
transaction
scope
Block.all.where(block_hash: ‘xxxxxxxxxxxxx’)
Block.find_by(block_hash: ‘xxxxxxxxxxxxx’)
class Block
scope :with_height, -> (height){where(height: height)}
Neo4j::Transaction.run do |tx|
begin
…
rescue => e
tx.failure
….
Copyright ©2016 HAW International Inc. all rights reserved.
Blockchain分析プラットフォーム
デモ
Copyright ©2016 HAW International Inc. all rights reserved.
Open Assets Explorer

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
 
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchainDeconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
 
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み
 
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
[2020.08.28 銀座Rails #24]Rails で Distributed Tracing をやる
 
ブロックチェーンの技術と動向
ブロックチェーンの技術と動向ブロックチェーンの技術と動向
ブロックチェーンの技術と動向
 
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
 
ブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocolブロックチェインとOpen asset protocol
ブロックチェインとOpen asset protocol
 
暗号通貨輪読会 #20 bloXroute
暗号通貨輪読会 #20 bloXroute暗号通貨輪読会 #20 bloXroute
暗号通貨輪読会 #20 bloXroute
 
ブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live pptブロックチェーンの解説 In.live ppt
ブロックチェーンの解説 In.live ppt
 
Bitcoinを技術的に理解する
Bitcoinを技術的に理解するBitcoinを技術的に理解する
Bitcoinを技術的に理解する
 
図解 Blockchainの仕組み
図解 Blockchainの仕組み図解 Blockchainの仕組み
図解 Blockchainの仕組み
 
Congre chain説明資料
Congre chain説明資料Congre chain説明資料
Congre chain説明資料
 
Kibanaでsysstatを可視化する
Kibanaでsysstatを可視化するKibanaでsysstatを可視化する
Kibanaでsysstatを可視化する
 
ブロックチェーンまとめ
ブロックチェーンまとめブロックチェーンまとめ
ブロックチェーンまとめ
 
電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)電子情報通信学会グローバル社会とビットコイン(山崎)
電子情報通信学会グローバル社会とビットコイン(山崎)
 
JNSA Bitcoin 勉強会 佐藤 20140602
JNSA Bitcoin 勉強会 佐藤 20140602JNSA Bitcoin 勉強会 佐藤 20140602
JNSA Bitcoin 勉強会 佐藤 20140602
 
ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)ブロックチェーン基礎(Blockchain Fundamentals)
ブロックチェーン基礎(Blockchain Fundamentals)
 
ブロックチェーンの基本構造
ブロックチェーンの基本構造ブロックチェーンの基本構造
ブロックチェーンの基本構造
 
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
デジタルハリウッド大学院 ブロックチェーン研究会第三回 2016年8月25日
 
180107 intro bitcoin/altcoin
180107 intro bitcoin/altcoin180107 intro bitcoin/altcoin
180107 intro bitcoin/altcoin
 

Ähnlich wie neo4jを使ったブロックチェーンデータの解析

OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overview
irix_jp
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
Kikunaga Taishi
 

Ähnlich wie neo4jを使ったブロックチェーンデータの解析 (20)

Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要Hyperledger Fabric 1.0 概要
Hyperledger Fabric 1.0 概要
 
通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5通信と放送の融合を考えるBoF 5
通信と放送の融合を考えるBoF 5
 
認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤
 
[CTO Night & Day 2019] Blockchain on AWS #ctonight
[CTO Night & Day 2019] Blockchain on AWS #ctonight[CTO Night & Day 2019] Blockchain on AWS #ctonight
[CTO Night & Day 2019] Blockchain on AWS #ctonight
 
OpenStack Summit Austin 2016 参加報告 - OpenStack最新情報セミナー 2016年5月
OpenStack Summit Austin 2016 参加報告 - OpenStack最新情報セミナー 2016年5月OpenStack Summit Austin 2016 参加報告 - OpenStack最新情報セミナー 2016年5月
OpenStack Summit Austin 2016 参加報告 - OpenStack最新情報セミナー 2016年5月
 
[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
[db tech showcase Tokyo 2015] E35: Web, IoT, モバイル時代のデータベース、Apache Cassandraを学ぼう
 
OpenStack Congress Deep Dive
OpenStack Congress Deep DiveOpenStack Congress Deep Dive
OpenStack Congress Deep Dive
 
ブロックチェーン推進協会オンラインセミナー オラクル資料 (2021年3月3日)
ブロックチェーン推進協会オンラインセミナー オラクル資料 (2021年3月3日) ブロックチェーン推進協会オンラインセミナー オラクル資料 (2021年3月3日)
ブロックチェーン推進協会オンラインセミナー オラクル資料 (2021年3月3日)
 
ConoHaにおけるオブジェクトストレージの利用動向 - OpenStack最新情報セミナー 2015年2月
ConoHaにおけるオブジェクトストレージの利用動向 - OpenStack最新情報セミナー 2015年2月ConoHaにおけるオブジェクトストレージの利用動向 - OpenStack最新情報セミナー 2015年2月
ConoHaにおけるオブジェクトストレージの利用動向 - OpenStack最新情報セミナー 2015年2月
 
OpenStack本番環境の作り方
OpenStack本番環境の作り方OpenStack本番環境の作り方
OpenStack本番環境の作り方
 
OSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack OverviewOSC2013 Tokyo Spring OpenStack Overview
OSC2013 Tokyo Spring OpenStack Overview
 
OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~OpenStack概要 ~仮想ネットワーク~
OpenStack概要 ~仮想ネットワーク~
 
OpenStack概要
OpenStack概要OpenStack概要
OpenStack概要
 
Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】Webサーバの基礎知識【編集済み】
Webサーバの基礎知識【編集済み】
 
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソースストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
ストリーミング視聴解析の基本とその応用 IPv4・IPv6デュアルソース
 
bitbankフロントエンド開発について
bitbankフロントエンド開発についてbitbankフロントエンド開発について
bitbankフロントエンド開発について
 
GCPでStreamなデータパイプライン作った
GCPでStreamなデータパイプライン作ったGCPでStreamなデータパイプライン作った
GCPでStreamなデータパイプライン作った
 
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
使ってわかった!現場担当者が語るOpenStack運用管理の課題:OpenStack Days 2015 Tokyo 講演
 
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
 
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
OpenStack管理者入門 - OpenStack最新情報セミナー 2014年12月
 

neo4jを使ったブロックチェーンデータの解析

  • 1. Copyright ©2016 HAW International Inc. all rights reserved. neo4jを使った ブロックチェーンデータの解析 2016/07/02 株式会社ハウインターナショナル 安土茂亨
  • 2. Copyright ©2016 HAW International Inc. all rights reserved. 株式会社ハウインターナショナル Blockchainに関する取り組み •研究 ‣カラードコインの電子投票などへの応用 ‣Open Assets Protocolの実装の一つである openassets-rubyを独自開発しOSSとして公開 •製品・サービス開発 ‣Congrechain Blockchainを使った投票システム ‣Chaintope Blockchainの実証実験環境 ‣Open Assets Explorer Open Assets Protocolに対応したBlockchain Explorer
  • 3. Copyright ©2016 HAW International Inc. all rights reserved. 弊社のドメイン •ブロックチェーンの上位レイヤー技術の研究開発 ‣ 下層は普及しているブロックチェーン(Bitcoinなど)を利用 ‣ アセットの変換・ステート管理・トリガー・秘匿化など •ブロックチェーンの関連ツール等の提供 TCP/IP HTTP, SSL etc Side Chain Bitcoin/Altcoin Colored Coins FinTechやIoTなどのビジネス応用 Bitcoin 2.0 Blockchainの上位プロトコル Private Chain OAuth, DKIM etc
  • 4. Copyright ©2016 HAW International Inc. all rights reserved. P2Pネットワークを利用した分散DB Transaction broadcast broadcast broadcast フルノードのディスクサ イズは70〜80GBほど Bitcoinを送るというのは、 Bitcoinの送付トランザザクションを 生成してブロードキャストすること ブロードキャストされたトラン ザクションはマイナーによっ てブロックに格納される 各ノードが全取引データを保持してい て、任意のノードがダウンしても Bitcoin のネットワークは動作し続ける 世界中のノードで取引データ が確認できる
  • 5. Copyright ©2016 HAW International Inc. all rights reserved. 【Blockchain】 発生した取引(トランザクション)を10分毎に1つのブロックに取りまとめ、 そのブロックを時系列的につなげたチェーンで、非可逆的な記録台帳。 Blockchainのデータ構造 Block Transaction Input Output Block Block Block Transaction Transaction Input Output Output Output 10min Proof of Work 10min Proof of Work 10min Proof of Work
  • 6. Copyright ©2016 HAW International Inc. all rights reserved. Transactionの中身 { "txid" : "1643a94f90f27741841984e98444718af7ba48bbde4308906df0f72818eb0058", "vin" : [ { "txid" : "97aa4752a511f698390f0214ef6c514dd0e02b8c79bc7e22386c118ae55e7e51", "vout" : 2, "scriptSig" : { "asm" : "304402201ef071f974592da3acf6d879fb4d7ebed19ff3d19d96ea3ed747c4d09a7e71de022003bd1fa9c0b5311c956223a9b45e05901004b6be3 9cc7cac73d75580d082290f01522601a9c035f03f7efb6f82c40ae65079249c31b4e668581357dd", "hex" : "47304402201ef071f974592da3acf6d879fb4d7ebed19ff3d19d96ea3ed747c4d09a7e71de022003bd1fa9c0b5311c956223a9b45e05901004b6b e39cc7cac73d75580d082290f0121026454f388522efb6f82c40ae65079249c31b4e668581357dd" } } ], "vout" : [ { "value" : 0.00019400, "n" : 0, "scriptPubKey" : { "asm" : "OP_DUP OP_HASH160 24b3d405bc60bd9628691fe28bb00f6800e14806 OP_EQUALVERIFY OP_CHECKSIG", "hex" : "76a91424b3d405bc60bd9628691fe28bb00f6800e1480688ac", "reqSigs" : 1, "type" : "pubkeyhash", "addresses" : [ "14M4kbAtn71P1nnNYuhBDFTNYxa19t1XP6" ] } }, ... ], "blockhash" : "000000000000000008d8232a809318cf1f2a78112bbe3867b3efe59916db8146", "confirmations" : 7412, "time" : 1440672183, "blocktime" : 1440672183 } 送付先のBitcoinアドレス 出力 Bitcoin送付スクリプト 入力 送るBitcoinの量
  • 7. Copyright ©2016 HAW International Inc. all rights reserved. 第三者機関によるオーソリティ が必要 Bitcoin以外のアセットの流通 Open Assets Protocol Bitcoinに色付けをすることで株式、証券、ユーザ独自通貨等のあらゆる資産 (アセット)を表現し、Blockchain上でアセットの発行や送付を可能にするプロトコル。 Bitcoinと異なり、発行主体が存在するため債権債務関係などを構成できる。 従来の権利の移転 Blockchainにおける権利の移転 Block Block Block Transaction Output Input 第三者機関 ブロードキャスト 署名
  • 8. Copyright ©2016 HAW International Inc. all rights reserved. P2P型の投票システム
  • 9. Copyright ©2016 HAW International Inc. all rights reserved. P2P型の投票システムCongrechain CongreChainはブロックチェーン 上 で投票権の発行とその移転を分散 記録するシステム。 併せてOpenAssetsProtocol (Bitcoinのブロックチェーン上で独自 資 産 を 発 行 できる 拡 張 仕 様)の Ruby 実 装 であるopenassets-ruby を開発し、オープンソースとして公開 (MITライセンス)。 第8回 フクオカRuby大賞 優秀賞受賞
  • 10. Copyright ©2016 HAW International Inc. all rights reserved. Blockchain実証環境
  • 11. Copyright ©2016 HAW International Inc. all rights reserved. Blockchain実証環境Chaintope • 検証に適したマネージド・ブロックチェーン環境 ‣複数のノードで構成されるブロックチェーンクラスタの作成と管理 ‣ブロックチェーンの基本操作(ブロックや簡単なトランザクションの作成など) ‣ブロックチェーンおよびトランザクションの可視化 ‣ブロックチェーンクラスタ全体のスナップショット取得と復元
  • 12. Copyright ©2016 HAW International Inc. all rights reserved. ブロックチェーンデータの解析 ブロックチェーン上のデータから以下のようなデータの抽出、 ビジュアライズをしたい ● 取引履歴の取得 ● 流通するBitcoin/アセットのトラッキング ● アセット保有者の確認 ● アドレスをキーにした流通状況 ● 指定期間内に取引が多いアドレスの抽出 ● 指定金額以上の取引の抽出 ● etc..
  • 13. Copyright ©2016 HAW International Inc. all rights reserved. 公式実装ノードのDB wallet 【BerkeleyDB】 blocks chainstate 【LevelDB】 自身のウォレットデータで 鍵やトランザクション、メタデータを管理 ブロックチェーンのデータを管理 Bitcoin Coreでは2つのDBを利用 いずれもシングルプロセス(Bitcoind) での利用が前提
  • 14. Copyright ©2016 HAW International Inc. all rights reserved. 移行しやすいDBへの移行 Transaction Input Output Input Output Output Transaction Input Output Output Transaction Input Output Input Output Output Transaction Input Input … 入力は必ず既存の トランザクションの出力と 1対1になる 入力に使われていない出力(UTXO)が 使用可能なBitcoinの量 前提となるブロックチェーンのデータ構造
  • 15. Copyright ©2016 HAW International Inc. all rights reserved. Blockchainのデータをneo4jに RDBやKVSと異なり、関係性を表現するのに特化したデータモデルで 複雑なデータ探索に最適 【NODE】 BLOCK 【NODE】 BLOCK 【NODE】 Tx 【NODE】 Tx【NODE】 Input 【NODE】 Input 【NODE】 Output 【NODE】 Output 【NODE】 Input 【NODE】 Address 【NODE】 Output 【NODE】 Tx previous block out point send send
  • 16. Copyright ©2016 HAW International Inc. all rights reserved. BitcoinCoreからデータをインポート P2P message import P2P message RPCのIFがあるので順次 Block Heightを指定してインポート ビジュアライズ
  • 17. Copyright ©2016 HAW International Inc. all rights reserved. Cypher Query Language neo4jにデータをインポートできたら、neo4jのデータに 対してデータ処理を行う際に利用するSQLライクな クエリ言語Cypher QLを使ってデータ抽出が可能。 (例)送金量の多い出力をピックアップ MATCH (n:`Graphdb::Model::TxOut`) RETURN n order by n.value desc LIMIT 25
  • 18. Copyright ©2016 HAW International Inc. all rights reserved. Cypherレスで便利にデータ操作 neo4j便利だけどゴリゴリCypherを書きたくない neo4jのノードの構造を RailsのActive Recordライクな モデルとして扱えるライブラリ
  • 19. Copyright ©2016 HAW International Inc. all rights reserved. ● property neo4jのノードのプロパティを宣言 ● callback Active Recordと同様のフックポイントをサポート ● validation Active Modelのvalidationをサポート ● association has_many、has_oneでノード間の関連を宣言 neo4jrbでモデル化 ActiveNode ActiveRel class Block include Neo4j::ActiveNode property :block_hash, index: :extract property :height, type: :integer has_many :in, :transactions, origin: :block validates :block_hash, :presence => true after_create :chain_previouse_block end 関連の定義のみを別途モデル化
  • 20. Copyright ©2016 HAW International Inc. all rights reserved. neo4jrbでモデル化 class Block include Neo4j::ActiveNode property :block_hash, index: :extract property :height, type: :integer has_many :in, :transactions, origin: :block validates :block_hash, :presence => true after_create :chain_previouse_block end Node Relation Property neo4jの構成要素
  • 21. Copyright ©2016 HAW International Inc. all rights reserved. neo4jrbでモデル化 query transaction scope Block.all.where(block_hash: ‘xxxxxxxxxxxxx’) Block.find_by(block_hash: ‘xxxxxxxxxxxxx’) class Block scope :with_height, -> (height){where(height: height)} Neo4j::Transaction.run do |tx| begin … rescue => e tx.failure ….
  • 22. Copyright ©2016 HAW International Inc. all rights reserved. Blockchain分析プラットフォーム デモ
  • 23. Copyright ©2016 HAW International Inc. all rights reserved. Open Assets Explorer