Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ブロックチェーンを利用したサービス開発について
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
GMO次世代
October 13, 2016
Technology
1.3k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ブロックチェーンを利用したサービス開発について
2016年10月12日 GMOエンジニアトークにて公開
GMO次世代
October 13, 2016
More Decks by GMO次世代
See All by GMO次世代
ソース公開を通じて分かった非中央集権型アプリケーション(DApp)とは
jisedai
0
4.5k
AppleのARkitとGoogleの最新のARプラットフォーム ARCore 可能性と応用
jisedai
2
1.4k
IoT領域でのブロックチェーン実践
jisedai
1
2k
モバイルAR技術の最先端 Google Tangoを活用してバーチャル道案内スタッフを実現してみた
jisedai
1
1.4k
深層学習は金融市場をシミュレーションすることができるか?
jisedai
1
6.9k
Unity3DとOculus Riftで VR空間にWebコンテンツを表現する
jisedai
0
1.6k
Deep Learningによる株価変動の予想
jisedai
0
1.8k
Other Decks in Technology
See All in Technology
PLaMo 3.0 Primeの構造化出力サポート
pfn
PRO
0
150
オートマトンと字句解析でRoslynを読む
tomokusaba
0
130
最高のシステムプロンプトを作るためにフィードバック機能を導入した話
alchemy1115
1
250
『モンスターストライク』 の運営に伴走する! データ民主化への 解析グループの3つのアプローチ
mixi_engineers
PRO
0
190
個人OSSが、机の上から世界に広がるまでの話
shinyasaita
1
170
セキュリティ研修【MIXI 26新卒技術研修】
mixi_engineers
PRO
32
27k
人手不足への挑戦:車両保全を支えるIoTとクラウド内製化の道【SORACOM Discovery 2026】
soracom
PRO
0
170
検索技術知識0のエンジニアが広告検索システムを内製化して運用するまで
lycorptech_jp
PRO
0
180
数値で見る Microsoft MVP 〜Spec Kit と GitHub Copilot Agent で作るデータ可視化ダッシュボード〜
yutakaosada
0
180
DevOps Agentで運用判断をチーム資産にする~Agent InstructionsとAgent Skillを継続的に育てる~
fujioka6789
0
180
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
15
110k
データエンジニアこそ組織のオントロジーに向き合うべき — 問いに答えるAIから、事業を動かすAIへ
gappy50
7
2.9k
Featured
See All Featured
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Prompt Engineering for Job Search
mfonobong
0
390
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
3
1.1k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
230
Building an army of robots
kneath
306
46k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
430
Discover your Explorer Soul
emna__ayadi
2
1.2k
How to Ace a Technical Interview
jacobian
281
24k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
370
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
160
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Transcript
ブロックチェーンを利⽤した サービス開発について GMOインターネット株式会社 次世代システム研究室
ブロックチェーンを利⽤した サービス開発について GMOインターネット株式会社 次世代システム研究室 スマートコントラクト - 事実を証明できるプログラム -
1. ブロックチェーンとは 2. スマートコントラクトとは 3. 開発中サービスの紹介 4. スマートコントラクトの問題点と解決法
• ビットコインの利⽤箇所の増加 • ビットコインはブロックチェーン実装の ひとつ • 改ざんが難しい • 耐障害性
• トランザクション (Tx):記録されるメッセージ • ブロック:一定期間のトランザクション集合 • ハッシュ:ひとつ前のブロックのハッシュ値 Tx Tx Tx
ハッシュ ブロック 5
• Tx を変更するとブロックのハッシュ値が変更 • ハッシュの計算は数⼗秒程度かかる Tx Tx Tx ハッシュ 6
ブロック
• ハッシュ が変更するとブロックのハッシュ値が変更 • 先端までのすべてのブロックを変更するのは難しい ⇒過去の改ざんが難しい Tx Tx Tx ハッシュ
7 ブロック
• 全ノードが全データを持っている ⇒サービスがダウンしにくい 8
• 改ざんされたくないデータを記述 • 作成者のサイン – 確かに、その人が作成したことを証明 AさんがBさんへ100円渡す Tx 9 A
Tx AさんがBさんへ100円渡す Tx Tx BさんがCさんへ2,000円渡す CさんがAさんへ1,000円渡す A B C 10
Tx Tx Tx 所持⾦ Aさん: 2,500円 Bさん: 1,200円 Cさん: 4,000円
11
• ブロックチェーンに書き込むプログラム • トランザクションにコード Tx contract Class { uint variable;
function funcA() { variable= 1; } function funcB() constant returns (uint) { return variable; } } Tx Tx Class.funcA()
• 2014年に最初のリリース • OSSのブロックチェーンのひとつ – C++ – Go • Solidityによりスマートコントラクトを実装
• JavaScript に似た高級言語 • Ethereum で動作するコードにコンパイル可能 • ブラウザIDE がおすすめ –
https://ethereum.github.io/browser-solidity/ – JavaScript VM、Ethereum クライアント接続可能
contract SimpleStorage { uint storedData; function set(uint x) { storedData
= x; } function get() constant returns (uint) { return storedData; } }
• データを保存するコントラクト • constant はトランザクションを生成しな い Tx SimpleStorage インスタンスを作成 Tx
Tx contract.set(10) contract.set(20) contract.get() = 10
contract Coin { address public minter = msg.sender; mapping (address
=> uint) public balances; function mint(address receiver, uint amount) { if (msg.sender != minter) return; balances[receiver] += amount; } function send(address receiver, uint amount) { if (balances[msg.sender] < amount) return; balances[msg.sender] -= amount; balances[receiver] += amount; } }
• 仮想通貨のコントラクト – 発⾏、送⾦ • msg.sender は送信者アドレス • 連想配列でそれぞれの所持⾦を管理
• 誰が何をいつしたかを証明できる – すべての記録が残る – 改ざんができない • 応⽤例 – 通貨
• ビットコインなど – “モノ”の所有権 • 近いうちに、、、
• ブロックチェーン – 改ざんが難しい可⽤性の高い記録台帳 • スマートコントラクト – 事実を証明 • 誰が、何を、いつ
– ブロックチェーンに書き込むプログラム
• Node Proxy – Ethereum ノード以外でTx を実⾏ • データストア連携 –
機密データの保管 – ファイルサイズの大きなデータの保存
• バージョンアップができない • トランザクション実⾏コストが高い • コストの支払い者がエンドユーザ
解決済み • バージョンアップができない • トランザクション実⾏コストが高い • コストの支払い者がエンドユーザ