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
GMO次世代
October 13, 2016
Technology
1
1.3k
ブロックチェーンを利用したサービス開発について
2016年10月12日 GMOエンジニアトークにて公開
GMO次世代
October 13, 2016
Tweet
Share
More Decks by GMO次世代
See All by GMO次世代
ソース公開を通じて分かった非中央集権型アプリケーション(DApp)とは
jisedai
0
4.3k
AppleのARkitとGoogleの最新のARプラットフォーム ARCore 可能性と応用
jisedai
2
1.4k
IoT領域でのブロックチェーン実践
jisedai
1
1.9k
モバイルAR技術の最先端 Google Tangoを活用してバーチャル道案内スタッフを実現してみた
jisedai
1
1.4k
深層学習は金融市場をシミュレーションすることができるか?
jisedai
1
6.7k
Unity3DとOculus Riftで VR空間にWebコンテンツを表現する
jisedai
0
1.6k
Deep Learningによる株価変動の予想
jisedai
0
1.8k
Other Decks in Technology
See All in Technology
AI: The stuff that nobody shows you
jnunemaker
PRO
1
160
RALGO : AIを組織に組み込む方法 -アルゴリズム中心組織設計- #RSGT2026 / RALGO: How to Integrate AI into an Organization – Algorithm-Centric Organizational Design
kyonmm
PRO
3
920
あの夜、私たちは「人間」に戻った。 ── 災害ユートピア、贈与、そしてアジャイルの再構築 / 20260108 Hiromitsu Akiba
shift_evolve
PRO
0
510
【Agentforce Hackathon Tokyo 2025 発表資料】みらいシフト:あなた働き方を、みらいへシフト。
kuratani
0
110
AWSと生成AIで学ぶ!実行計画の読み解き方とSQLチューニングの実践
yakumo
2
320
純粋なイミュータブルモデルを設計してからイベントソーシングと組み合わせるDeciderの実践方法の紹介 /Introducing Decider Pattern with Event Sourcing
tomohisa
1
820
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
280
「アウトプット脳からユーザー価値脳へ」がそんなに簡単にできたら苦労しない #RSGT2026
aki_iinuma
9
4.5k
Qiita Bash アドカレ LT #1
okaru
0
170
Java 25に至る道
skrb
3
190
モノタロウ x クリエーションラインで実現する チームトポロジーにおける プラットフォームチーム・ ストリームアラインドチームの 効果的なコラボレーション
creationline
0
600
わが10年の叡智をぶつけたカオスなクラウドインフラが、なくなるということ。
sogaoh
PRO
1
370
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
410
Embracing the Ebb and Flow
colly
88
4.9k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
0
230
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Ruling the World: When Life Gets Gamed
codingconduct
0
120
The SEO identity crisis: Don't let AI make you average
varn
0
47
Discover your Explorer Soul
emna__ayadi
2
1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
7.9k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Designing for humans not robots
tammielis
254
26k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
300
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 を実⾏ • データストア連携 –
機密データの保管 – ファイルサイズの大きなデータの保存
• バージョンアップができない • トランザクション実⾏コストが高い • コストの支払い者がエンドユーザ
解決済み • バージョンアップができない • トランザクション実⾏コストが高い • コストの支払い者がエンドユーザ