ΠΠ»Π°Π·Π° Π±ΠΎΡΡΡΡ, Π° ΡΡΠΊΠΈ ΡΠ΅ΡΡΡΡΡ!
Π ΠΏΡΠΎΡΠ»ΡΡ
ΡΡΠ°ΡΡΡΡ
ΠΌΡ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ Ρ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΡΡ
ΡΡΡΠΎΡΡΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Ρ (
Hyperledger Fabric β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½
ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ Π² ΠΎΠ±ΡΠ΅ΠΌ, ΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΠΎ:
- ΠΠ°Π±ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΡΠ΄ΡΠΎ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π΅ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΡ;
- ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ;
- Π‘ΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ, Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΡΠΎΠΉΡΡΠ² /Π»ΡΠ΄Π΅ΠΉ;
- ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ , Ρ ΡΠ°Π½ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΈ Π°ΡΡ ΠΈΠ²Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅:
ΠΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Hyperledger Fabric ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π½Π°
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Hyperledger Fabric
ΠΠ° ΡΡ Π΅ΠΌΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° Hyperledger Fabric:
Organizations β ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ peer-Ρ, Ρ.ΠΎ. Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π·Π° ΡΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ. Π Π°Π·Π½ΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π²Ρ
ΠΎΠ΄ΠΈΡΡ Π² ΠΎΠ΄ΠΈΠ½ channel.
Channel β Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ°, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΠ°Ρ peer-Ρ Π² Π³ΡΡΠΏΠΏΡ, Ρ.ΠΎ. Π·Π°Π΄Π°Π΅ΡΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½. Hyperledger Fabric ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠ² Ρ ΡΠ°Π·Π½ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ.
Membership Services Provider (MSP) β ΡΡΠΎ CA (Certificate Authority) Π΄Π»Ρ Π²ΡΠ΄Π°ΡΠΈ identity ΠΈ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΠ»Π΅ΠΉ. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ΄Ρ Π½ΡΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ MSP.
Peer nodes β ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, Ρ ΡΠ°Π½ΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½, Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ. Π£ peer-ΠΎΠ² Π΅ΡΡΡ identity (ΡΠΈΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°Ρ), ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΄Π°Π΅Ρ MSP. Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΡΠ΅ΡΠΈ Bitcoin ΠΈΠ»ΠΈ Etherium, Π³Π΄Π΅ Π²ΡΠ΅ Π½ΠΎΠ΄Ρ ΡΠ°Π²Π½ΠΎΠΏΡΠ°Π²Π½Ρ, Π² 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.
Smart contract β Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ. Π Hyperledger Fabric ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ chaincode. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ chaincode Π·Π°Π΄Π°ΡΡΡΡ asset-Ρ ΠΈ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π½Π°Π΄ Π½ΠΈΠΌΠΈ. ΠΡΠ»ΠΈ Π³ΠΎΠ²ΠΎΡΠΈΡΡ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ, ΡΠΎ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ β ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ Π½Π° ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ JS ΠΈΠ»ΠΈ Go.
Endorsement policy β Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ chaincode ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈ ΠΎΡ ΠΊΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ. ΠΡΠ»ΠΈ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π½Π΅ Π·Π°Π΄Π°Π½Π°, ΡΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ: βΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ»Π΅Π½ (member) Π»ΡΠ±ΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π² channelβ. ΠΡΠΈΠΌΠ΅ΡΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊ:
- Π’ΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ;
- ΠΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ ΡΠ»Π΅Π½ (member) ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ;
- ΠΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΄ΠΈΡΡ Π»ΡΠ±ΠΎΠΉ peer ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ.
Ordering service β ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ Π² Π±Π»ΠΎΠΊΠΈ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ 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) ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΡ. ΠΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ
ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ BFT ΡΠ΅ΠΌ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΡΡΡΠ»Π°Π΅ΡΡΡ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΡ Π²ΡΠ΅Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ², Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ°; - ΠΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠΈΡΠ»ΠΎ ΠΎΡΠ²Π΅ΡΠΎΠ², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ endorsement policy, ΠΎΠ½ ΠΏΠΎΡΡΠ»Π°Π΅Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π° Ordering service;
- Ordering service ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ Π±Π»ΠΎΠΊ ΠΈ ΠΏΠΎΡΡΠ»Π°Π΅Ρ Π΅Π³ΠΎ Π½Π° Π²ΡΠ΅ committing peer-Ρ. Ordering service ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π±Π»ΠΎΠΊΠΎΠ², ΡΡΠΎ ΠΈΡΠΊΠ»ΡΡΠ°Π΅Ρ, ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ, ledger fork (
ΡΠΌ. ΡΠ°Π·Π΄Π΅Π» Β«Π€ΠΎΡΠΊΠΈΒ» ); - Peer-Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π±Π»ΠΎΠΊ, Π΅ΡΠ΅ ΡΠ°Π· ΠΏΡΠΎΠ²Π΅ΡΡΡΡ endorsement policy, Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ Π±Π»ΠΎΠΊ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ ΠΈ ΠΌΠ΅Π½ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π² Β«World stateΒ» DB.
Π’.Π΅. ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ»Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΎΠ΄Π°ΠΌΠΈ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°:
- Π‘ΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ (chaincode) Π²ΡΠΏΠΎΠ»Π½ΡΡΡ endorsing peer-Ρ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΡ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ², Ρ.ΠΊ. ΠΎΠ½ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π΅ Ρ Π²ΡΠ΅Ρ ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ², Π° ΡΠΎΠ»ΡΠΊΠΎ Π½Π° endorsing peer-Π°Ρ .
- Ordering Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±ΡΡΡΡΠΎ. ΠΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ Ordering ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ Π±Π»ΠΎΠΊ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π΅Π³ΠΎ Π½Π° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ leader peer-ΠΎΠ².
- Committing peers ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°Π½ΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ β ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈ ΠΎΠ½ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Hyperledger Fabric ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ°ΠΊ, Π° Π½Π΅ ΠΈΠ½Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ:
ΠΡΠ°ΠΊ, Hyperledger Fabric β ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ:
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ²;
- ΠΠ°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎΡΠΌΠ°ΡΠ΅ JSON;
- ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ API, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Certificate Authority.
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»ΠΈΡΡ ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠΎΠΉ Hyperledger Fabric, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΊΠΎΠ½Π΅Ρ ΡΠ΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅!
Π Π°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΠΌ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½
ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
ΠΠ°Π΄Π°ΡΠ° β ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΡ Citcoin ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ: ΡΠΎΠ·Π΄Π°ΡΡ account, ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π°Π»Π°Π½Ρ, ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΌΠΎΠ½Π΅ΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ. ΠΠ°ΡΠΈΡΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΡΡ Π΄Π°Π»Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ Π² ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ΅. ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π±ΡΠ΄ΡΡ account-Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ (name) ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π±Π°Π»Π°Π½Ρ (balance), ΠΈ ΡΠΏΠΈΡΠΎΠΊ account-ΠΎΠ². Account-Ρ ΠΈ ΡΠΏΠΈΡΠΎΠΊ account-ΠΎΠ² β ΡΡΠΎ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Hyperledger Fabric asset-Ρ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Ρ Π½ΠΈΡ Π΅ΡΡΡ ΠΈΡΡΠΎΡΠΈΡ ΠΈ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΎΠΏΡΠΎΠ±ΡΡ ΡΡΠΎ Π½Π°Π³Π»ΡΠ΄Π½ΠΎ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ:
ΠΠ΅ΡΡ
Π½ΠΈΠ΅ ΡΠΈΠ³ΡΡΡ β ΡΡΠΎ ΡΠ΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² Π±Π°Π·Π΅ Β«World stateΒ». ΠΠΎΠ΄ Π½ΠΈΠΌΠΈ ΡΠΈΠ³ΡΡΡ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠ΅ ΠΈΡΡΠΎΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅. Π’Π΅ΠΊΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ asset-ΠΎΠ² ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ. Asset ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, Π° ΡΠ΅ΠΊΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ asset-Π° ΡΡ
ΠΎΠ΄ΠΈΡ Π² ΠΈΡΡΠΎΡΠΈΡ.
ΠΠ±Π»Π°ΠΊΠΎ IBM
ΠΠ°Π²ΠΎΠ΄ΠΈΠΌ ΡΡΠ΅ΡΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ Π²
Create a basic blockchain network using the Blockchain Platform Create and execute a blockchain smart contract Emit events from Blockchain Platform
ΠΠ°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΠΊΡΠΈΠ½ΡΠΎΡΡ Blockchain ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ IBM. ΠΡΠΎ Π½Π΅ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π°, Π° ΠΏΡΠΎΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° Π·Π°Π΄Π°ΡΠΈ. ΠΡΠ°ΠΊ, Π΄Π»Ρ Π½Π°ΡΠΈΡ ΡΠ΅Π»Π΅ΠΉ Π΄Π΅Π»Π°Π΅ΠΌ ΠΎΠ΄Π½Ρ Organization:
Π Π½Π΅ΠΉ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π½ΠΎΠ΄Ρ: Orderer CA, Org1 CA, Orderer Peer:
ΠΠ°Π²ΠΎΠ΄ΠΈΠΌ ΡΠ·Π΅ΡΠΎΠ²:
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Channel ΠΈ Π½Π°Π·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ citcoin:
ΠΠΎ ΡΡΡΠΈ Channel β ΡΡΠΎ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ° (Genesis block):
ΠΠΈΡΠ΅ΠΌ Smart Contract
/*
* 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. Π ΡΠΎΠΌ ΠΊΠ°ΠΊ Π½Π°ΡΠ°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ°ΡΡΡ. ΠΠ΄Π΅ΡΡ ΠΎΡΡΠ°Π²Π»Ρ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ΅ΡΠΈΡ Π»Π΅ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠ½Π΅ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ:
- HyperledgerDemo/v1/init β ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½;
- HyperledgerDemo/v1/accounts/list β ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ account-ΠΎΠ²;
- HyperledgerDemo/v1/account?name=Bob&balance=100 β ΡΠΎΠ·Π΄Π°ΡΡ Bob account;
- HyperledgerDemo/v1/info?account=Bob β ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Bob account;
- HyperledgerDemo/v1/transaction?from=Bob&to=Alice&volume=2 β ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ Π΄Π²Π΅ ΠΌΠΎΠ½Π΅ΡΡ ΠΎΡ Bob ΠΊ Alice;
- HyperledgerDemo/v1/disconnect β Π·Π°ΠΊΡΡΡΡ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠΌ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ API c ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Π½Π°
ΠΠ΅ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠ±Π»Π°ΠΊΠ΅ Amazon
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π»ΠΈΠ» Π½Π° Amazon, Ρ.ΠΊ. IBM ΡΠΎ ΡΠΈΡ
ΠΏΠΎΡ Π½Π΅ ΡΠΌΠΎΠ³ Π°ΠΏΠ³ΡΠ΅ΠΉΠ΄ΠΈΡΡ ΠΌΠΎΡ ΡΡΠ΅ΡΠ½ΡΡ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠΈΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°. ΠΠ°ΠΊ Π²ΠΈΡΠ΅Π½ΠΊΡ ΠΏΡΠΈΠ΄Π΅Π»Π°Π» Π΄ΠΎΠΌΠ΅Π½:
- ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½;
- Π‘ΠΎΠ·Π΄Π°Π²Π°ΡΡ Account (Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ Π½ΠΎΠ²ΡΠΉ Account Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡ, Ρ.ΠΊ. Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ account-ΠΎΠ², ΠΏΡΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ΅);
- ΠΠΎΠ»ΡΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Account-ΠΎΠ²;
- ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡ ΠΌΠΎΠ½Π΅ΡΡ citcoin ΠΌΠ΅ΠΆΠ΄Ρ Alice, Bob ΠΈ Alex;
- ΠΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ (Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΠΎΠ±ΡΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ, ΡΡΠΎ ΡΠΎΠ±ΡΡΠΈΡ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ);
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
Π‘Π½Π°ΡΠ°Π»Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΠΌ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½:
ΠΠ°Π»Π΅Π΅ Π·Π°Π²ΠΎΠ΄ΠΈΠΌ ΡΠ²ΠΎΠΉ account, Π½Π΅ ΠΌΠ΅Π»ΠΎΡΠΈΠΌΡΡ Ρ Π±Π°Π»Π°Π½ΡΠΎΠΌ:
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ
Π΄ΠΎΡΡΡΠΏΠ½ΡΡ
account-ΠΎΠ²:
ΠΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΈΡ
Π±Π°Π»Π°Π½ΡΡ. ΠΡΠ»ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅, ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ ΠΏΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΡΡΠ΅ΡΠ°:
Π Π»ΠΎΠ³Π΅ ΡΠ»Π΅Π΄ΠΈΠΌ Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ:
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ c Π΄Π΅ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π½Π° ΡΡΠΎΠΌ Π²ΡΠ΅. ΠΠ°Π»Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅:
Π ΠΎΠ±ΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ:
ΠΠ° ΡΡΠΎΠΌ ΠΌΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ PoC ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠΈ Citcoin. Π§ΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ Citcoin ΡΡΠ°Π» ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΌΠΎΠ½Π΅Ρ? Π‘ΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ:
- ΠΠ° ΡΡΠ°ΠΏΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ account-Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠ³ΠΎ / ΠΏΡΠ±Π»ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. ΠΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΊΠ»ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ ΡΠ°Π½ΠΈΡΡΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ account-Π°, ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅.
- Π‘Π΄Π΅Π»Π°ΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΠΌΠΎΠ½Π΅Ρ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π΅ ΠΈΠΌΡ, Π° ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠΉ ΠΊΠ»ΡΡ.
- Π¨ΠΈΡΡΠΎΠ²Π°ΡΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ, ΠΈΠ΄ΡΡΠΈΠ΅ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ΅ΡΡ Citcoin Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ account, ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±Π°Π»Π°Π½Ρ, ΠΏΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠ²ΠΎΠΉ ΡΡΠ΅Ρ, ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΌΠΎΠ½Π΅ΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΡΠ° Π½Π° Π΄ΡΡΠ³ΠΎΠΉ. ΠΡΠ°ΠΊ, ΡΡΠΎ Π½Π°ΠΌ ΡΡΠΎΠΈΠ»ΠΎ PoC ΠΏΠΎΡΡΡΠΎΠΈΡΡ?
- ΠΠ°Π΄ΠΎ ΠΈΠ·ΡΡΠΈΡΡ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ Π²ΠΎΠΎΠ±ΡΠ΅ ΠΈ Hyperledger Fabric Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ;
- ΠΠ°ΡΡΠΈΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΎΠ±Π»Π°ΠΊΠ°ΠΌΠΈ IBM ΠΈΠ»ΠΈ Amazon;
- ΠΡΡΡΠΈΡΡ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ JS ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ web framework;
- ΠΡΠ»ΠΈ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ Π΄Π°Π½Π½ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π½Π΅ Π² Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½Π΅, Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π±Π°Π·Π΅, ΡΠΎ Π½Π°ΡΡΠΈΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ PostgreSQL;
- Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ, Π½ΠΎ Π½Π΅ ΠΏΠΎ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ β Π±Π΅Π· Π·Π½Π°Π½ΠΈΡ Linux Π² ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΌΠΈΡΠ΅ Π½ΠΈΠΊΡΠ΄Π°!)
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π½Π΅ rocket science, Π½ΠΎ ΠΏΠΎΠΏΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠ΄Π΅ΡΡΡ!
ΠΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΈ Π½Π° GitHub
ΠΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ» Π½Π°
ΠΠ°ΡΠ°Π»ΠΎΠ³ «server» β Node.js ΡΠ΅ΡΠ²Π΅Ρ
ΠΠ°ΡΠ°Π»ΠΎΠ³ «client» β Node.js ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ°ΡΠ°Π»ΠΎΠ³ «blockchain» (Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ ΠΊΠ»ΡΡΠΈ, ΡΠ°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π½Π΅ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°):
- contract β ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊ ΡΠΌΠ°ΡΡ-ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠ°
- wallet β ΠΊΠ»ΡΡΠΈ ΡΠ·Π΅ΡΠ° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Hyperledger Fabric API.
- *.cds β ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠΌΠ°ΡΡΠΊΠΎΠ½ΡΡΠ°ΠΊΡΠΎΠ²
- *.json ΡΠ°ΠΉΠ»Ρ β ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Hyperledger Fabric API
It’s only the beginning!
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com