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
210
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
140
gethoハッカソン -ハンズオン-
daisuke310vvv
1
1k
Hi-Con2018 より良いDApp開発をするための話と gethoについて
daisuke310vvv
1
360
getho ~ Ethereum private nodes, tailored for you. ~
daisuke310vvv
0
740
社内仮想通貨をモバイルDappとしてつくってみた
daisuke310vvv
1
3k
Other Decks in Technology
See All in Technology
よくわからんサービスについての問い合わせが来たときの強い味方 Amazon Q について
kazzpapa3
0
220
pandasはPolarsに性能面で追いつき追い越せるのか
vaaaaanquish
4
4.3k
GitHub Universe: Evaluating RAG apps in GitHub Actions
pamelafox
0
170
Apple/Google/Amazonの決済システムの違いを踏まえた定期購読課金システムの構築 / abema-billing-system
cyberagentdevelopers
PRO
1
210
Amazon_CloudWatch_ログ異常検出_導入ガイド
tsujiba
4
1.5k
コンテンツを支える 若手ゲームクリエイターの アートディレクションの事例紹介 / cagamefi-game
cyberagentdevelopers
PRO
1
120
プロダクト成長に対応するプラットフォーム戦略:Authleteによる共通認証基盤の移行事例 / Building an authentication platform using Authlete and AWS
kakehashi
1
150
オニオンアーキテクチャで実現した 本質課題を解決する インフラ移行の実例
hryushm
14
3k
2024-10-30-reInventStandby_StudyGroup_Intro
shinichirokawano
1
610
ガバメントクラウド先行事業中間報告を読み解く
sugiim
1
1k
ABEMA のコンテンツ制作を最適化!生成 AI x クラウド映像編集システム / abema-ai-editor
cyberagentdevelopers
PRO
1
180
20241031_AWS_生成AIハッカソン_GenMuck
tsumita
0
110
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
180
21k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
7.9k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
1.9k
Visualization
eitanlees
144
15k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
167
49k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
33k
How To Stay Up To Date on Web Technology
chriscoyier
788
250k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
328
21k
Designing Experiences People Love
moore
138
23k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
126
18k
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 ։ൃϋϯζΦϯ
͋Γ͕ͱ͏͍͟͝·ͨ͠ ϋοΧιϯ͕Μ͍ͬͯͩ͘͞!