ΠΡΠΈΡΠ΅ Π²ΠΈ ΡΠ΅ ΠΏΠ»Π°ΡΠ°Ρ, Π° ΡΠ°ΡΠ΅ΡΠ΅ Π²Π΅ ΡΠ΅ΡΠ°Π°Ρ!
ΠΠΎ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π²Π°Π²ΠΌΠ΅ ΡΠΎ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡΠ΅ Π½Π° ΠΊΠΎΠΈ ΡΠ΅ ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ΠΈ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΠ²ΠΈ (
Hyperledger Fabric - ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π΅Π½ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½
ΠΠΏΡΡΠΎ Π·Π΅ΠΌΠ΅Π½ΠΎ, ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π΅Π½ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌ Π΅:
- ΠΠ±ΠΈΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΎ ΡΠ°Π΄ΡΠΎ ΠΊΠΎΠ΅ Π²ΡΡΠΈ Π΄Π΅Π»ΠΎΠ²Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°;
- ΠΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΈ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ ΡΠΈΡΡΠ΅ΠΌΠΎΡ;
- ΠΠ»Π°ΡΠΊΠΈ Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ°, Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡΠ° ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΡΡΠ΅Π΄ΠΈ/Π»ΡΡΠ΅;
- ΠΠ°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠΎ ΡΡΠ²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΈ ΠΈ Π°ΡΡ ΠΈΠ²ΡΠΊΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ:
ΠΡΠΈΡΠΈΡΠ°Π»Π½Π°ΡΠ° Π²Π΅ΡΠ·ΠΈΡΠ° Π·Π° ΡΠΎΠ° ΡΡΠΎ Π΅ Hyperledger Fabric ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ° Π½Π°
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Π½Π° ΡΠΊΠ°Π΅Π½ΠΈΠ½Π° Hyperledger
ΠΠΈΡΠ°Π³ΡΠ°ΠΌΠΎΡ ΡΠ° ΠΏΡΠΈΠΊΠ°ΠΆΡΠ²Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Hyperledger Fabric:
ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ β ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ ΡΠΎΠ΄ΡΠΆΠ°Ρ Π²ΡΡΠ½ΠΈΡΠΈ, Ρ.Π΅. Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ ΠΏΠΎΡΡΠΎΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ°ΡΠ° Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈΡΠ΅. Π Π°Π·Π»ΠΈΡΠ½ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ°Ρ Π΄Π° Π±ΠΈΠ΄Π°Ρ Π΄Π΅Π» ΠΎΠ΄ ΠΈΡΡΠΈΠΎΡ ΠΊΠ°Π½Π°Π».
ΠΊΠ°Π½Π°Π» β Π»ΠΎΠ³ΠΈΡΠΊΠ° ΡΡΡΡΠΊΡΡΡΠ° ΠΊΠΎΡΠ° Π³ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½ΡΠ²Π° Π²ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π²ΠΎ Π³ΡΡΠΏΠΈ, Ρ.Π΅. Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ Π΅ Π½Π°Π²Π΅Π΄Π΅Π½. Hyperledger Fabric ΠΌΠΎΠΆΠ΅ ΠΈΡΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΎ Π΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠ²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΠ²ΠΈ ΡΠΎ ΡΠ°Π·Π»ΠΈΡΠ½Π° Π΄Π΅Π»ΠΎΠ²Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ°.
ΠΠ°Π²Π°ΡΠ΅Π» Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π·Π° ΡΠ»Π΅Π½ΡΡΠ²ΠΎ (MSP) Π΅ CA (Certificate Authority) Π·Π° ΠΈΠ·Π΄Π°Π²Π°ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Ρ ΠΈ Π΄ΠΎΠ΄Π΅Π»ΡΠ²Π°ΡΠ΅ ΡΠ»ΠΎΠ³ΠΈ. ΠΠ° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠ°Π·ΠΎΠ», ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΠ΅ ΡΠΎ MSP.
ΠΡΡΠ½ΠΈ ΡΠ°Π·Π»ΠΈ β ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ Π³ΠΈ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅, ΡΠΊΠ»Π°Π΄ΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΡΠ΅ ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ ΠΈ ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ°ΡΡΠ΅ ΡΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅. ΠΡΡΠ½ΠΈΡΠΈΡΠ΅ ΠΈΠΌΠ°Π°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ΅Ρ (Π΄ΠΈΠ³ΠΈΡΠ°Π»Π΅Π½ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ), ΠΊΠΎΡ Π³ΠΎ ΠΈΠ·Π΄Π°Π²Π° ΠΠ‘Π. ΠΠ° ΡΠ°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Bitcoin ΠΈΠ»ΠΈ Etherium, ΠΊΠ°Π΄Π΅ ΡΡΠΎ ΡΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ ΠΈΠΌΠ°Π°Ρ Π΅Π΄Π½Π°ΠΊΠ²ΠΈ ΠΏΡΠ°Π²Π°, Π²ΠΎ Hyperledger Fabric ΡΠ°Π·Π»ΠΈΡΠ΅ ΠΈΠ³ΡΠ°Π°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΡΠ»ΠΎΠ³ΠΈ:
- ΠΡΡΠ½ΠΈΡΠΈ ΠΌΠΎΠΆΠ΅Π±ΠΈ ΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π²ΡΡΠ½ΠΈΠΊ (ΠΠ) ΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ.
- ΠΠΎΡΠ²Π΅ΡΡΠ²Π°ΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ (CP) - Π·Π°ΡΡΠ²Π°ΡΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ°ΠΌΠΎ Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ ΠΈ Π°ΠΆΡΡΠΈΡΠ°ΡΡΠ΅ ΡΠ° βΠ‘Π²Π΅ΡΡΠΊΠ°ΡΠ° Π΄ΡΠΆΠ°Π²Π°β.
- Π‘ΠΈΠ΄ΡΠΎ ΠΠ΅Ρ (ΠΠ) - Π°ΠΊΠΎ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π°Ρ Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ, ΡΠΎΠ³Π°Ρ Π²ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π·Π° ΡΠΈΠ΄ΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΌΠ΅ΡΡ Π½ΠΈΠ². Π‘Π΅ΠΊΠΎΡΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° ΠΌΠΎΡΠ° Π΄Π° ΠΈΠΌΠ° Π΅Π΄Π΅Π½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ ΡΠΎ ΡΠΈΠ΄ΡΠΎ. Π‘ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΠΠ, ΡΠ΅ΠΊΠΎΡ Π²ΡΡΠ½ΠΈΠΊ Π²ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ±ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΈΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ Π²ΠΎ Π΄ΡΡΠ³ΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ. Π‘Π΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΠΠ
ΠΏΡΠΎΡΠΎΠΊΠΎΠ» Π·Π° ΠΎΠ·Π±ΠΎΡΡΠ²Π°ΡΠ° . - ΠΠΎΠ΄Π°Ρ ΠΠ΅Π΅Ρ β Π°ΠΊΠΎ Π΅Π΄Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° ΠΈΠΌΠ° Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π²ΡΡΠ½ΠΈΡΠΈ, ΡΠΎΠ³Π°Ρ ΡΠ°ΠΌΠΎ Π»ΠΈΠ΄Π΅ΡΠΎΡ Π½Π° Π²ΡΡΠ½ΠΈΡΠΈΡΠ΅ ΡΠ΅ Π΄ΠΎΠ±ΠΈΠ΅ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΠΎΠ΄ ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΠ°ΡΠ°ΡΠΊΠ° ΠΈ ΡΠ΅ ΠΈΠΌ Π³ΠΈ Π΄Π°Π΄Π΅ Π½Π° ΠΎΡΡΠ°Π½Π°ΡΠΈΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ. ΠΠΈΠ΄Π΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π΅ ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΠΈΠ»ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ ΠΈΠ·Π±ΡΠ°Π½ ΠΎΠ΄ ΠΊΠΎΠ»Π΅Π³ΠΈΡΠ΅ Π²ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ°. ΠΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ Π·Π° ΠΎΠ·Π±ΠΎΡΡΠ²Π°ΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈ Π·Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π»ΠΈΠ΄Π΅ΡΠΈΡΠ΅.
Π‘ΡΠ΅Π΄ΡΡΠ²Π° β Π΅Π½ΡΠΈΡΠ΅ΡΠΈ ΠΊΠΎΠΈ ΠΈΠΌΠ°Π°Ρ Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΈ ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π½ΠΈ Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ. ΠΠΎΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ, ΠΎΠ²Π° ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠΎ ΠΊΠ»ΡΡΠ½Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π²ΠΎ JSON ΡΠΎΡΠΌΠ°Ρ. Π’ΠΎΠΊΠΌΡ ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π°Ρ Π²ΠΎ Blockchain. Π’ΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ ΠΈΡΡΠΎΡΠΈΡΠ°, ΠΊΠΎΡΠ° Π΅ Π·Π°ΡΡΠ²Π°Π½Π° Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°, ΠΊΠΎΡΠ° ΡΠ΅ ΡΡΠ²Π° Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ βΠ‘Π²Π΅ΡΡΠΊΠ° Π΄ΡΠΆΠ°Π²Π°β. Π‘ΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΠ΅ ΠΏΠΎΠΏΠΎΠ»Π½ΡΠ²Π°Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ Π²ΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡ ΠΎΠ΄ Π΄Π΅Π»ΠΎΠ²Π½ΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠΈ. ΠΠ΅ΠΌΠ° Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΈ ΠΏΠΎΠ»ΠΈΡΠ°, Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π°ΡΠ° ΠΏΡΠ΅ΠΏΠΎΡΠ°ΠΊΠ° Π΅ Π΄Π΅ΠΊΠ° ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° ΠΌΠΎΡΠ° Π΄Π° ΠΈΠΌΠ°Π°Ρ ΡΠΎΠΏΡΡΠ²Π΅Π½ΠΈΠΊ ΠΈ Π΄Π° Π±ΠΈΠ΄Π°Ρ Π²ΡΠ΅Π΄Π½ΠΈ.
ΠΠ΅ΡΠ΅Ρ β ΡΠ΅ ΡΠΎΡΡΠΎΠΈ ΠΎΠ΄ Blockchain ΠΈ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π·Π° ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π½Π° Word, ΠΊΠΎΡΠ° ΡΠ° ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ°. Π‘Π²Π΅ΡΡΠΊΠ°ΡΠ° Π΄ΡΠΆΠ°Π²Π° ΠΊΠΎΡΠΈΡΡΠΈ LevelDB ΠΈΠ»ΠΈ CouchDB.
ΠΠ°ΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ β ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° Π΄Π΅Π»ΠΎΠ²Π½Π°ΡΠ° Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ. ΠΠΎ Hyperledger Fabric, ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π°Π°Ρ Π²Π΅ΡΠΈΠΆΠ΅Π½ ΠΊΠΎΠ΄. Π‘ΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π²Π΅ΡΠΈΠΆΠ΅Π½ ΠΊΠΎΠ΄, Π½Π°Π²Π΅Π΄Π΅Π½ΠΈ ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΈ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΠΏΡΠ΅ΠΊΡ Π½ΠΈΠ². ΠΠΎ ΡΠ΅Ρ Π½ΠΈΡΠΊΠ° ΡΠΌΠΈΡΠ»Π°, ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ ΡΠ΅ ΡΠΎΡΡΠ²Π΅ΡΡΠΊΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΡΠ΅ ΡΠ°Π·ΠΈΡΠΈ JS ΠΈΠ»ΠΈ Go.
ΠΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ β Π·Π° ΡΠ΅ΠΊΠΎΡ Π²Π΅ΡΠΈΠΆΠ΅Π½ ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΡΠΎΠ° ΠΊΠΎΠ»ΠΊΡ ΠΏΠΎΡΠ²ΡΠ΄ΠΈ Π·Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΎΡΠ΅ΠΊΡΠ²Π°Π°Ρ ΠΈ ΠΎΠ΄ ΠΊΠΎΠ³ΠΎ. ΠΠΊΠΎ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π½Π΅ Π΅ ΠΏΠΎΡΡΠ°Π²Π΅Π½Π°, ΡΠΎΠ³Π°Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΎΡΠΎ Π΅: βΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΡΠ²ΡΠ΄Π΅Π½Π° ΠΎΠ΄ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΡΠ»Π΅Π½ Π½Π° ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΊΠ°Π½Π°Π»ΠΎΡβ. ΠΡΠΈΠΌΠ΅ΡΠΈ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ:
- Π’ΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° ΠΌΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΎΠ΄ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ°;
- ΠΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΡΠ²ΡΠ΄Π΅Π½ΠΎ ΠΎΠ΄ ΠΊΠΎΡ Π±ΠΈΠ»ΠΎ ΡΠ»Π΅Π½ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°ΡΠ°;
- ΠΠΎΡΠ° Π΄Π° Π±ΠΈΠ΄Π΅ ΠΏΠΎΡΠ²ΡΠ΄Π΅Π½ΠΎ ΠΎΠ΄ ΠΊΠΎΡΠ° Π±ΠΈΠ»ΠΎ Π²ΡΡΠ½ΠΈΡΠΊΠ° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°.
Π£ΡΠ»ΡΠ³Π° Π·Π° Π½Π°ΡΠ°ΡΡΠ²Π°ΡΠ΅ β Π³ΠΈ ΠΏΠ°ΠΊΡΠ²Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ Π²ΠΎ Π±Π»ΠΎΠΊΠΎΠ²ΠΈ ΠΈ Π³ΠΈ ΠΈΡΠΏΡΠ°ΡΠ° Π΄ΠΎ Π²ΡΡΠ½ΠΈΡΠΈΡΠ΅ Π²ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΡ. ΠΠ°ΡΠ°Π½ΡΠΈΡΠ° ΠΈΡΠΏΠΎΡΠ°ΠΊΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ Π΄ΠΎ ΡΠΈΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°. Π‘Π΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠ½Π΄ΡΡΡΡΠΈΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ
CallFlow
- ΠΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° ΠΊΠΎΠΌΡΠ½ΠΈΡΠΈΡΠ° ΡΠΎ Hyperledger Fabric ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Go, Node.js ΠΈΠ»ΠΈ Java SDK;
- ΠΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΠΎΠ·Π΄Π°Π²Π° tx ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ° ΠΈ ΡΠ° ΠΈΡΠΏΡΠ°ΡΠ° Π΄ΠΎ Π²ΡΡΠ½ΠΈΡΠΈΡΠ΅ ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°Π°Ρ;
- ΠΡΡΠ½ΠΈΠΊΠΎΡ Π³ΠΎ ΠΏΠΎΡΠ²ΡΠ΄ΡΠ²Π° ΠΏΠΎΡΠΏΠΈΡΠΎΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ, ΡΠ° Π·Π°Π²ΡΡΡΠ²Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° ΠΈ Π³ΠΎ ΠΈΡΠΏΡΠ°ΡΠ° ΠΏΠΎΡΠΏΠΈΡΠΎΡ Π·Π° ΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π°Π·Π°Π΄ Π΄ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ. Chaincode ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ°ΠΌΠΎ Π½Π° ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°ΡΠΎΡ, Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΎΡ ΠΎΠ΄ Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΡΠ΅ ΠΈΡΠΏΡΠ°ΡΠ° Π΄ΠΎ ΡΠΈΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ. ΠΠ²ΠΎΡ Π°Π»Π³ΠΎΡΠΈΡΠ°ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π° ΠΊΠΎΠ½ΡΠ΅Π½Π·ΡΡ PBFT (Practical Byzantine Fault Tolerant). Π‘Π΅ ΡΠ°Π·Π»ΠΈΠΊΡΠ²Π° ΠΎΠ΄
ΠΊΠ»Π°ΡΠΈΡΠ΅Π½ BFT ΡΠ°ΠΊΡΠΎΡ Π΄Π΅ΠΊΠ° ΠΏΠΎΡΠ°ΠΊΠ°ΡΠ° Π΅ ΠΈΡΠΏΡΠ°ΡΠ΅Π½Π° ΠΈ ΡΠ΅ ΠΎΡΠ΅ΠΊΡΠ²Π° ΠΏΠΎΡΠ²ΡΠ΄Π° Π½Π΅ ΠΎΠ΄ ΡΠΈΡΠ΅ ΡΡΠ΅ΡΠ½ΠΈΡΠΈ, ΡΡΠΊΡ ΡΠ°ΠΌΠΎ ΠΎΠ΄ ΠΎΠ΄ΡΠ΅Π΄Π΅Π½ ΡΠ΅Ρ; - ΠΡΠΊΠ°ΠΊΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡ ΡΠ΅ Π³ΠΎ Π΄ΠΎΠ±ΠΈΠ΅ Π±ΡΠΎΡΠΎΡ Π½Π° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈ ΡΡΠΎ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°Π°Ρ Π½Π° ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅, ΡΠΎΡ ΡΠ° ΠΈΡΠΏΡΠ°ΡΠ° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° Π΄ΠΎ ΡΡΠ»ΡΠ³Π°ΡΠ° ΠΠ°ΡΠ°ΡΠΊΠ°;
- Π£ΡΠ»ΡΠ³Π°ΡΠ° Ordering Π³Π΅Π½Π΅ΡΠΈΡΠ° Π±Π»ΠΎΠΊ ΠΈ ΡΠ° ΠΈΡΠΏΡΠ°ΡΠ° Π΄ΠΎ ΡΠΈΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΎΠ±Π²ΡΠ·ΡΠ²Π°Π°Ρ. Π£ΡΠ»ΡΠ³Π°ΡΠ° Π·Π° Π½Π°ΡΠ°ΡΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΡΠ½ΠΈΠΌΠ°ΡΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²ΠΈ, ΡΠΎ ΡΡΠΎ ΡΠ΅ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ° ΡΠ°ΠΊΠ°Π½Π°ΡΠ΅ΡΠ΅Π½Π°ΡΠ° Π²ΠΈΠ»ΡΡΠΊΠ° Π½Π° ΠΊΠ½ΠΈΠ³Π°ΡΠ° (
Π²ΠΈΠ΄Π΅ΡΠ΅ Π³ΠΎ Π΄Π΅Π»ΠΎΡ βΠΠΈΠ»ΡΡΠΊΠΈβ ); - ΠΡΡΠ½ΠΈΡΠΈΡΠ΅ Π΄ΠΎΠ±ΠΈΠ²Π°Π°Ρ Π±Π»ΠΎΠΊ, ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π°Ρ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅, Π³ΠΎ ΠΏΠΈΡΡΠ²Π°Π°Ρ Π±Π»ΠΎΠΊΠΎΡ Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ ΠΈ ΡΠ° ΠΌΠ΅Π½ΡΠ²Π°Π°Ρ ΡΠΎΡΡΠΎΡΠ±Π°ΡΠ° Π²ΠΎ DB βΠ‘Π²Π΅ΡΡΠΊΠ° Π΄ΡΠΆΠ°Π²Π°β.
ΠΠ½ΠΈΠ΅. ΠΠ²Π° ΡΠ΅Π·ΡΠ»ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΠ΄Π΅Π»Π±Π° Π½Π° ΡΠ»ΠΎΠ³ΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ΅. ΠΠ²Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΄Π΅ΠΊΠ° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ Π΅ ΡΠΊΠ°Π»Π°Π±ΠΈΠ»Π΅Π½ ΠΈ Π±Π΅Π·Π±Π΅Π΄Π΅Π½:
- ΠΠ°ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ (ΡΠΈΠ½ΡΠΈΡ ΠΊΠΎΠ΄) Π²ΡΡΠ°Ρ ΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° Π²ΡΡΠ½ΠΈΡΠΈΡΠ΅. ΠΠ²Π° ΡΠ° ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΄ΠΎΠ²Π΅ΡΠ»ΠΈΠ²ΠΎΡΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΡΠ΅ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π½Π΅ ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ° ΠΎΠ΄ ΡΠΈΡΠ΅ ΡΡΠ΅ΡΠ½ΠΈΡΠΈ, ΡΡΠΊΡ ΡΠ°ΠΌΠΎ ΡΠΎ ΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π½Π° Π²ΡΡΠ½ΠΈΡΠΈ.
- ΠΠ°ΡΠ°ΡΠΊΠ°ΡΠ° ΡΡΠ΅Π±Π° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Π±ΡΠ·ΠΎ. ΠΠ²Π° Π΅ ΠΎΠ±Π΅Π·Π±Π΅Π΄Π΅Π½ΠΎ ΡΠΎ ΡΠ°ΠΊΡΠΎΡ Π΄Π΅ΠΊΠ° Ordering ΡΠΎΡΠΌΠΈΡΠ° ΡΠ°ΠΌΠΎ Π±Π»ΠΎΠΊ ΠΈ Π³ΠΎ ΠΈΡΠΏΡΠ°ΡΠ° Π΄ΠΎ ΡΠΈΠΊΡΠ΅Π½ ΡΠ΅Ρ Π½Π° Π»ΠΈΠ΄Π΅ΡΠΈ Π²ΡΡΠ½ΠΈΡΠΈ.
- ΠΠ±Π²ΡΠ·ΡΠ²Π°ΡΠΊΠΈΡΠ΅ Π²ΡΡΠ½ΠΈΡΠΈ Π³ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π°Ρ ΡΠ°ΠΌΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ - ΠΌΠΎΠΆΠ΅ Π΄Π° Π³ΠΈ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³Ρ ΠΈ Π½Π΅ Π±Π°ΡΠ°Π°Ρ ΠΌΠ½ΠΎΠ³Ρ ΠΌΠΎΡ ΠΈ ΠΈΠ½ΡΡΠ°Π½Ρ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅.
ΠΠΎΠ²Π΅ΡΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ Π·Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΠΎΠ½ΡΠΊΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ° Π½Π° Hyperledger Fabric ΠΈ Π·ΠΎΡΡΠΎ ΡΠΎΠ° ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ° Π½Π° ΠΎΠ²ΠΎΡ Π½Π°ΡΠΈΠ½, Π° Π½Π΅ ΠΏΠΎΠΈΠ½Π°ΠΊΡ, ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΡΠ΄Π΅ΡΠ΅ ΠΎΠ²Π΄Π΅:
ΠΠ½Π°ΡΠΈ, Hyperledger Fabric Π΅ Π½Π°Π²ΠΈΡΡΠΈΠ½Π° ΡΠ½ΠΈΠ²Π΅ΡΠ·Π°Π»Π΅Π½ ΡΠΈΡΡΠ΅ΠΌ ΡΠΎ ΠΊΠΎΡ ΠΌΠΎΠΆΠ΅ΡΠ΅:
- Π‘ΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½Π° Π΄Π΅Π»ΠΎΠ²Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΡ Π·Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ;
- Π‘Π½ΠΈΠΌΠ°ΡΡΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ°ΡΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΎΠ΄ Π±Π°Π·Π°ΡΠ° Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ Π²ΠΎ JSON ΡΠΎΡΠΌΠ°Ρ;
- ΠΠΎΠ΄Π΅Π»Π΅ΡΠ΅ ΠΈ ΠΏΠΎΡΠ²ΡΠ΄Π΅ΡΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ API ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π°Π²ΡΠΎΡΠΈΡΠ΅ΡΠΎΡ Π·Π° ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΈ.
Π‘Π΅Π³Π° ΠΊΠΎΠ³Π° ΡΠ°Π·Π±ΡΠ°Π²ΠΌΠ΅ ΠΌΠ°Π»ΠΊΡ Π·Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΈΡΠ΅ Π½Π° Hyperledger Fabric, Π°ΡΠ΄Π΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ Π½Π΅ΡΡΠΎ ΠΊΠΎΡΠΈΡΠ½ΠΎ!
Π Π°ΡΠΏΠΎΡΠ΅Π΄ΡΠ²Π°ΡΠ΅ Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½
ΠΡΠΎΠ±Π»Π΅ΠΌ ΠΈΠ·ΡΠ°Π²Π°
ΠΠ°Π΄Π°ΡΠ°ΡΠ° Π΅ Π΄Π° ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Π½Π° Citcoin ΡΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΡΠΌΠ΅ΡΠΊΠ°, Π΄ΠΎΠ±ΠΈΡΡΠ΅ ΡΠ°Π»Π΄ΠΎ, Π½Π°Π΄ΠΎΠΏΠΎΠ»Π½Π΅ΡΠ΅ ΡΠ° Π²Π°ΡΠ°ΡΠ° ΡΠΌΠ΅ΡΠΊΠ°, ΠΏΡΠ΅ΡΡΠ»Π΅ΡΠ΅ ΠΌΠΎΠ½Π΅ΡΠΈ ΠΎΠ΄ Π΅Π΄Π½Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° Π΄ΡΡΠ³Π°. ΠΡΠ΄Π΅ Π΄Π° Π½Π°ΡΡΡΠ°ΠΌΠ΅ ΠΌΠΎΠ΄Π΅Π» Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡ ΠΏΠΎΠ½Π°ΡΠ°ΠΌΡ ΡΠ΅ Π³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π²ΠΎ ΠΏΠ°ΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ. ΠΠ½Π°ΡΠΈ, ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠΌΠ΅ΡΠΊΠΈ ΠΊΠΎΠΈ ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°Π°Ρ ΠΏΠΎ ΠΈΠΌΠΈΡΠ° ΠΈ ΡΠΎΠ΄ΡΠΆΠ°Ρ ΡΠ°Π»Π΄ΠΎ ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ. Π‘ΠΌΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΡΠΏΠΈΡΠΎΠΊΠΎΡ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ ΡΠ΅, Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° Π½Π° Hyperledger Fabric. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΠΎΠ°, ΡΠΈΠ΅ ΠΈΠΌΠ°Π°Ρ ΠΈΡΡΠΎΡΠΈΡΠ° ΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΡΠΎΡΡΠΎΡΠ±Π°. ΠΠ΅ ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π°ΠΌ ΡΠ°ΡΠ½ΠΎ Π΄Π° Π³ΠΎ Π½Π°ΡΡΡΠ°ΠΌ ΠΎΠ²Π°:
ΠΡΠ²Π½ΠΈΡΠ΅ Π±ΡΠΎΡΠΊΠΈ ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π°, ΠΊΠΎΡΠ° Π΅ Π·Π°ΡΡΠ²Π°Π½Π° Π²ΠΎ Π±Π°Π·Π°ΡΠ° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ βΠ‘Π²Π΅ΡΡΠΊΠ° Π΄ΡΠΆΠ°Π²Π°β. ΠΠΎΠ΄ Π½ΠΈΠ² ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Π½ΠΈ Π±ΡΠΎΡΠΊΠΈ ΠΊΠΎΠΈ ΡΠ° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π°Π°Ρ ΠΈΡΡΠΎΡΠΈΡΠ°ΡΠ° ΡΡΠΎ Π΅ Π·Π°ΡΡΠ²Π°Π½Π° Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ. Π’Π΅ΠΊΠΎΠ²Π½Π°ΡΠ° ΡΠΎΡΡΠΎΡΠ±Π° Π½Π° ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ° ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° ΡΠΎ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ. Π‘ΡΠ΅Π΄ΡΡΠ²ΠΎΡΠΎ ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° ΡΠ°ΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΡΠ΅Π»ΠΈΠ½Π°, ΠΏΠ° ΠΊΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ°, ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π° Π½ΠΎΠ² ΠΎΠ±ΡΠ΅ΠΊΡ, Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²ΠΎΡΠΎ ΠΎΠ΄ΠΈ Π²ΠΎ ΠΈΡΡΠΎΡΠΈΡΠ°ΡΠ°.
IBM Cloud
ΠΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠΌΠ΅ΡΠΊΠ° Π²ΠΎ
Π‘ΠΎΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ ΠΌΡΠ΅ΠΆΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° ΠΠ»ΠΎΠΊΡΠ΅ΡΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Π‘ΠΎΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΈ ΠΈΠ·Π²ΡΡΠ΅ΡΠ΅ ΠΏΠ°ΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Π·Π° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ ΠΠΌΠΈΡΡΠ²Π°ΡΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ ΠΎΠ΄ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ°
Π‘Π»Π΅Π΄Π½ΠΈΠ²Π΅ ΡΠ΅ ΡΠ»ΠΈΠΊΠΈ ΠΎΠ΄ Π΅ΠΊΡΠ°Π½ΠΎΡ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° IBM Blockchain. ΠΠ²Π° Π½Π΅ Π΅ ΡΠΏΠ°ΡΡΡΠ²ΠΎ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄Π΅ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½, ΡΡΠΊΡ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΠΎΠ±Π΅ΠΌΠΎΡ Π½Π° Π·Π°Π΄Π°ΡΠ°ΡΠ°. ΠΠ½Π°ΡΠΈ, Π·Π° Π½Π°ΡΠΈ ΡΠ΅Π»ΠΈ, ΠΏΡΠ°Π²ΠΈΠΌΠ΅ Π΅Π΄Π½Π° ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠ°:
ΠΠΎ Π½Π΅Π³ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈ: Orderer CA, Org1 CA, Orderer Peer:
ΠΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ:
ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΊΠ°Π½Π°Π» ΠΈ Π½Π°ΡΠ΅ΡΠ΅ΡΠ΅ Π³ΠΎ citcoin:
ΠΠΎ ΡΡΡΡΠΈΠ½Π° Channel Π΅ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½, ΠΏΠ° Π·Π°ΠΏΠΎΡΠ½ΡΠ²Π° ΡΠΎ Π±Π»ΠΎΠΊ Π½ΡΠ»Π° (ΠΠ»ΠΎΠΊ Genesis):
ΠΠΈΡΡΠ²Π°ΡΠ΅ ΠΏΠ°ΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ
/*
* 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 Π³Π΅Π½Π΅ΡΠΈΡΠ°Π°Ρ ΠΠ°ΡΡΠ°Π½ΠΈ ΡΡΠΎ ΡΠ΅ Π³ΠΈ ΠΏΡΠΈΠΌΠ° Π΄Π΅ΠΌΠΎ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°.
- ΠΠ½ΡΡΠ°Π½Ρ ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° Π΅Π΄Π½Π°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ° ΠΏΠ°ΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ. ΠΡΡΡΠ½ΠΎΡΡ, ΡΠΎΠ° ΡΠ΅ Π½Π°ΡΠ΅ΠΊΡΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ Π΅Π΄Π½Π°Ρ, ΡΡΠΊΡ ΡΠ΅ΠΊΠΎΡ ΠΏΠ°Ρ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΌΠ΅Π½ΡΠ²Π° Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΠΎΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ. ΠΠ°ΡΠΎΠ°, ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ΡΠΎ Π»ΠΈΡΡΠ° ΡΠΎ ΠΏΡΠ°Π·Π½Π° Π½ΠΈΠ·Π° Π΅ Π»ΠΎΡΠ° ΠΈΠ΄Π΅ΡΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ Π‘Π΅Π³Π°, ΠΊΠΎΠ³Π° ΡΠ΅ ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ°ΡΠ° Π½Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΠΎΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ, ΡΠ΅ ΡΠ° ΠΈΠ·Π³ΡΠ±ΠΈΠΌΠ΅ ΡΠ΅ΠΊΠΎΠ²Π½Π°ΡΠ° Π»ΠΈΡΡΠ°. ΠΠΎ, Π²ΠΎ ΡΠ΅Π΄ Π΅, ΡΠ°ΠΌΠΎ ΡΡΠ°ΠΌ).
- Π‘ΠΌΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΡΠΏΠΈΡΠΎΠΊΠΎΡ ΡΠΎ ΡΠΌΠ΅ΡΠΊΠΈ ΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΈ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ Π½Π° JSON. JS ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΈΡΠ° ΡΠΎ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ.
- ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° Π΄ΠΎΠ±ΠΈΠ΅ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° Π²ΡΠ΅Π΄Π½ΠΎΡΡ Π½Π° ΡΡΠ΅Π΄ΡΡΠ²ΠΎΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΏΠΎΠ²ΠΈΠΊΠΎΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° getState ΠΈ Π΄Π° Π³ΠΎ Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΡΠΎ putState.
- ΠΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΌΠ΅ΡΠΊΠ°, ΡΠ΅ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ°ΡΠ° AddAccount, Π²ΠΎ ΠΊΠΎΡΠ° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ ΡΠΏΠΎΡΠ΅Π΄Π±Π° Π·Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ (maxAccounts = 5). Π ΡΡΠΊΠ° ΠΈΠΌΠ° Π·Π°ΡΡΠΎΡ (Π΄Π°Π»ΠΈ Π·Π°Π±Π΅Π»Π΅ΠΆΠ°Π²ΡΠ΅?), ΡΡΠΎ Π΄ΠΎΠ²Π΅Π΄ΡΠ²Π° Π΄ΠΎ Π±Π΅ΡΠΊΡΠ°ΡΠ½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° Π±ΡΠΎΡΠΎΡ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ. ΠΠ°ΠΊΠ²ΠΈΡΠ΅ Π³ΡΠ΅ΡΠΊΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΠΈΠ·Π±Π΅Π³Π½ΡΠ²Π°Π°Ρ)
Π‘Π»Π΅Π΄Π½ΠΎ, Π³ΠΎ Π²ΡΠΈΡΡΠ²Π°ΠΌΠ΅ ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΠΎΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Π²ΠΎ ΠΠ°Π½Π°Π»ΠΎΡ ΠΈ Π³ΠΎ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅:
ΠΡΠ΄Π΅ Π΄Π° ΡΠ° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ°ΡΠ° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΏΠ°ΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ:
ΠΠ° Π³ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Π΄Π΅ΡΠ°Π»ΠΈΡΠ΅ Π·Π° Π½Π°ΡΠΈΠΎΡ ΠΊΠ°Π½Π°Π»:
ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΡΠΎΠ°, Π³ΠΎ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΄ΠΈΡΠ°Π³ΡΠ°ΠΌ Π½Π° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ ΠΌΡΠ΅ΠΆΠ° Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ Π½Π° IBM. ΠΠΈΡΠ°Π³ΡΠ°ΠΌΠΎΡ ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠΊΠ°ΠΆΡΠ²Π° Π΄Π΅ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ Π½Π° ΠΠΌΠ°Π·ΠΎΠ½ Π½Π° Π²ΠΈΡΡΡΠ΅Π»Π΅Π½ ΡΠ΅ΡΠ²Π΅Ρ (ΠΏΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠΎΠ° Π²ΠΎ ΡΠ»Π΅Π΄Π½ΠΈΠΎΡ Π΄Π΅Π»):
ΠΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½Π° GUI Π·Π° ΠΏΠΎΠ²ΠΈΡΠΈ Hyperledger Fabric API
Hyperledger Fabric ΠΈΠΌΠ° API ΡΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π°:
- ΠΡΠ΅ΠΈΡΠ°Ρ ΠΊΠ°Π½Π°Π»;
- ΠΡΡΠΊΠΈ ΠΌΠ΅ΡΡ ΠΊΠ°Π½Π°Π»ΠΈΡΠ΅;
- ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡΠ° ΠΈ ΠΈΠ½ΡΡΠ°Π½ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ Π²ΠΎ ΠΊΠ°Π½Π°Π»ΠΎΡ;
- ΠΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ;
- ΠΠΎΠ±Π°ΡΠ°ΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ.
Π Π°Π·Π²ΠΎΡ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
ΠΠΎ Π½Π°ΡΠ°ΡΠ° Π΄Π΅ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΠ΅ Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ API ΡΠ°ΠΌΠΎ Π·Π° ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ ΠΈ Π±Π°ΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΠ΅ΡΠ΅ Π³ΠΈ Π·Π°Π²ΡΡΠΈΠ²ΠΌΠ΅ ΠΏΡΠ΅ΠΎΡΡΠ°Π½Π°ΡΠΈΡΠ΅ ΡΠ΅ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° IBM. ΠΠΈΠ΅ ΠΏΠΈΡΡΠ²Π°ΠΌΠ΅ GUI ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π΅Π½ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΡΠΊΠΈ ΡΡΠ΅ΠΊ: Express.js + Vue.js + Node.js. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΏΠΎΡΠ΅Π±Π½Π° ΡΡΠ°ΡΠΈΡΠ° Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ. ΠΠ²Π΅ ΡΠ΅ ΠΎΡΡΠ°Π²Π°ΠΌ Π»ΠΈΠ½ΠΊ Π΄ΠΎ ΡΠ΅ΡΠΈΡΠ°ΡΠ° ΠΏΡΠ΅Π΄Π°Π²Π°ΡΠ° ΠΊΠΎΠΈ Π½Π°ΡΠΌΠ½ΠΎΠ³Ρ ΠΌΠΈ ΡΠ΅ Π΄ΠΎΠΏΠ°Π΄Π½Π°Π°:
- HyperledgerDemo/v1/init - ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ;
- HyperledgerDemo/v1/accounts/list β Π΄ΠΎΠ±ΠΈΡΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° ΡΠΈΡΠ΅ ΡΠΌΠ΅ΡΠΊΠΈ;
- HyperledgerDemo/v1/account?name=Bob&balance=100 β ΠΊΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΡΠΌΠ΅ΡΠΊΠ° Π½Π° ΠΠΎΠ±;
- HyperledgerDemo/v1/info?account=Bob β Π΄ΠΎΠ±ΠΈΡΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π·Π° ΡΠΌΠ΅ΡΠΊΠ°ΡΠ° Π½Π° ΠΠΎΠ±;
- HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 - ΠΏΡΠ΅ΡΡΠ»ΠΈ Π΄Π²Π΅ ΠΌΠΎΠ½Π΅ΡΠΈ ΠΎΠ΄ ΠΠΎΠ± Π½Π° ΠΠ»ΠΈΡ;
- HyperledgerDemo/v1/disconnect - Π·Π°ΡΠ²ΠΎΡΠ΅ΡΠ΅ ΡΠ° Π²ΡΡΠΊΠ°ΡΠ° ΡΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ.
ΠΠΏΠΈΡ Π½Π° API ΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ
ΠΠ΅ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π²ΠΎ ΠΎΠ±Π»Π°ΠΊΠΎΡ Π½Π° Amazon
ΠΠ° ΠΏΠΎΡΡΠ°Π²ΠΈΠ² Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° ΠΠΌΠ°Π·ΠΎΠ½ Π·Π°ΡΠΎΠ° ΡΡΠΎ ... IBM ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ° Π½Π°Π΄Π³ΡΠ°Π΄ΠΈ ΠΌΠΎΡΠ°ΡΠ° ΡΠΌΠ΅ΡΠΊΠ° ΠΈ Π΄Π° ΠΌΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΈ. ΠΠ°ΠΊΠΎ Π΄Π° Π΄ΠΎΠ΄Π°Π΄Π΅ΡΠ΅ ΡΡΠ΅ΡΠ° Π²ΠΎ Π΄ΠΎΠΌΠ΅Π½ΠΎΡ:
- ΠΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ;
- ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΡΠΌΠ΅ΡΠΊΠ° (Π½ΠΎ ΡΠ΅Π³Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ²Π° ΡΠΌΠ΅ΡΠΊΠ°, Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΈΠΎΡ Π±ΡΠΎΡ Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ Π½Π°Π²Π΅Π΄Π΅Π½ Π²ΠΎ ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈΠΎΡ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ Π΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Ρ Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ);
- ΠΠΎΠ±ΠΈΡΡΠ΅ Π»ΠΈΡΡΠ° Π½Π° ΡΠΌΠ΅ΡΠΊΠΈ;
- Π’ΡΠ°Π½ΡΡΠ΅Ρ Π½Π° ΡΠΈΡΠΊΠΎΠΈΠ½ ΠΌΠΎΠ½Π΅ΡΠΈ ΠΏΠΎΠΌΠ΅ΡΡ ΠΠ»ΠΈΡ, ΠΠΎΠ± ΠΈ ΠΠ»Π΅ΠΊΡ;
- ΠΡΠΈΠΌΠ°ΡΡΠ΅ Π½Π°ΡΡΠ°Π½ΠΈ (Π½ΠΎ ΡΠ΅Π³Π° Π½Π΅ΠΌΠ° Π½Π°ΡΠΈΠ½ Π΄Π° ΡΠ΅ ΠΏΡΠΈΠΊΠ°ΠΆΠ°Ρ Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅, ΡΠ°ΠΊΠ° ΡΡΠΎ Π·Π° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎΡΡ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡΠΎΡ Π²Π΅Π»ΠΈ Π΄Π΅ΠΊΠ° Π½Π°ΡΡΠ°Π½ΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΠΆΠ°Π½ΠΈ);
- ΠΠ΅ΡΡΡΠ²Π° Π·Π° Π΅Π²ΠΈΠ΄Π΅Π½ΡΠΈΡΠ°.
ΠΡΠ²ΠΎ Π³ΠΎ ΠΈΠ½ΠΈΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ:
Π‘Π»Π΅Π΄Π½ΠΎ, ΡΠ° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠ΅ Π½Π°ΡΠ°ΡΠ° ΡΠΌΠ΅ΡΠΊΠ°, Π½Π΅ Π³ΡΠ±Π΅ΡΠ΅ Π²ΡΠ΅ΠΌΠ΅ ΡΠΎ ΡΠ°Π»Π΄ΠΎΡΠΎ:
ΠΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΠΈΡΠ΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΈ ΡΠΌΠ΅ΡΠΊΠΈ:
ΠΠΈ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠΎΡ ΠΈ ΠΏΡΠΈΠΌΠ°ΡΠΎΡ ΠΈ Π³ΠΈ Π΄ΠΎΠ±ΠΈΠ²Π°ΠΌΠ΅ Π½ΠΈΠ²Π½ΠΈΡΠ΅ ΡΠ°Π»Π΄Π°. ΠΠΊΠΎ ΠΈΡΠΏΡΠ°ΡΠ°ΡΠΎΡ ΠΈ ΠΏΡΠΈΠΌΠ°ΡΠΎΡ ΡΠ΅ ΠΈΡΡΠΈ, ΡΠΎΠ³Π°Ρ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° ΡΠΌΠ΅ΡΠΊΠ° ΡΠ΅ ΡΠ΅ Π½Π°Π΄ΠΎΠΏΠΎΠ»Π½ΠΈ:
ΠΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ Π³ΠΎ ΡΠ»Π΅Π΄ΠΈΠΌΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅:
ΠΡΡΡΠ½ΠΎΡΡ, ΡΠΎΠ° Π΅ ΡΓ¨ ΡΠΎ Π΄Π΅ΠΌΠΎ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°. ΠΠΎΠ΄ΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π°ΡΠ°ΡΠ° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΡΠ° Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ:
Π Π³Π΅Π½Π΅ΡΠ°Π»Π½ΠΈΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈ:
Π‘ΠΎ ΠΎΠ²Π°, ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠ° Π·Π°Π²ΡΡΠΈΠ²ΠΌΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° Π½Π° PoC Π·Π° ΡΠΎΠ·Π΄Π°Π²Π°ΡΠ΅ Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ° Citcoin. Π¨ΡΠΎ Π΄ΡΡΠ³ΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π° Citcoin Π΄Π° ΡΡΠ°Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΠΏΡΠ°Π²Π½Π° ΠΌΡΠ΅ΠΆΠ° Π·Π° ΠΏΡΠ΅Π½ΠΎΡ Π½Π° ΠΌΠΎΠ½Π΅ΡΠΈ? ΠΠ½ΠΎΠ³Ρ ΠΌΠ°Π»ΠΊΡ:
- ΠΠΎ ΡΠ°Π·Π°ΡΠ° Π½Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΡΠΌΠ΅ΡΠΊΠ°, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ / ΡΠ°Π²Π΅Π½ ΠΊΠ»ΡΡ. ΠΡΠΈΠ²Π°ΡΠ½ΠΈΠΎΡ ΠΊΠ»ΡΡ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΡΠ²Π° ΠΊΠ°Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π½Π° ΡΠΌΠ΅ΡΠΊΠ°ΡΠ°, ΡΠ°Π²Π½ΠΈΠΎΡ ΠΊΠ»ΡΡ ΠΌΠΎΡΠ° Π΄Π° ΡΠ΅ ΡΡΠ²Π° Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ.
- ΠΠ°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΏΡΠ΅Π½ΠΎΡ Π½Π° ΠΌΠΎΠ½Π΅ΡΠΈ Π²ΠΎ ΠΊΠΎΡ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΡΠ°Π²Π΅Π½ ΠΊΠ»ΡΡ, Π½Π°ΠΌΠ΅ΡΡΠΎ ΠΈΠΌΠ΅, Π·Π° Π΄Π° ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ.
- Π¨ΠΈΡΡΠΈΡΠ°ΡΡΠ΅ Π³ΠΈ ΡΡΠ°Π½ΡΠ°ΠΊΡΠΈΠΈΡΠ΅ ΡΡΠΎ ΠΎΠ΄Π°Ρ ΠΎΠ΄ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠΎΡ Π΄ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠΎΡ ΡΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΠΎΡ ΠΏΡΠΈΠ²Π°ΡΠ΅Π½ ΠΊΠ»ΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠΎΠΊ
ΠΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π²ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ°ΡΠ° Citcoin ΡΠΎ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ: Π΄ΠΎΠ΄Π°ΡΡΠ΅ ΡΠΌΠ΅ΡΠΊΠ°, Π΄ΠΎΠ±ΠΈΡΡΠ΅ ΡΠ°Π»Π΄ΠΎ, Π½Π°Π΄ΠΎΠΏΠΎΠ»Π½Π΅ΡΠ΅ ΡΠ° Π²Π°ΡΠ°ΡΠ° ΡΠΌΠ΅ΡΠΊΠ°, ΠΏΡΠ΅ΡΡΠ»Π΅ΡΠ΅ ΠΌΠΎΠ½Π΅ΡΠΈ ΠΎΠ΄ Π΅Π΄Π½Π° ΡΠΌΠ΅ΡΠΊΠ° Π½Π° Π΄ΡΡΠ³Π°. ΠΠ½Π°ΡΠΈ, ΡΡΠΎ Π½Π΅ ΡΠΈΠ½Π΅ΡΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌΠ΅ PoC?
- Π’ΡΠ΅Π±Π° Π΄Π° Π³ΠΎ ΠΏΡΠΎΡΡΡΠ²Π°ΡΠ΅ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½ΠΎΡ Π²ΠΎΠΎΠΏΡΡΠΎ ΠΈ Hyperledger Fabric ΠΎΡΠΎΠ±Π΅Π½ΠΎ;
- ΠΠ°ΡΡΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠ±Π»Π°ΡΠΈ Π½Π° IBM ΠΈΠ»ΠΈ Amazon;
- ΠΠ°ΡΡΠ΅ΡΠ΅ Π³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ JS ΠΈ Π½Π΅ΠΊΠΎΠΈ Π²Π΅Π±-ΡΠ°ΠΌΠΊΠΈ;
- ΠΠΊΠΎ Π½Π΅ΠΊΠΎΠΈ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΡΡΠ΅Π±Π° Π΄Π° ΡΠ΅ ΡΠΊΠ»Π°Π΄ΠΈΡΠ°Π°Ρ Π½Π΅ Π²ΠΎ Π±Π»ΠΎΠΊΡΠ΅ΡΠ½, ΡΡΠΊΡ Π²ΠΎ ΠΏΠΎΡΠ΅Π±Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠΎΠ³Π°Ρ Π½Π°ΡΡΠ΅ΡΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°ΡΠ΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΎ PostgreSQL;
- Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΎ, Π½ΠΎ Π½Π΅ ΠΈ Π½Π°ΡΠΌΠ°Π»ΠΊΡ Π²Π°ΠΆΠ½ΠΎ - Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΆΠΈΠ²Π΅Π΅ΡΠ΅ Π²ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈΠΎΡ ΡΠ²Π΅Ρ Π±Π΅Π· ΠΏΠΎΠ·Π½Π°Π²Π°ΡΠ΅ Π½Π° Linux!)
Π‘Π΅ ΡΠ°Π·Π±ΠΈΡΠ°, ΡΠΎΠ° Π½Π΅ Π΅ ΡΠ°ΠΊΠ΅ΡΠ½Π° Π½Π°ΡΠΊΠ°, Π½ΠΎ ΡΠ΅ ΠΌΠΎΡΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈΡΠ΅ Π½Π°ΠΏΠΎΡΠ½ΠΎ!
ΠΠ·Π²ΠΎΡΠΈ Π½Π° GitHub
ΠΠ·Π²ΠΎΡΠΈ ΡΡΠ°Π²ΠΈ Π½Π°
ΠΠ°ΡΠ°Π»ΠΎΠ³ Β«ΡΠ΅ΡΠ²Π΅ΡΒ» β Π‘Π΅ΡΠ²Π΅Ρ Node.js
ΠΠ°ΡΠ°Π»ΠΎΠ³ Β«ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΡΒ» β Node.js ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ°ΡΠ°Π»ΠΎΠ³ Β«blockchainβ(Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈΡΠ΅ ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΈΡΠ΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅, ΡΠ΅ ΡΠ°Π·Π±ΠΈΡΠ°, Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Ρ ΠΈ ΡΠ΅ Π΄Π°Π΄Π΅Π½ΠΈ ΡΠ°ΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΠΏΡΠΈΠΌΠ΅Ρ):
- Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ - ΠΈΠ·Π²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄ Π·Π° ΠΏΠ°ΠΌΠ΅ΡΠ΅Π½ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ
- ΠΏΠ°ΡΠΈΡΠ½ΠΈΠΊ β ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΈ ΠΊΠ»ΡΡΠ΅Π²ΠΈ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Hyperledger Fabric API.
- *.cds - ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ΠΈ Π²Π΅ΡΠ·ΠΈΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΠ½ΠΈ Π΄ΠΎΠ³ΠΎΠ²ΠΎΡΠΈ
- *.json Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ - ΠΏΡΠΈΠΌΠ΅ΡΠΈ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΊΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Hyperledger Fabric API
Π’ΠΎΠ° Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΡΠ΅ΡΠΎΠΊ!
ΠΠ·Π²ΠΎΡ: www.habr.com