Bitcoin ဘယ်လိုအလုပ်လုပ်သလဲ

Myat Min Soe
4 min readMay 21, 2021

--

အခုပြောမဲ့ အကြောင်းကတော့ Bitcoin ကို နည်းပညာအရဘယ်လို အလုပ်လုပ်သလဲဆိုတာ နားလည်သလောက်ရှင်းပြမှာဖြစ်ပါတယ်။ စီးပွားရေးအရတွေ ဝယ်သင့်မဝယ်သင့်ဆိုတာတွေကို ရှင်းပြမှာမဟုတ်ပါဘူး။ Crypto currency တစ်ခုဘယ်လိုအလုပ်လုပ်ဆိုတာကို Bitcoin နဲ့ရှင်းပြမှာဖြစ်ပါတယ်။

Bitcoin ဆိုတာ centralized server မပါပဲ peer to peer ဆက်သွယ်ထားတဲ့ ငွေကြေးစနစ်တစ်ခုပဲဖြစ်ပါတယ်။ အားလုံးသိတဲ့အတိုင်း centralized server မပါပဲ p2p သွားတာ security issue တွေအများကြီးရှိပါတယ်။ ဘာကိုမှယုံလို့မရပါဘူး အဲ့ဒါကို Bitcoin က decentralized system ကြီးမှာ ဘယ်လိုဖြေရှင်းထားလဲဆိုတာကို ရှင်းပြမှာဖြစ်ပါတယ်။

Bitcoin Account

ပထမဆုံး Bitcoin ကိုသုံးဖို့အကောင့်ဖွင့်တာ တစ်ခြား website တွေ app က registration system နဲ့လုံးဝမတူပါဘူး။ Bitcoin account တစ်ခုရှိဖို့ကို private key တစ်ခု generate လုပ်ပြီး သုံးယုံပါပဲ။ ဒီထွက်လာတဲ့ private key ကို Elliptic Curve Digital Signature Algorithm (ECDSA) ကိုအသုံးပြုပြီး public key ထွက်လာပါတယ်။ အဲ့တော့ public key မေ့သွားရင် private key ကနေတစ်ဆင့် generate ပြန်လုပ်လို့ရနိုင်ပေမဲ့ private key ပျောက်သွားရင် ဘာမှလုပ်လို့မရပါဘူး။ public key ကကိုယ့်ရဲ့ bitcoin address ဖြစ်လာပါတယ်။

Distributed Ledger

အပေါ်မှာပြောခဲ့တဲ့ Bitcoin address တစ်ခုကို internet မရှိပဲဖွင့်လိုက်ပြီဆိုပါဆို့ သူ့မှာ BTC(Bitcoin) ဘယ်လောက်ရှိလဲဆိုတာ ဘယ်လိုသိမလဲဆိုပြီးမေးခွန်းထုတ်စရာဖြစ်လာပါတယ်။ Bitcoin မှာ Distributed Ledger ဆိုတဲ့ စာရင်းကြီးတစ်ခုရှိပါတယ်။ ဒီစာရင်းကို p2p ကနေ Bitcoin wallet သုံးတဲ့လူတိုင်းကို ဖြန့်ဝေပေးထားပါတယ်။ ခုလောလောဆယ် 300 GB ကျော်နေပါပြီ။ ဒါကြောင့် တကယ့် bitcoin wallet အစစ်သုံးမယ်ဆို စစချင်း 300 GB ကျော်ကို တစ်ခြားလူတွေဆီကနေ download ဆွဲရပါမယ်။

ဒီ distributed ledger စာရင်းကြီးထဲမှာ ဘာတွေမှတ်ထားလဲဆိုတော့ transcation (ငွေလွှဲ) စာရင်းတွေမှတ်ထားတယ်။ မောင်မောင်မှာ ဘယ်လောက်ရှိလဲ ကျော်ကျော်မှာဘယ်လောက်ရှိလဲဆိုတာမျိုးမဟုတ်ပဲ မောင်မောင်က ကျော်ကျော်ကိုဘယ်လောက်လွှဲခဲ့သလဲ ကျော်ကျော်က အောင်အောင်ကိုဘယ်လောက်လွှဲခဲ့သလဲဆိုတဲ့ transcation တွေကိုမှတ်ထားထားပါ။

ဒီ distrubuted ledger က bitcoin ရဲ့အသက်ပါပဲ။ decentralized စနစ်ဖြစ်လို့ ဒီ ledger ကို ဘယ်လိုယုံရမလဲဆိုတာရှိလာပါတယ်။

မောင်မောင်က ကျော်ကျော်ကို 10 BTC လွှဲမယ်ဆိုပါဆို့ ဒါဆိုရင် မောင်မောင့်ဘက်ကနေ သူ့ရဲ့ address ရယ် 10 BTC သူအရင်လက်ခံထားတဲ့ previous output(input /output အကြောင်းနောက်မှာအသေးစိတ်ရှင်းပြပါမယ်) reference ရယ် လွှဲမယ့်အမောင့်ရယ် private key ကိုအသုံးပြုထားတဲ့ sigature ရယ်ကို (အခြား field တွေပါပေမဲ့ အရေးကြီးတာတွေကိုပဲဖော်ပြလိုက်ပါတယ်) ledger ထဲတင်လိုက်ပါတယ်။

ဒီမှာဆိုရင် transaction နဲ့ previous output က​ 1,2,3,4 နဲ့မဟုတ်ပဲ hash တစ်ခုနဲ့သွားမှာဖြစ်ပါတယ်။ from, to ဆိုရင်လဲ နာမည်နဲ့မဟုတ်ပဲ public key နဲ့မှတ်မှာဖြစ်ပါတယ်။ ရှင်းအောင်ပြထားတာဖြစ်ပါတယ်။ signature ကိုတော့ မောင်မောင်က သူ့ private key သုံးပြီး generate လုပ်ပါတယ်။ signature ကိုသုံးပြီး ကျန်တဲ့လူတွေက မောင်မောင်တကယ်ပို့တာဟုတ်မဟုတ် amount မှန်မမှန် verification လုပ်နိုင်ပါတယ်။

ဒါဆိုရင် ဒီ ledger history ကိုကြည့်ပြီး ကျော်ကျော်မှာ 10 BTC ရှိတယ်လို့ သိသွားပါပြီ။ ကျော်ကျော်က အောင်အောင်ကို 5 BTC ထပ်လွှဲမယ်ဆိုရင် Transcation ကဒါမျိုးသွားမှာဖြစ်ပါတယ်။

previous output (input) ဆိုတာက ကိုယ့်ကို BTC ဝင်ထားတဲ့ transcation ကို reference ပေးတာဖြစ်ပါတယ်။​ ဒီမှာ အရင် မောင်မောင်ဆီကရထားတဲ့ 10 BTC transcation ကို refernce ပေးလိုက်တာဖြစ်ပါတယ်။ input တစ်ခုကို တစ်ခါပဲ reference ပေးလို့ရတာဖြစ်ပါတယ်။​ ဒါကြောင့် input ကို reference ပေးပြီးပိုတဲ့ 5 BTC ကို သူ့ကိုသူပြန်လွှဲပေးလိုက်ပါတယ်။ ဒါဆိုရင် Aung Aung က 5 BTC ရပြီး Kyaw Kyaw က 5 BTC ပြန်ရသွားပါတယ်။ အဲ့လိုပဲ လွှဲမဲ့ အမောင့်ကများနေရင်လဲ အရင် input ၂,၃ ခုကို reference ပေးပြီး လွှဲရတာလဲရှိပါတယ်။

  • *table တွေက ရှင်းအောင် ဥပမာပေးထားတာဖြစ်ပြီး တကယ့် ledger က ဒီ format မဟုတ်ပါဘူး

ဒီမှာဆိုရင် previous output (input) ဖြစ်တဲ့ 7819 ကိုအသုံးပြုပြီးဖြစ်တဲ့အတွက် ဒီ input ကို အသုံးပြုပြီး input အဖြစ်မှတ်လိုက်ပါတယ်။ နောက်တစ်ခါလွှဲရင် ဒီ input ကို သုံးလို့ရတော့မှာမဟုတ်ပါဘူး။ အဲ့လိုမှတ်လိုက်တဲ့အတွက် နောက်တစ်ခါ transcation အတွက် input စစ်ရင် ဒါကိုစစ်စရာမလိုပဲ unspent input တွေကိုပဲ မှတ်ထားပြီး ကျန်တဲ့ user တွေက စစ်ပါတယ်။

Doubel Spending Attacking

bitcoin မှမဟုတ်ပဲ တစ်ခြား decentralized system တွေမှာ အကြီးမားဆုံးအားနည်းချက်က double spend လုပ်တာကိုဘယ်လိုဖြေရှင်းမလဲဆိုတဲ့ပြဿနာပါ။ centralized system ဖြစ်တဲ့ ဘဏ်ငွေကြေးစနစ်တွေမှာ မောင်မောင်က ကျော်ကျော်ကို ၁၀၀ လွှဲလိုက်ပြီဆိုပါဆို့ ဒါဆို ချက်ခြင်း မောင်မောင်မှာ ၁၀၀ လျော့သွားပြီး ကျော်ကျော်မှာ ၁၀၀ တိုးလာမှာပါ။ decentralized ဖြစ်တဲ့အတွက် မောင်မောင်က ကျော်ကျော်ကို ၁၀၀ ပေးတယ်ဆိုတာ သက်သေလိုလာပါတယ်။ input ကို reference လုပ်ပြီးလွှဲတယ်ဆိုပေမဲ့ input တစ်ခုထဲကို reference လုပ်ပြီးချက်ခြင်းဒါမှမဟုတ် အချိန်သိပ်မကွာပဲ နှစ်ခုလွှဲလိုက်ရင် ပြဿနာရှိလာပါပြီ။ ဥပမာ မောင်မောင်က ကျော်ကျော်ကိုရော လှလှကိုပါ input တစ်ခုထဲ​ reference လုပ်ပြီး 10 BTC လွှဲလိုက်ပြီဆိုပါဆို့။​ ဒါဆိုရင် တစ်ချို့ရဲ့ ledger ထဲမှာ မောင်မောင်ကကျော်ကျော်ကိုလွှဲတာအရင်ရောက်ပြီး တစ်ချို့ရဲ့ ledger ထဲမှာ မောင်မောင်က လှလှကိုလွှဲတာ အရင်ရောက်နေမှာပါ။ ဒီမှာ centralized မဟုတ်တဲ့အတွက် ပါလာတဲ့ timestamp တွေက မယုံရပါဘူး။​ လွှဲတဲ့လူစိတ်ကြိုက် timestamp တစ်ခုထည့်ပြီးလွှဲလို့ရနေပါတယ်။ အဲ့ဒါကြောင့် ဒါကိုဖြေရှင်းဖို့လိုလာပါတယ်။

Blockchain

ဒါကိုဖြေရှင်းဖို့အတွက် Blockchain ဆိုတာကိုသုံးပါတယ်။​ Blockchain ဆိုတာမပြောခင် Block ဆိုတာကိုအရင်ပြောရမှာပါ။ Block တစ်ခုထဲမှာ Transcation တွေကိုထည့်ထားပါတယ်။ အရင် Block ရဲ့ Hash ကို reference လုပ်ထားပါတယ်။ ဒါကြောင့် blockchain လို့ခေါ်တာပါ။ Block ကို trace လိုက်သွားရင် bitcoin ရဲ့ပထမဦးဆုံး block အထိရောက်သွားမှာဖြစ်ပါတယ်။

Mining

Block ရဲ့ hash ရယ်အထဲမှာပါတဲ့ transcation, timestamp အပါအဝင် random value (nonce) တစ်ခုသုံးပြီး နောက် block ရဲ့ hash ကိုထုတ်လိုက်ပါတယ်။ နောက် block ရဲ့ hash ရဲ့ orignal value ကို တွက်တာကို mining လုပ်တယ်လို့ခေါ်ပါတယ်။ အောက်က ဥပမာကိုကြည့်ကြည့်ပါ။

SHA256("ABC") = B5D4045C3F466FA91FE2CC6ABE79232A1A57CDF104F7A26E716E0A1E2789DF78

ဒီမှာဆိုရင် Block ရဲ့ Hash က B5D4045C3F466FA91FE2CC6ABE79232A1A57CDF104F7A26E716E0A1E2789DF78 ဖြစ်ပြီး ABC ဆိုတာကို အရင်ခန့်မှန်းနိုင်တဲ့လူက ဒီ Block ကိုရသွားပါတယ်။ ပထမဆုံး Transcation မှာ သူ mining လုပ်တဲ့အတွက် ရတဲ့ဆုကြေး transcation ကိုထည့်လိုက်ပါတယ်။ ဆုကြေးက အခုလက်ရှိ 6.25 BTC ရပါတယ်။ ရတဲ့ဆုကြေး ၄ နှစ်တစ်ကြိမ် တစ်ဝက်ဖြစ်သွားပြီး နောက်ဆုံး 2140 ခုနှစ်မှာ သုညဖြစ်သွားမှာပါ။ ဒါဆို နောက် mine ကြတော့မလားလို့မေးစရာရှိပါတယ်။ Block ကို mine တဲ့လူက transcation fee သတ်မှတ်လို့ရပါတယ်။ ဒီ block ထဲမှာ ပါတဲ့ transcation တွေက mine လုပ်ထားတဲ့လူကို transcation fee တစ်ခုပေးရမှာပါ။ လောလောဆယ် 6.25 BTC ဆိုတာ 300,000 $ ဒေါ်လာသုံးသိန်းဝန်းကျင်ရနေလို့ transcation fee ကို 0 ပဲထားထားကြတာများပါတယ်။ အဲ့တော့ double spending ကိုပြန်သွားရရင် block mine တဲ့လူက transcation တွေကိုထည့်တာဖြစ်တဲ့အတွက် block ထဲအရင်ရောက်တဲ့ transcation က confirm ဖြစ်သွားပါတယ်။

Block တစ်ခု mine ဖို့ ၁၀ မိနစ်လို့သတ်မှတ်ထားပါတယ်။ လက်ရှိ block ကို mine ဖို့ကြာတဲ့အချိန်ပေါ်မူတည်ပြီး bits ကို အတိုးအလျှော့လုပ်ပြီး ၁၀ မိနစ်ဝန်းကျင်ဖြစ်အောင် ညှိထားပါတယ်။ ဒါကို block ရဲ့ difficulty လို့ခေါ်ပါတယ်။

ဒါပေမဲ့ double spending ပြဿနာက အလုံးစုံပြေလည်မသွားသေးပါဘူး။ block တစ်ခုထဲကို နှစ်ယောက် သုံးယောက်က တစ်ပြိုင်ထဲ mine နိုင်ခဲ့ရင်ဆိုတဲ့ အခြေအနေကိုထည့်စဉ်းစားရပါတယ်။ အဲ့လိုဆို blockchain က branch တွေကွဲသွားပါတယ်။ ဒါပေမဲ့ နောက် block တစ်ခုထပ် mine ပြီးအရှည်ဆုံး branch ကိုပဲ main branch လို့သတ်မှတ်လိုက်ပါတယ်။ ဒါကြောင့် ကိုယ့် transcation က block ထဲရောက်သွားတိုင်းလဲ confirm မဖြစ်သေးပါဘူး။ block ထဲရောက်ဖို့ အနည်းဆုံး နောက် block ပေါ်အောင်စောင့်ရပါမယ်။ ကိုယ့် transcation ပါတဲ့ block ကို blockchain ထဲက main branch ထဲပါမပါ သိရအောင်စောင့်ရပါမယ်။ ဒါကြောင့် BTC transcation လုပ်ရင် အနည်းဆုံး ၆ blockစောင့်ကြတဲ့အတွက် transcation တစ်ခုက confirm ဖြစ်ဖို့ ၁ နာရီဝန်းကျင်ကြာသွားပါတယ်။

Bitcoin ရဲ့အားနည်းချက်

Bitcoin မှာ အဓိကအားနည်းတာကတော့ Transcation ကို သေချာအောင် ၁ နာရီစောင့်ရတယ်ဆိုတာ အကြီးမားဆုံးအားနည်းချက်ပဲဖြစ်ပါတယ်။ retail ရောင်းတဲ့နေရာမျိုးတွေမှာ ပြဿနာရှိလာပါတယ်။

Mine လုပ်ရတာလဲ နောက်ပိုင်း difficulty တွေမြင့်လာတဲ့အတွက် processing power တွေမြင့်လာပြီး စွမ်းအင်သုံးစွဲမှုများလာပါတယ်။ များတာမှ နိုင်ငံတစ်နိုင်ငံကို လျှပ်စစ်ပေးလို့ရလောက်အောင်များလာတာပါ။ Distrubuted ledger မှာ လူတိုင်းတွက်ရတာ လူတိုင်း download ဆွဲရတာလဲ စွမ်းအင်သုံးစွဲမှုကိုမြင့်တက်စေလာပါတယ်။

Bitcoin က ကိုယ်က anonymous လို့ဆိုပေမဲ့ ကိုယ့် public key ကိုအသုံးများရင် လူနဲ့ public key နဲ့တွဲသိရင် ကိုယ့် balance တွေ transcation ကိုပါသိသွားနိုင်ပါတယ်။ centralized system မှာဆိုရင် ဒါတွေကို public ကမသိနိုင်ပါဘူး။ ဒါကြောင့် trace မခံချင်ရင် wallet တွေအများကြီးဖွင့်ပြီးသုံးရပါတယ်။ ဒါကိုတောင် အချိန်ပေးလိုက်တဲ့လူနဲ့တွေ့ရင် ကိုယ်ကလဲ​ သတိလက်လွတ်ဖြစ်ရင်သိနိုင်ပါတယ်။

Private key မေ့သွားပျောက်သွားရင် ရှိသမျှဆုံးပါတယ်။ private key အခိုးခံရပြီး hacker ကယူသွားရင်လဲဆုံးပါတယ်။ မှားလွှဲမိရင်လဲ ဆုံးပါတယ်။ မရှိတဲ့ (မရှိသေးတဲ့) address ကိုလွှဲမိရင်လဲဆုံးပါတယ်။ decentralized ဖြစ်လို့ ဘယ်မှာမှ complain တက်လို့မရပါဘူး။ ကြားထဲကဖြတ်ပြောရရင် ၂၀၁၆ မှာ cryptocurrency တစ်ခုဖြစ်တဲ့ ethereum hack ခံရပါတယ်။ ဒါကြောင့် user တွေစုပြီး hack မခံရခင် block ကနေ brach ခွဲပြီး ethereum အသစ်လုပ်ပါတယ်။ ဒါကြောင့် နဂို ethereum classic (ETC) နဲ့ ethereum (ETH) ဆိုပြီး နှစ်ခုကွဲသွားပါတယ်။

ဒါကတော့ cryptocurrency တစ်ခုဖြစ်တဲ့ bitcoin ရဲ့အကြောင်းကို စာအတိုဆုံးနဲ့ရှင်းအောင် ရေးပြထားတာပါ။ bitcoin မှမဟုတ်ပဲ တစ်ခြား စွမ်းအင်နည်း လွှဲတာမြန်တဲ့ cryptocurrency တွေလဲပေါ်နေပါပြီ။ blockchain နည်းပညာကိုစိတ်ဝင်စားရင် cryptocurrency whitepaper တွေကိုလိုက်ဖတ်ကြည့်ဖို့ အကြံပေးပါတယ်။

**နည်းပညာပိုင်းသာရေးပြထားချင်းဖြစ်ပြီး စီးပွားရေးအရအကြံပေးချင်းမဟုတ်ပါ။

--

--