Crypto wallet အကြောင်း
Crypto wallet ဆိုတာ digital ငွေကြေးတွေဖြစ်တဲ့ cryptocurrency တွေကို သိမ်းဆည်းထားနိုင်တဲ့ digital ပိုက်ဆံအိတ်တစ်မျိုးပဲ ဖြစ်ပါတယ်။ ပုံမှန် physical wallet မှာ ငွေစက္ကူတွေကို သိမ်းထားသလိုပဲ crypto wallet မှာလည်း Bitcoin, Ethereum စတဲ့ cryptocurrency တွေကို သိမ်းဆည်းထားနိုင်ပါတယ်။
Crypto wallet တွေမှာ အဓိကအားဖြင့် private key နဲ့ public key ဆိုပြီး key နှစ်မျိုးရှိပါတယ်။ Public key ဆိုတာက သင့်ရဲ့ wallet address လို့ခေါ်တဲ့ cryptocurrency လက်ခံဖို့အတွက် အသုံးပြုတဲ့ လိပ်စာတစ်ခုဖြစ်ပါတယ်။ Private key ကတော့ သင့်ရဲ့ wallet ထဲက cryptocurrency တွေကို သုံးစွဲနိုင်ဖို့အတွက် လိုအပ်တဲ့ password လိုမျိုး security code တစ်ခုဖြစ်ပါတယ်။
Crypto wallet တွေကို အဓိကအားဖြင့် hot wallet နဲ့ cold wallet ဆိုပြီး နှစ်မျိုးခွဲခြားထားပါတယ်။ Hot wallet ဆိုတာ အင်တာနက်နဲ့ချိတ်ဆက်ထားတဲ့ software wallet တွေဖြစ်ပြီး MetaMask, Trust Wallet စတဲ့ mobile application တွေကို ဥပမာပြောနိုင်ပါတယ်။ Cold wallet ကတော့ အင်တာနက်နဲ့ မချိတ်ဆက်ထားတဲ့ hardware wallet တွေဖြစ်ပြီး Ledger, Trezor စတဲ့ physical device တွေဖြစ်ပါတယ်။
Crypto wallet တစ်ခုကို အသုံးပြုရာမှာ လုံခြုံရေးက အရေးအကြီးဆုံး အချက်တစ်ခုဖြစ်ပါတယ်။ Private key ကို ဘယ်သူ့ကိုမှ မပြောပြသင့်ပါဘူး။ Backup phrase (သို့) seed phrase လို့ခေါ်တဲ့ စကားလုံး ၁၂ လုံး (သို့) ၂၄ လုံးကိုလည်း လုံခြုံစွာ သိမ်းဆည်းထားသင့်ပါတယ်။ ဒါဟာ သင့်ရဲ့ wallet ကို ပြန်လည်ရယူနိုင်ဖို့အတွက် အရေးကြီးတဲ့ recovery code တစ်ခုဖြစ်ပါတယ်။
Crypto wallet တွေဟာ decentralized ဖြစ်တဲ့အတွက် ဗဟိုထိန်းချုပ်မှုအာဏာပိုင်တွေရဲ့ ထိန်းချုပ်မှုအောက်မှာ မရှိပါဘူး။ ဒါကြောင့် သင့်ရဲ့ cryptocurrency တွေကို သင်ကိုယ်တိုင် ထိန်းချုပ်စီမံနိုင်ပါတယ်။ ဒါပေမယ့် တစ်ဖက်မှာလည်း လုံခြုံရေးနဲ့ပတ်သက်ပြီး သင်ကိုယ်တိုင် တာဝန်ယူရမှာဖြစ်ပါတယ်။
Crypto wallet တစ်ခုကို ရွေးချယ်တဲ့အခါ သင့်ရဲ့လိုအပ်ချက်ပေါ်မူတည်ပြီး ဆုံးဖြတ်သင့်ပါတယ်။ နေ့စဉ် cryptocurrency ရောင်းဝယ်မှုတွေအတွက်ဆိုရင် hot wallet က ပိုအဆင်ပြေနိုင်ပြီး ရေရှည်သိမ်းဆည်းဖို့အတွက်ဆိုရင်တော့ cold wallet က ပိုလုံခြုံပါတယ်။ နောက်ထပ် ထည့်သွင်းစဉ်းစားရမယ့် အချက်တွေကတော့ အသုံးပြုရ လွယ်ကူမှု၊ လုံခြုံရေးအဆင့်၊ cryptocurrency အမျိုးအစား ထောက်ပံ့မှု၊ transaction fee စတာတွေ ဖြစ်ပါတယ်။
Crypto wallet နောက်ကွယ်က သင်္ချာ
အရင်ဆုံး ပုံမှန်သုံးနေတဲ့ ဂဏန်းတွေနဲ့ စရှင်းပြပါ့မယ်။ ကျွန်တော်တို့ နေ့စဉ်သုံးနေတဲ့ ဂဏန်းတွေက ၀ ကနေ ၉ ထိရှိပါတယ်။ အဲ့ဒီဂဏန်းတွေကို ပေါင်းလိုက်၊ နှုတ်လိုက်၊ မြှောက်လိုက်လုပ်ရင် တခြားဂဏန်းတွေ ရလာပါတယ်။ ဥပမာ ၂+၂=၄၊ ၄×၄=၁၆ စသဖြင့်ပေါ့။
Crypto wallet မှာလည်း အလားတူပါပဲ။ ဒါပေမယ့် သူက ပိုကြီးတဲ့ဂဏန်းတွေကို သုံးပါတယ်။ တစ်နည်းပြောရရင် သူက အရမ်းကြီးမားတဲ့ ဂဏန်းတွေနဲ့ တွက်ချက်မှုတွေ လုပ်ပါတယ်။ ဥပမာ အနည်းဆုံး ဂဏန်း ၇၈ လုံးလောက်ရှိတဲ့ ကိန်းကြီးတွေကို သုံးပါတယ်။ ဒီလောက်ကြီးမားတဲ့ ဂဏန်းတွေကို သုံးရတဲ့ အကြောင်းရင်းက လုံခြုံရေးအတွက်ပါ။
ဒီနေရာမှာ private key နဲ့ public key ဆိုတာကို နားလည်ဖို့ လိုပါတယ်။ ဒါကို ရိုးရှင်းတဲ့ဥပမာနဲ့ ရှင်းပြရရင် — သင့်မှာ သော့တွဲတစ်တွဲရှိတယ်လို့ စဉ်းစားကြည့်ပါ။ သော့ပိတ်တဲ့နေရာက public key ဖြစ်ပြီး၊ သော့ဖွင့်တဲ့နေရာက private key ပါ။ သော့ပိတ်တဲ့နေရာ (public key) ကို ဘယ်သူ့ကိုမဆို ပြလို့ရပေမယ့် သော့ဖွင့်တဲ့နေရာ (private key) ကိုတော့ သင်ပဲ သိထားသင့်ပါတယ်။
ဒီနည်းပညာမှာ အသုံးပြုတဲ့ သင်္ချာရဲ့ အံ့ဖွယ်ကောင်းတဲ့အချက်က — အကြီးစားဂဏန်းနှစ်ခုကို မြှောက်ရတာ လွယ်ကူပေမယ့် ရလဒ်ကနေ မူလဂဏန်းတွေကို ပြန်ရှာဖို့က အရမ်းခက်ခဲပါတယ်။ ဥပမာ ၇×၁၃=၉၁ ဆိုတာကို ကြည့်ရအောင်။ ၉၁ ဆိုတဲ့ ရလဒ်ကို သိရင်တောင် အဲ့ဒါက ၇နဲ့ ၁၃ ကို မြှောက်ထားတယ်ဆိုတာ ချက်ချင်းသိဖို့ မလွယ်ပါဘူး။ Crypto wallet တွေမှာတော့ ဒီထက်အများကြီး ပိုကြီးတဲ့ဂဏန်းတွေကို သုံးပါတယ်။
ဒါ့အပြင် hash function ဆိုတာလည်း ရှိပါသေးတယ်။ Hash function ဆိုတာက စာသားတွေ၊ ဂဏန်းတွေကို ထည့်လိုက်ရင် သတ်မှတ်ထားတဲ့ အရှည်တစ်ခုရှိတဲ့ ဂဏန်းတွဲတစ်ခု ထုတ်ပေးတဲ့ function ပါ။ ဥပမာ “မင်္ဂလာပါ” ဆိုတဲ့ စာသားကို hash function ထဲထည့်လိုက်ရင် “a78b9c” လို ဂဏန်းနဲ့စာလုံးတွေ ရောထားတဲ့ code တစ်ခု ထွက်လာမယ်ပေါ့။ “မင်္ဂလာပါ” ဆိုတဲ့ စာသားကနေ “a78b9c” ကို ရနိုင်ပေမယ့် “a78b9c” ကနေ “မင်္ဂလာပါ” ကို ပြန်မသိနိုင်ပါဘူး။
ဒီသင်္ချာနည်းတွေကို ပေါင်းစပ်ပြီး crypto wallet တွေက လုံခြုံမှုကို ဖန်တီးထားတာပါ။ သင့်ရဲ့ private key ကို ဘယ်သူမှ မခန့်မှန်းနိုင်အောင် အကြီးစားဂဏန်းတွေကို သုံးထားပြီး၊ လွယ်လွယ်ကူကူ ခိုးယူလို့မရအောင် hash function တွေနဲ့ ကာကွယ်ထားပါတယ်။
Bitcoin Wallet နောက်ကွယ်က သင်္ချာ
အခြေခံအားဖြင့် crypto wallet ဆိုတာ သင့်ရဲ့ private key နဲ့ public key တွေကို သိမ်းဆည်းထားတဲ့ နေရာပဲ ဖြစ်ပါတယ်။ ဒီနေရာမှာ သင်္ချာနည်းပညာ အရေးပါပုံကို ကြည့်ရအောင်။
Private key ဆိုတာ ကျပန်းနံပါတ်ကြီးတစ်ခုပဲ ဖြစ်ပါတယ်။ Bitcoin အတွက်ဆိုရင် ဒီနံပါတ်က ၂၅၆ ဂဏန်းရှည် binary နံပါတ်ဖြစ်ပါတယ်။ ဥပမာအနေနဲ့ — 11010101010101010101… စသဖြင့် ၂၅၆ လုံးရှိပါတယ်။ ဒါဟာ အလွန်ကြီးမားတဲ့ နံပါတ်ဖြစ်ပါတယ်။
ဒီ private key ကနေ public key ကို တွက်ချက်ဖို့ elliptic curve multiplication လို့ခေါ်တဲ့ သင်္ချာနည်းကို သုံးပါတယ်။ Elliptic curve ဆိုတာ y² = x³ + ax + b ပုံသဏ္ဍာန်ရှိတဲ့ သင်္ချာညီမျှခြင်းတစ်ခုပါ။ Bitcoin က secp256k1 လို့ခေါ်တဲ့ specific curve ကို သုံးပါတယ်။
Private key နဲ့ elliptic curve point တစ်ခုကို မြှောက်လိုက်တဲ့အခါ public key ရလာပါတယ်။ ဒီလို တွက်ချက်ရတာ တစ်ဖက်တည်းပဲ လွယ်ကူပါတယ်။ နောက်ပြန်တွက်ဖို့ကတော့ discrete logarithm problem လို့ခေါ်တဲ့ သင်္ချာပုစ္ဆာကြောင့် အလွန်ခက်ခဲပါတယ်။
Public key ကနေ wallet address ရဖို့အတွက် hash function တွေကို သုံးပါတယ်။ အဓိကအားဖြင့် SHA-256 နဲ့ RIPEMD-160 ဆိုတဲ့ hash function နှစ်ခုကို တွဲသုံးပါတယ်။ နောက်ဆုံးမှာ Base58Check encoding လုပ်တဲ့အခါ လူတွေအသုံးပြုလို့ရတဲ့ wallet address ထွက်လာပါတယ်။
Transaction လုပ်တဲ့အခါမှာလည်း ဒီသင်္ချာနည်းတွေက အရေးကြီးပါတယ်။ Transaction တစ်ခုကို sign လုပ်တဲ့အခါ ECDSA (Elliptic Curve Digital Signature Algorithm) ကို သုံးပါတယ်။ ဒါက private key နဲ့ message ကို သုံးပြီး digital signature ထုတ်ပေးတဲ့ algorithm ဖြစ်ပါတယ်။
Bitcoin Wallet & Maths Formula
၁။ Private Key ကနေ Public Key ထုတ်တဲ့ သင်္ချာ
Private Key = k (ကျပန်းနံပါတ်ကြီး)
Public Key = k × G
(G က elliptic curve ပေါ်က starting point)
ဒီညီမျှခြင်းမှာ × က သာမန်မြှောက်ခြင်းမဟုတ်ပဲ elliptic curve point multiplication ဖြစ်ပါတယ်။ ဥပမာ။ k = ၅ ဆိုရင် G ကို ၅ ကြိမ်ပေါင်းထားသလိုမျိုးပါ။
၂။ Digital Signature ထုတ်တဲ့အခါသုံးတဲ့ သင်္ချာ
Message Hash = m
Random Number = r
Signature = (r, s)
s = (m + kr)/n
n က curve order လို့ခေါ်တဲ့ နံပါတ်တစ်ခုဖြစ်ပါတယ်။ ဒီညီမျှခြင်းအရ signature ထွက်လာတဲ့အခါ (r,s) ဆိုတဲ့ နံပါတ်နှစ်လုံး ရပါတယ်။
၃။ Wallet Address ထုတ်တဲ့အခါသုံးတဲ့ သင်္ချာ
Public Key Hash = RIPEMD160(SHA256(Public Key))
ဒီနေရာမှာ function နှစ်ခုကို ဆင့်ပြီးသုံးထားပါတယ်။ SHA256 က ရှည်လျားတဲ့ နံပါတ်တစ်ခုထုတ်ပေးပြီး RIPEMD160 က အဲ့ဒီနံပါတ်ကို ထပ်ပြီး ပြောင်းပေးပါတယ်။ နောက်ဆုံးမှာ Base58Check encoding လုပ်တဲ့အခါ wallet address ထွက်လာပါတယ်။
၄။ Transaction Fee တွက်တဲ့ သင်္ချာ
Fee = Transaction Size (bytes) × Fee Rate (satoshi/byte)
ဥပမာ — Transaction size က ၂၅၀ bytes ဖြစ်ပြီး fee rate က ၁၀ satoshi/byte ဆိုရင်
Fee = 250 × 10 = 2500 satoshi (Bitcoin ရဲ့ အသေးဆုံးယူနစ်)
ဒီသင်္ချာညီမျှခြင်းတွေက cryptocurrency wallet တွေမှာ လုံခြုံမှုအတွက် အရေးပါပါတယ်။ Private key ကို လျှို့ဝှက်ထားပြီး public key နဲ့ wallet address တွေကိုပဲ အပြင်မှာ သုံးတာဟာ cryptography ရဲ့ အဓိက အချက်တစ်ခုဖြစ်ပါတယ်။
Original Article – https://medium.com/@minsithu_53495/crypto-wallets-and-maths-behind-them-62aae98684ee
Leave a Reply