Blockchain: మనం ఏ PoCని నిర్మించాలి?

మీ కళ్ళు భయపడుతున్నాయి మరియు మీ చేతులు దురదగా ఉన్నాయి!

మునుపటి కథనాలలో, మేము బ్లాక్‌చెయిన్‌లను నిర్మించే సాంకేతికతలతో వ్యవహరించాము (మనం బ్లాక్‌చెయిన్‌ను ఏమి నిర్మించాలి?) మరియు వారి సహాయంతో అమలు చేయగల కేసులు (మేము కేసు ఎందుకు నిర్మించాలి?) ఇది మీ చేతులతో పని చేయడానికి సమయం! పైలట్‌లు మరియు PoC (ప్రూఫ్ ఆఫ్ కాన్సెప్ట్) అమలు చేయడానికి, నేను మేఘాలను ఉపయోగించాలనుకుంటున్నాను, ఎందుకంటే... వాటిని ప్రపంచంలో ఎక్కడి నుండైనా యాక్సెస్ చేయవచ్చు మరియు తరచుగా, పర్యావరణం యొక్క దుర్భరమైన సంస్థాపనపై సమయాన్ని వృథా చేయవలసిన అవసరం లేదు, ఎందుకంటే ముందుగా అమర్చిన కాన్ఫిగరేషన్‌లు ఉన్నాయి. కాబట్టి, ఏదైనా సరళంగా చేద్దాం, ఉదాహరణకు, పాల్గొనేవారి మధ్య నాణేలను బదిలీ చేయడానికి ఒక నెట్‌వర్క్ మరియు దానిని నిరాడంబరంగా వికీపీడియా అని పిలుద్దాం. దీని కోసం మేము IBM క్లౌడ్ మరియు యూనివర్సల్ బ్లాక్‌చెయిన్ హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్‌ని ఉపయోగిస్తాము. ముందుగా, హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్‌ని యూనివర్సల్ బ్లాక్‌చెయిన్ అని ఎందుకు పిలుస్తారో తెలుసుకుందాం?

Blockchain: మనం ఏ PoCని నిర్మించాలి?

హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ - యూనివర్సల్ బ్లాక్‌చెయిన్

సాధారణంగా చెప్పాలంటే, సార్వత్రిక సమాచార వ్యవస్థ:

  • సర్వర్‌ల సమితి మరియు వ్యాపార తర్కాన్ని ప్రదర్శించే సాఫ్ట్‌వేర్ కోర్;
  • సిస్టమ్‌తో పరస్పర చర్య కోసం ఇంటర్‌ఫేస్‌లు;
  • పరికరాలు/వ్యక్తుల నమోదు, ప్రమాణీకరణ మరియు అధికారం కోసం సాధనాలు;
  • కార్యాచరణ మరియు ఆర్కైవల్ డేటాను నిల్వ చేసే డేటాబేస్:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ యొక్క అధికారిక సంస్కరణను ఇక్కడ చదవవచ్చు వెబ్సైట్, మరియు సంక్షిప్తంగా, హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ అనేది ఓపెన్‌సోర్స్ ప్లాట్‌ఫారమ్, ఇది ప్రైవేట్ బ్లాక్‌చెయిన్‌లను రూపొందించడానికి మరియు JS మరియు గో ప్రోగ్రామింగ్ భాషలలో వ్రాసిన ఏకపక్ష స్మార్ట్ ఒప్పందాలను అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ యొక్క నిర్మాణాన్ని వివరంగా చూద్దాం మరియు ఇది డేటాను నిల్వ చేయడానికి మరియు రికార్డ్ చేయడానికి మాత్రమే ప్రత్యేకతలను కలిగి ఉన్న సార్వత్రిక వ్యవస్థ అని నిర్ధారించుకోండి. నిర్దిష్టత ఏమిటంటే, డేటా, అన్ని బ్లాక్‌చెయిన్‌లలో వలె, పాల్గొనేవారు ఏకాభిప్రాయానికి వచ్చినప్పుడు మాత్రమే బ్లాక్‌చెయిన్‌లో ఉంచబడిన బ్లాక్‌లలో నిల్వ చేయబడుతుంది మరియు డేటాను రికార్డ్ చేసిన తర్వాత నిశ్శబ్దంగా సరిదిద్దబడదు లేదా తొలగించబడదు.

హైపర్లెడ్జర్ ఫ్యాబ్రిక్ ఆర్కిటెక్చర్

రేఖాచిత్రం హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ ఆర్కిటెక్చర్‌ను చూపుతుంది:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

ఆర్గనైజేషన్స్ - సంస్థలు సహచరులను కలిగి ఉంటాయి, అనగా. సంస్థల మద్దతు కారణంగా బ్లాక్‌చెయిన్ ఉనికిలో ఉంది. వేర్వేరు సంస్థలు ఒకే ఛానెల్‌లో భాగం కావచ్చు.

ఛానల్ — సహచరులను సమూహాలుగా కలిపే తార్కిక నిర్మాణం, అనగా. బ్లాక్‌చెయిన్ పేర్కొనబడింది. హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ వివిధ వ్యాపార లాజిక్‌లతో బహుళ బ్లాక్‌చెయిన్‌లను ఏకకాలంలో ప్రాసెస్ చేయగలదు.

సభ్యత్వ సేవల ప్రదాత (MSP) గుర్తింపును జారీ చేయడానికి మరియు పాత్రలను కేటాయించడానికి CA (సర్టిఫికేట్ అథారిటీ). నోడ్‌ను సృష్టించడానికి, మీరు MSPతో పరస్పర చర్య చేయాలి.

పీర్ నోడ్స్ - లావాదేవీలను ధృవీకరించండి, బ్లాక్‌చెయిన్‌ను నిల్వ చేయండి, స్మార్ట్ ఒప్పందాలను అమలు చేయండి మరియు అప్లికేషన్‌లతో పరస్పర చర్య చేయండి. సహచరులకు గుర్తింపు (డిజిటల్ సర్టిఫికేట్) ఉంటుంది, ఇది MSP ద్వారా జారీ చేయబడుతుంది. Bitcoin లేదా Etherium నెట్‌వర్క్ వలె కాకుండా, అన్ని నోడ్‌లు సమాన హక్కులను కలిగి ఉంటాయి, హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ నోడ్‌లు విభిన్న పాత్రలను పోషిస్తాయి:

  • బహుశా పీర్ తోటివారిని ఆమోదించడం (EP) మరియు స్మార్ట్ ఒప్పందాలను అమలు చేయండి.
  • సహచరుడు కట్టుబడి (CP) - బ్లాక్‌చెయిన్‌లో డేటాను మాత్రమే సేవ్ చేయండి మరియు “ప్రపంచ స్థితి”ని నవీకరించండి.
  • యాంకర్ పీర్ (AP) - అనేక సంస్థలు బ్లాక్‌చెయిన్‌లో పాల్గొంటే, వాటి మధ్య కమ్యూనికేషన్ కోసం యాంకర్ పీర్‌లను ఉపయోగిస్తారు. ప్రతి సంస్థ తప్పనిసరిగా ఒకటి లేదా అంతకంటే ఎక్కువ మంది యాంకర్ పీర్‌లను కలిగి ఉండాలి. APని ఉపయోగించి, ఒక సంస్థలోని ఏ పీర్ అయినా ఇతర సంస్థలలోని అన్ని సహచరుల గురించి సమాచారాన్ని పొందవచ్చు. APల మధ్య సమాచారాన్ని సమకాలీకరించడానికి ఉపయోగించబడుతుంది గాసిప్ ప్రోటోకాల్.
  • నాయకుడు పీర్ — ఒక సంస్థకు అనేక మంది సహచరులు ఉన్నట్లయితే, పీర్ యొక్క నాయకుడు మాత్రమే ఆర్డరింగ్ సేవ నుండి బ్లాక్‌లను అందుకుంటారు మరియు వాటిని మిగిలిన సహచరులకు అందిస్తారు. నాయకుడిని స్థిరంగా పేర్కొనవచ్చు లేదా సంస్థలోని సహచరులు డైనమిక్‌గా ఎంచుకోవచ్చు. నాయకుల గురించి సమాచారాన్ని సమకాలీకరించడానికి గాసిప్ ప్రోటోకాల్ కూడా ఉపయోగించబడుతుంది.

ఆస్తులు - విలువను కలిగి ఉన్న మరియు బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడిన ఎంటిటీలు. మరింత ప్రత్యేకంగా, ఇది JSON ఆకృతిలో కీ-విలువ డేటా. ఇది బ్లాక్‌చెయిన్‌లో నమోదు చేయబడిన ఈ డేటా. వారికి చరిత్ర ఉంది, ఇది బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడుతుంది మరియు ప్రస్తుత స్థితి, ఇది “వరల్డ్ స్టేట్” డేటాబేస్‌లో నిల్వ చేయబడుతుంది. వ్యాపార పనులపై ఆధారపడి డేటా నిర్మాణాలు ఏకపక్షంగా పూరించబడతాయి. అవసరమైన ఫీల్డ్‌లు ఏవీ లేవు, ఆస్తులు తప్పనిసరిగా యజమానిని కలిగి ఉండాలి మరియు విలువైనవిగా ఉండాలనేది మాత్రమే సిఫార్సు.

లెడ్జర్ — బ్లాక్‌చెయిన్ మరియు వర్డ్ స్టేట్ డేటాబేస్‌ను కలిగి ఉంటుంది, ఇది ప్రస్తుత ఆస్తుల స్థితిని నిల్వ చేస్తుంది. ప్రపంచ రాష్ట్రం LevelDB లేదా CouchDBని ఉపయోగిస్తుంది.

స్మార్ట్ ఒప్పందం - స్మార్ట్ ఒప్పందాలను ఉపయోగించి, సిస్టమ్ యొక్క వ్యాపార తర్కం అమలు చేయబడుతుంది. హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్‌లో, స్మార్ట్ కాంట్రాక్టులను చైన్‌కోడ్ అంటారు. చైన్‌కోడ్‌ని ఉపయోగించి, వాటిపై ఆస్తులు మరియు లావాదేవీలు పేర్కొనబడ్డాయి. సాంకేతిక పరంగా, స్మార్ట్ కాంట్రాక్టులు JS లేదా Go ప్రోగ్రామింగ్ భాషలలో అమలు చేయబడిన సాఫ్ట్‌వేర్ మాడ్యూల్స్.

ఎండార్స్‌మెంట్ విధానం - ప్రతి చైన్‌కోడ్‌కు, మీరు లావాదేవీకి ఎన్ని నిర్ధారణలు ఆశించాలి మరియు ఎవరి నుండి ఒక విధానాన్ని సెట్ చేయవచ్చు. విధానాన్ని సెట్ చేయకుంటే, డిఫాల్ట్: "లావాదేవీని ఛానెల్‌లోని ఏదైనా సంస్థలోని సభ్యులెవరైనా తప్పనిసరిగా నిర్ధారించాలి." విధానాల ఉదాహరణలు:

  • లావాదేవీ తప్పనిసరిగా సంస్థ యొక్క ఏదైనా నిర్వాహకునిచే ఆమోదించబడాలి;
  • సంస్థ యొక్క ఏదైనా సభ్యుడు లేదా క్లయింట్ ద్వారా ధృవీకరించబడాలి;
  • ఏదైనా సహచర సంస్థ ద్వారా ధృవీకరించబడాలి.

ఆర్డరింగ్ సేవ - లావాదేవీలను బ్లాక్‌లుగా ప్యాక్ చేసి, ఛానెల్‌లోని పీర్‌లకు పంపుతుంది. నెట్‌వర్క్‌లోని సహచరులందరికీ సందేశాల డెలివరీకి హామీ ఇస్తుంది. పారిశ్రామిక వ్యవస్థలకు ఉపయోగిస్తారు కాఫ్కా సందేశ బ్రోకర్, అభివృద్ధి మరియు పరీక్ష కోసం సోలో.

కాల్‌ఫ్లో

Blockchain: మనం ఏ PoCని నిర్మించాలి?

  • అప్లికేషన్ Go, Node.js లేదా Java SDKని ఉపయోగించి హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్‌తో కమ్యూనికేట్ చేస్తుంది;
  • క్లయింట్ tx లావాదేవీని సృష్టించి, దానిని ఆమోదించే సహచరులకు పంపుతుంది;
  • పీర్ క్లయింట్ సంతకాన్ని ధృవీకరిస్తుంది, లావాదేవీని పూర్తి చేస్తుంది మరియు క్లయింట్‌కు ఎండార్స్‌మెంట్ సంతకాన్ని తిరిగి పంపుతుంది. చైన్‌కోడ్ ఆమోదించే పీర్‌పై మాత్రమే అమలు చేయబడుతుంది మరియు దాని అమలు ఫలితం సహచరులందరికీ పంపబడుతుంది. పని యొక్క ఈ అల్గోరిథంను PBFT (ప్రాక్టికల్ బైజాంటైన్ ఫాల్ట్ టాలరెంట్) ఏకాభిప్రాయం అంటారు. నుండి భిన్నంగా ఉంటుంది క్లాసిక్ BFT సందేశం పంపబడిందనే వాస్తవం మరియు నిర్ధారణ అన్ని పాల్గొనేవారి నుండి కాదు, కానీ ఒక నిర్దిష్ట సెట్ నుండి మాత్రమే;
  • క్లయింట్ ఎండార్స్‌మెంట్ పాలసీకి సంబంధించిన ప్రతిస్పందనల సంఖ్యను స్వీకరించిన తర్వాత, అతను లావాదేవీని ఆర్డరింగ్ సేవకు పంపుతాడు;
  • ఆర్డరింగ్ సేవ ఒక బ్లాక్‌ని ఉత్పత్తి చేస్తుంది మరియు దానిని కట్టుబడి ఉన్న సహచరులందరికీ పంపుతుంది. ఆర్డరింగ్ సేవ బ్లాక్‌ల సీక్వెన్షియల్ రికార్డింగ్‌ను నిర్ధారిస్తుంది, ఇది లెడ్జర్ ఫోర్క్ అని పిలవబడే దాన్ని తొలగిస్తుంది ("ఫోర్క్స్" విభాగాన్ని చూడండి);
  • పీర్‌లు బ్లాక్‌ని స్వీకరిస్తారు, ఎండార్స్‌మెంట్ పాలసీని మళ్లీ చెక్ చేసి, బ్లాక్‌చెయిన్‌కు బ్లాక్‌ను వ్రాసి, “వరల్డ్ స్టేట్” DBలో స్థితిని మార్చండి.

ఆ. ఇది నోడ్‌ల మధ్య పాత్రల విభజనకు దారి తీస్తుంది. ఇది బ్లాక్‌చెయిన్ స్కేలబుల్ మరియు సురక్షితమైనదని నిర్ధారిస్తుంది:

  • స్మార్ట్ కాంట్రాక్టులు (చైన్‌కోడ్) సహచరులను ఆమోదించడం. ఇది స్మార్ట్ కాంట్రాక్టుల గోప్యతను నిర్ధారిస్తుంది, ఎందుకంటే ఇది అన్ని పాల్గొనేవారిచే నిల్వ చేయబడదు, కానీ సహచరులను ఆమోదించడం ద్వారా మాత్రమే.
  • ఆర్డర్ త్వరగా పని చేయాలి. ఆర్డర్ చేయడం అనేది ఒక బ్లాక్‌ను మాత్రమే ఏర్పరుస్తుంది మరియు దానిని లీడర్ పీర్‌ల స్థిర సెట్‌కు పంపుతుంది అనే వాస్తవం ద్వారా ఇది నిర్ధారిస్తుంది.
  • సహచరులు బ్లాక్‌చెయిన్‌ను మాత్రమే నిల్వ చేస్తారు - వాటిలో చాలా ఉండవచ్చు మరియు వారికి ఎక్కువ శక్తి మరియు తక్షణ ఆపరేషన్ అవసరం లేదు.

హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ యొక్క నిర్మాణ పరిష్కారాలపై మరిన్ని వివరాలు మరియు ఇది ఈ విధంగా ఎందుకు పని చేస్తుంది మరియు లేకపోతే ఇక్కడ చూడవచ్చు: ఆర్కిటెక్చర్ మూలాలు లేదా ఇక్కడ: హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్: అనుమతించబడిన బ్లాక్‌చెయిన్‌ల కోసం పంపిణీ చేయబడిన ఆపరేటింగ్ సిస్టమ్.

కాబట్టి, హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ అనేది నిజంగా సార్వత్రిక వ్యవస్థ, దీనితో మీరు వీటిని చేయవచ్చు:

  • స్మార్ట్ కాంట్రాక్ట్ మెకానిజం ఉపయోగించి ఏకపక్ష వ్యాపార లాజిక్‌ను అమలు చేయండి;
  • JSON ఆకృతిలో బ్లాక్‌చెయిన్ డేటాబేస్ నుండి డేటాను రికార్డ్ చేయండి మరియు స్వీకరించండి;
  • సర్టిఫికేట్ అథారిటీని ఉపయోగించి API యాక్సెస్‌ని మంజూరు చేయండి మరియు ధృవీకరించండి.

ఇప్పుడు మనం హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ యొక్క ప్రత్యేకతల గురించి కొంచెం అర్థం చేసుకున్నాము, చివరకు ఉపయోగకరమైనది చేద్దాం!

బ్లాక్‌చెయిన్‌ని అమలు చేస్తోంది

సమస్య యొక్క ప్రకటన

కింది ఫంక్షన్లతో Citcoin నెట్‌వర్క్‌ను అమలు చేయడం పని: ఖాతాను సృష్టించండి, బ్యాలెన్స్ పొందండి, మీ ఖాతాను టాప్ అప్ చేయండి, ఒక ఖాతా నుండి మరొక ఖాతాకు నాణేలను బదిలీ చేయండి. ఒక ఆబ్జెక్ట్ మోడల్‌ను గీద్దాం, దీనిని మేము స్మార్ట్ ఒప్పందంలో మరింతగా అమలు చేస్తాము. కాబట్టి, మేము పేర్లతో గుర్తించబడిన ఖాతాలను కలిగి ఉంటాము మరియు బ్యాలెన్స్ మరియు ఖాతాల జాబితాను కలిగి ఉంటాము. ఖాతాలు మరియు ఖాతాల జాబితా, హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ ఆస్తుల పరంగా. దీని ప్రకారం, వారికి చరిత్ర మరియు ప్రస్తుత స్థితి ఉంది. నేను దీన్ని స్పష్టంగా గీయడానికి ప్రయత్నిస్తాను:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

అగ్ర సంఖ్యలు ప్రస్తుత స్థితి, ఇది "ప్రపంచ స్థితి" డేటాబేస్‌లో నిల్వ చేయబడుతుంది. వాటి క్రింద బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడిన చరిత్రను చూపించే బొమ్మలు ఉన్నాయి. లావాదేవీల ద్వారా ప్రస్తుత ఆస్తుల స్థితి మార్చబడింది. ఆస్తి మొత్తంగా మాత్రమే మారుతుంది, కాబట్టి లావాదేవీ ఫలితంగా, కొత్త వస్తువు సృష్టించబడుతుంది మరియు ఆస్తి యొక్క ప్రస్తుత విలువ చరిత్రలోకి వెళుతుంది.

IBM క్లౌడ్

మేము ఒక ఖాతాను సృష్టిస్తాము IBM క్లౌడ్. బ్లాక్‌చెయిన్ ప్లాట్‌ఫారమ్‌ను ఉపయోగించడానికి, ఇది తప్పనిసరిగా పే-యాజ్-యూ-గోకు అప్‌గ్రేడ్ చేయబడాలి. ఈ ప్రక్రియ త్వరగా జరగకపోవచ్చు, ఎందుకంటే... IBM అదనపు సమాచారాన్ని అభ్యర్థిస్తుంది మరియు దానిని మాన్యువల్‌గా ధృవీకరిస్తుంది. సానుకూల గమనికలో, IBMలో హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్‌ని వారి క్లౌడ్‌లో అమర్చడానికి మిమ్మల్ని అనుమతించే మంచి శిక్షణా సామగ్రి ఉందని నేను చెప్పగలను. నేను క్రింది కథనాలు మరియు ఉదాహరణల సిరీస్‌ను ఇష్టపడ్డాను:

కిందివి IBM బ్లాక్‌చెయిన్ ప్లాట్‌ఫారమ్ యొక్క స్క్రీన్‌షాట్‌లు. ఇది బ్లాక్‌చెయిన్‌ను ఎలా సృష్టించాలో సూచన కాదు, కానీ పని యొక్క పరిధిని ప్రదర్శించడం. కాబట్టి, మా ప్రయోజనాల కోసం, మేము ఒక సంస్థను తయారు చేస్తాము:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

మేము దానిలో నోడ్‌లను సృష్టిస్తాము: ఆర్డర్ CA, Org1 CA, ఆర్డర్ పీర్:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

మేము వినియోగదారులను సృష్టిస్తాము:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

ఛానెల్‌ని సృష్టించండి మరియు దానిని citcoin అని పిలవండి:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

ముఖ్యంగా ఛానెల్ బ్లాక్‌చెయిన్, కాబట్టి ఇది బ్లాక్ జీరో (జెనెసిస్ బ్లాక్)తో ప్రారంభమవుతుంది:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

స్మార్ట్ కాంట్రాక్ట్ రాయడం

/*
 * 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;

అకారణంగా, ఇక్కడ ప్రతిదీ స్పష్టంగా ఉండాలి:

  • డెమో ప్రోగ్రామ్ హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ APIని ఉపయోగించి కాల్ చేసే అనేక ఫంక్షన్‌లు (AddAccount, GetAccounts, SendFrom, GetBalance, RefillBalance) ఉన్నాయి.
  • SendFrom మరియు RefillBalance ఫంక్షన్‌లు డెమో ప్రోగ్రామ్ స్వీకరించే ఈవెంట్‌లను ఉత్పత్తి చేస్తాయి.
  • స్మార్ట్ కాంట్రాక్ట్ తక్షణం జరిగినప్పుడు తక్షణ ఫంక్షన్ ఒకసారి అంటారు. వాస్తవానికి, ఇది ఒక్కసారి మాత్రమే కాదు, ప్రతిసారీ స్మార్ట్ కాంట్రాక్ట్ వెర్షన్ మారుతుంది. అందువల్ల, ఖాళీ శ్రేణితో జాబితాను ప్రారంభించడం ఒక చెడ్డ ఆలోచన, ఎందుకంటే ఇప్పుడు, మేము స్మార్ట్ ఒప్పందం యొక్క సంస్కరణను మార్చినప్పుడు, మేము ప్రస్తుత జాబితాను కోల్పోతాము. కానీ ఫర్వాలేదు, నేను ఇప్పుడే నేర్చుకుంటున్నాను).
  • ఖాతాలు మరియు ఖాతాల జాబితా JSON డేటా నిర్మాణాలు. JS డేటా మానిప్యులేషన్ కోసం ఉపయోగించబడుతుంది.
  • మీరు getState ఫంక్షన్ కాల్‌ని ఉపయోగించి ఆస్తి యొక్క ప్రస్తుత విలువను పొందవచ్చు మరియు putStateని ఉపయోగించి దాన్ని నవీకరించవచ్చు.
  • ఖాతాను సృష్టించేటప్పుడు, AddAccount ఫంక్షన్ అంటారు, దీనిలో blockchain (maxAccounts = 5)లో గరిష్ట సంఖ్యలో ఖాతాల కోసం పోలిక చేయబడుతుంది. మరియు ఇక్కడ ఒక జాంబ్ ఉంది (మీరు గమనించారా?), ఇది ఖాతాల సంఖ్యలో అంతులేని పెరుగుదలకు దారితీస్తుంది. ఇలాంటి తప్పులు జరగకుండా చూడాలి)

తర్వాత, మేము స్మార్ట్ ఒప్పందాన్ని ఛానెల్‌లోకి లోడ్ చేస్తాము మరియు దానిని తక్షణం చేస్తాము:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

స్మార్ట్ కాంట్రాక్ట్‌ని ఇన్‌స్టాల్ చేయడానికి లావాదేవీని చూద్దాం:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

మన ఛానెల్ గురించిన వివరాలను చూద్దాం:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

ఫలితంగా, మేము IBM క్లౌడ్‌లో బ్లాక్‌చెయిన్ నెట్‌వర్క్ యొక్క క్రింది రేఖాచిత్రాన్ని పొందుతాము. రేఖాచిత్రం వర్చువల్ సర్వర్‌లో అమెజాన్ క్లౌడ్‌లో నడుస్తున్న డెమో ప్రోగ్రామ్‌ను కూడా చూపుతుంది (దాని గురించి తదుపరి విభాగంలో మరింత):

Blockchain: మనం ఏ PoCని నిర్మించాలి?

హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ API కాల్‌ల కోసం GUIని సృష్టిస్తోంది

హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ APIని కలిగి ఉంది:

  • ఛానెల్ సృష్టించండి;
  • ఛానెల్‌కి కనెక్షన్‌లు పీర్;
  • ఛానెల్‌లో స్మార్ట్ కాంట్రాక్ట్‌ల ఇన్‌స్టాలేషన్ మరియు ఇన్‌స్టాంటియేషన్;
  • కాల్ లావాదేవీలు;
  • బ్లాక్‌చెయిన్‌పై సమాచారాన్ని అభ్యర్థించండి.

అప్లికేషన్ అభివృద్ధి

మా డెమో ప్రోగ్రామ్‌లో మేము లావాదేవీలకు కాల్ చేయడానికి మరియు సమాచారాన్ని అభ్యర్థించడానికి మాత్రమే APIని ఉపయోగిస్తాము, ఎందుకంటే మేము ఇప్పటికే IBM బ్లాక్‌చెయిన్ ప్లాట్‌ఫారమ్‌ని ఉపయోగించి మిగిలిన దశలను పూర్తి చేసాము. మేము ప్రామాణిక టెక్నాలజీ స్టాక్‌ని ఉపయోగించి GUIని వ్రాస్తాము: Express.js + Vue.js + Node.js. ఆధునిక వెబ్ అప్లికేషన్‌లను సృష్టించడం ఎలా ప్రారంభించాలో మీరు ప్రత్యేక కథనాన్ని వ్రాయవచ్చు. ఇక్కడ నేను ఎక్కువగా ఇష్టపడిన ఉపన్యాసాల శ్రేణికి లింక్‌ను వదిలివేస్తాను: Vue.js & Express.jsని ఉపయోగించి పూర్తి స్టాక్ వెబ్ యాప్. ఫలితంగా Google మెటీరియల్ డిజైన్ శైలిలో సుపరిచితమైన గ్రాఫికల్ ఇంటర్‌ఫేస్‌తో క్లయింట్-సర్వర్ అప్లికేషన్. క్లయింట్ మరియు సర్వర్ మధ్య REST API అనేక కాల్‌లను కలిగి ఉంటుంది:

  • 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/డిస్‌కనెక్ట్ - బ్లాక్‌చెయిన్‌కు కనెక్షన్‌ను మూసివేయండి.

చేర్చబడిన ఉదాహరణలతో API యొక్క వివరణ పోస్ట్‌మ్యాన్ వెబ్‌సైట్ - HTTP APIని పరీక్షించడానికి బాగా తెలిసిన ప్రోగ్రామ్.

అమెజాన్ క్లౌడ్‌లో డెమో అప్లికేషన్

నేను అప్లికేషన్‌ను అమెజాన్‌కి అప్‌లోడ్ చేసాను ఎందుకంటే... IBM ఇప్పటికీ నా ఖాతాను అప్‌గ్రేడ్ చేయలేకపోయింది మరియు వర్చువల్ సర్వర్‌లను సృష్టించడానికి నన్ను అనుమతించలేదు. డొమైన్‌కు చెర్రీని ఎలా జోడించాలి: www.citcoin.info. నేను సర్వర్‌ని కొంతకాలం ఆన్‌లో ఉంచుతాను, ఆపై దాన్ని ఆఫ్ చేస్తాను, ఎందుకంటే... అద్దెకు సెంట్లు చినుకులు పడుతున్నాయి, మరియు citcoin నాణేలు ఇంకా స్టాక్ ఎక్స్ఛేంజ్‌లో జాబితా చేయబడలేదు) నేను డెమో యొక్క స్క్రీన్‌షాట్‌లను వ్యాసంలో చేర్చాను, తద్వారా పని యొక్క తర్కం స్పష్టంగా ఉంటుంది. డెమో అప్లికేషన్ వీటిని చేయగలదు:

  • బ్లాక్‌చెయిన్‌ను ప్రారంభించండి;
  • ఖాతాను సృష్టించండి (కానీ ఇప్పుడు మీరు కొత్త ఖాతాను సృష్టించలేరు, ఎందుకంటే స్మార్ట్ ఒప్పందంలో పేర్కొన్న ఖాతాల గరిష్ట సంఖ్య బ్లాక్‌చెయిన్‌లో చేరుకుంది);
  • ఖాతాల జాబితాను స్వీకరించండి;
  • ఆలిస్, బాబ్ మరియు అలెక్స్ మధ్య సిట్‌కాయిన్ నాణేలను బదిలీ చేయండి;
  • ఈవెంట్‌లను స్వీకరించండి (కానీ ఇప్పుడు ఈవెంట్‌లను చూపించడానికి మార్గం లేదు, కాబట్టి సరళత కోసం, ఈవెంట్‌లకు మద్దతు లేదని ఇంటర్‌ఫేస్ చెబుతుంది);
  • లాగ్ చర్యలు.

ముందుగా మేము బ్లాక్‌చెయిన్‌ను ప్రారంభించాము:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

తర్వాత, మేము మా ఖాతాను సృష్టిస్తాము, బ్యాలెన్స్‌తో సమయాన్ని వృథా చేయవద్దు:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

మేము అందుబాటులో ఉన్న అన్ని ఖాతాల జాబితాను పొందుతాము:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

మేము పంపినవారిని మరియు గ్రహీతను ఎంచుకుని, వారి బ్యాలెన్స్‌లను పొందుతాము. పంపినవారు మరియు గ్రహీత ఒకేలా ఉంటే, అతని ఖాతా తిరిగి నింపబడుతుంది:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

లాగ్‌లో మేము లావాదేవీల అమలును పర్యవేక్షిస్తాము:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

వాస్తవానికి, డెమో ప్రోగ్రామ్‌తో అంతే. బ్లాక్‌చెయిన్‌లో మా లావాదేవీని మీరు క్రింద చూడవచ్చు:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

మరియు లావాదేవీల సాధారణ జాబితా:

Blockchain: మనం ఏ PoCని నిర్మించాలి?

దీనితో, మేము సిట్‌కాయిన్ నెట్‌వర్క్‌ను రూపొందించడానికి PoC అమలును విజయవంతంగా పూర్తి చేసాము. నాణేలను బదిలీ చేయడానికి Citcoin పూర్తి స్థాయి నెట్‌వర్క్‌గా మారడానికి ఇంకా ఏమి చేయాలి? చాల తక్కువ:

  • ఖాతా సృష్టి దశలో, ప్రైవేట్/పబ్లిక్ కీ ఉత్పత్తిని అమలు చేయండి. ప్రైవేట్ కీ తప్పనిసరిగా ఖాతా వినియోగదారుతో నిల్వ చేయబడాలి, పబ్లిక్ కీ తప్పనిసరిగా బ్లాక్‌చెయిన్‌లో నిల్వ చేయబడాలి.
  • వినియోగదారుని గుర్తించడానికి పేరు కాకుండా పబ్లిక్ కీని ఉపయోగించే నాణెం బదిలీని చేయండి.
  • అతని ప్రైవేట్ కీతో వినియోగదారు నుండి సర్వర్‌కు వెళ్లే లావాదేవీలను గుప్తీకరించండి.

తీర్మానం

మేము ఈ క్రింది ఫంక్షన్లతో Citcoin నెట్‌వర్క్‌ను అమలు చేసాము: ఖాతాను జోడించండి, బ్యాలెన్స్ పొందండి, మీ ఖాతాను టాప్ అప్ చేయండి, ఒక ఖాతా నుండి మరొక ఖాతాకు నాణేలను బదిలీ చేయండి. కాబట్టి, PoCని నిర్మించడానికి మాకు ఎంత ఖర్చవుతుంది?

  • మీరు సాధారణంగా బ్లాక్‌చెయిన్‌ను మరియు ముఖ్యంగా హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్‌ను అధ్యయనం చేయాలి;
  • IBM లేదా Amazon క్లౌడ్‌లను ఉపయోగించడం నేర్చుకోండి;
  • JS ప్రోగ్రామింగ్ లాంగ్వేజ్ మరియు కొన్ని వెబ్ ఫ్రేమ్‌వర్క్ నేర్చుకోండి;
  • కొంత డేటాను బ్లాక్‌చెయిన్‌లో కాకుండా ప్రత్యేక డేటాబేస్‌లో నిల్వ చేయాల్సిన అవసరం ఉంటే, ఉదాహరణకు, PostgreSQLతో ఇంటిగ్రేట్ చేయడం నేర్చుకోండి;
  • మరియు చివరిది కానీ - మీరు Linux గురించి తెలియకుండా ఆధునిక ప్రపంచంలో జీవించలేరు!)

అయితే, ఇది రాకెట్ సైన్స్ కాదు, కానీ మీరు కష్టపడి పని చేయాలి!

GitHubలో మూలాలు

మూలాలను ఉంచారు గ్యాలరీలు. రిపోజిటరీ యొక్క సంక్షిప్త వివరణ:
జాబితా "సర్వర్» — Node.js సర్వర్
జాబితా "క్లయింట్» — Node.js క్లయింట్
జాబితా "blockchain"(పారామితి విలువలు మరియు కీలు, వాస్తవానికి, పని చేయనివి మరియు ఉదాహరణగా మాత్రమే ఇవ్వబడ్డాయి):

  • ఒప్పందం — స్మార్ట్ కాంట్రాక్ట్ సోర్స్ కోడ్
  • wallet — Hyperledger Fabric APIని ఉపయోగించడం కోసం వినియోగదారు కీలు.
  • *.cds - స్మార్ట్ కాంట్రాక్ట్‌ల సంకలన సంస్కరణలు
  • *.json ఫైల్‌లు - హైపర్‌లెడ్జర్ ఫ్యాబ్రిక్ APIని ఉపయోగించడం కోసం కాన్ఫిగరేషన్ ఫైల్‌ల ఉదాహరణలు

ఇది ప్రారంభం మాత్రమే!

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి