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
BlockchainHackathon2019 ワークショップ ~ Twitterとブロックチェーンを使ったアイデンティフィケーションの実現~
Search
daisuke sato
February 09, 2019
Technology
0
200
BlockchainHackathon2019 ワークショップ ~ Twitterとブロックチェーンを使ったアイデンティフィケーションの実現~
このスライドは、経産省主催のブロックチェーンハッカソン2019のワークショップで使用されたスライドです。
daisuke sato
February 09, 2019
Tweet
Share
More Decks by daisuke sato
See All by daisuke sato
gethoとTruffleを使った DApps開発ワークショップ
daisuke310vvv
0
130
gethoハッカソン -ハンズオン-
daisuke310vvv
1
990
Hi-Con2018 より良いDApp開発をするための話と gethoについて
daisuke310vvv
1
350
getho ~ Ethereum private nodes, tailored for you. ~
daisuke310vvv
0
680
社内仮想通貨をモバイルDappとしてつくってみた
daisuke310vvv
1
2.9k
Other Decks in Technology
See All in Technology
#51 “Empowering Azure Storage with RDMA”
cafenero_777
3
210
LLM + RAG を使った SORACOM Support Bot の裏側の歴史
soracom
PRO
1
640
GitHub最新情報キャッチアップ 2024年3月
dzeyelid
16
3.2k
バッチ処理のSLOをどう設計するか
rynsuke
7
560
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
7
100k
MongoDB Atlas Vectorsearchではじめる生成AIアプリ開発
chie8842
3
510
データマネジメントを支える武器としてのメタデータ管理
10xinc
1
530
TypeScript Quiz (Encraft #12 Frontend Quiz Night)
uhyo
4
410
統計的学習理論読み Chapter 1
kmatsui
3
830
複数の LLM モデルを扱う上で直面した辛みまとめ
kazuyaseki
1
240
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
20
4k
Challenges - Open Farming Hackdays 2024
loleg
0
560
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
36
2k
Six Lessons from altMBA
skipperchong
19
2.9k
The Cult of Friendly URLs
andyhume
73
5.6k
Why Our Code Smells
bkeepers
PRO
330
56k
Designing for Performance
lara
601
67k
A Philosophy of Restraint
colly
195
15k
The Pragmatic Product Professional
lauravandoore
24
5.7k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
8
8.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
34
8.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
14
2.6k
Scaling GitHub
holman
456
140k
Keith and Marios Guide to Fast Websites
keithpitt
407
22k
Transcript
Blockchain Hackathon 2019 Daisuke Sato
ࣗݾհ • ࠤ౻ େี • Co-Founder and CTO at Popshoot,
Inc • iOS/αʔόɾΠϯϑϥ
Popshoot, Inc • ۀ3 • ϞόΠϧΞϓϦͷ։ൃɾӡ༻ • ΠʔαϦΞϜ
ϋϯζΦϯͷత 1. gethoΛͬͯεϜʔζͳDApp։ൃ͕Ͱ͖ΔΑ͏ʹͳΔ 2. ࣮ࡍʹDApp։ൃΛମݧ͢Δ͜ͱͰϋοΧιϯͷ͕͔Γͱ ͢Δ
λΠϜεέδϡʔϧ • 10: gethoͱࠓ࡞Δͷʹ͍ͭͯ • 20: ϋϯζΦϯ • 15: ࣭ٙԠ&Ճ՝
• 05: ·ͱΊ
ࢿྉ • ࠓͷεϥΠυࢿྉ • ϋϯζΦϯ༻ͷϨϙδτϦ github.com/popshootjapan/blockchain_hackathon_2019 • slackνϟϯωϧ #getho-ws ※
νϟϯωϧͰ࣭͋Είϝϯτ͍ͯͩ͘͠͞
ҙ 1. python3ܥͩͱϥΠϒϥϦ͕ϏϧυͰ͖·ͤΜ • python2ܥΛ͏Α͏ʹ͍ͯͩ͘͠͞(PATHΛม͑Δ) 2. ϋϯζΦϯ༻ʹ४උͨ͠ͷશͯ։ൃڥԼΛఆ͍ͯ͠ ·͢ͷͰɺຊ൪Ͱ༻͠ͳ͍Ͱ͍ͩ͘͞
gethoʹ͍ͭͯ
gethoͱ DApp։ൃͷͨΊͷ։ൃϓϥοτϑΥʔϜ
ςετ༻ͷϓϥΠϕʔ τϊʔυ ίϯτϥΫτͷσϓϩΠઌͱ ͯ͠༻Ͱ͖ɺνʔϜͰڞ༗ Մೳɻ
εϚʔτίϯτϥΫτ ͷGUI࣮ߦڥ ίϯτϥΫτͷؔΛGUI্ Ͱ࣮ߦՄೳ
ͦͷଞ • HTTP/WebScoketରԠ • σϑΥϧτΞΧϯτʹ100ETH • CLI • ※ϊʔυ4࣌ؒͰҰ࣌ఀࢭ(࠶ىಈՄ)
ࠓ࡞Δͷ TwitterͱϒϩοΫνΣʔϯΛͬͨΞΠσϯςΟϑΟέʔγϣ ϯͷ࣮ݱ ؆୯ʹ͍͏ͱ, ࣗͷΞυϨεͷূ໌ΛTwitterΛ࣮ͬͯݱ͢Δ
ΞυϨεͷূ໌ʁ • ༑ୡʹૹ͍ۚͨ࣌͠ʹɺڭ͑ΒΕͨΞυϨε͕ຊʹͦͷਓ ͷͷ͔Ͳ͏͔Λূ໌͢Δʹʁ • ͦͷΞυϨεͱൿີ伴ʹΑΔॺ໊ͷݕূ͕Ͱ͖ͨιʔγϟϧ ΞΧϯτͱඥ͍͍ͮͯΕɺͦͷΞυϨεͷΛূ໌͢ Δ͜ͱ͕Ͱ͖Δ • ඥͮ͘ιʔγϟϧΞΧϯτͷ͕૿͑Δ΄ͲɺͦͷΞυϨ
εͷ৴པ্͕͍ͬͯ͘
ొϑϩʔ 1. ࣗͷTwitterΞΧϯτID(ྫ: @st_dsk)ʹରͯ͠ΥϨοτ ΞυϨεͷൿີ伴Ͱॺ໊ 2. ॺ໊ͨ͠จࣈྻΛTwitterʹߘ 3. πΠʔτURL͔Βॺ໊Λऔಘ͠ɺͦͷॺ໊ͱTwitterΞΧϯ τIDΛίϯτϥΫτͷొ༻ؔʹ͛Δ
4. ίϯτϥΫτͰݕূ͠ɺޭ͢ΕΥϨοτΞυϨεͱ TwitterΞΧϯτIDΛඥ͚ͮͯϒϩοΫνΣʔϯʹॻ͖ࠐΉ
Demo
ϋϯζΦϯ
gethoΞΧϯτ࡞ getho.ioʹΞΫηε͠ɺΞΧϯτͷొ
gethoμογϡϘʔυ ઐ༻ͷϓϥΠϕʔτϊʔυͱυϝΠϯ͕࡞ΒΕ·͢
ϋϯζΦϯ༻ͷϨϙδτϦΛ४උ URL: github.com/popshootjapan/blockchain_hackathon_2019 ϨϙδτϦͷμϯϩʔυ $ git clone
[email protected]
:popshootjapan/ blockchain_hackathon_2019.git ґଘϥΠϒϥϦͷΠϯετʔϧ
$ npm install (※ python2ܥඞਢ)
TwitterIdentifyίϯτϥΫτ ./contracts/TwitterIdentify.sol contract TwitterIdentify { // ΞυϨεͱTwitterΞΧϯτIDͷmapping mapping(address => string)
public twitterIdentifications; function identify(string twitterId, bytes32 hash, bytes signature) public { ... } function ecverify(bytes32 hash, bytes signature) internal pure returns(address sig_address) { ... } }
ίϯτϥΫτσϓϩΠ ./migrations/2_deploy_TwitterIdetify.js var TwitterIdentify = artifacts.require("./TwitterIdentify.sol"); module.exports = function(deployer) {
deployer.deploy(TwitterIdentify); };
ίϯτϥΫτσϓϩΠ ※<YOUR SUBDOMAIN>ͷ෦Λॻ͖͍͑ͯͩ͘͞ ./truffle-config.js module.exports = { networks: { getho:
{ host: "<YOUR SUBDOMAIN>.getho.io/jsonrpc", port: 80, network_id: 1010, gas: 4712388 } } }
ίϯτϥΫτσϓϩΠ $ ./node_modules/.bin/truffle migrate --network getho
μογϡϘʔυ্ͰTx֬ೝ͕Ͱ͖·͢
webαʔόىಈ <YOUR SUBDOMAIN>ͱ<CONTARCT ADDRESS>Λॻ͖͑ ͍ͯͩ͘͞ ./app.js var web3 = new
Web3('http://<YOUR SUBDOMAIN>.getho.io:80/jsonrpc'); const contractAddr = '<CONTRACT ADDRESS>';
webαʔόىಈ $ node app.js αʔό্ཱ͕͕ͪΔͱɺ http://localhost:3000ʹΞΫηεͰ͖·͢
gethoʹίϯτϥΫτΞοϓϩʔυ ϩάΠϯ $ ./getho_osx login ϊʔυҰཡऔಘ $ ./getho_osx nodes ίϯτϥΫτͷΞοϓϩʔυ
$ ./getho_osx upload ./builds/contracts/ TwitterIdentify.json -s <YOUR SUBDOMAIN>
gethoʹίϯτϥΫτΞοϓϩʔυ μογϡϘʔυʹՃ͞Ε·͢(※ը໘ӈԼ)
GUIͰ࣮ߦ ؔͷ࣮ߦ͕Ͱ͖·͢
࣭ٙԠ&Ճ՝ • ίϯτϥΫτʹॺ໊ͨ͠URLΛอ࣋͢Δ • ॺ໊ͨ͠URLͷϦϯΫΛWeb্ʹදࣔͤ͞Δ (※ ͑ͷ࣮additional_practiceϒϥϯνʹ͋Γ·͢)
·ͱΊ • gethoͷհ • ࣗͷΞυϨεͷূ໌ΛTwitterΛ࣮ͬͯݱ͢ΔDApp ։ൃϋϯζΦϯ
͋Γ͕ͱ͏͍͟͝·ͨ͠ ϋοΧιϯ͕Μ͍ͬͯͩ͘͞!