Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Hyperledger Fabric ハンズオン手順
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Taiji HAGINO
PRO
June 12, 2019
Technology
360
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Hyperledger Fabric ハンズオン手順
本資料は5月29日、6月12日、7月3日のIBM Developer Dojo用の資料です。
Taiji HAGINO
PRO
June 12, 2019
More Decks by Taiji HAGINO
See All by Taiji HAGINO
なぜデベロッパーアドボカシーが必要なのか?
taiponrock
PRO
0
200
Datadogで実現するマルチレイヤーObservability入門
taiponrock
PRO
0
180
Datadog Cloud Cost Management で実現するFinOps
taiponrock
PRO
0
400
5分で知るMicrosoft Ignite
taiponrock
PRO
0
580
Bridging the Gap:Why Developer Relations and Product Management Must Work Together
taiponrock
PRO
0
110
What Four Approaches Taught Me About Developer Productivity
taiponrock
PRO
0
67
Automatic Creation of Azure Environment Configuration Diagrams! with Datadog Cloudcraft
taiponrock
PRO
0
110
VS Code の静的分析でリアルタイムのコードフィードバックを取得
taiponrock
PRO
0
280
Backstage of Enterprise Conference
taiponrock
PRO
1
280
Other Decks in Technology
See All in Technology
OR学会2026年秋期大会_機械学習と数理最適化の融合による、配合レシピ最適化システム開発事例
brainpadpr
0
130
USB PDを使ってスマホを労わりたい
raspython3
0
160
実体験から学ぶ分析エージェントの開発と運⽤
recruitengineers
PRO
8
2k
おそらく日本で唯一のDevRelインターン生として
husengs7
0
170
ファミコンでPHPを動かす / PHP on the Famicom side b
tomzoh
0
140
しろおびから始める!ログ活用の第一歩
shumei_ito
0
880
実践! SRE × AI - ABEMA における AIOps -
tetsuya28
7
2.8k
生成AIで高い生産性を求められて、 悩み、乗り越えた話
mot_techtalk
2
160
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
410
契約書画像からの情報抽出に特化した視覚接地モデルを育てる話
sansantech
PRO
1
160
Snapshot Testing in Practice: Predictable and Reliable SwiftUI Views
fespinoza
0
180
ビジネスを止めない技術的負債の返済のための戦略とその手法 - 技術的負債と向き合う / Complexity and Simplicity
soudai
PRO
3
690
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
A Modern Web Designer's Workflow
chriscoyier
699
190k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
Fireside Chat
paigeccino
43
4.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Everyday Curiosity
cassininazir
0
350
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
550
Speed Design
sergeychernyshev
33
2.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
Transcript
2019/06/19 10(21 1 / 14 ϖʔδ about:blank 1.IBPͷωοτϫʔΫىಈ IBM CloudͷΧλϩά͔ΒBlockchain
Platform v2.0Λબ https:/ /cloud.ibm.com/catalog Standard PlanΛબͯ͠࡞ΛΫϦοΫ →IBPͷ࡞ϖʔδʹҠಈ͢Δɻ σϓϩΠϝϞ
2019/06/19 10(21 2 / 14 ϖʔδ about:blank DallasͷσʔληϯλʔͰIKSͷΫϥελʔΛ࡞͢Δඞཁ͕͋Δɻ طʹߏஙࡁΈͷΫϥελʔར༻Մೳɻ ͨͩ͠ɺKubernetesͷόʔδϣϯv1.11Ҏ্ਪɻ
IKSͷFreeϓϥϯΛબ͢Ε30ؒແྉͰར༻͢Δ͜ͱ͕Ͱ͖Δɻ IKSͷΫϥελʔબͷϓϧμϯͷ෦ͰϒϥβʹΑͬͯΫϥελ͕දࣔ͞Εͳ͍Մೳੑ͕͋ Δɻ ϒϥβΛ࠷৽όʔδϣϯʹΞοϓσʔτ͢Δ͔ɺଞͷϒϥβΛར༻͢Δ͔Ͱରॲ͢Δɻ IKSͰClusterΛ͍࣋ͬͯͳ͍߹create a new clusterΛΫϦοΫɻ IKSͷΫϥελ࡞ϖʔδͷλϒ͕৽͘͠։͘ɻ ແྉϓϥϯΛબ͠ɺϩέʔγϣϯ͕μϥεʹͳ͍ͬͯΔ͜ͱΛ֬ೝͷ্ɺ࡞ΛΫϦοΫɻ Ϋϥελ͕࡞͞ΕΔ·Ͱ30ɻ
2019/06/19 10(21 3 / 14 ϖʔδ about:blank Ϋϥελͷߏங͕ྃ͢ΔͱworkkerϊʔυͷKuberntesͷόʔδϣϯ͕දࣔ͞ΕΔɻ όʔδϣϯ͕1.11Ҏ্Ͱͳ͍ͱBlockchainͷϊʔυཱ͕ͯΒΕͨʹͨΊɺόʔδϣϯͷߋ৽͕ඞ ཁɻ
·ͣԼਤʹै͍ɺΫϥελͷόʔδϣϯͷߋ৽Λߦ͏ɻΞφϯεʹै͍ɺ1࣌ؒޙɺworkerϊʔ υͷϝχϡʔ͔Βόʔδϣϯߋ৽Λߦ͏ͱworkerϊʔυͷόʔδϣϯ1.11Ҏ্ʹΞοϓσʔτ ͢Δ͜ͱ͕Ͱ͖ΔɻσϑΥϧτͷىಈόʔδϣϯ2/25ݱࡏv1.11ͷͨΊɺόʔδϣϯΞοϓ ෆཁɻ ΫϥελΛબ͠ɺDeploy to clusterΛΫϦοΫɻ ͦͷޙɺLaunch the IBM Blockchain PlatformΛΫϦοΫ
2019/06/19 10(21 4 / 14 ϖʔδ about:blank IBPͷཧίϯιʔϧը໘ 2.ϊʔυ࡞ ࢀߟใʢӳޠ൛ͷΈʣ
https:/ /cloud.ibm.com/docs/services/blockchain/howto?topic=blockchain-ibp-console-build- network&locale=en#ibp-console-build-network (1)CAϊʔυͷ࡞ Blockchain ωοτϫʔΫʹࢀՃ͢Δ৫ͷCAΛىಈ͠ɺCAΛͬͯɺൿີ伴ূ໌ॻΛൃߦ͠ ͯɺ ଞͷϊʔυΛىಈ͍ͯ͘͠ɻ ཧίϯιʔϧͷࠨϝχϡʔͷNodesΛબɻ Add Certificate AuthorityΛΫϦοΫɻ Create a new Certificate AuthorityΛબͯ͠ɺNextΛΫϦοΫɻ Display NameΛ"Org1 CA"ͱهೖɻ
2019/06/19 10(21 5 / 14 ϖʔδ about:blank Enrollment IdΛadminɺsecretΛadminpwͱͯ͠NextΛΫϦοΫɻ ࠷ޙʹsubmitΛԡ͢ͱCAϊʔυ͕࡞͞ΕΔɻ
ಉ༷ͷཁྖͰOrderer༻ͷCA࡞͓ͯ͘͠ɻ (2)adminϢʔβͷ࡞ɻ (1)Ͱ࡞ͨ͠CAϊadminϢʔβΛ࡞͢Δɻ(1)Ͱ࡞ͨ͠σϑΥϧτϢʔβΛͦͷ··ར༻͢Δ ͷɺ ɹηΩϡϦςΟ؍ͰΑΖ͘͠ͳ͍ɻ (1)Ͱ࡞ͨ͠Org1 CAΛબɻ Register UserΛΫϦοΫɻ Enrollment ID"org1admin"Secret"org1adminpw"Ͱ࡞͢Δɻ ϢʔβλΠϓClientΛબɻAffiliationαϯϓϧͰར༻ͳ͍ͨΊɺબࢶ͔ΒҙͷΛҒ Ϳɻ Φϓγϣϯཝهೖͷ··SubmitΛΫϦοΫ͢ΔͱϢʔβ͕࡞͞ΕΔɻ ಉ༷ʹPeerߏங༻ͷϢʔβΛ࡞͢Δɻ Enrollment ID"peer1"Secretpeer1pwͰϢʔβλΠϓpeerΛબ͢Δɻ Ordererಉ༷ʹordereradminͱorderer1Ϣʔβͷ2ͭΛ࡞͢Δɻ (2)৫(MSP)ͷ࡞ɻ IBPͷཧίϯιʔϧͷOrganizationsλϒΛબ͢Δɻ Create MSP definitionΛબ͢Δɻ Display NameΛOrg1 MSPɺMSPIDΛorg1mspͰηοτ͢Δɻ
2019/06/19 10(21 6 / 14 ϖʔδ about:blank CAͷબཝͰઌ΄Ͳ࡞ͨ͠Org1 CAΛબ͢Δɻ Enrollment
IDͱSecretorg1adminͱorg1adminpwʹมߋ͠ɺGenerateϘλϯΛԡ͢ɻ IBPͷཧίϯιʔϧͷwalletଟͰ࡞ͨ͠ϢʔβΛ֬ೝ͢Δ͜ͱ͕Ͱ͖Δɻ ൿີ伴ͱূ໌ॻΤΫεϙʔτͯ͠VSCodeͱͷଓʹར༻͢Δɻ ͜ͷwalletϒϥβͷϩʔΧϧετϨʔδ্ʹอଘ͞Ε͍ͯΔ͚ͩͰɺIKS্ʹอଘ͞Ε͍ͯͳ ͍ͨΊɺ ϢʔβࣗͰΤΫεϙʔτͯ͠ཧ͢Δඞཁ͕͋Δɻ ϒϥβͷཤྺΛআͨ͠ΓɺΩϟογϡΛআ͢Δͱwalletͷσʔλ͕ͳ͘ͳΓɺϊʔυʹΞ ΫηεͰ͖ͳ͘ͳͬͯ͠·͏ͷͰɺ࡞ͨ͠walletͷσʔλඞͣΤΫεϙʔτͯ͠όοΫΞοϓ Λऔಘ͓ͯ͘͠ඞཁ͕͋Δɻ ࠷ޙʹCreate MSPϘλϯΛԡ͢ɻ OrganizationsʹOrg1 MSP͕࡞͞ΕΔɻ ಉ༷ʹOrderer MSP࡞͓ͯ͘͠ɻ (4)PeerɺOrdererϊʔυͷ࡞ɻ IBPͷཧίϯιʔϧͷNodesλϒΛબ͠Add PeerΛબ͢Δɻ display NamePeer Org1ʹઃఆ͢Δɻ CAOrg1 CAɺEnrollment IDͱSecretPeerͷ࡞༻ʹ࡞ͨ͠peer1ϢʔβΛࢦఆ͠NextΛબ ɻ
2019/06/19 10(21 7 / 14 ϖʔδ about:blank TLSͷཝEnrollment IDadminɺSecretadminpwΛબ͢ΔɻʢΦϓγϣϯػೳͷͨΊʣ ࠷ޙʹIdentityΛOrg1
Adminʹͯ͠NextɺSubmitΛબ͢ΔɻPeer͕࡞͞ΕΔɻ ͜͜·ͰͰPeer1ɺOrderer1ɺCA͕2࡞Ͱ͖͍ͯΔ͜ͱΛNodesλϒͰ֬ೝ͢Δɻ (5)࡞ͨ͠৫ΛOrdererͷίϯιʔγΞϜϝϯόʔՃ͢Δɻ
2019/06/19 10(21 8 / 14 ϖʔδ about:blank IBPͷཧίϯιʔϧͷNodesλϒ͔Β࡞ͨ͠OrdererΛબ͢Δɻ Consortium MembersͷAdd
OrganizationΛબ͢Δɻ Org1 MSPΛબͯ͠ɺSubmitΛΫϦοΫ͢Δɻ ࢀՃ༧ఆͷ৫ΛશͯConsortium Memberʹొͯ͠ஔ͔ͳ͍ͱνϟωϧͷ࡞ͰΤϥʔ͕ൃੜ ͢Δɻ (6)νϟωϧͷ࡞ IBPͷίϯιʔϧͷࠨϝχϡʔը໘͔ΒChannelsΛબ͠ɺCreate channelΛબ͢Δɻ ҎԼͷΑ͏ʹΛೖྗ͠ɺAddϘλϯΛԡ͢ɺOrg1MSPʹର͢Δݖݶͷઃఆཝ͕දࣔ͞ΕΔͷ Ͱɺ OperatorʹνΣοΫΛೖΕɺCreate ChannelϘλϯΛબ͢Δɻ
2019/06/19 10(21 9 / 14 ϖʔδ about:blank
2019/06/19 10(21 10 / 14 ϖʔδ about:blank νϟωϧ͕࡞͞ΕΔ͕ɺཧը໘্ʹ·ͩදࣔ͞Εͳ͍ɻ ଓ͍ͯɺJoin channelϘλϯΛΫϦοΫ͢Δɻ
OrdererΛબ͠ɺNext ઌ΄Ͳ࡞ͨ͠channel1Λهೖ͠ɺNextɺ ࠷ޙʹࢀՃͤ͞ΔPeerϊʔυΛબ͠ɺSubmitΛΫϦοΫ͢Δɻ νϟωϧ͕࡞͞ΕΔɻ 3.εϚʔτίϯτϥΫτσϓϩΠ IBPͷࠨϝχϡʔը໘͔ΒSmart contractλϒΛબ͠ɺInstall smart contractΛΫϦοΫɻ Πϯετʔϧ͢ΔνΣʔϯίʔυͷύοέʔδϑΝΠϧ(cds)ϑΝΠϧΛબͯ͠ɺΠϯετʔϧ ͢Δɻ ύοέʔδͷํ๏VSCodeΛར༻͢Δํ๏ͱɺpeerίϚϯυΛར༻͢Δํ๏ͷ2छྨ͕͋Δɻ VSCode͔Βύοέʔδͨ͠ϑΝΠϧInstallͰ͖ͳ͍ 413 (Request Entity Too Large)͕javascriptίϯιʔϧͰฦͬͯདྷ͍ͯͨɻ ༰ྔ͕େ͖͔ͬͨͨΊɺࣦഊͨ͠ͱਪ ޭͨ͠cdsϑΝΠϧ2KBɺࣦഊ͍ͯ͠ΔcdsϑΝΠϧ18.1MB →packaging͢Δࡍʹnode_moduleҰॹʹpackage͞Ε͍ͯͨͨΊɺ༰ྔ͕ංେԽ͍ͯͨ͠ͱਪ ɻ ɹϓϩδΣΫτͷnode_moduleΛআͷ্ɺpackage͢Δͱ27KBʹݮΒ͢͜ͱ͕Ͱ͖ɺ ɹΠϯετʔϧޭͨ͠ɻ
2019/06/19 10(21 11 / 14 ϖʔδ about:blank νΣʔϯίʔυͷinstantiate IBPͷཧը໘ͷࠨϝχϡʔͷSmart contracts͔ΒΠϯετʔϧͨ͠εϚʔτίϯτϥΫτϦετ
Λදࣔ͠ɺӈଆͷϝχϡʔ͔ΒInstantiateΛબɻ εϚʔτίϯτϥΫτΛσϓϩΠ͢ΔνϟωϧΛબ͠ɺEndorsement PolicyΛબͯ͠ɺ Instantiate͢Δࡍʹ࣮ߦ͢Δ໊ؔͱҾΛೖྗͯ͠InstantiateΛΫϦοΫɻ Endorsement Policyγϯϓϧʹ৫Λબ͢ΔύλʔϯͱJSONϑΝΠϧͰࡉ͔͘ࢦఆ͢Δύλ ʔϯͷ2௨Γ͕͋Δɻ Instantiate͕ྃ͢ΔͱInstantiated smart contractͷϦετʹදࣔ͞ΕΔɻ 4.ωοτϫʔΫͷଓ IBPͷཧίϯιʔϧͷࠨϝχϡʔ͔ΒSmart contractsΛબɻ Instantiated smart contractsͷҰཡͷӈϝχϡʔ͔Βconnect with SDKΛબ͠ɺωοτϫʔΫͷ ConfigϑΝΠϧΛμϯϩʔυ͢Δɻ ϑϩϯτΞϓϦ͔ΒIBPͷωοτϫʔΫʹଓ͢ΔͷʹඞཁͳใҎԼ4ͭ ɾConnection Profileʢ্هͰμϯϩʔυͨ͠configϑΝΠϧʣ ɾωοτϫʔΫʹࢀՃ͍ͯ͠Δ৫ͷCAͷadminϢʔβͱsecret(admin/adminpw) ɾଓ͢Δνϟωϧ໊ ɾଓ͢ΔνΣʔϯίʔυ໊ (1)ΞϓϦέʔγϣϯϢʔβͷ࡞
2019/06/19 10(21 12 / 14 ϖʔδ about:blank ɹτϥϯβΫγϣϯʹॺ໊͢ΔͨΊͷΞϓϦέʔγϣϯϢʔβΛ࡞͢Δɻ ɹɾConnection ProfileͷύεΛมߋ
ɹɾCAͷURLΛϙʔτͰࢦఆ ɹɾenrollment IDͱSecretɺOrg1ͷMSP IDΛهࡌɻ node enrollUser.jsͰϢʔβΛ࡞ɻ ผ్package.jsonΛ࡞ͯ͠ɺnpm install͢Δඞཁ͋Γɻ package.jsonfabcarͷαϯϓϧΛίϐʔͯ͠ར༻ɻ (2)τϥϯβΫγϣϯͷૹ৴ ɹ্ه4ͭͷใͱ(1)Ͱ࡞ͨ͠ϢʔβΛͬͯɺτϥϯβΫγϣϯΛૹ৴͢Δɻ ɾconnection ProfileͷύεΛมߋ ɾνϟωϧ໊Λࢦఆ ɾνΣʔϯίʔυ໊Λࢦఆ node invoke.jsͰ࣮ߦ Channel not found....ͱ͍͏Τϥʔ͕ग़Δ͕ɺͦͷޙτϥϯβΫγϣϯਖ਼ৗʹૹ৴͞ΕΔͷͰ ͳ͠ɻ ʢdiscovery Serviceͷόάͱਪʣ 5.VSCode(ධՁ൛)ͱͷଓ (1)network configϑΝΠϧͷμϯϩʔυɻ IBPͷཧը໘ͷsmart contractλϒΛબɻ Instantiated smart contractsͷҰཡ͔ΒσϓϩΠͨ͠εϚʔτίϯτϥΫτΛબ͠ɺӈͷϝχϡ ʔ͔Βconnect SDKΛΫϦοΫɻ
2019/06/19 10(21 13 / 14 ϖʔδ about:blank Download Connection ProfileΛΫϦοΫ͢ΔͱɺjsonܗࣜͰnetworkͷconfigϑΝΠϧ͕μϯϩ
ʔυ͞ΕΔɻ (2)ଓ༻ͷൿີ伴ɺূ໌ॻͷ࡞ɻ IBPͷཧը໘ͷWalletλϒΛબɻ ࡞ͨ͠Identity(Org1Admin)Λબ͢Δɻ ը໘ӈଆʹূ໌ॻͱൿີ伴͕දࣔ͞ΕΔɻ VSCodeͰར༻͢Δʹ͜ΕΒͷσʔλΛPEMϑΥʔϚοτʹม͢Δඞཁ͕͋Δɻ ɹ ҎԼͷίϚϯυΛϩʔΧϧͰ࣮ߦ͢ΔͱPEMϑΝΠϧ͕ੜͰ͖Δɻ #export FLAG=$(if [ "$(uname -s)" == "Linux" ]; then echo "-w 0"; else echo "-b 0"; fi) #echo <base64_string> | base64 --decode $FLAG > <key>.pem <base64_string>ʹ্هཧը໘ͷӈଆʹදࣔ͞ΕΔൿີ伴 or ূ໌ॻͷจࣈྻΛೖΕͯɺ <key>ʹҙͷϑΝΠϧ໊Λهࡌ͢Δɻ (3)VSCodeͱIBPͷωοτϫʔΫΛଓ͢Δɻ ͋Β͔͡ΊVSCodeʹIBM Blockchain PlatformͷΞυΦϯΛΠϯετʔϧ͓ͯ͘͠ɻ https:/ /marketplace.visualstudio.com/items?itemName=IBMBlockchain.ibm-blockchain- platform#overview VSCodeͷࠨϝχϡʔ͔ΒIBM Blockchain PlatformΛબɻ Blockchain Connectionsͷӈଆͷ+ϘλϯΛΫϦοΫɻ ଓઌͷωοτϫʔΫ໊ʹҙͷωοτϫʔΫ໊Λબ͢Δɻ ࣍ʹ্هͰμϯϩʔυͨ͠networkͷconfigϑΝΠϧΛϑΝΠϧ͔Βબ͢Δɻ Create a new wallet for an identity with a certificate and private keyΛબ͠ɺwallet໊Λ
2019/06/19 10(21 14 / 14 ϖʔδ about:blank org1adminͱهࡌ͢ΔɻenrollIDͱಉ໊͡લʹࢦఆ͠ͳ͍ͱError͕ग़ྗ͞ΕΔɻ ࠷ޙʹ(2)Ͱ࡞ͨ͠ূ໌ॻͱൿີ伴ͷPEMϑΝΠϧΛબ͢Δͱɻ VSCode͔ΒIBPͷଓ͕Ͱ͖Δɻ
IBP্ͷεϚʔτίϯτϥΫτͷτϥϯβΫγϣϯͷૹ৴͕Ͱ͖Δɻ VSCode v0.3.0ͰϩʔΧϧωοτϫʔΫͷΈεϚʔτίϯτϥΫτͷσϓϩΠ͕Ͱ͖ɺ֎෦ωο τϫʔΫτϥϯβΫγϣϯͷૹ৴ͷΈͰ͖Δɻ ࣮ࡍҎԼͷΑ͏ͳΤϥʔ͕දࣔ͞ΕɺΠϯετʔϧͰ͖Δ͕ɺInstantiationɺτϥϯβΫγϣ ϯͷૹ৴Ͱ͖ͳ͍ɻ※IBPଆͰInstantiationͰ͖ͨɻIBP for ExtensionͷόʔδϣϯΛ0.3.0ɺ VSCodeͷόʔδϣϯΛ1.31ʢIBP for Extensionͷਪόʔδϣϯʣʹͨ͠ΒΤϥʔ͕දࣔ͞Εͳ ͘ͳͬͨɻʢVSCode͔ΒIBPͷωοτϫʔΫʹରͯ͠ΠϯετʔϧͱInstantiationͰ͖ͣɺτ ϥϯβΫγϣϯͷૹ৴͚ͩͰ͖ΔΑ͏ʹͳͬͨʣ