ΠΡΠΈΡΠ΅ ΡΠ΅ ΡΡΡΠ°Ρ ΡΠ²Π°Ρ, Π° ΡΡΡΠ΅ΡΠ΅ ΡΠ΅ ΠΏΠΎΡΡΡ!
Π ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡΠ΅, Π²ΡΡΡ Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΈΡΠ΅ () ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Ρ ΡΡΡ Π½Π° ΠΏΠΎΠΌΠΎΡ (). ΠΠ°ΡΡΡΠΏΠΈ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ Ρ ΡΡΡΠ΅ΡΠ΅ ΡΠΈ! ΠΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΈΠ»ΠΎΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΈ PoC (Proof of Concept) ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΎΠ±Π»Π°ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ ΠΎΡ Π²ΡΡΠΊΠ° ΡΠΎΡΠΊΠ° Π½Π° ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ΅ΡΡΠΎ Π½Π΅ Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ Π³ΡΠ±ΠΈ Π²ΡΠ΅ΠΌΠ΅ Π² ΡΠΊΡΡΠ½Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° ΡΡΠ΅Π΄Π°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΈΠΌΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ. Π ΡΠ°ΠΊΠ°, Π½Π΅ΠΊΠ° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π½Π΅ΡΠΎ ΠΏΡΠΎΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡΠ΅ΠΆΠ° Π·Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΌΠΎΠ½Π΅ΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ ΠΈ Π΄Π° Ρ Π½Π°ΡΠ΅ΡΠ΅ΠΌ ΡΠΊΡΠΎΠΌΠ½ΠΎ Π‘itcoin. ΠΠ° ΡΠΎΠ²Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° IBM ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΈΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Hyperledger Fabric. ΠΡΡΠ²ΠΎ, Π½Π΅ΠΊΠ° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π·Π°ΡΠΎ Hyperledger Fabric ΡΠ΅ Π½Π°ΡΠΈΡΠ° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½?

Hyperledger Fabric β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π΅Π½ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ, ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π΅:
- ΠΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΡΡΠ²ΡΡΠΈ ΠΈ ΡΠΎΡΡΡΠ΅ΡΠ½ΠΎ ΡΠ΄ΡΠΎ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°ΡΠΎ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°;
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ Π·Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°;
- Π‘ΡΠ΅Π΄ΡΡΠ²Π° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ, Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°/Ρ ΠΎΡΠ°;
- ΠΠ°Π·Π° Π΄Π°Π½Π½ΠΈ, ΡΡ Ρ ΡΠ°Π½ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΈ Π°ΡΡ ΠΈΠ²Π½ΠΈ Π΄Π°Π½Π½ΠΈ:

ΠΡΠΈΡΠΈΠ°Π»Π½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Hyperledger Fabric ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠ΅ Π½Π° , Π° Π½Π°ΠΊΡΠ°ΡΠΊΠΎ, Hyperledger Fabric Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° Π·Π°ΡΠ²ΠΎΡΠ΅Π½ΠΈ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΈ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΡΠΌΠ°ΡΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ½ΠΈ Π΅Π·ΠΈΡΠΈ JS ΠΈ Go. ΠΠ΅ΠΊΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Hyperledger Fabric ΠΈ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΠΌ, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Π² ΠΊΠΎΡΡΠΎ ΡΠ°ΠΌΠΎ ΡΠ΅ Π·Π°Π»ΠΎΠΆΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ° ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° ΡΠ΅ ΡΡΡΡΠΎΠΈ Π² ΡΠΎΠ²Π°, ΡΠ΅ Π΄Π°Π½Π½ΠΈΡΠ΅, ΠΊΠ°ΠΊΡΠΎ Π²ΡΠ² Π²ΡΠΈΡΠΊΠΈ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΈ, ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π°Ρ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π° ΡΠ°ΠΌΠΎ, Π°ΠΊΠΎ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡ ΠΈ ΡΠ»Π΅Π΄ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π΅Π·Π°Π±Π΅Π»ΡΠ·Π°Π½ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΠΈΠ»ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½ΠΈ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° Hyperledger Fabric
ΠΠ° ΡΡ Π΅ΠΌΠ°ΡΠ° Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Hyperledger Fabric:

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 ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° .
- 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-ΠΎΠ²Π΅ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°. ΠΠ° ΠΈΠ½Π΄ΡΡΡΡΠΈΠ°Π»Π½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° , Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ .
CallFlow

- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π° Ρ Hyperledger Fabric, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Go, Node.js ΠΈΠ»ΠΈ Java SDK;
- ΠΠ»ΠΈΠ΅Π½ΡΡΡ ΡΡΠ·Π΄Π°Π²Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ tx ΠΈ Ρ ΠΈΠ·ΠΏΡΠ°ΡΠ° Π½Π° endorsing peer-ΠΈΡΠ΅;
- Peer-ΡΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΠΏΠΎΠ΄ΠΏΠΈΡΠ° Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° ΠΈ ΠΈΠ·ΠΏΡΠ°ΡΠ° endorsement signature ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. Chaincode ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ Π½Π° endorsing peer, Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ ΠΌΡ ΡΠ΅ ΡΠ°Π·ΠΏΡΠ°ΡΠ° Π½Π° Π²ΡΠΈΡΠΊΠΈ peer-ΠΎΠ²Π΅. Π’ΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ Π½Π°ΡΠΈΡΠ° β PBFT (Practical Byzantine Fault Tolerant) ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡ. Π Π°Π·Π»ΠΈΡΠ°Π²Π° ΡΠ΅ ΠΎΡ ΠΏΠΎ ΡΠΎΠ²Π°, ΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΡΠ°Π·ΠΏΡΠ°ΡΠ° ΠΈ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΡΠ°ΡΡΠ½ΠΈΡΠΈ, Π° ΡΠ°ΠΌΠΎ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π½Π°Π±ΠΎΡ;
- Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈ Π±ΡΠΎΠΉ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠΈ, ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°ΡΠΈ Π½Π° 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 Π΅ Π½Π°ΠΈΡΡΠΈΠ½Π° ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π°:
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΈΡΠ΅;
- ΠΠ°ΠΏΠΈΡΠ²Π°ΠΉΡΠ΅ ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΉΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π² ΡΠΎΡΠΌΠ°Ρ JSON;
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠΉΡΠ΅ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΉΡΠ΅ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Certificate Authority.
Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π°ΡΠΎ ΠΌΠ°Π»ΠΊΠΎ ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Ρ ΠΌΠ΅ ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π° Hyperledger Fabric, Π½Π΅ΠΊΠ° Π½Π°ΠΉ-Π½Π°ΠΊΡΠ°Ρ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ Π½Π΅ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ!
Π Π°Π·Π³ΡΡΡΠ°ΠΌ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½
Π€ΠΎΡΠΌΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°
ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π΅ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ° Citcoin Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΠΊΠ°ΡΠ½Ρ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π±Π°Π»Π°Π½Ρ, ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΠΌΠΎΠ½Π΅ΡΠΈ ΠΎΡ Π΅Π΄Π½Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° Π΄ΡΡΠ³Π°. ΠΠ΅ΠΊΠ° Π½Π°ΡΠΈΡΡΠ²Π°ΠΌΠ΅ ΠΎΠ±Π΅ΠΊΡΠ½Π° ΠΌΠΎΠ΄Π΅Π», ΠΊΠΎΠΉΡΠΎ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅ ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π² ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ. Π ΡΠ°ΠΊΠ°, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π°ΠΊΠ°ΡΠ½ΡΠΈ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈ Ρ ΠΈΠΌΠ΅Π½Π° (name) ΠΈ ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ Π±Π°Π»Π°Π½Ρ (balance), ΠΈ ΡΠΏΠΈΡΡΠΊ Ρ Π°ΠΊΠ°ΡΠ½ΡΠΈ. ΠΠΊΠ°ΡΠ½ΡΠΈΡΠ΅ ΠΈ ΡΠΏΠΈΡΡΠΊΡΡ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠΈΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ asset Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡΡΠ° Π½Π° Hyperledger Fabric. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΡΠ΅ ΠΈΠΌΠ°Ρ ΠΈΡΡΠΎΡΠΈΡ ΠΈ ΡΠ΅ΠΊΡΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. Π©Π΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌ Π΄Π° Π³ΠΎ ΠΈΠ»ΡΡΡΡΠΈΡΠ°ΠΌ Π²ΠΈΠ·ΡΠ°Π»Π½ΠΎ:

ΠΠΎΡΠ½ΠΈΡΠ΅ ΡΠΈΠ³ΡΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ²Π°Ρ ΡΠ΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² Π±Π°Π·Π°ΡΠ° "World state". ΠΠΎΠ΄ ΡΡΡ
ΡΠΈΠ³ΡΡΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ ΠΈΡΡΠΎΡΠΈΡΡΠ°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΡΡΡ
ΡΠ°Π½ΡΠ²Π° Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°. Π’Π΅ΠΊΡΡΠΎΡΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π° asset-ΠΈΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΡΡΠ΅Π· ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. Asset-ΡΡ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Ρ ΠΈΠ·ΡΡΠ»ΠΎ, ΡΠ°ΠΊΠ° ΡΠ΅ Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° Π½ΠΎΠ² ΠΎΠ±Π΅ΠΊΡ, Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ Π½Π° asset-Π° ΠΎΡΠΈΠ²Π° Π² ΠΈΡΡΠΎΡΠΈΡΡΠ°.
IBM Cloud
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΠΈΠ» Π² . ΠΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°, ΡΡΡΠ±Π²Π° Π΄Π° Π°ΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π΄ΠΎ Pay-As-You-Go. Π’ΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π΅ Π΅ Π±ΡΡΠ·, ΡΡΠΉ ΠΊΠ°ΡΠΎ IBM ΠΈΠ·ΠΈΡΠΊΠ²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΡΡΡΠ½ΠΎ. ΠΡ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½Π° ΡΡΡΠ°Π½Π° ΠΌΠΎΠ³Π° Π΄Π° ΠΊΠ°ΠΆΠ°, ΡΠ΅ IBM ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄ΠΎΠ±ΡΠΈ ΡΡΠ΅Π±Π½ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΠ°Π·Π³ΡΡΡΠ°Π½Π΅ΡΠΎ Π½Π° Hyperledger Fabric Π² ΡΠ΅Ρ Π½ΠΈΡ ΠΎΠ±Π»Π°ΠΊ. Π₯Π°ΡΠ΅ΡΠ° ΠΌΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΡ ΡΠΈΠΊΡΠ» ΠΎΡ ΡΡΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ:
Π‘Π»Π΅Π΄Π²Π°Ρ ΡΠΊΡΠ°Π½ΠΈΡΠ°Π½ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° IBM Blockchain ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°. Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½, Π° ΠΏΡΠΎΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π½Π° ΠΎΠ±Ρ Π²Π°ΡΠ° Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°. Π’Π°ΠΊΠ° ΡΠ΅, Π·Π° Π½Π°ΡΠΈΡΠ΅ ΡΠ΅Π»ΠΈ, ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π΅Π΄Π½Π° Organization:

Π Π½Π΅Ρ ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π²ΡΠ·Π»ΠΈ: Orderer CA, Org1 CA, Orderer Peer:

Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ:

Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Channel ΠΈ Π³ΠΎ Π½Π°ΡΠΈΡΠ°ΠΌΠ΅ citcoin:

ΠΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ Channel Π΅ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½, ΠΏΠΎΡΠ°Π΄ΠΈ ΠΊΠΎΠ΅ΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π° ΠΎΡ Π½ΡΠ»Π΅Π² Π±Π»ΠΎΠΊ (Genesis block):

ΠΠΈΡΠ΅ΠΌ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ
/*
* 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 ΠΈ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅:

ΠΠΈΠΆΠ΄Π°ΠΌΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΡΠ° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° Smart Contract:

ΠΠΈΠΆΠ΄Π°ΠΌΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π° Π½Π°ΡΠΈΡ Channel:

Π ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΡΡ
Π΅ΠΌΠ° Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΌΡΠ΅ΠΆΠ° Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° IBM. Π ΡΡ
Π΅ΠΌΠ°ΡΠ° ΠΈΠΌΠ° ΠΈ Π΄Π΅ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΡΡΠ°ΡΡΠΈΡΠ°Π½Π° Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° Amazon Π½Π° Π²ΠΈΡΡΡΠ°Π»Π΅Π½ ΡΡΡΠ²ΡΡ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π·Π° Π½Π΅Ρ ΡΠ΅ Π±ΡΠ΄Π΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡ ΡΠ°Π·Π΄Π΅Π»):

Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° GUI Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° Hyperledger Fabric API
Hyperledger Fabric ΠΈΠΌΠ° API, ΠΊΠΎΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π°:
- Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° channel;
- Π‘Π²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° peer ΠΊΡΠΌ channel;
- ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΈ Π² channel;
- ΠΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ;
- ΠΠ°ΠΏΠΈΡΠ²Π°Π½Π΅ Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°.
Π Π°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Π Π½Π°ΡΠ°ΡΠ° Π΄Π΅ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ API ΡΠ°ΠΌΠΎ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΠΈ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π·Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ ΡΡΡΠΏΠΊΠΈ Π²Π΅ΡΠ΅ ΡΠΌΠ΅ ΠΈΠ·Π²ΡΡΡΠΈΠ»ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π½Π° IBM. ΠΠΈΡΠ΅ΠΌ GUI, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΡΠ΅ΠΊ: Express.js + Vue.js + Node.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 Ρ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΡΠ»ΠΎΠΆΠΈΡ Π½Π° β ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° HTTP API.
ΠΠ΅ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° Amazon
ΠΡΡΠΆΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π² Amazon, ΡΡΠΉ ΠΊΠ°ΡΠΎ IBM Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ ΠΌΠΎΠ³ΡΠ» Π΄Π° ΡΠΏΠ³ΡΠ΅ΠΉΠ΄ΠΈΡΠ° ΠΌΠΎΡ Π°ΠΊΠ°ΡΠ½Ρ ΠΈ Π΄Π° ΡΠ°Π·ΡΠ΅ΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΡΠ²ΡΡΠΈ. ΠΠ°ΡΠΎ Π²ΠΈΡΠ΅Π½ΠΊΠ° Π΄ΠΎΠ±Π°Π²ΠΈΡ Π΄ΠΎΠΌΠ΅ΠΉΠ½: . Π©Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΠΌ ΠΌΠ°Π»ΠΊΠΎ ΡΡΡΠ²ΡΡΠ° Π²ΠΊΠ»ΡΡΠ΅Π½, ΠΏΠΎΡΠ»Π΅ ΡΠ΅ Π³ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅ Π½Π°ΡΠΈΡΠ»ΡΠ²Π°Ρ ΡΠ°ΠΊΡΠΈ Π·Π° Π½Π°Π΅ΠΌ, Π° ΠΌΠΎΠ½Π΅ΡΠΈΡΠ΅ citcoin Π½Π° Π±ΠΎΡΡΠ°ΡΠ° Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ΅ ΡΡΡΠ³ΡΠ²Π°Ρ) Π ΡΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎΡΡΠ°Π²ΡΠΌ Π΅ΠΊΡΠ°Π½Π½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° Π΄Π΅ΠΌΠΎΡΠΎ, Π·Π° Π΄Π° Π΅ ΡΡΠ½Π° Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π±ΠΎΡΠ°. ΠΠ΅ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅:
- ΠΠ° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ° Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½;
- ΠΠ° ΡΡΠ·Π΄Π°Π²Π° Π°ΠΊΠ°ΡΠ½Ρ (Π½ΠΎ ΡΠ΅Π³Π° Π½ΠΎΠ² Π°ΠΊΠ°ΡΠ½Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π°ΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎΡΠΎ ΡΠΈΡΠ»ΠΎ Π°ΠΊΠ°ΡΠ½ΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² ΡΠΌΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°);
- ΠΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΠΏΠΈΡΡΠΊ Ρ Π°ΠΊΠ°ΡΠ½ΡΠΈ;
- ΠΠ° ΠΏΡΠ΅Π²Π΅ΠΆΠ΄Π° ΠΌΠΎΠ½Π΅ΡΠΈ citcoin ΠΌΠ΅ΠΆΠ΄Ρ Alice, Bob ΠΈ Alex;
- ΠΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π° ΡΡΠ±ΠΈΡΠΈΡ (Π½ΠΎ ΡΠ΅Π³Π° ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π½Π΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π·Π° ΡΠ»Π΅ΡΠ½Π΅Π½ΠΈΠ΅ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ, ΡΠ΅ ΡΡΠ±ΠΈΡΠΈΡΡΠ° Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ);
- ΠΠ° Π»ΠΎΠ³Π²Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΡΡΠ²ΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½:

Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ²ΠΎΡ Π°ΠΊΠ°ΡΠ½Ρ, Π±Π΅Π· Π΄Π° ΠΏΠ΅ΡΡΠΈΠΌ ΠΎΡ Π±Π°Π»Π°Π½ΡΠ°:

ΠΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠΏΠΈΡΡΠΊ Π½Π° Π²ΡΠΈΡΠΊΠΈ Π½Π°Π»ΠΈΡΠ½ΠΈ Π°ΠΊΠ°ΡΠ½ΡΠΈ:

ΠΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΠ° ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ Π±Π°Π»Π°Π½ΡΠΈ. ΠΠΊΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°ΡΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»ΡΡ ΡΠ° Π΅Π΄Π½ΠΎ ΠΈ ΡΡΡΠΎ Π»ΠΈΡΠ΅, ΡΠΎ ΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΌΠ΅ΡΠΊΠ°:

Π Π»ΠΎΠ³Π° ΡΠ»Π΅Π΄ΠΈΠΌ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅:

Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Ρ Π΄Π΅ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π½Π° ΡΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ. Π‘Π»Π΅Π΄Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π½Π°ΡΠ°ΡΠ° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°:

Π ΠΎΠ±ΡΠΈΡ ΡΠΏΠΈΡΡΠΊ Π½Π° ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΡΠ΅:

ΠΠ° ΡΠΎΠ²Π° ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²ΡΡΡΠΈΡ
ΠΌΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° PoC ΠΏΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΡΠ΅ΠΆΠ° Citcoin. ΠΠ°ΠΊΠ²ΠΎ ΠΎΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ, Π·Π° Π΄Π° ΡΡΠ°Π½Π΅ Citcoin ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½Π° ΠΌΡΠ΅ΠΆΠ° Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° ΠΌΠΎΠ½Π΅ΡΠΈ? ΠΠ°ΠΏΡΠ°Π²ΠΎ ΠΌΠ°Π»ΠΊΠΎ:
- ΠΠ° Π΅ΡΠ°ΠΏΠ° Π½Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ° Π΄Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ°ΡΡΠ΅Π½ / ΠΏΡΠ±Π»ΠΈΡΠ΅Π½ ΠΊΠ»ΡΡ. Π§Π°ΡΡΠ½ΠΈΡΡ ΠΊΠ»ΡΡ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π° ΠΏΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π½Π° Π°ΠΊΠ°ΡΠ½ΡΠ°, ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡΡ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°.
- ΠΠ° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° ΠΌΠΎΠ½Π΅ΡΠΈ, Π² ΠΊΠΎΠΉΡΠΎ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π½Π΅ ΠΈΠΌΠ΅ΡΠΎ, Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΠΈΡ ΠΊΠ»ΡΡ.
- ΠΠ° ΡΠ΅ ΡΠΈΡΡΠΎΠ²Π°Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΈΠ΄Π²Π°ΡΠΈ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π½Π° ΡΡΡΠ²ΡΡΠ° Ρ Π½Π΅Π³ΠΎΠ²ΠΈΡ ΡΠ°ΡΡΠ΅Π½ ΠΊΠ»ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ° Citcoin Ρ ΡΡΠ½ΠΊΡΠΈΠΈ: Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° Π°ΠΊΠ°ΡΠ½Ρ, ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π±Π°Π»Π°Π½Ρ, ΠΏΠΎΠΏΡΠ»Π²Π°Π½Π΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΠΏΡΠ΅Π²ΠΎΠ΄ Π½Π° ΠΌΠΎΠ½Π΅ΡΠΈ ΠΎΡ Π΅Π΄ΠΈΠ½ Π°ΠΊΠ°ΡΠ½Ρ Π½Π° Π΄ΡΡΠ³. Π ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΠ²ΠΎ Π½ΠΈ ΡΡΡΡΠ²Π°ΡΠ΅ PoC Π΄Π° ΠΏΠΎΡΡΡΠΎΠΈΠΌ?
- Π’ΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΡΡΠΈΠΌ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΈΠ·ΠΎΠ±ΡΠΎ ΠΈ Hyperledger Fabric Π² ΡΠ°ΡΡΠ½ΠΎΡΡ;
- ΠΠ° ΡΠ΅ Π½Π°ΡΡΠΈΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΎΠ±Π»Π°ΡΠΈΡΠ΅ Π½Π° IBM ΠΈΠ»ΠΈ Amazon;
- ΠΠ° Π½Π°ΡΡΠΈΡΠ΅ Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ JS ΠΈ Π½ΡΠΊΠ°ΠΊΡΠ² ΡΠ΅Π± ΡΡΠ΅ΠΉΠΌΡΡΡΠΊ;
- ΠΠΊΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°, Π° Π² ΠΎΡΠ΄Π΅Π»Π½Π° Π±Π°Π·Π°, ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΡΡΠΈΡΠ΅ Π΄Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅ Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Ρ PostgreSQL;
- ΠΠΎΡΠ»Π΅Π΄Π½ΠΎ ΠΏΠΎ ΡΠΏΠΈΡΡΠΊΠ°, Π½ΠΎ Π½Π΅ ΠΏΠΎ Π²Π°ΠΆΠ½ΠΎΡΡ - Π±Π΅Π· Π·Π½Π°Π½ΠΈΡ ΠΏΠΎ Linux Π² ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡ ΡΠ²ΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²ΠΈΡΠ΅!)
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ Π΅ ΡΠ°ΠΊΠ΅ΡΠ° Π½Π°ΡΠΊΠ°, Π½ΠΎ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ ΠΏΠΎΡΡΡΠ΄ΠΈΡΠ΅!
ΠΠ·Ρ ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π΅ Π½Π° GitHub
ΠΠ·Ρ
ΠΎΠ΄Π½ΠΈΡΡ ΠΊΠΎΠ΄ Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½ Π½Π° . ΠΡΠ°ΡΠΊΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ:
ΠΠ°ΡΠ°Π»ΠΎΠ³ Β«serverΒ» - Node.js ΡΡΡΠ²ΡΡ
ΠΠ°ΡΠ°Π»ΠΎΠ³ Β«clientΒ» - Node.js ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ°ΡΠ°Π»ΠΎΠ³ Β«blockchainΒ» (ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ ΠΈ ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π½Π΅ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠΈΠΌΠ΅Ρ):
- contract - ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°
- wallet - ΠΊΠ»ΡΡΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Hyperledger Fabric API.
- *.cds - ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΡΠΈΠΈ Π½Π° ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΈΡΠ΅
- *.json ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ - ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Hyperledger Fabric API
Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΌΠΎ Π½Π°ΡΠ°Π»ΠΎΡΠΎ!
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
