แแแแแแแ แแแจแแแแ แแ แฎแแแแแ แแขแแแแ!
แฌแแแ แกแขแแขแแแแจแ แฉแแแ แแแแแแฎแแแแ แขแแฅแแแแแแแแแ, แ แแแแแแแแช แแแแแฃแแแ แแแแแฉแแแแ (
Hyperledger Fabric - แฃแแแแแ แกแแแฃแ แ แแแแแฉแแแแ
แแแแแแแ แ แแ แแแฅแแแ, แฃแแแแแ แกแแแฃแ แ แกแแแแคแแ แแแชแแ แกแแกแขแแแ แแ แแก:
- แกแแ แแแ แแแแก แแแแ แแแ แแ แแ แแแ แแแฃแแ แแแ แแแ, แ แแแแแแช แแกแ แฃแแแแก แแแแแแก แแแแแแแก;
- แแแขแแ แคแแแกแแแ แกแแกแขแแแแกแแแ แฃแ แแแแ แแแแแกแแแแก;
- แแแฌแงแแแแแแแแแแก/แแแแแแแแแแแก แ แแแแกแขแ แแชแแแก, แแแแแแขแแคแแแแชแแแกแ แแ แแแขแแ แแแแชแแแก แแแกแขแ แฃแแแแขแแแ;
- แแแแแชแแแแ แแแแ, แ แแแแแแช แแแแฎแแแก แแแแ แแชแแฃแ แแ แกแแแ แฅแแแ แแแแแชแแแแแก:
แแคแแชแแแแฃแ แ แแแ แกแแ แแแแก แจแแกแแฎแแ, แแฃ แ แ แแ แแก Hyperledger Fabric, แจแแแแซแแแแ แฌแแแแแแฎแแ แแฅ
Hyperledger แฅแกแแแแแแก แแ แฅแแขแแฅแขแฃแ แ
แแแแแ แแแ แแแแฉแแแแแแก Hyperledger Fabric แแ แฅแแขแแฅแขแฃแ แแก:
แแ แแแแแแแชแแแแ โ แแ แแแแแแแชแแแแ แจแแแชแแแแ แแแแแขแแแแแก, แ.แ. แแแแแฉแแแแ แแ แกแแแแแก แแ แแแแแแแชแแแแแก แแฎแแ แแแญแแ แแ. แกแฎแแแแแกแฎแแ แแ แแแแแแแชแแ แจแแแซแแแแ แแงแแก แแ แแ แแ แแแแแ แแ แฎแแก แแแฌแแแ.
แแ แฎแ โ แแแแแแฃแ แ แกแขแ แฃแฅแขแฃแ แ, แ แแแแแแช แแแ แแแแแแแก แแแแแขแแแแแก แฏแแฃแคแแแแ, แ.แ. แแแแแแแแฃแแแ แแแแแฉแแแแ. Hyperledger Fabric-แก แจแแฃแซแแแ แแ แแแ แแฃแแแ แแแแแฃแจแแแแก แแ แแแแแ แแแแแฉแแแแ แกแฎแแแแแกแฎแแ แแแแแแก แแแแแแแ.
แฌแแแ แแแแก แกแแ แแแกแแแแก แแ แแแแแแแ แ (MSP) แแ แแก CA (แกแแ แแแคแแแแขแแก แแ แแแแ) แแแ แแแแแแก แแแชแแแแกแ แแ แ แแแแแแก แแแแแญแแแแกแแแแก. แแแแแซแแก แจแแกแแฅแแแแแแ, แแฅแแแ แฃแแแ แแแฃแแแแจแแ แแแ MSP-แก.
แแแแแขแแแแแแก แแแแแซแแแ - แแแแแแแแฌแแแ แขแ แแแแแฅแชแแแแ, แจแแแแแฎแแ แแแแแฉแแแแ, แจแแแกแ แฃแแแ แญแแแแแแ แแแแขแ แแฅแขแแแ แแ แแแฃแแแแจแแ แแแ แแแแแแแชแแแแก. แแแแแขแแแแแก แแฅแแ แแแ แแแแแ (แชแแคแ แฃแแ แกแแ แขแแคแแแแขแ), แ แแแแแกแแช แแแกแชแแแก MSP. แแแขแแแแแแก แแ แแแแ แแฃแแแก แฅแกแแแแกแแแ แแแแกแฎแแแแแแแ, แกแแแแช แงแแแแ แแแแแซแก แแฅแแก แแแแแแแ แ แฃแคแแแแแแ, Hyperledger Fabric-แจแ แแแแแซแแแ แกแฎแแแแแกแฎแแ แ แแแก แแกแ แฃแแแแแ:
- แแแแแขแแแแแ แแฅแแแ แแแฌแแแแแ แแแแแขแแแก (EP) แแ แจแแแกแ แฃแแแ แญแแแแแแ แแแแขแ แแฅแขแแแ.
- แฉแแแแแแแ แแแแแขแแแ (CP) - แจแแแแแฎแแ แแฎแแแแ แแแแแชแแแแแ แแแแแฉแแแแจแ แแ แแแแแแฎแแแ โแแกแแคแแแ แแแแแแแ แแแแโ.
- แฌแแแงแแแแ แแแแ แ (AP) - แแฃ แแแแแฉแแแแจแ แ แแแแแแแแ แแ แแแแแแแชแแ แแแแแฌแแแแแแก, แแแจแแ แแแ แจแแ แแก แแแแฃแแแแแชแแแกแแแแก แแแแแแงแแแแแ แฌแแแงแแแแ แแแแแขแแแแแ. แแแแแแฃแ แแ แแแแแแแชแแแก แฃแแแ แฐแงแแแแแก แแ แแ แแ แแแขแ แฌแแแงแแแแ แแแแแขแแแ. AP-แแก แแแแแงแแแแแแ, แแ แแแแแแแชแแแก แแแแแกแแแแ แแแแแขแแแก แจแแฃแซแแแ แแแแฆแแก แแแคแแ แแแชแแ แกแฎแแ แแ แแแแแแแชแแแแแก แงแแแแ แแแแแขแแแแก แจแแกแแฎแแ. แแแแแแงแแแแแ AP-แแแก แจแแ แแก แแแคแแ แแแชแแแก แกแแแฅแ แแแแแแชแแแกแแแแก
แญแแ แแก แแ แแขแแแแแ . - แแแแแ แ แแแแ โ แแฃ แแ แแแแแแแชแแแก แฐแงแแแก แ แแแแแแแแ แแแแแขแแแ, แแแจแแ แแฎแแแแ แแแ แขแแแแ แแก แแแแแ แ แแแแฆแแแก แแแแแแแก แจแแแแแแแก แกแแ แแแกแแแแ แแ แแแแแกแชแแแก แแแ แแแแแ แฉแแ แแแแแขแแแแแก. แแแแแ แ แจแแแซแแแแ แแงแแก แแแแแแแแฃแแ แกแขแแขแแแฃแ แแ แแ แแแแแแแฃแ แแ แจแแ แฉแแฃแแ แแ แแแแแแแชแแแก แแแแแขแแแแแแก แแแแ . แญแแ แแก แแ แแขแแแแแ แแกแแแ แแแแแแงแแแแแ แแแแแ แแแแก แจแแกแแฎแแ แแแคแแ แแแชแแแก แกแแแฅแ แแแแแแชแแแกแแแแก.
แแฅแขแแแแแ - แกแฃแแแแฅแขแแแ, แ แแแแแแกแแช แแฅแแ แฆแแ แแแฃแแแแ แแ แแแแฎแแแ แแแแแฉแแแแแ. แฃแคแ แ แแแแแ แแขแฃแแแ, แแก แแ แแก แแแกแแฆแแแ-แแแแจแแแแแแแแก แแแแแชแแแแแ JSON แคแแ แแแขแจแ. แกแฌแแ แแ แแก แแแแแชแแแแแแ แฉแแฌแแ แแแ แแแแแฉแแแแจแ. แแแ แแฅแแ แแกแขแแ แแ, แ แแแแแแช แแแแฎแแแ แแแแแฉแแแแจแ แแ แแแแแแแแ แ แแแแแแแ แแแแ, แ แแแแแแช แแแแฎแแแ โแแกแแคแแแ แกแแฎแแแแฌแแคแแกโ แแแแแชแแแแ แแแแแจแ. แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแแ แแแกแแแ แแแแแแแแฃแ แแ, แแแแแแก แแแแชแแแแแแก แแแฎแแแแแ. แแ แแ แแก แแฃแชแแแแแแแ แแแแแแ, แแ แแแแแ แแ แ แแแแแแแแแชแแแ, แ แแ แแฅแขแแแแแก แฃแแแ แฐแงแแแแแก แแคแแแแแแ แแ แแงแแก แฆแแ แแแฃแแ.
ledger โ แจแแแแแแ Blockchain-แแกแ แแ Word-แแก แกแแฎแแแแฌแแคแ แแแแแชแแแแ แแแแแกแแแ, แ แแแแแแช แแแแฎแแแก แแฅแขแแแแแแก แแแแแแแแแแ แแแแแแแ แแแแแก. แแกแแคแแแ แกแแฎแแแแฌแแคแ แแงแแแแแก LevelDB แแ CouchDB.
แญแแแแแแ แแแแขแ แแฅแขแ โ แญแแแแแแ แแแแขแ แแฅแขแแแแก แแแแแงแแแแแแ แฎแแแแ แกแแกแขแแแแก แแแแแแก แแแแแแแก แแแแแ แแแ. Hyperledger Fabric-แจแ แญแแแแแ แแแแขแ แแฅแขแแแก แฏแแญแแแก แแแแ แแฌแแแแแ. แฏแแญแแแก แแแแแก แแแแแงแแแแแแ แแแแแแแแฃแแแ แแฅแขแแแแแ แแ แแแแแ แขแ แแแแแฅแชแแแแ. แขแแฅแแแแฃแ แ แแแแแกแแแ แแกแแ, แญแแแแแแ แแแแขแ แแฅแขแแแ แแ แแก แแ แแแ แแแฃแแ แแแแฃแแแแ, แ แแแแแแแช แแแแแ แแแแแ JS แแ Go แแ แแแ แแแแ แแแแก แแแแแแ.
แแแแขแแแชแแแแก แแแแแขแแแ โ แแแแแแฃแแ แฏแแญแแแก แแแแแกแแแแก แจแแแแซแแแแ แแแแงแแแแ แแแแแขแแแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแแแ แแแแแกแขแฃแ แแแ แฃแแแ แแงแแก แแแกแแแแแแแแ แขแ แแแแแฅแชแแแกแแแแก แแ แแแกแแแ. แแฃ แแแแฃแแแแ แแ แแ แแก แแแงแแแแแฃแแ, แแแจแแ แแแแฃแแแกแฎแแแแแ: โแขแ แแแแแฅแชแแ แฃแแแ แแแแแแกแขแฃแ แแก แแ แฎแแก แ แแแแแแแ แแ แแแแแแแชแแแก แแแแแกแแแแ แแ แฌแแแ แแโ. แแแแแขแแแแก แแแแแแแแแแ:
- แขแ แแแแแฅแชแแ แแแแขแแแชแแแฃแแ แฃแแแ แแงแแก แแ แแแแแแแชแแแก แแแแแกแแแแ แ แแแแแแแกแขแ แแขแแ แแก แแแแ ;
- แฃแแแ แแแแแแกแขแฃแ แแก แแ แแแแแแแชแแแก แ แแแแแแแ แฌแแแ แ แแ แแแแแแขแ;
- แฃแแแ แแแแแแกแขแฃแ แแก แแแแแกแแแแ แ แแแแแขแแแ แแ แแแแแแแชแแ.
แจแแแแแแแก แกแแ แแแกแ โ แแฌแงแแแก แขแ แแแแแฅแชแแแแก แแแแแแแแ แแ แแแแแแแแก แแแ แแ แฎแแก แแแแแขแแแแแแแ. แฃแแ แฃแแแแแงแแคแก แจแแขแงแแแแแแแแแแก แแแฌแแแแแแก แฅแกแแแแก แงแแแแ แแแแแขแแแแกแแแแก. แแแแแแงแแแแแ แกแแแ แแฌแแแแ แกแแกแขแแแแแแกแแแแก
CallFlow
- แแแแแแแชแแ แแแแแจแแ แแแก Hyperledger Fabric-แแแ Go, Node.js แแ Java SDK-แแก แแแแแงแแแแแแ;
- แแแแแแขแ แฅแแแแก tx แขแ แแแแแฅแชแแแก แแ แแแแแแแแก แแแก แแแแแกแแแขแแแ;
- แแแแแขแแแ แแแแฌแแแแก แแแแแแขแแก แฎแแแแแฌแแ แแก, แแกแ แฃแแแแก แขแ แแแแแฅแชแแแก แแ แแแแแแแแก แฎแแแแแฌแแ แแก แฃแแแ แแแแแแขแก. Chaincode แจแแกแ แฃแแแแฃแแแ แแฎแแแแ แแแแขแแแชแแแฃแ แแแแแขแแแแ แแ แแแกแ แจแแกแ แฃแแแแแก แจแแแแแ แแแแแแแแแ แงแแแแ แแแแแขแแแก. แแฃแจแแแแแก แแ แแแแแ แแแแก แแฌแแแแแ PBFT (Practical Byzantine Fault Tolerant) แแแแกแแแกแฃแกแ. แแแแกแฎแแแแแแแ
แแแแกแแแฃแ แ BFT แแก แคแแฅแขแ, แ แแ แจแแขแงแแแแแแแ แแแแแแแแแ แแ แแแแแกแขแฃแ แแแ แแแกแแแแแแแแแ แแ แ แงแแแแ แแแแแฌแแแแกแแแ, แแ แแแแ แแฎแแแแ แแแ แแแแฃแแ แแแแ แแแแแแ; - แแแก แจแแแแแ, แ แแช แแแแแแขแ แแแแฆแแแก แแแแแกแแแแแขแแก แแแแแขแแแแก แจแแกแแแแแแกแ แแแกแฃแฎแแแแก แ แแแแแแแแแก, แแก แแแแแแแแก แขแ แแแแแฅแชแแแก แจแแแแแแแก แกแแ แแแกแจแ;
- แจแแแแแแแก แกแแ แแแกแ แแแแแแ แแ แแแก แแแแแก แแ แฃแแแแแแแก แแแก แงแแแแ แแแแแฌแแแ แแแแแขแแแก. แจแแแแแแแก แกแแ แแแกแ แฃแแ แฃแแแแแงแแคแก แแแแแแแแก แแแแแแแแแแ แฃแ แฉแแฌแแ แแก, แ แแช แแแแแ แแชแฎแแแก แ.แฌ.
แแฎแแแแ แแแแงแแคแแแแแ "แฉแแแแแแแแ" ); - แแแแแขแแแแแ แแฆแแแแ แแแแแก, แฎแแแแฎแแ แแแแฌแแแแแ แแแแขแแแชแแแแก แแแแแขแแแแก, แฉแแฌแแ แแ แแแแแก แแแแแฉแแแแจแ แแ แจแแชแแแแแ แแแแแแแ แแแแแก "แแกแแคแแแ แกแแฎแแแแฌแแคแ" DB-แจแ.
แแแแ. แแก แแฌแแแแก แ แแแแแแก แแแงแแคแแก แแแแแซแแแก แจแแ แแก. แแก แฃแแ แฃแแแแแงแแคแก แแแแแฉแแแแแก แแแกแจแขแแแแ แแแแก แแ แฃแกแแคแ แแฎแแแแแก:
- แกแแแ แข แแแแขแ แแฅแขแแแ (chaincode) แแกแ แฃแแแแแ แแแแฎแแแแแก. แแก แฃแแ แฃแแแแแงแแคแก แญแแแแแแ แแแแขแ แแฅแขแแแแก แแแแคแแแแแชแแแแฃแ แแแแก, แ แแแแแ แแก แแ แแแแฎแแแ แงแแแแ แแแแแฌแแแแก แแแแ , แแ แแแแ แแฎแแแแ แแแแแขแแแแแแก แแแฌแแแแแแ.
- แจแแแแแแแ แฃแแแ แแแฃแจแแแก แกแฌแ แแคแแ. แแก แฃแแ แฃแแแแแงแแคแแแแ แแแแ, แ แแ แจแแแแแแ แแงแแแแแแแก แแฎแแแแ แแแแแก แแ แแแแแแแแก แแแแแ แแแแแขแแแแแแก แคแแฅแกแแ แแแฃแ แแแแแแแฅแขแก.
- แแแแแขแแแแแแก แฉแแแแแ แแฎแแแแ แแแแแฉแแแแก แแแแฎแแแก - แจแแแซแแแแ แแงแแก แแแแ แ แแแแแแแ แแ แแ แกแแญแแ แแแแก แแแ แแแแ แแแแก แแ แแงแแกแแแ แแฃแจแแแแแก.
แแแแแขแแแแแ แแแขแแแแแ Hyperledger Fabric-แแก แแ แฅแแขแแฅแขแฃแ แฃแแ แแแแแฌแงแแแขแแแแแแแแก แจแแกแแฎแแ แแ แ แแขแแ แแฃแจแแแแก แแแ แแกแ แแ แแ แ แกแฎแแแแแแ แแ, แจแแแแซแแแแ แแฎแแแแ แแฅ:
แแกแ แ แแ, Hyperledger Fabric แแ แแก แญแแจแแแ แแขแแ แฃแแแแแ แกแแแฃแ แ แกแแกแขแแแ, แ แแแแแแแช แจแแแแซแแแแ:
- แแแแแแแแฃแ แ แแแแแแก แแแแแแแก แแแแฎแแ แชแแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแฅแแแแแแแก แแแแแงแแแแแแ;
- แฉแแฌแแ แแ แแ แแแแฆแแ แแแแแชแแแแแ แแแแแฉแแแแแก แแแแแชแแแแ แแแแแแแ JSON แคแแ แแแขแจแ;
- แแแแชแแ แแ แแแแแแกแขแฃแ แแ API แฌแแแแแ แกแแ แขแแคแแแแขแแก แแแขแแ แแขแแขแแก แแแแแงแแแแแแ.
แแฎแแ, แ แแชแ แชแแขแแแ แแแแแแแ Hyperledger Fabric-แแก แกแแแชแแคแแแแก แจแแกแแฎแแ, แกแแแแแแแ แแแแแแแแแ แ แแแแ แกแแกแแ แแแแแ!
แแแแแฉแแแแแก แแแแแ แแแ
แแ แแแแแแแก แจแแกแแฎแแ แแแแชแฎแแแแแ
แแแแชแแแแ Citcoin แฅแกแแแแก แแแแแ แแแ แจแแแแแแ แคแฃแแฅแชแแแแแ: แจแแฅแแแแแ แแแแแ แแจแ, แแแแฆแแ แแแแแแกแ, แจแแแแกแแ แแฅแแแแ แแแแแ แแจแ, แแแแแแขแแแแ แแแแแขแแแ แแ แแ แแแแแ แแจแแแแ แแแแ แแแ. แแแแแ แแแแฎแแขแแ แแแแแฅแขแแก แแแแแแ, แ แแแแแกแแช แจแแแแแแ แแแแแแฎแแ แชแแแแแแ แกแแแ แข แแแแขแ แแฅแขแจแ. แแแ แแแแ, แฉแแแ แแแแฅแแแแ แแแแแ แแจแแแ, แ แแแแแแแช แแแแแขแแคแแชแแ แแแฃแแแ แกแแฎแแแแแแ แแ แจแแแชแแแก แแแแแแกแก แแ แแแแแ แแจแแแแก แฉแแแแแแแแแแก. แแแแแ แแจแแแ แแ แแแแแ แแจแแแแก แกแแ แแ แแก Hyperledger Fabric แแฅแขแแแแแแก แแแแแกแแแ แแกแแ. แจแแกแแแแแแกแแ, แแแ แแฅแแ แแกแขแแ แแ แแ แแฆแแแแแแแแ แแแแแแแ แแแแ. แแแชแแแแ แแแแแแ แแแแฎแแขแ แแก:
แแแแ แแแฉแแแแแแแแแ แแ แแก แแแแแแแแ แ แแแแแแแ แแแแ, แ แแแแแแช แแแแฎแแแ โแแกแแคแแแ แกแแฎแแแแฌแแคแแกโ แแแแแชแแแแ แแแแแจแ. แแแ แฅแแแแแ แแแชแแแฃแแแ แคแแแฃแ แแแ, แ แแแแแแแช แแฉแแแแแแก แแกแขแแ แแแก, แ แแแแแแช แแแแฎแแแ แแแแแฉแแแแจแ. แแฅแขแแแแแแก แแแแแแแแแแแ แแแแแแแ แแแแ แแชแแแแแ แขแ แแแแแฅแชแแแแแ. แแฅแขแแแ แแชแแแแแ แแฎแแแแ แแแแแแแแแแจแ, แแแแขแแ แขแ แแแแแฅแชแแแก แจแแแแแแ แแฅแแแแแ แแฎแแแ แแแแแฅแขแ แแ แแฅแขแแแแก แแแแแแแแ แ แฆแแ แแแฃแแแแ แแกแขแแ แแแจแ แแแแแแแก.
IBM Cloud
แฉแแแ แแฅแแแแ แแแแแ แแจแก
แจแแฅแแแแแ แซแแ แแแแแ แแแแแฉแแแแแก แฅแกแแแ แแแแแฉแแแแแก แแแแขแคแแ แแแก แแแแแงแแแแแแ แจแแฅแแแแแ แแ แจแแแกแ แฃแแแ แแแแแฉแแแแแก แญแแแแแแ แแแแขแ แแฅแขแ แแแแแแฅแแแงแแแ แแแแแแแแแ แแแแแฉแแแแแก แแแแขแคแแ แแแแแ
แฅแแแแแ แแแชแแแฃแแแ IBM Blockchain แแแแขแคแแ แแแก แแแ แแแแก แแแแแแญแแแแ. แแก แแ แแ แแก แแแกแขแ แฃแฅแชแแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แฃแแแ แจแแฅแแแแ แแแแแฉแแแแ, แแ แแแแ แฃแแ แแแแ แแแแแแแแแก แแแกแจแขแแแแก แแแแแแกแขแ แแ แแแแ. แแกแ แ แแ, แฉแแแแ แแแแแแแแกแแแแก, แฉแแแ แแฅแแแแ แแ แ แแ แแแแแแแชแแแก:
แฉแแแ แแฅแแแแ แแแกแจแ แแแแแซแแแก: Orderer CA, Org1 CA, Orderer Peer:
แฉแแแ แแฅแแแแ แแแแฎแแแ แแแแแแก:
แจแแฅแแแแแ แแ แฎแ แแ แแแแ แฅแแแ citcoin:
แแ แกแแแแแแ Channel แแ แแก แแแแแฉแแแแ, แแแแขแแ แแก แแฌแงแแแ แแฃแแแแแแ แแแแแแ (แแแแแแแกแแก แแแแแ):
แญแแแแแแ แแแแขแ แแฅแขแแก แแแฌแแ แ
/*
* 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 แคแฃแแฅแชแแแแ แฅแแแแแ แแแแแแแแแก, แ แแแแแแกแแช แแแแ แแ แแแ แแแ แแแแฆแแแก.
- Instantiate แคแฃแแฅแชแแ แแแแแแซแแฎแแแ แแ แแฎแแ, แ แแแแกแแช แกแแแ แข แแแแขแ แแฅแขแ แแแแแแฃแแแ. แกแแแแแแแแแแจแ, แแแก แฃแฌแแแแแแ แแ แ แแฎแแแแ แแ แแฎแแ, แแ แแแแ แงแแแแ แฏแแ แแ, แ แแแแกแแช แแชแแแแแ แญแแแแแแ แแแแขแ แแฅแขแแก แแแ แกแแ. แแแแขแแ, แกแแแก แแแแชแแแแแแแชแแ แชแแ แแแแ แแแกแแแแ แชแฃแแ แแแแแ, แ แแแแแ แแฎแแ, แ แแแแกแแช แฉแแแ แจแแแชแแแแ แกแแแ แข แแแแขแ แแฅแขแแก แแแ แกแแแก, แแแแแแ แแแแ แแแแแแแแ แ แกแแแก. แแแแ แแ แแ แ แฃแจแแแก, แฃแแ แแแแ แแกแฌแแแแแ).
- แแแแแ แแจแแแ แแ แแแแแ แแจแแแแก แกแแ แแ แแก JSON แแแแแชแแแแ แกแขแ แฃแฅแขแฃแ แแแ. JS แแแแแแงแแแแแ แแแแแชแแแแ แแแแแแฃแแแ แแแแกแแแแก.
- แจแแแแซแแแแ แแแแฆแแ แแฅแขแแแแก แแแแแแแแ แ แฆแแ แแแฃแแแแ getState แคแฃแแฅแชแแแก แแแแแซแแฎแแแแ แแ แแแแแแฎแแแ putState-แแก แแแแแงแแแแแแ.
- แแแแแ แแจแแก แจแแฅแแแแกแแก แแแแแแซแแฎแแแ AddAccount แคแฃแแฅแชแแ, แ แแแแแจแแช แจแแแแ แแแ แฎแแแแ แแแแแฉแแแแจแ แแ แกแแแฃแแ แแแแแ แแจแแแแก แแแฅแกแแแแแฃแ แ แ แแแแแแแแ (maxAccounts = 5). แแ แแฅ แแ แแก แฏแแแ (แจแแแแแฉแแแแแแ?), แ แแช แแฌแแแแก แแแแแ แแจแแแแก แ แแแแแแแแแก แแแฃแแแแแแแ แแ แแแก. แแกแแแ แจแแชแแแแแแ แแแแแแแ แฃแแแ แแฅแแแก แแชแแแแแฃแแ)
แจแแแแแแ, แฉแแแ แแขแแแ แแแแ แกแแแ แข แแแแขแ แแฅแขแก แแ แฎแจแ แแ แแแงแแแแแ แแแก:
แแแแแ แจแแแฎแแแแ แขแ แแแแแฅแชแแแก Smart Contract-แแก แแแกแขแแแแชแแแกแแแแก:
แแแแแ แจแแแฎแแแแ แแแขแแแแแก แฉแแแแ แแ แฎแแก แจแแกแแฎแแ:
แจแแแแแแ, แฉแแแ แแแฆแแแ แแแแแฉแแแแแก แฅแกแแแแก แจแแแแแ แแแแแ แแแแก 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-แก แแฆแฌแแ แ แแแแแแแแแแแ
แแแแ แแแแแแแชแแ แแแแแแแแก แฆแ แฃแแแแจแ
แแแแแแแชแแ แแแแแแแแ แแแขแแแ แแ, แ แแแแแ... 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