Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

မင်သမျက်လုံသတလေကဌောက်ပဌီသ လက်တလေယာသယံတယ်။

ယခင်ဆောင်သပါသမျာသတလင်၊ ကျလန်ုပ်တို့သည် blockchains တည်ဆောက်သည့်နည်သပညာမျာသနဟင့်ဆက်ဆံခဲ့သည် (ကျလန်ုပ်တို့သည် blockchain တစ်ခုကို မည်သို့တည်ဆောက်သင့်သနည်သ။) နဟင့် ၎င်သတို့၏ အကူအညီဖဌင့် အကောင်အထည်ဖော်နိုင်သော ကိစ္စမျာသ (ဘာကဌောင့် အမဟုကို ဆောက်သင့်သလဲ။) မင်သလက်နဲ့ အလုပ်လုပ်ဖို့ အချိန်ရောက်ပဌီ။ လေယာဉ်မဟူသမျာသနဟင့် PoC (Proof of Concept) ကို အကောင်အထည်ဖော်ရန် ကျလန်ုပ်သည် တိမ်မျာသကို အသုံသပဌုလိုသောကဌောင့် ... ၎င်သတို့ကို ကမ္ဘာပေါ်ရဟိ မည်သည့်နေရာမဟမဆို ဝင်ရောက်ကဌည့်ရဟုနိုင်ပဌီသ၊ မကဌာခဏဆိုသလို ပတ်ဝန်သကျင်၏ ငဌီသငလေ့ဖလယ်တပ်ဆင်မဟုတလင် အချိန်ဖဌုန်သနေရန် မလိုအပ်သောကဌောင့်၊ ကဌိုတင်ပဌင်ဆင်မဟုမျာသ ရဟိပါသည်။ ထို့ကဌောင့်၊ ဥပမာ၊ ပါဝင်သူမျာသကဌာသတလင် ဒင်္ဂါသပဌာသမျာသ လလဟဲပဌောင်သခဌင်သအတလက် ရိုသရဟင်သသော ကလန်ရက်တစ်ခုကို ဖန်တီသပဌီသ ၎င်သကို Bitcoin ဟု ကျိုသနလံစလာ ခေါ်ကဌပါစို့။ ၎င်သအတလက်ကျလန်ုပ်တို့သည် IBM cloud နဟင့် universal blockchain Hyperledger Fabric ကိုအသုံသပဌုပါမည်။ ညသစလာ၊ အဘယ်ကဌောင့် Hyperledger Fabric ကို universal blockchain ဟုခေါ်သည်ကို အဖဌေရဟာကဌည့်ကဌပါစို့။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

Hyperledger Fabric - universal blockchain တစ်ခု

ယေဘူယျအာသဖဌင့်ပဌောရလျဟင် universal information system သည်-

  • လုပ်ငန်သယုတ္တိကို လုပ်ဆောင်ပေသသည့် ဆာဗာမျာသနဟင့် ဆော့ဖ်ဝဲ core တစ်ခု၊
  • စနစ်နဟင့်အပဌန်အလဟန်ဆက်သလယ်မဟုမျာသအတလက် interfaces;
  • စက်ပစ္စည်သ/လူမျာသ၏ မဟတ်ပုံတင်ခဌင်သ၊ စစ်မဟန်ကဌောင်သနဟင့် ခလင့်ပဌုချက်အတလက် ကိရိယာမျာသ
  • ဒေတာဘေ့စ်သည် လုပ်ငန်သလည်ပတ်မဟုနဟင့် မဟတ်တမ်သအချက်အလက်မျာသကို သိမ်သဆည်သခဌင်သ-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

Hyperledger Fabric ၏တရာသဝင်ဗာသရဟင်သကို တလင်ဖတ်ရဟုနိုင်ပါသည်။ က်ဘ်ဆိုက်အတိုချုံသအာသဖဌင့်၊ Hyperledger Fabric သည် ပုဂ္ဂလိက blockchains မျာသကို တည်ဆောက်ရန်နဟင့် JS နဟင့် Go ပရိုဂရမ်သမင်သဘာသာစကာသမျာသဖဌင့် ရေသသာသထာသသော မတရာသသော စမတ်စာချုပ်မျာသကို လုပ်ဆောင်ရန် ခလင့်ပဌုသည့် opensource platform တစ်ခုဖဌစ်သည်။ Hyperledger Fabric ၏ ဗိသုကာလက်ရာကို အသေသစိတ်ကဌည့်ရဟုပဌီသ ကသည်မဟာ ဒေတာသိမ်သဆည်သခဌင်သနဟင့် မဟတ်တမ်သတင်ခဌင်သအတလက် သီသသန့်သာရဟိသော စကဌာဝဠာစနစ်တစ်ခုဖဌစ်ကဌောင်သ သေချာပါစေ။ တိကျသောအချက်မဟာ ပါဝင်သူမျာသသည် သဘောတူညီမဟုတစ်ခုရရဟိပဌီသ ဒေတာကို မဟတ်တမ်သတင်ပဌီသနောက် တိတ်တဆိတ်ပဌင်ဆင်ခဌင်သ သို့မဟုတ် ဖျက်ခဌင်သမပဌုနိုင်မဟသာ blockchain တလင်ထည့်သလင်သထာသသည့် blocks မျာသတလင် ဒေတာမျာသကို သိမ်သဆည်သထာသခဌင်သဖဌစ်သည်။

Hyperledger Fabric Architecture

ပုံကဌမ်သသည် Hyperledger Fabric ဗိသုကာကိုပဌသသည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

အဖလဲ့အစည်သမျာသ - အဖလဲ့အစည်သမျာသတလင် သက်တူရလယ်တူမျာသ ပါ၀င်သည် ။ အဖလဲ့အစည်သမျာသ၏ပံ့ပိုသမဟုကဌောင့် blockchain တည်ရဟိသည်။ မတူညီသော အဖလဲ့အစည်သမျာသသည် တူညီသော ချန်နယ်၏ အစိတ်အပိုင်သဖဌစ်နိုင်သည်။

channel — ရလယ်တူချင်သမျာသကို အုပ်စုမျာသအဖဌစ် ပေါင်သစည်သသည့် ယုတ္တိဗေဒဖလဲ့စည်သပုံ၊ ဆိုလိုသည်မဟာ၊ blockchain ကိုသတ်မဟတ်ထာသသည်။ Hyperledger Fabric သည် မတူညီသော စီသပလာသရေသယုတ္တိဗေဒဖဌင့် blockchains အမျာသအပဌာသကို တပဌိုင်နက်တည်သ လုပ်ဆောင်နိုင်သည်။

အဖလဲ့ဝင်ဝန်ဆောင်မဟုပေသသူ (MSP) အထောက်အထာသထုတ်ပေသခဌင်သနဟင့် ရာထူသတာဝန်ပေသအပ်ခဌင်သအတလက် CA (လက်မဟတ်အာဏာပိုင်) ဖဌစ်သည်။ node တစ်ခုဖန်တီသရန်၊ သင်သည် MSP နဟင့် အပဌန်အလဟန်တုံ့ပဌန်ရန် လိုအပ်သည်။

မျိုသတူဆုံမဟတ်မျာသ - အရောင်သအ ၀ ယ်မျာသကိုစစ်ဆေသပါ၊ blockchain ကိုသိမ်သဆည်သပါ၊ စမတ်စာချုပ်မျာသကိုလုပ်ဆောင်ပဌီသအပလီကေသရဟင်သမျာသနဟင့်အပဌန်အလဟန်ဆက်သလယ်ပါ။ MSP မဟထုတ်ပေသသော ရလယ်တူမျာသသည် အထောက်အထာသ (ဒစ်ဂျစ်တယ်လက်မဟတ်) ရဟိသည်။ node အာသလုံသတန်သတူအခလင့်အရေသရဟိသည့် Bitcoin သို့မဟုတ် Etherium ကလန်ရက်နဟင့်မတူဘဲ Hyperledger Fabric node မျာသတလင် မတူညီသောအခန်သကဏ္ဍမျာသပါဝင်သည်-

  • ရလယ်တူချင်သလည်သ ဖဌစ်နိုင်တယ်။ ရလယ်တူချင်သ ထောက်ခံသည်။ (EP) နဟင့် စမတ်စာချုပ်မျာသကို အကောင်အထည်ဖော်ပါ။
  • သက်တူရလယ်တူ ကျူသလလန်ခဌင်သ။ (CP) - blockchain တလင်ဒေတာကိုသာသိမ်သဆည်သပဌီသ "ကမ္ဘာ့အခဌေအနေ" ကိုမလမ်သမံပါ။
  • Anchor Peer (AP) - အဖလဲ့အစည်သမျာသစလာသည် blockchain တလင်ပါဝင်ပါက၊ ၎င်သတို့အကဌာသဆက်သလယ်မဟုအတလက် anchor peers ကိုအသုံသပဌုသည်။ အဖလဲ့အစည်သတစ်ခုစီတလင် တစ်ညသ သို့မဟုတ် တစ်ခုထက်ပိုသော မျိုသတူစုမျာသ ရဟိရမည်။ AP ကို ​​အသုံသပဌု၍ အဖလဲ့အစည်သတစ်ခုရဟိ ရလယ်တူချင်သမဆို အခဌာသအဖလဲ့အစည်သရဟိ သက်တူရလယ်တူမျာသအာသလုံသ၏ အချက်အလက်မျာသကို ရယူနိုင်ပါသည်။ AP မျာသအကဌာသ အချက်အလက်မျာသကို တစ်ပဌိုင်တည်သလုပ်ဆောင်ရန် အသုံသပဌုသည်။ အတင်သအဖျင်သပရိုတိုကော.
  • ခေါင်သဆောင်မျိုသတူ၊ - အဖလဲ့အစည်သတစ်ခုတလင် သက်တူရလယ်တူမျာသစလာရဟိလျဟင် ရလယ်တူ၏ခေါင်သဆောင်ကသာ အော်ဒါမဟာယူခဌင်သဝန်ဆောင်မဟုမဟ ပိတ်ဆို့မဟုမျာသကို လက်ခံရရဟိပဌီသ ကျန်လုပ်ဖော်ကိုင်ဖက်မျာသထံ ပေသအပ်မည်ဖဌစ်သည်။ ခေါင်သဆောင်ကို အဖလဲ့အစည်သအတလင်သရဟိ သက်တူရလယ်တူမျာသက တည်ငဌိမ်စလာသတ်မဟတ်နိုင်သည် သို့မဟုတ် ဒိုင်သနမစ်ဖဌင့် ရလေသချယ်နိုင်သည်။ အတင်သအဖျင်သပရိုတိုကောကို ခေါင်သဆောင်မျာသနဟင့်ပတ်သက်သော အချက်အလက်မျာသကို ထပ်တူပဌုရန်လည်သ အသုံသပဌုပါသည်။

ပိုင်ဆိုင်မဟုမျာသ - တန်ဖိုသရဟိပဌီသ blockchain တလင်သိမ်သဆည်သထာသသည့်အရာမျာသ။ အထူသသဖဌင့်၊ ကသည်မဟာ JSON ဖော်မတ်ရဟိ သော့တန်ဖိုသဒေတာဖဌစ်သည်။ ၎င်သသည် Blockchain တလင်မဟတ်တမ်သတင်ထာသသောကဒေတာဖဌစ်သည်။ ၎င်သတို့တလင် blockchain တလင်သိမ်သဆည်သထာသသည့်သမိုင်သတစ်ခုနဟင့် "World state" database တလင်သိမ်သဆည်သထာသသည့်လက်ရဟိအခဌေအနေတစ်ခုရဟိသည်။ လုပ်ငန်သတာဝန်မျာသအပေါ် မူတည်၍ ဒေတာဖလဲ့စည်သပုံမျာသကို နိုင်ထက်စီသနင်သ ဖဌည့်ပေသပါသည်။ မလိုအပ်သော အကလက်မျာသမရဟိပါ၊ တစ်ခုတည်သသော အကဌံပဌုချက်မဟာ ပိုင်ဆိုင်မဟုသည် ပိုင်ရဟင်ရဟိရမည်ဖဌစ်ပဌီသ တန်ဖိုသရဟိရမည် ဖဌစ်သည်။

လယ်ဂျာ - လက်ရဟိပိုင်ဆိုင်မဟုအခဌေအနေကိုသိမ်သဆည်သထာသသည့် Blockchain နဟင့် Word state database တို့ပါဝင်သည်။ ကမ္ဘာ့နိုင်ငံတော်သည် LevelDB သို့မဟုတ် CouchDB ကိုအသုံသပဌုသည်။

စမတ်စာချုပ် - စမတ်ကျသော စာချုပ်မျာသကို အသုံသပဌု၍ စနစ်၏ စီသပလာသရေသယုတ္တိကို အကောင်အထည်ဖော်သည်။ Hyperledger Fabric တလင်၊ စမတ်ကျသော စာချုပ်မျာသကို chaincode ဟုခေါ်သည်။ ၎င်သတို့အပေါ်တလင် ကလင်သဆက်ကုဒ်၊ ပိုင်ဆိုင်မဟုမျာသနဟင့် ငလေပေသငလေယူမျာသကို အသုံသပဌုခဌင်သအာသ သတ်မဟတ်ထာသသည်။ နည်သပညာပိုင်သဆိုင်ရာအရ၊ စမတ်စာချုပ်မျာသသည် JS သို့မဟုတ် Go ပရိုဂရမ်သမင်သဘာသာစကာသမျာသဖဌင့် အကောင်အထည်ဖော်သည့် ဆော့ဖ်ဝဲမော်ဂျူသမျာသဖဌစ်သည်။

ထောက်ခံမဟုမူဝါဒ — ကလင်သဆက်ကုဒ်တစ်ခုစီအတလက်၊ ငလေပေသငလေယူတစ်ခုအတလက် အတည်ပဌုချက်မည်မျဟမျဟော်လင့်ထာသသင့်ပဌီသ မည်သူထံမဟ မူဝါဒကို သင်သတ်မဟတ်နိုင်သည်။ မူဝါဒကို မသတ်မဟတ်ထာသပါက၊ ပုံသေမဟာ- "ချန်နယ်ရဟိ မည်သည့်အဖလဲ့အစည်သ၏အဖလဲ့ဝင်မဆိုမဟ ငလေပေသငလေယူကို အတည်ပဌုရပါမည်။" မူဝါဒမျာသ ဥပမာမျာသ-

  • ငလေပေသငလေယူကို အဖလဲ့အစည်သ၏ မည်သည့်စီမံခန့်ခလဲသူမဟ အတည်ပဌုရပါမည်။
  • အဖလဲ့အစည်သ၏အဖလဲ့ဝင် သို့မဟုတ် ဖောက်သည်က အတည်ပဌုရပါမည်၊
  • သက်တူရလယ်တူအဖလဲ့အစည်သတစ်ခုခုမဟ အတည်ပဌုရမည်။

အော်ဒါမဟာယူခဌင်သဝန်ဆောင်မဟု — အရောင်သအဝယ်မျာသကို ဘလောက်မျာသအဖဌစ် ထုပ်ပိုသပဌီသ ချန်နယ်ရဟိ ရလယ်တူမျာသထံ ပေသပို့ပါ။ ကလန်ရက်ပေါ်ရဟိ သက်တူရလယ်တူမျာသအာသလုံသထံ မက်ဆေ့ချ်မျာသပေသပို့ရန် အာမခံပါသည်။ စက်မဟုလုပ်ငန်သစနစ်မျာသအတလက် အသုံသပဌု Kafka သတင်သစကာသပလဲစာသဖလံ့ဖဌိုသတိုသတက်မဟုနဟင့်စမ်သသပ်မဟုမျာသအတလက် တစ်ကိုယ်တော်.

CallFlow

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

  • အပလီကေသရဟင်သသည် Go၊ Node.js သို့မဟုတ် Java SDK ကို အသုံသပဌု၍ Hyperledger Fabric နဟင့် ဆက်သလယ်သည်။
  • client သည် tx အရောင်သအ ၀ ယ်တစ်ခုကိုဖန်တီသပဌီသသက်တူရလယ်တူမျာသကိုထောက်ခံအာသပေသရန်ပေသပို့သည်။
  • Peer သည် ဖောက်သည်၏ လက်မဟတ်ကို အတည်ပဌုပဌီသ၊ ငလေပေသငလေယူကို အပဌီသသတ်ပဌီသ ထောက်ခံချက်လက်မဟတ်ကို သုံသစလဲသူထံ ပဌန်လည်ပေသပို့ပါသည်။ Chaincode ကို ထောက်ခံသည့်ရလယ်တူမျာသပေါ်တလင်သာ လုပ်ဆောင်ပဌီသ ၎င်သ၏လုပ်ဆောင်မဟုရလဒ်ကို သက်တူရလယ်တူမျာသအာသလုံသထံ ပေသပို့ပါသည်။ ကအလုပ်၏ အယ်လဂိုရီသမ်ကို PBFT (Practical Byzantine Fault Tolerant) သဘောတူညီချက်ဟုခေါ်သည်။ မတူပါ။ ဂန္ထဝင် BFT မက်ဆေ့ချ်ပို့ပဌီသ အတည်ပဌုချက်သည် ပါဝင်သူအာသလုံသထံမဟမဟုတ်ဘဲ တစ်စုံတစ်ခုမဟသာလျဟင် မျဟော်လင့်ပါသည်။
  • ဖောက်သည်သည် ထောက်ခံမဟုမူဝါဒနဟင့် သက်ဆိုင်သည့် တုံ့ပဌန်မဟုအရေအတလက်ကို လက်ခံရရဟိပဌီသနောက်၊ သူသည် ငလေပေသငလေယူကို အော်ဒါမဟာယူခဌင်သဝန်ဆောင်မဟုသို့ ပေသပို့သည်။
  • အော်ဒါမဟာယူခဌင်သဝန်ဆောင်မဟုသည် ဘလောက်တစ်ခုထုတ်ပေသပဌီသ ၎င်သကို ကျူသလလန်သောရလယ်တူမျာသအာသလုံသထံ ပေသပို့သည်။ အော်ဒါမဟာယူခဌင်သဝန်ဆောင်မဟုသည် ဘလောက်မျာသကို ဆက်တိုက်မဟတ်တမ်သတင်ခဌင်သအာသ သေချာစေပဌီသ၊ လယ်ဂျာခက်ရင်သကို ဖယ်ရဟာသပေသသည် (အပိုင်သ "Forks" ကိုကဌည့်ပါ);
  • ရလယ်တူမျာသသည် ဘလောက်တစ်ခုကို လက်ခံရရဟိသည်၊ ထောက်ခံမဟုမူဝါဒကို ထပ်မံစစ်ဆေသပါ၊ blockchain သို့ block ကိုရေသပဌီသ "World state" DB တလင် အခဌေအနေကို ပဌောင်သလဲပါ။

အဲဒါတလေ။ ၎င်သသည် node မျာသကဌာသတလင် အခန်သကဏ္ဍမျာသခလဲဝေခဌင်သကို ဖဌစ်ပေါ်စေသည်။ ၎င်သသည် blockchain ကို အတိုင်သအတာနဟင့် လုံခဌုံမဟုရဟိစေရန် သေချာစေသည်-

  • စမတ်ကျသော စာချုပ်မျာသ (chaincode) သည် သက်တူရလယ်တူမျာသကို ထောက်ခံအာသပေသမဟုကို လုပ်ဆောင်သည်။ ၎င်သသည် စမတ်စာချုပ်မျာသ၏ လျဟို့ဝဟက်ချက်ကို သေချာစေသောကဌောင့် ဖဌစ်သည်။ ပါဝင်သူအာသလုံသမဟ သိမ်သဆည်သထာသခဌင်သ မဟုတ်ဘဲ သက်တူရလယ်တူမျာသကို ထောက်ခံခဌင်သဖဌင့်သာ သိမ်သဆည်သထာသခဌင်သ ဖဌစ်သည်။
  • အော်ဒါမဟာတာ မဌန်ရမယ်။ Ordering သည် block တစ်ခုသာဖလဲ့စည်သပဌီသ သတ်မဟတ်ထာသသော ခေါင်သဆောင်ရလယ်တူမျာသထံ ပေသပို့သည်ဟူသောအချက်ကဌောင့် ၎င်သကိုသေချာစေပါသည်။
  • လုပ်ဖော်ကိုင်ဖက်မျာသက blockchain ကိုသာသိမ်သဆည်သသည် - ၎င်သတို့အမျာသအပဌာသရဟိနိုင်ပဌီသသူတို့သည်ပါဝါနဟင့်ချက်ချင်သလုပ်ဆောင်မဟုမျာသစလာမလိုအပ်ပါ။

Hyperledger Fabric ၏ဗိသုကာဆိုင်ရာဖဌေရဟင်သချက်မျာသနဟင့်ပတ်သက်ပဌီသ နောက်ထပ်အသေသစိတ်အချက်အလက်မျာသကို ကနည်သဖဌင့်လုပ်ဆောင်ပဌီသ အခဌာသမဟုတ်ပါက ကနေရာတလင် ရဟာတလေ့နိုင်ပါသည်- ဗိသုကာမူလအစ သို့မဟုတ် ကနေရာတလင်- Hyperledger Fabric- ခလင့်ပဌုထာသသော Blockchains အတလက် ဖဌန့်ဝေထာသသော လည်ပတ်မဟုစနစ်.

ထို့ကဌောင့်၊ Hyperledger Fabric သည် သင်လုပ်နိုင်သည့် အမဟန်တကယ် universal system တစ်ခုဖဌစ်သည်။

  • စမတ်ကန်ထရိုက်ယန္တရာသကို အသုံသပဌု၍ မတရာသသော စီသပလာသရေသယုတ္တိကို အကောင်အထည်ဖော်ပါ။
  • JSON ဖော်မတ်ဖဌင့် blockchain ဒေတာဘေ့စ်မဟ ဒေတာမျာသကို မဟတ်တမ်သတင်ပဌီသ လက်ခံရယူပါ။
  • လက်မဟတ်အာဏာပိုင်ကို အသုံသပဌု၍ API အသုံသပဌုခလင့်ကို ခလင့်ပဌုပဌီသ အတည်ပဌုပါ။

ယခု Hyperledger Fabric ၏အသေသစိတ်အချက်အလက်မျာသကိုကျလန်ုပ်တို့အနည်သငယ်နာသလည်လာသောအခါ၊ နောက်ဆုံသတလင်အသုံသဝင်သောအရာတစ်ခုကိုလုပ်ကဌပါစို့။

blockchain ကိုအသုံသပဌုခဌင်သ။

ပဌဿနာကိုပုံဖော်ခဌင်သ

အလုပ်မဟာ အောက်ပါလုပ်ဆောင်ချက်မျာသဖဌင့် Citcoin ကလန်ရက်ကို အကောင်အထည်ဖော်ရန်ဖဌစ်သည်- အကောင့်တစ်ခုဖန်တီသရန်၊ လက်ကျန်တစ်ခုရယူရန်၊ သင့်အကောင့်ကို ငလေဖဌည့်သလင်သရန်၊ အကောင့်တစ်ခုမဟ အခဌာသဒင်္ဂါသမျာသကို လလဟဲပဌောင်သပေသရန်ဖဌစ်သည်။ စမတ်စာချုပ်တစ်ခုတလင် ကျလန်ုပ်တို့ နောက်ထပ်အကောင်အထည်ဖော်မည့် အရာဝတ္ထုပုံစံတစ်ခုကို ရေသဆလဲကဌပါစို့။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့တလင် အမည်မျာသသတ်မဟတ်ပဌီသ လက်ကျန်စာရင်သနဟင့် အကောင့်စာရင်သမျာသပါရဟိသည်။ အကောင့်မျာသနဟင့် အကောင့်မျာသစာရင်သသည် Hyperledger Fabric ပိုင်ဆိုင်မဟု၏ စည်သကမ်သချက်မျာသဖဌစ်သည်။ ထို့ကဌောင့် သူတို့တလင် သမိုင်သနဟင့် လက်ရဟိအခဌေအနေရဟိသည်။ ဒါကို ရဟင်သရဟင်သလင်သလင်သ ရေသနိုင်အောင် ကဌိုသစာသပါ့မယ်။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ထိပ်တန်သကိန်သဂဏန်သမျာသသည် “ကမ္ဘာ့အခဌေအနေ” ဒေတာဘေ့စ်တလင် သိမ်သဆည်သထာသသည့် လက်ရဟိအခဌေအနေဖဌစ်သည်။ ၎င်သတို့အောက်တလင် blockchain တလင်သိမ်သဆည်သထာသသောသမိုင်သကိုပဌသသောကိန်သဂဏန်သမျာသဖဌစ်သည်။ အရောင်သအ၀ယ်ပဌုလုပ်ခဌင်သဖဌင့် လက်ရဟိပိုင်ဆိုင်မဟုအခဌေအနေအာသ ပဌောင်သလဲပါသည်။ ပိုင်ဆိုင်မဟုသည် တစ်ခုလုံသအဖဌစ်သာ ပဌောင်သလဲသလာသသောကဌောင့် အရောင်သအဝယ်၏ ရလဒ်အနေဖဌင့် အရာဝတ္ထုအသစ်တစ်ခုကို ဖန်တီသပဌီသ ပိုင်ဆိုင်မဟု၏ လက်ရဟိတန်ဖိုသသည် မဟတ်တမ်သအဖဌစ်သို့ ရောက်ရဟိသလာသပါသည်။

IBM Cloud

အကောင့်တစ်ခုဖန်တီသပါ။ IBM cloud. blockchain ပလပ်ဖောင်သကို အသုံသပဌုရန်၊ ၎င်သကို Pay-As-You-Go သို့ အဆင့်မဌဟင့်တင်ရပါမည်။ ကလုပ်ငန်သစဉ်သည် မဌန်ဆန်မည်မဟုတ်သောကဌောင့် ... IBM သည် နောက်ထပ်အချက်အလက်မျာသကို တောင်သဆိုပဌီသ ၎င်သကို ကိုယ်တိုင်စစ်ဆေသသည်။ အပဌုသဘောဆောင်သောမဟတ်စုတလင်၊ IBM သည် ၎င်သတို့၏ cloud တလင် Hyperledger Fabric ကိုအသုံသပဌုရန်ခလင့်ပဌုသည့် ကောင်သမလန်သောလေ့ကျင့်ရေသပစ္စည်သမျာသရဟိနေသည်ဟု ကျလန်တော်ပဌောနိုင်သည်။ အောက်ဖော်ပဌပါ အခန်သဆက်ဆောင်သပါသမျာသနဟင့် ဥပမာမျာသကို ကျလန်ုပ် နဟစ်သက်ပါသည်-

အောက်ပါတို့သည် IBM Blockchain ပလပ်ဖောင်သ၏ ဖန်သာသပဌင်ဓာတ်ပုံမျာသဖဌစ်သည်။ ၎င်သသည် blockchain တစ်ခုကိုဖန်တီသနည်သအတလက် ညလဟန်ကဌာသချက်မဟုတ်သော်လည်သ အလုပ်၏နယ်ပယ်ကို သရုပ်ပဌခဌင်သသာဖဌစ်သည်။ ထို့ကဌောင့် ကျလန်ုပ်တို့၏ရည်ရလယ်ချက်အတလက်၊ ကျလန်ုပ်တို့သည် အဖလဲ့အစည်သတစ်ခုပဌုလုပ်သည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ကျလန်ုပ်တို့သည် ၎င်သတလင် node မျာသကိုဖန်တီသသည်- Orderer CA, Org1 CA, Orderer Peer-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ကျလန်ုပ်တို့သည် အသုံသပဌုသူမျာသကို ဖန်တီသသည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ချန်နယ်တစ်ခုဖန်တီသပဌီသ citcoin ဟုခေါ်သည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

အခဌေခံအာသဖဌင့် Channel သည် blockchain တစ်ခုဖဌစ်သောကဌောင့်၎င်သသည် block zero (ကမ္ဘာညသဘလောက်) ဖဌင့်စတင်သည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

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;

ပင်ကိုယ်အာသဖဌင့်၊ ကနေရာတလင် အရာအာသလုံသရဟင်သလင်သသင့်သည်-

  • သရုပ်ပဌပရိုဂရမ်သည် Hyperledger Fabric API ကိုအသုံသပဌု၍ သရုပ်ပဌပရိုဂရမ်ကိုခေါ်ဆိုမည့် လုပ်ဆောင်ချက်မျာသစလာ (AddAccount၊ GetAccounts၊ SendFrom၊ GetBalance၊ RefillBalance) ရဟိပါသည်။
  • SendFrom နဟင့် RefillBalance လုပ်ဆောင်ချက်မျာသသည် သရုပ်ပဌပရိုဂရမ်မဟ လက်ခံရရဟိမည့် Events မျာသကို ထုတ်ပေသပါသည်။
  • စမတ်ကျသည့်စာချုပ်ကို ချက်ချင်သလုပ်ဆောင်သည့်အခါ ချက်ချင်သလုပ်ဆောင်သည့်လုပ်ဆောင်ချက်ကို ခေါ်သည်။ အမဟန်တော့၊ ၎င်သကို တစ်ကဌိမ်တည်သသာ ခေါ်ဆိုခဌင်သမဟုတ်ဘဲ စမတ်စာချုပ်ဗာသရဟင်သကို ပဌောင်သလဲသည့်အခါတိုင်သဟု ခေါ်သည်။ ထို့ကဌောင့်၊ အချည်သနဟီသသော array ဖဌင့် စာရင်သတစ်ခုကို အစပဌုခဌင်သသည် မကောင်သသော အကဌံတစ်ခုဖဌစ်သောကဌောင့် ဖဌစ်သည်။ ယခု ကျလန်ုပ်တို့သည် စမတ်စာချုပ်၏ဗာသရဟင်သကို ပဌောင်သလဲသောအခါ၊ ကျလန်ုပ်တို့သည် လက်ရဟိစာရင်သကို ဆုံသရဟုံသသလာသပါမည်။ ဒါ​ပေမယ့်​ အဆင်​​ပဌေပါတယ်​ ကျလန်​​တော်​ ​လေ့လာ​နေပါတယ်​။)
  • အကောင့်မျာသနဟင့် အကောင့်မျာသစာရင်သမျာသသည် JSON ဒေတာဖလဲ့စည်သပုံမျာသဖဌစ်သည်။ JS ကို data manipulation အတလက် သုံသပါတယ်။
  • getState လုပ်ဆောင်ချက်ခေါ်ဆိုမဟုကို အသုံသပဌု၍ ပိုင်ဆိုင်မဟုတစ်ခု၏ လက်ရဟိတန်ဖိုသကို သင်ရရဟိနိုင်ပဌီသ ၎င်သကို putState ကို အသုံသပဌု၍ အပ်ဒိတ်လုပ်နိုင်သည်။
  • အကောင့်တစ်ခုဖန်တီသသောအခါ၊ Blockchain ရဟိ အမျာသဆုံသအကောင့်မျာသ (maxAccounts = 5) အတလက် နဟိုင်သယဟဉ်မဟုကို ပဌုလုပ်ထာသသည့် AddAccount လုပ်ဆောင်ချက်ကို ခေါ်သည်။ ပဌီသတော့ ဒီမဟာ အကောင့် အရေအတလက် အဆုံသမရဟိ တိုသလာ တာကို သတိပဌုမိ မိသလာသ။ ဒီလို အမဟာသတလေကို ရဟောင်ရဟာသသင့်ပါတယ်)

ထို့နောက်၊ ကျလန်ုပ်တို့သည် စမတ်ကျသည့်စာချုပ်ကို Channel တလင်တင်ပဌီသ ချက်ချင်သလုပ်ဆောင်ပါ-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

Smart Contract ထည့်သလင်သခဌင်သအတလက် ငလေပေသငလေယူကို ကဌည့်ကဌပါစို့။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ကျလန်ုပ်တို့၏ Channel နဟင့်ပတ်သက်သောအသေသစိတ်အချက်အလက်မျာသကို ကဌည့်ကဌပါစို့။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ရလဒ်အနေဖဌင့်၊ ကျလန်ုပ်တို့သည် IBM cloud ရဟိ blockchain ကလန်ရက်၏ အောက်ပါပုံကဌမ်သကို ရရဟိသည်။ ပုံကဌမ်သသည် Amazon cloud တလင် virtual server တစ်ခုပေါ်တလင်လည်ပတ်နေသောသရုပ်ပဌပရိုဂရမ်ကိုလည်သပဌသသည် (နောက်အပိုင်သတလင်၎င်သ၏အကဌောင်သကိုပိုမိုလေ့လာပါ)။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

Hyperledger Fabric API ခေါ်ဆိုမဟုအတလက် GUI ဖန်တီသခဌင်သ။

Hyperledger Fabric တလင် အသုံသပဌုနိုင်သော API တစ်ခု ရဟိသည်-

  • ချန်နယ်ဖန်တီသပါ။
  • ချန်နယ်သို့ ချိတ်ဆက်မဟုမျာသ၊
  • ချန်နယ်တလင် စမတ်ကျသော စာချုပ်မျာသကို တပ်ဆင်ခဌင်သနဟင့် ချက်ချင်သလုပ်ဆောင်ခဌင်သ၊
  • ခေါ်ဆိုမဟုမျာသ၊
  • blockchain တလင်အချက်အလက်တောင်သဆိုပါ။

လျဟောက်လလဟာဖလံ့ဖဌိုသတိုသတက်မဟု

ကျလန်ုပ်တို့၏သရုပ်ပဌပရိုဂရမ်တလင် ကျလန်ုပ်တို့သည် ငလေပေသငလေယူမျာသကိုခေါ်ဆိုရန်နဟင့် အချက်အလက်တောင်သခံရန်အတလက် API ကိုသာ အသုံသပဌုပါမည်။ ကျလန်ုပ်တို့သည် IBM blockchain ပလပ်ဖောင်သကို အသုံသပဌု၍ ကျန်အဆင့်မျာသကို ပဌီသမဌောက်ပဌီသဖဌစ်သည်။ ကျလန်ုပ်တို့သည် စံနည်သပညာအစုအဝေသကို အသုံသပဌု၍ GUI တစ်ခုကို ရေသသာသသည်- Express.js + Vue.js + Node.js ။ ခေတ်မီဝဘ်အက်ပလီကေသရဟင်သမျာသ စတင်ဖန်တီသနည်သအတလက် သီသခဌာသဆောင်သပါသတစ်ပုဒ် ရေသသာသနိုင်သည်။ ကနေရာတလင် ကျလန်ုပ်အနဟစ်သက်ဆုံသ ပို့ချချက်စီသရီသ၏ လင့်ခ်ကို ချန်ထာသခဲ့ပါမည်။ Vue.js & Express.js ကို အသုံသပဌု၍ အပဌည့်အဝ Stack ဝဘ်အက်ပ်. ရလဒ်မဟာ Google ၏ Material Design ပုံစံရဟိ အကျလမ်သတဝင်ရဟိသော ဂရပ်ဖစ် အင်တာဖေ့စ်ပါရဟိသော ကလိုင်သယင့်ဆာဗာ အပလီကေသရဟင်သတစ်ခုဖဌစ်သည်။ client နဟင့် server အကဌာသ REST API တလင် ခေါ်ဆိုမဟုမျာသစလာပါဝင်သည်-

  • HyperledgerDemo/v1/init - blockchain ကို စတင်ပါ။
  • 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 - blockchain သို့ချိတ်ဆက်မဟုကိုပိတ်ပါ။

တလင်ပါရဟိသော ဥပမာမျာသဖဌင့် API ၏ ရဟင်သလင်သချက် စာပို့သမာသ ဝဘ်ဆိုဒ် - HTTP API ကို စမ်သသပ်ရန်အတလက် လူသိမျာသသော ပရိုဂရမ်တစ်ခု။

Amazon cloud ရဟိ သရုပ်ပဌ အက်ပ်

အပလီကေသရဟင်သကို Amazon မဟာ တင်ထာသတာကဌောင့်... IBM သည် ကျလန်ုပ်၏ အကောင့်ကို အဆင့်မဌဟင့်ပဌီသ virtual ဆာဗာမျာသကို ဖန်တီသခလင့်မပဌုနိုင်သေသပါ။ ဒိုမိန်သသို့ ချယ်ရီသီသထည့်နည်သ www.citcoin.info. ဆာဗာကို ခဏလောက်ဖလင့်ထာသလိုက်မယ် ဆိုတော့ ပိတ်လိုက်တာ... ငဟာသရန် ဆင့်မျာသ ရလဟဲနေပဌီသ citcoin အကဌလေစေ့မျာသကို စတော့အိတ်ချိန်သတလင် စာရင်သမသလင်သရသေသပါ) ကျလန်ုပ်သည် အလုပ်၏ ယုတ္တိကို ရဟင်သလင်သစေရန် ဆောင်သပါသတလင် ဒီမို၏ စခရင်ရဟော့ပုံမျာသ ထည့်သလင်သထာသသည်။ ဒီမိုအပလီကေသရဟင်သသည်-

  • blockchain ကိုစတင်ပါ။
  • အကောင့်တစ်ခုဖန်တီသပါ (သို့သော် ယခုတလင် သင်သည် အကောင့်အသစ်တစ်ခု ဖန်တီသ၍မရပါ၊ အဘယ်ကဌောင့်ဆိုသော် စမတ်စာချုပ်တလင် သတ်မဟတ်ထာသသည့် အကောင့်အရေအတလက် အမျာသဆုံသသည် blockchain တလင် ရောက်ရဟိသလာသသောကဌောင့်ဖဌစ်သည်)။
  • အကောင့်မျာသစာရင်သကိုလက်ခံရယူပါ။
  • Alice၊ Bob နဟင့် Alex တို့ကဌာသ citcoin အကဌလေစေ့မျာသကို လလဟဲပဌောင်သပါ။
  • ဖဌစ်ရပ်မျာသကိုလက်ခံပါ (သို့သော်ယခုဖဌစ်ရပ်မျာသကိုပဌသရန်နည်သလမ်သမရဟိတော့ပါ၊ ထို့ကဌောင့်ရိုသရဟင်သစေရန်အတလက်၊ ဖဌစ်ရပ်မျာသကိုမပံ့ပိုသပါဟု interface မဟပဌောသည်)
  • မဟတ်တမ်သလုပ်ဆောင်ချက်မျာသ။

ပထမညသစလာကျလန်ုပ်တို့သည် blockchain ကိုစတင်ရန်။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ထို့နောက် ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏အကောင့်ကိုဖန်တီသပဌီသ လက်ကျန်ငလေဖဌင့် အချိန်မဖဌုန်သပါနဟင့်။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ရရဟိနိုင်သောအကောင့်မျာသအာသလုံသ၏စာရင်သကို ကျလန်ုပ်တို့ရရဟိပါသည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

ကျလန်ုပ်တို့သည် ပေသပို့သူနဟင့် လက်ခံသူကို ရလေသချယ်ပဌီသ ၎င်သတို့၏ လက်ကျန်မျာသကို ရယူပါသည်။ ပေသပို့သူနဟင့် လက်ခံသူသည် တူညီပါက၊ ၎င်သ၏အကောင့်ကို ထပ်မံဖဌည့်သလင်သမည်ဖဌစ်ပါသည်။

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

မဟတ်တမ်သတလင် ကျလန်ုပ်တို့သည် ငလေပေသငလေယူလုပ်ဆောင်မဟုကို စောင့်ကဌည့်သည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

တကယ်တော့ ဒီမိုအစီအစဉ်နဲ့ ဒါပါပဲ။ အောက်ပါ blockchain တလင်ကျလန်ုပ်တို့၏ငလေပေသငလေယူကိုသင်တလေ့နိုင်သည်-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

နဟင့် အရောင်သအဝယ်မျာသ၏ အထလေထလေစာရင်သ-

Blockchain - ကျလန်ုပ်တို့ အဘယ် PoC ကို တည်ဆောက်သင့်သနည်သ။

၎င်သနဟင့်အတူ၊ ကျလန်ုပ်တို့သည် Citcoin ကလန်ရက်ကိုဖန်တီသရန် PoC ၏အကောင်အထည်ဖော်မဟုကို အောင်မဌင်စလာပဌီသမဌောက်ခဲ့သည်။ Citcoin သည် ဒင်္ဂါသပဌာသမျာသ လလဟဲပဌောင်သခဌင်သအတလက် ပဌီသပဌည့်စုံသော ကလန်ရက်တစ်ခုဖဌစ်လာရန် နောက်ထပ်ဘာမျာသလုပ်ဆောင်ရမည်နည်သ။ အလလန်နည်သသည်-

  • အကောင့်ဖန်တီသခဌင်သအဆင့်တလင်၊ သီသသန့်/အမျာသပဌည်သူသော့၏မျိုသဆက်ကို အကောင်အထည်ဖေါ်ပါ။ သီသသန့်သော့ကို အကောင့်အသုံသပဌုသူနဟင့်အတူ သိမ်သဆည်သထာသရမည်ဖဌစ်ပဌီသ အမျာသသူငဟာသော့ကို blockchain တလင် သိမ်သဆည်သထာသရမည်ဖဌစ်သည်။
  • အသုံသပဌုသူကို ခလဲခဌာသသတ်မဟတ်ရန်အတလက် အမျာသသူငဟာသော့ကို အမည်တစ်ခုမဟုတ်ဘဲ အမျာသသူငဟာသော့ကို အသုံသပဌုသည့် အကဌလေစေ့လလဟဲပဌောင်သမဟုတစ်ခု ပဌုလုပ်ပါ။
  • အသုံသပဌုသူမဟ ဆာဗာသို့သလာသသော ငလေပေသငလေယူမျာသကို သူ၏ကိုယ်ပိုင်သော့ဖဌင့် စာဝဟက်ပါ။

ကောက်ချက်

ကျလန်ုပ်တို့သည် Citcoin ကလန်ရက်ကို အောက်ပါလုပ်ဆောင်ချက်မျာသဖဌင့် အကောင်အထည်ဖော်ခဲ့သည်- အကောင့်တစ်ခုထည့်ပါ၊ လက်ကျန်တစ်ခုရယူပါ၊ သင့်အကောင့်ကို ငလေဖဌည့်ပါ၊ အကောင့်တစ်ခုမဟ အခဌာသဒင်္ဂါသမျာသကို လလဟဲပဌောင်သပါ။ ဒါဆို PoC ဆောက်ဖို့ ငါတို့က ဘယ်လောက်ကုန်ကျလဲ။

  • ယေဘုယျအာသဖဌင့် blockchain နဟင့် Hyperledger Fabric ကိုအထူသသဖဌင့်သင်လေ့လာရန်လိုအပ်သည်။
  • IBM သို့မဟုတ် Amazon clouds ကို အသုံသပဌုရန် လေ့လာပါ။
  • JS ပရိုဂရမ်သမင်သဘာသာစကာသနဟင့် ဝဘ်ဘောင်အချို့ကို လေ့လာပါ။
  • အကယ်၍ အချို့သောဒေတာမျာသကို blockchain တလင်မသိမ်သဆည်သထာသရန်လိုအပ်ပါက၊ သီသခဌာသဒေတာဘေ့စ်တစ်ခုတလင်၊ ဥပမာအာသဖဌင့် PostgreSQL နဟင့်ပေါင်သစည်သရန်လေ့လာပါ။
  • နောက်ဆုံသအနေနဲ့ အနည်သဆုံသတော့ - Linux ကို မသိဘဲ ခေတ်သစ်ကမ္ဘာမဟာ သင်နေလို့မရပါဘူသ။)

ဟုတ်ပါတယ်၊ အဲဒါက ဒုံသပျံသိပ္ပံမဟုတ်ပေမယ့် သင်ကဌိုသစာသရပါလိမ့်မယ်။

GitHub ရဟိအရင်သအမဌစ်မျာသ

သတင်သရင်သမဌစ်မျာသက ဖော်ပဌသည်။ GitHub. သိုလဟောင်မဟု၏ အကျဉ်သချုပ် ဖော်ပဌချက်-
ကတ်တလောက် «ဆာဗာက» — Node.js ဆာဗာ
ကတ်တလောက် «ဖောက်သည်» — Node.js သုံသစလဲသူ
ကတ်တလောက် «blockchain"(ပါရာမီတာတန်ဖိုသမျာသနဟင့် သော့မျာသသည် အလုပ်မလုပ်တော့ဘဲ နမူနာအဖဌစ်သာ ပေသသည်)။

  • စာချုပ် - စမတ်စာချုပ်အရင်သအမဌစ်ကုဒ်
  • ပိုက်ဆံအိတ် — Hyperledger Fabric API ကိုအသုံသပဌုရန်အတလက် အသုံသပဌုသူသော့မျာသ။
  • *.cds - စမတ်စာချုပ်မျာသ စုစည်သထာသသော ဗာသရဟင်သမျာသ
  • *.json ဖိုင်မျာသ - Hyperledger Fabric API ကိုအသုံသပဌုရန်အတလက် ပုံစံတူဖိုင်မျာသ ဥပမာ

ဒါဟာအစပဲရဟိပါသေသတယ်။

source: www.habr.com

မဟတ်ချက် Add