Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

ΠžΡ‡ΠΈΡ‚Π΅ сС страхуват, Π° Ρ€ΡŠΡ†Π΅Ρ‚Π΅ сС потят!

Π’ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ статии Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡ‚Π΅, Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ΠΈΡ‚Π΅ (Каква Π΅ Ρ†Π΅Π½Π°Ρ‚Π° Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½?) ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ с тяхна ΠΏΠΎΠΌΠΎΡ‰ (Какво Π½ΠΈ ΠΏΡ€Π΅Ρ‡ΠΈ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€?). ΠΠ°ΡΡ‚ΡŠΠΏΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с Ρ€ΡŠΡ†Π΅Ρ‚Π΅ си! Π—Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠΈΠ»ΠΎΡ‚Π½ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ ΠΈ PoC (Proof of Concept) ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ услуги, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ ΠΎΡ‚ всяка Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° свСта ΠΈ чСсто Π½Π΅ Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС Π³ΡƒΠ±ΠΈ Π²Ρ€Π΅ΠΌΠ΅ Π² скучна инсталация Π½Π° срСда, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ инсталирани ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ. И Ρ‚Π°ΠΊΠ°, Π½Π΅ΠΊΠ° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π½Π΅Ρ‰ΠΎ просто, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΡ€Π΅ΠΆΠ° Π·Π° ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΠΌΠΎΠ½Π΅Ρ‚ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ участницитС ΠΈ Π΄Π° я Π½Π°Ρ€Π΅Ρ‡Π΅ΠΌ скромно Π‘itcoin. Π—Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° IBM ΠΈ унивСрсалния Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ Hyperledger Fabric. ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ Π·Π°Ρ‰ΠΎ Hyperledger Fabric сС Π½Π°Ρ€ΠΈΡ‡Π° унивСрсалСн Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½?

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Hyperledger Fabric β€” унивСрсалСн Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½

По ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, унивСрсалната ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Π° систСма Π΅:

  • ΠšΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈ софтуСрно ядро, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ΠΎ бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°;
  • Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡΠΈ Π·Π° взаимодСйствиС с систСмата;
  • БрСдства Π·Π° рСгистрация, автСнтикация ΠΈ авторизация Π½Π° устройства/Ρ…ΠΎΡ€Π°;
  • Π‘Π°Π·Π° Π΄Π°Π½Π½ΠΈ, съ храняща ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΈ Π°Ρ€Ρ…ΠΈΠ²Π½ΠΈ Π΄Π°Π½Π½ΠΈ:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

ΠžΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π°Ρ‚Π° вСрсия Π½Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Hyperledger Fabric ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅ Π½Π° сайта, Π° Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ, Hyperledger Fabric Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, която позволява ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π·Π°Ρ‚Π²ΠΎΡ€Π΅Π½ΠΈ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ΠΈ ΠΈ ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ смарт Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ, написани Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡ†ΠΈ JS ΠΈ Go. НСка ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Hyperledger Fabric ΠΈ Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ унивСрсална систСма, Π² която само сС Π·Π°Π»ΠΎΠΆΠΈ спСцифика ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈ записванСто Π½Π° Π΄Π°Π½Π½ΠΈ. Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ‚Π° сС ΡΡŠΡΡ‚ΠΎΠΈ Π² Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΡ‚ΠΎ във всички Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ΠΈ, сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС добавят Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° само, Π°ΠΊΠΎ участницитС постигнат консСнсус ΠΈ слСд записванСто Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ нСзабСлязано промСняни ΠΈΠ»ΠΈ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½ΠΈ.

АрхитСктура Π½Π° Hyperledger Fabric

На схСмата Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° Hyperledger Fabric:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Organizations β€” ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ peer-ΠΈ, Ρ‚.Π΅. Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΊΡ€Π΅ΠΏΠ°Ρ‚Π° Π½Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈΡ‚Π΅. Π Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²Π»ΠΈΠ·Π°Ρ‚ Π² Π΅Π΄ΠΈΠ½ channel.

Channel β€” логичСска структура, обСдиняваща peer-ΠΈ Π² Π³Ρ€ΡƒΠΏΠΈ, Ρ‚.Π΅. опрСдСля Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°. Hyperledger Fabric ΠΌΠΎΠΆΠ΅ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° няколко Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° с Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°.

Membership Services Provider (MSP) β€” Ρ‚ΠΎΠ²Π° Π΅ CA (Certificate Authority) Π·Π° ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° идСнтичности ΠΈ Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° Ρ€ΠΎΠ»ΠΈ. Π—Π° създаванС Π½Π° възСл Π΅ Π½ΡƒΠΆΠ½ΠΎ взаимодСйствиС с MSP.

Peer nodes β€” провСряват Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ ΠΈ взаимодСйстват с прилоТСния. Π’ peer-ΠΎΠ²Π΅Ρ‚Π΅ ΠΈΠΌΠ° identity (Ρ†ΠΈΡ„Ρ€ΠΎΠ² сСртификат), ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·Π΄Π°Π²Π° ΠΎΡ‚ MSP. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π° Bitcoin ΠΈΠ»ΠΈ Ethereum, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ всички Π½ΠΎΠ΄ΠΈ са Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½ΠΈ, Π² Hyperledger Fabric Π½ΠΎΠ΄ΠΈΡ‚Π΅ играят Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€ΠΎΠ»ΠΈ:

  • Peer ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС endorsing peer (EP) ΠΈ Π΄Π° изпълнява смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ.
  • Committing peer (CP) β€” само ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π΄Π°Π½Π½ΠΈ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ β€žWorld stateβ€œ.
  • Anchor Peer (AP) β€” Π°ΠΊΠΎ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° участват няколко ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π°Π½ΠΊΠΎΡ€ peer-ΠΎΠ²Π΅Ρ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ тях. Всяка организация трябва Π΄Π° ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π°Π½ΠΊΠΎΡ€ peer. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° AP всСки peer Π² организацията ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈ информация Π·Π° всички peer-ΠΎΠ²Π΅ Π² Π΄Ρ€ΡƒΠ³ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π—Π° синхронизиранС Π½Π° информацията ΠΌΠ΅ΠΆΠ΄Ρƒ AP сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° gossip ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».
  • Leader Peer β€” Π°ΠΊΠΎ организацията ΠΈΠΌΠ° няколко peer-ΠΎΠ²Π΅, само Π»ΠΈΠ΄Π΅Ρ€ peer Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΎΡ‚ Ordering service ΠΈ Ρ‰Π΅ Π³ΠΈ Ρ€Π°Π·Π΄Π°Π²Π° Π½Π° останалитС peer-ΠΎΠ²Π΅. Π›ΠΈΠ΄Π΅Ρ€ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π·Π°Π΄Π°Π΄Π΅Π½ статично ΠΈΠ»ΠΈ Π΄Π° бъдС ΠΈΠ·Π±Ρ€Π°Π½ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ ΠΎΡ‚ peer-ΠΎΠ²Π΅Ρ‚Π΅ Π² организацията. Π—Π° синхронизиранС Π½Π° информацията Π·Π° Π»ΠΈΠ΄Π΅Ρ€ΠΈΡ‚Π΅ ΡΡŠΡ‰ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° gossip ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ».

Assets β€” сущности, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ стойност ΠΈ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°. По-ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ β€” Ρ‚ΠΎΠ²Π° са key-value Π΄Π°Π½Π½ΠΈ във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ JSON. ИмСнно Ρ‚Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ сС записват Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ β€žBlockchainβ€œ. Π’Π΅ ΠΈΠΌΠ°Ρ‚ история, която сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°, ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ β€žWorld stateβ€œ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС Π·Π°ΠΏΡŠΠ»Π²Π°Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ, Π² зависимост ΠΎΡ‚ бизнСс Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅. Няма Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, СдинствСната ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΠΊΠ° Π΅ β€” asset-ΠΈΡ‚Π΅ трябва Π΄Π° ΠΈΠΌΠ°Ρ‚ собствСник ΠΈ Π΄Π° прСдставляват стойност.

Ledger β€” ΡΡŠΡΡ‚ΠΎΠΈ сС ΠΎΡ‚ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ β€žBlockchainβ€œ ΠΈ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ β€žWord stateβ€œ, Π² която сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° asset-ΠΈΡ‚Π΅. World state ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° LevelDB ΠΈΠ»ΠΈ CouchDB.

Π‘ΠΌΠ°Ρ€Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ β€” с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° систСмата. Π’ Hyperledger Fabric смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΡ‚Π΅ сС Π½Π°Ρ€ΠΈΡ‡Π°Ρ‚ chaincode. Π‘ ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° chaincode сС Π·Π°Π΄Π°Π²Π°Ρ‚ asset-ΠΈΡ‚Π΅ ΠΈ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΏΠΎ тях. Ако Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ тСхничСски, смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΡ‚Π΅ са ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ JS ΠΈΠ»ΠΈ Go.

Endorsement policy β€” Π·Π° всСки chaincode ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°Π΄Π°Π΄Π΅ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° ΠΊΠΎΠ»ΠΊΠΎ ΠΈ ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС ΠΎΡ‡Π°ΠΊΠ²Π°Ρ‚ ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° транзакцията. Ако ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½Π°, ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°: β€œΡ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΡΡ‚Π° трябва Π΄Π° бъдС ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½Π° ΠΎΡ‚ всСки Ρ‡Π»Π΅Π½ (member) Π½Π° която ΠΈ Π΄Π° Π΅ организация Π² channel”. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ:

  • Вранзакцията трябва Π΄Π° бъдС ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄Π΅Π½Π° ΠΎΡ‚ всСки администратор Π½Π° организацията;
  • ВсСки Ρ‡Π»Π΅Π½ (member) ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π° организацията трябва Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈ;
  • ВсСки peer Π½Π° организацията трябва Π΄Π° ΠΏΠΎΡ‚Π²ΡŠΡ€Π΄ΠΈ.

Услуга Π·Π° ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Π½Π΅ β€” ΠΎΠΏΠ°ΠΊΠΎΠ²Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈ Π³ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π½Π° peer-ΠΈΡ‚Π΅ Π² channel. Π“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π° доставянС Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π΄ΠΎ всички peer-ΠΎΠ²Π΅ Π² ΠΌΡ€Π΅ΠΆΠ°Ρ‚Π°. Π—Π° индустриални систСми сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±Ρ€ΠΎΠΊΠ΅Ρ€ Π½Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Kafka, Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ тСстванС Solo.

CallFlow

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

  • ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ взаимодСйства с Hyperledger Fabric, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Go, Node.js ΠΈΠ»ΠΈ Java SDK;
  • ΠšΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ създава транзакция tx ΠΈ я ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π½Π° endorsing peer-ΠΈΡ‚Π΅;
  • Peer-ΡŠΡ‚ провСрява подписа Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°, изпълнява транзакцията ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° endorsement signature ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. Chaincode сС изпълнява само Π½Π° endorsing peer, Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΡƒ сС Ρ€Π°Π·ΠΏΡ€Π°Ρ‰Π° Π½Π° всички peer-ΠΎΠ²Π΅. Π’ΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° сС Π½Π°Ρ€ΠΈΡ‡Π° β€” PBFT (Practical Byzantine Fault Tolerant) консСнсус. Π Π°Π·Π»ΠΈΡ‡Π°Π²Π° сС ΠΎΡ‚ класичСския BFT ΠΏΠΎ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅Ρ‚ΠΎ сС Ρ€Π°Π·ΠΏΡ€Π°Ρ‰Π° ΠΈ сС ΠΎΡ‡Π°ΠΊΠ²Π° ΠΏΠΎΡ‚Π²ΡŠΡ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ‚ всички участници, Π° само ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ€;
  • Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ Π±Ρ€ΠΎΠΉ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π°Ρ‰ΠΈ Π½Π° endorsement policy, Ρ‚ΠΎΠΉ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° транзакцията Π½Π° услугата Π·Π° ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Π½Π΅;
  • Услугата Π·Π° ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Π½Π΅ Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Π±Π»ΠΎΠΊ ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π½Π° всички committing peer-ΠΎΠ²Π΅. Услугата Π·Π° ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Π½Π΅ осигурява послСдоватСлно записванС Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π° Ρ‚Π°ΠΊΠ° нарСчСния ledger fork (Π²ΠΈΠΆΡ‚Π΅ Ρ€Π°Π·Π΄Π΅Π» β€žΠ€ΠΎΡ€ΠΊΠΈβ€œ);
  • Peer-ΠΈΡ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚ Π±Π»ΠΎΠΊΠ°, ΠΎΡ‚Π½ΠΎΠ²ΠΎ провСряват endorsement policy, записват Π±Π»ΠΎΠΊΠ° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° ΠΈ промСнят ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π² β€žWorld stateβ€œ DB.

Π’Π°ΠΊΠ° сС ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Ρ€ΠΎΠ»ΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅. Π’ΠΎΠ²Π° осигурява ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅ ΠΈ сигурност Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°:

  • Π‘ΠΌΠ°Ρ€Ρ‚-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΡ‚Π΅ (chaincode) сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΎΡ‚ endorsing peer-ΠΈΡ‚Π΅. Π’ΠΎΠ²Π° осигурява конфидСнциалност Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΡ‚Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚Π΅ Π½Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΎΡ‚ всички участници, Π° само Π½Π° endorsing peer-ΠΈΡ‚Π΅.
  • Услугата Π·Π° ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Π½Π΅ трябва Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±ΡŠΡ€Π·ΠΎ. Π’ΠΎΠ²Π° сС осигурява ΠΎΡ‚ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ услугата Π·Π° ΠΏΠΎΡ€ΡŠΡ‡Π²Π°Π½Π΅ само Ρ„ΠΎΡ€ΠΌΠΈΡ€Π° Π±Π»ΠΎΠΊΠ° ΠΈ Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π½Π° фиксиран Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ leader peer-ΠΎΠ²Π΅.
  • Committing peer-ΠΈΡ‚Π΅ просто ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° β€” Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ Π½Π΅ изискват голяма мощност ΠΈ ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°.

ΠŸΠΎΠ²Π΅Ρ‡Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° Hyperledger Fabric ΠΈ Π·Π°Ρ‰ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚Π°ΠΊΠ°, Π° Π½Π΅ ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ‚ΡƒΠΊ: ΠŸΡ€ΠΎΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ Ρ‚ΡƒΠΊ: Hyperledger Fabric: Дистрибуционна ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма Π·Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ΠΈ.

И Ρ‚Π°ΠΊΠ°, Hyperledger Fabric Π΅ наистина унивСрсална систСма, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° която ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π°:

  • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈΡ‚Π΅;
  • ЗаписвайтС ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ JSON;
  • ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠΉΡ‚Π΅ ΠΈ провСрявайтС Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ API, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Certificate Authority.

Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΌΠ°Π»ΠΊΠΎ сС Π·Π°ΠΏΠΎΠ·Π½Π°Ρ…ΠΌΠ΅ със спСцификата Π½Π° Hyperledger Fabric, Π½Π΅ΠΊΠ° Π½Π°ΠΉ-накрая Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ!

Π Π°Π·Π³Ρ€ΡŠΡ‰Π°ΠΌ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½

Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°

Π—Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π΅ Π΄Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ ΠΌΡ€Π΅ΠΆΠ° Citcoin с слСднитС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: създаванС Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° баланс, попълванС Π½Π° смСтка, ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»ΡΠ½Π΅ Π½Π° ΠΌΠΎΠ½Π΅Ρ‚ΠΈ ΠΎΡ‚ Π΅Π΄Π½Π° смСтка Π½Π° Π΄Ρ€ΡƒΠ³Π°. НСка нарисувамС ΠΎΠ±Π΅ΠΊΡ‚Π½Π° ΠΌΠΎΠ΄Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ впослСдствиС Ρ‰Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π² смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚. И Ρ‚Π°ΠΊΠ°, Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ с ΠΈΠΌΠ΅Π½Π° (name) ΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΈ баланс (balance), ΠΈ списък с Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ. АкаунтитС ΠΈ ΡΠΏΠΈΡΡŠΠΊΡŠΡ‚ Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈΡ‚Π΅ прСдставляват asset Π² тСрминологията Π½Π° Hyperledger Fabric. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Ρ‚Π΅ ΠΈΠΌΠ°Ρ‚ история ΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅. Π©Π΅ сС ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»Π½ΠΎ:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π“ΠΎΡ€Π½ΠΈΡ‚Π΅ Ρ„ΠΈΠ³ΡƒΡ€ΠΈ прСдставляват Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Π±Π°Π·Π°Ρ‚Π° "World state". Под тях Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚ историята, която сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°. Π’Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° asset-ΠΈΡ‚Π΅ сС промСня Ρ‡Ρ€Π΅Π· Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ. Asset-ΡŠΡ‚ сС промСня изцяло, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° транзакция сС създава Π½ΠΎΠ² ΠΎΠ±Π΅ΠΊΡ‚, Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° стойност Π½Π° asset-Π° ΠΎΡ‚ΠΈΠ²Π° Π² историята.

IBM Cloud

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ» Π² IBM Cloud. Π—Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°, трябва Π΄Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Π΄ΠΎ Pay-As-You-Go. Π’ΠΎΠ·ΠΈ процСс ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π΅ Π±ΡŠΡ€Π·, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ IBM изисква Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация ΠΈ я провСрява Ρ€ΡŠΡ‡Π½ΠΎ. ΠžΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½Π° страна ΠΌΠΎΠ³Π° Π΄Π° ΠΊΠ°ΠΆΠ°, Ρ‡Π΅ IBM ΠΏΡ€Π΅Π΄Π»Π°Π³Π° Π΄ΠΎΠ±Ρ€ΠΈ ΡƒΡ‡Π΅Π±Π½ΠΈ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ позволяват Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° Hyperledger Fabric Π² тСхния ΠΎΠ±Π»Π°ΠΊ. Π₯арСса ΠΌΠΈ слСдният Ρ†ΠΈΠΊΡŠΠ» ΠΎΡ‚ статии ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ:

Π‘Π»Π΅Π΄Π²Π°Ρ‚ экранирани изобраТСния Π½Π° IBM Blockchain ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. Π’ΠΎΠ²Π° Π½Π΅ Π΅ инструкция Π·Π° създаванС Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½, Π° просто дСмонстрация Π½Π° ΠΎΠ±Ρ…Π²Π°Ρ‚Π° Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°. Π’Π°ΠΊΠ° Ρ‡Π΅, Π·Π° Π½Π°ΡˆΠΈΡ‚Π΅ Ρ†Π΅Π»ΠΈ, създавамС Π΅Π΄Π½Π° Organization:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π’ нСя създавамС възли: Orderer CA, Org1 CA, Orderer Peer:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

БъздавамС ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

БъздавамС Channel ΠΈ Π³ΠΎ Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ citcoin:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Channel Π΅ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΎΡ‚ Π½ΡƒΠ»Π΅Π² Π±Π»ΠΎΠΊ (Genesis block):

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

ПишСм смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚

/*
 * Citcoin smart-contract v1.5 for Hyperledger Fabric
 * (c) Alexey Sushkov, 2019
 */
 
'use strict';
 
const { Contract } = require('fabric-contract-api');
const maxAccounts = 5;
 
class CitcoinEvents extends Contract {
 
    async instantiate(ctx) {
        console.info('instantiate');
        let emptyList = [];
        await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(emptyList)));
    }
    // Get all accounts
    async GetAccounts(ctx) {
        // Get account list:
        let accounts = '{}'
        let accountsData = await ctx.stub.getState('accounts');
        if (accountsData) {
            accounts = JSON.parse(accountsData.toString());
        } else {
            throw new Error('accounts not found');
        }
        return accountsData.toString()
    }
     // add a account object to the blockchain state identifited by their name
    async AddAccount(ctx, name, balance) {
        // this is account data:
        let account = {
            name: name,
            balance: Number(balance),       
            type: 'account',
        };
        // create account:
        await ctx.stub.putState(name, Buffer.from(JSON.stringify(account)));
 
        // Add account to list:
        let accountsData = await ctx.stub.getState('accounts');
        if (accountsData) {
            let accounts = JSON.parse(accountsData.toString());
            if (accounts.length < maxAccounts)
            {
                accounts.push(name);
                await ctx.stub.putState('accounts', Buffer.from(JSON.stringify(accounts)));
            } else {
                throw new Error('Max accounts number reached');
            }
        } else {
            throw new Error('accounts not found');
        }
        // return  object
        return JSON.stringify(account);
    }
    // Sends money from Account to Account
    async SendFrom(ctx, fromAccount, toAccount, value) {
        // get Account from
        let fromData = await ctx.stub.getState(fromAccount);
        let from;
        if (fromData) {
            from = JSON.parse(fromData.toString());
            if (from.type !== 'account') {
                throw new Error('wrong from type');
            }   
        } else {
            throw new Error('Accout from not found');
        }
        // get Account to
        let toData = await ctx.stub.getState(toAccount);
        let to;
        if (toData) {
            to = JSON.parse(toData.toString());
            if (to.type !== 'account') {
                throw new Error('wrong to type');
            }  
        } else {
            throw new Error('Accout to not found');
        }
 
        // update the balances
        if ((from.balance - Number(value)) >= 0 ) {
            from.balance -= Number(value);
            to.balance += Number(value);
        } else {
            throw new Error('From Account: not enought balance');          
        }
 
        await ctx.stub.putState(from.name, Buffer.from(JSON.stringify(from)));
        await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
                 
        // define and set Event
        let Event = {
            type: "SendFrom",
            from: from.name,
            to: to.name,
            balanceFrom: from.balance,
            balanceTo: to.balance,
            value: value
        };
        await ctx.stub.setEvent('SendFrom', Buffer.from(JSON.stringify(Event)));
 
        // return to object
        return JSON.stringify(from);
    }
 
    // get the state from key
    async GetState(ctx, key) {
        let data = await ctx.stub.getState(key);
        let jsonData = JSON.parse(data.toString());
        return JSON.stringify(jsonData);
    }
    // GetBalance   
    async GetBalance(ctx, accountName) {
        let data = await ctx.stub.getState(accountName);
        let jsonData = JSON.parse(data.toString());
        return JSON.stringify(jsonData);
    }
     
    // Refill own balance
    async RefillBalance(ctx, toAccount, value) {
        // get Account to
        let toData = await ctx.stub.getState(toAccount);
        let to;
        if (toData) {
            to = JSON.parse(toData.toString());
            if (to.type !== 'account') {
                throw new Error('wrong to type');
            }  
        } else {
            throw new Error('Accout to not found');
        }
 
        // update the balance
        to.balance += Number(value);
        await ctx.stub.putState(to.name, Buffer.from(JSON.stringify(to)));
                 
        // define and set Event
        let Event = {
            type: "RefillBalance",
            to: to.name,
            balanceTo: to.balance,
            value: value
        };
        await ctx.stub.setEvent('RefillBalance', Buffer.from(JSON.stringify(Event)));
 
        // return to object
        return JSON.stringify(from);
    }
}
module.exports = CitcoinEvents;

Π˜Π½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ Ρ‚ΡƒΠΊ всичко трябва Π΄Π° Π΅ ясно:

  • Има няколко Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance), ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Ρ‰Π΅ ΠΈΠ·Π²ΠΈΠΊΠ° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Hyperledger Fabric API.
  • Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ SendFrom ΠΈ RefillBalance Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Ρ‚ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ (Event), ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°.
  • Ѐункцията instantiate β€” сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° вСднъТ ΠΏΡ€ΠΈ инстанциранСто Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, тя сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π½Π΅ вСднъТ, Π° всСки ΠΏΡŠΡ‚ ΠΏΡ€ΠΈ промяна Π½Π° вСрсията Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°. Π—Π°Ρ‚ΠΎΠ²Π° инициализацията Π½Π° списък с ΠΏΡ€Π°Π·Π΅Π½ масив Π΅ лоша идСя, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈ смяна Π½Π° вСрсията Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΠΌ тСкущия списък. Но Π½ΠΈΡ‰ΠΎ, Π°Π· само ΡƒΡ‡Π°).
  • Account-ΠΈΡ‚Π΅ ΠΈ ΡΠΏΠΈΡΡŠΠΊΡŠΡ‚ с account-ΠΈΡ‚Π΅ (accounts) β€” са JSON структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ. Π—Π° ΠΌΠ°Π½ΠΈΠΏΡƒΠ»Π°Ρ†ΠΈΠΈ с Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° JS.
  • ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° стойност Π½Π° asset-Π°, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ функцията getState, Π° Π΄Π° я ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Ρ‡Ρ€Π΅Π· putState.
  • ΠŸΡ€ΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Account сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° функцията AddAccount, Π² която сС ΠΎΡΡŠΡ‰Π΅ΡΡ‚Π²ΡΠ²Π° сравнСниС с максималния Π±Ρ€ΠΎΠΉ account-ΠΈ Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π° (maxAccounts = 5). И Ρ‚ΡƒΠΊ ΠΈΠΌΠ° Π³Ρ€Π΅ΡˆΠΊΠ° (забСлязали Π»ΠΈ стС?), която Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π±Π΅Π·ΠΊΡ€Π°Π΅Π½ Ρ€ΡŠΡΡ‚ Π½Π° броя Π½Π° account-ΠΈΡ‚Π΅. Π’Π°ΠΊΠΈΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠΈ трябва Π΄Π° сС избягват)

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π° Π² Channel ΠΈ Π³ΠΎ инстанцирамС:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅ транзакцията Π·Π° инсталиранС Π½Π° Smart Contract:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π’ΠΈΠΆΠ΄Π°ΠΌΠ΅ подробности Π·Π° нашия Channel:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ слСдната схСма Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΌΡ€Π΅ΠΆΠ° Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° IBM. Π’ схСмата ΠΈΠΌΠ° ΠΈ Π΄Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, стартирана Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° Amazon Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° нСя Ρ‰Π΅ бъдС Π² слСдващия Ρ€Π°Π·Π΄Π΅Π»):

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

БъздаванС на GUI за извиквания на Hyperledger Fabric API

Hyperledger Fabric ΠΈΠΌΠ° API, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π°:

  • БъздаванС Π½Π° channel;
  • Π‘Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° peer към channel;
  • Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Π½Π΅ ΠΈ инстанциранС Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ΠΈ Π² channel;
  • ИзвикванС Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ;
  • Π—Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π·Π° информация Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π’ Π½Π°ΡˆΠ°Ρ‚Π° Π΄Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ API само Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π·Π° информация, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ останалитС ΡΡ‚ΡŠΠΏΠΊΠΈ Π²Π΅Ρ‡Π΅ смС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠ»ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° IBM. ПишСм GUI, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ стандартСн Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π΅Π½ стСк: Express.js + Vue.js + Node.js. Π—Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚Π΅ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ ΡƒΠ΅Π± прилоТСния ΠΌΠΎΠΆΠ΅ Π΄Π° сС напишС ΠΎΡ‚Π΄Π΅Π»Π½Π° статия. Π’ΡƒΠΊ оставям Π»ΠΈΠ½ΠΊ Π½Π° сСрия Π»Π΅ΠΊΡ†ΠΈΠΈ, която ΠΌΠΈ харСса Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ: Full Stack Web App using Vue.js & Express.js. Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…ΠΌΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ‚-ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с ΠΏΠΎΠ·Π½Π°Ρ‚ Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс Π² стила Π½Π° Material Design ΠΎΡ‚ Google. REST API ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΈ ΡΡŠΡ€Π²ΡŠΡ€Π° сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚ няколко извиквания:

  • HyperledgerDemo/v1/init β€” ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½;
  • HyperledgerDemo/v1/accounts/list β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° списък Π½Π° всички account-ΠΈ;
  • HyperledgerDemo/v1/account?name=Bob&balance=100 β€” създаванС Π½Π° account Π½Π° Bob;
  • HyperledgerDemo/v1/info?account=Bob β€” ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° информация Π·Π° account Π½Π° Bob;
  • HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 β€” Π΄Π° сС ΠΏΡ€Π΅Π²Π΅Π΄Π°Ρ‚ Π΄Π²Π΅ ΠΌΠΎΠ½Π΅Ρ‚ΠΈ ΠΎΡ‚ Bob към Alice;
  • HyperledgerDemo/v1/disconnect β€” Π΄Π° сС ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° с Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°.

ОписаниС Π½Π° API с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ слоТих Π½Π° сайта β€žPostmanβ€œ β€” ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° Π·Π° тСстванС Π½Π° HTTP API.

Π”Π΅ΠΌΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° Amazon

Π”ΡŠΡ€ΠΆΠ°Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Amazon, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ IBM всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ могъл Π΄Π° ΡŠΠΏΠ³Ρ€Π΅ΠΉΠ΄ΠΈΡ€Π° моя Π°ΠΊΠ°ΡƒΠ½Ρ‚ ΠΈ Π΄Π° Ρ€Π°Π·Ρ€Π΅ΡˆΠΈ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ. ΠšΠ°Ρ‚ΠΎ вишСнка Π΄ΠΎΠ±Π°Π²ΠΈΡ… Π΄ΠΎΠΌΠ΅ΠΉΠ½: www.citcoin.info. Π©Π΅ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΌ ΠΌΠ°Π»ΠΊΠΎ ΡΡŠΡ€Π²ΡŠΡ€Π° Π²ΠΊΠ»ΡŽΡ‡Π΅Π½, послС Ρ‰Π΅ Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ сС начисляват такси Π·Π° Π½Π°Π΅ΠΌ, Π° ΠΌΠΎΠ½Π΅Ρ‚ΠΈΡ‚Π΅ citcoin Π½Π° борсата всС ΠΎΡ‰Π΅ Π½Π΅ сС Ρ‚ΡŠΡ€Π³ΡƒΠ²Π°Ρ‚) Π’ статията поставям Π΅ΠΊΡ€Π°Π½Π½ΠΈ снимки Π½Π° Π΄Π΅ΠΌΠΎΡ‚ΠΎ, Π·Π° Π΄Π° Π΅ ясна Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. Π”Π΅ΠΌΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅:

  • Π”Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π° Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½;
  • Π”Π° създава Π°ΠΊΠ°ΡƒΠ½Ρ‚ (Π½ΠΎ сСга Π½ΠΎΠ² Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС създадСн, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΅ достигнато максималното число Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Π² смарт ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°);
  • Π”Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° списък с Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ;
  • Π”Π° ΠΏΡ€Π΅Π²Π΅ΠΆΠ΄Π° ΠΌΠΎΠ½Π΅Ρ‚ΠΈ citcoin ΠΌΠ΅ΠΆΠ΄Ρƒ Alice, Bob ΠΈ Alex;
  • Π”Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΡ (Π½ΠΎ сСга ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π² интСрфСйса Π·Π° улСснСниС Π΅ написано, Ρ‡Π΅ ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π° Π½Π΅ сС ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚);
  • Π”Π° Π»ΠΎΠ³Π²Π° дСйствия.

ΠŸΡŠΡ€Π²ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° създавамС своя Π°ΠΊΠ°ΡƒΠ½Ρ‚, Π±Π΅Π· Π΄Π° пСстим ΠΎΡ‚ баланса:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ списък Π½Π° всички Π½Π°Π»ΠΈΡ‡Π½ΠΈ Π°ΠΊΠ°ΡƒΠ½Ρ‚ΠΈ:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π˜Π·Π±ΠΈΡ€Π°ΠΌΠ΅ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‡Π° ΠΈ получатСля, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ баланси. Ако ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Ρ‡ΡŠΡ‚ ΠΈ получатСлят са Π΅Π΄Π½ΠΎ ΠΈ ΡΡŠΡ‰ΠΎ Π»ΠΈΡ†Π΅, Ρ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ попълванС Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° смСтка:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

Π’ Π»ΠΎΠ³Π° слСдим Π·Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

БобствСнно с Π΄Π΅ΠΌΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° Π½Π° Ρ‚ΠΎΠ²Π° Π΅ всичко. Π‘Π»Π΅Π΄Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π½Π°ΡˆΠ°Ρ‚Π° транзакция Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

И общия списък Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈΡ‚Π΅:

Π‘Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½: ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ коства Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ PoC?

На Ρ‚ΠΎΠ²Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ…ΠΌΠ΅ рСализацията Π½Π° PoC ΠΏΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΡ€Π΅ΠΆΠ° Citcoin. Какво ΠΎΡ‰Π΅ трябва Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ, Π·Π° Π΄Π° станС Citcoin ΠΏΡŠΠ»Π½ΠΎΡ†Π΅Π½Π½Π° ΠΌΡ€Π΅ΠΆΠ° Π·Π° ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° ΠΌΠΎΠ½Π΅Ρ‚ΠΈ? Направо ΠΌΠ°Π»ΠΊΠΎ:

  • На Π΅Ρ‚Π°ΠΏΠ° Π½Π° създаванС Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚Π° Π΄Π° сС Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° частСн / ΠΏΡƒΠ±Π»ΠΈΡ‡Π΅Π½ ΠΊΠ»ΡŽΡ‡. Частният ΠΊΠ»ΡŽΡ‡ трябва Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΏΡ€ΠΈ потрСбитСля Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚Π°, публичният Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°.
  • Π”Π° сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈ ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° ΠΌΠΎΠ½Π΅Ρ‚ΠΈ, Π² ΠΊΠΎΠΉΡ‚ΠΎ Π·Π° идСнтификация Π½Π° потрСбитСля сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΠΎ, Π° публичния ΠΊΠ»ΡŽΡ‡.
  • Π”Π° сС ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΈΠ΄Π²Π°Ρ‰ΠΈ ΠΎΡ‚ потрСбитСля Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° с нСговия частСн ΠΊΠ»ΡŽΡ‡.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ ΠΌΡ€Π΅ΠΆΠ° Citcoin с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ: добавянС Π½Π° Π°ΠΊΠ°ΡƒΠ½Ρ‚, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Π½Π΅ Π½Π° баланс, попълванС Π½Π° смСтка, ΠΏΡ€Π΅Π²ΠΎΠ΄ Π½Π° ΠΌΠΎΠ½Π΅Ρ‚ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Π°ΠΊΠ°ΡƒΠ½Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³. И Ρ‚Π°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ ΡΡ‚Ρ€ΡƒΠ²Π°ΡˆΠ΅ PoC Π΄Π° построим?

  • Врябва Π΄Π° ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ ΠΈ Hyperledger Fabric Π² частност;
  • Π”Π° сС Π½Π°ΡƒΡ‡ΠΈΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Π»Π°Ρ†ΠΈΡ‚Π΅ Π½Π° IBM ΠΈΠ»ΠΈ Amazon;
  • Π”Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ JS ΠΈ някакъв ΡƒΠ΅Π± Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ;
  • Ако трябва Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Π² Π±Π»ΠΎΠΊΡ‡Π΅ΠΉΠ½Π°, Π° Π² ΠΎΡ‚Π΄Π΅Π»Π½Π° Π±Π°Π·Π°, Ρ‚ΠΎ трябва Π΄Π° сС Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ Π΄Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Ρ‚Π΅ Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с PostgreSQL;
  • ПослСдно ΠΏΠΎ списъка, Π½ΠΎ Π½Π΅ ΠΏΠΎ ваТност - Π±Π΅Π· знания ΠΏΠΎ Linux Π² ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ свят Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° сС справитС!)

Π Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅ Π΅ Ρ€Π°ΠΊΠ΅Ρ‚Π° Π½Π°ΡƒΠΊΠ°, Π½ΠΎ Ρ‰Π΅ трябва Π΄Π° сС ΠΏΠΎΡ‚Ρ€ΡƒΠ΄ΠΈΡ‚Π΅!

Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π΅ Π½Π° GitHub

Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈΡΡ‚ ΠΊΠΎΠ΄ Π΅ поставСн Π½Π° GitHub. ΠšΡ€Π°Ρ‚ΠΊΠΎ описаниС Π½Π° рСпозитория:
ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Β«serverΒ» - Node.js ΡΡŠΡ€Π²ΡŠΡ€
ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Β«clientΒ» - Node.js ΠΊΠ»ΠΈΠ΅Π½Ρ‚
ΠšΠ°Ρ‚Π°Π»ΠΎΠ³ Β«blockchainΒ» (стойноститС Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈ само Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€):

  • contract - ΠΈΠ·Ρ…ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° смарт-ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°
  • wallet - ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° потрСбитСля Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Hyperledger Fabric API.
  • *.cds - скомпилирани вСрсии Π½Π° смартконтрактитС
  • *.json Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ - ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Hyperledger Fabric API

Π’ΠΎΠ²Π° Π΅ само Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ!

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster