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