dApp ဆိုတာ decentralized application (ဗဟိုထိန်းချုပ်မှု ကင်းမဲ့တဲ့ application) ကို ခေါ်ဆိုခြင်းဖြစ်ပါတယ်။ ဒီ application တွေဟာ blockchain network ပေါ်မှာ မှီခိုအလုပ်လုပ်ပြီး smart contract တွေကို အသုံးပြုကာ ဆက်သွယ်ဆောင်ရွက်ကြပါတယ်။ Traditional application တွေလို ဗဟိုဆာဗာတွေပေါ်မှာ မှီခိုအားထားနေစရာမလိုပဲ distributed network ပေါ်မှာ လည်ပတ်နိုင်တဲ့ စွမ်းရည်ရှိပါတယ်။
dApp တွေရဲ့ အဓိကအားသာချက်တွေထဲမှာ decentralization၊ transparency နဲ့ immutability တို့ ပါဝင်ပါတယ်။ Decentralization ကြောင့် single point of failure မရှိတာကြောင့် ပိုပြီးစိတ်ချလို့ရပါတယ်။ Transparency ဆိုတာကတော့ လုပ်ဆောင်ချက်တွေအားလုံးကို blockchain ပေါ်မှာ သွားရောက်အတည်ပြုခြင်းလုပ်နိုင်ပါတယ်။ Immutability ကတော့ blockchain ပေါ်က မှတ်တမ်းတင်ပြီးသား data တွေကို ဆိုလိုခြင်းဖြစ်ပါတယ်။
dApp တွေကို Ethereum လို blockchain platform တွေပေါ်မှာ develop လုပ်ရတဲ့အခါ Solidity လို smart contract programming language တွေကို အသုံးပြုရပါတယ်။ Frontend ပိုင်းမှာတော့ Web3.js လို library တွေကို သုံးပြီး user interface ကို ဖန်တီးကြပါတယ်။ ဒီ library တွေက blockchain နဲ့ ချိတ်ဆက်ဖို့အတွက် လိုအပ်တဲ့ function တွေကို ပေးထားပါတယ်။
Traditional application တွေနဲ့ မတူတာက dApp တွေမှာ backend server မလိုအပ်ပါဘူး။ အဲ့ဒီအစား smart contract တွေက business logic တွေကိုလုပ်ပေးပြီး blockchain network က data storage အနေနဲ့ အလုပ်လုပ်ပေးပါတယ်။ ဒါ့အပြင် cryptocurrency တွေကိုလည်း ငွေပေးချေမှုစနစ်အနေနဲ့ အသုံးပြုနိုင်ပါတယ်။
dApp တွေကို DeFi (Decentralized Finance)၊ NFT marketplace၊ decentralized exchange စတဲ့ use case တွေမှာ အသုံးများပါတယ်။
Uniswap လို decentralized exchange တွေဟာ smart contract တွေကိုသုံးပြီး cryptocurrency တွေကို လဲလှယ်ရောင်းဝယ်နိုင်အောင် စီစဉ်ပေးထားပါတယ်။ OpenSea လို NFT marketplace တွေကလည်း digital asset တွေကို blockchain ပေါ်မှာ ရောင်းဝယ်နိုင်အောင် ဆောင်ရွက်ပေးပါတယ်။
Gaming ဘက်မှာတော့ Axie Infinity လို blockchain game တွေမှာ ကစားသမားတွေက ဂိမ်းထဲက item တွေကို NFT အနေနဲ့ ပိုင်ဆိုင်နိုင်ပြီး ရောင်းဝယ်နိုင်ပါတယ်။ Play-to-earn model ကို အသုံးပြုထားတဲ့အတွက် ကစားသူတွေအနေနဲ့ ဂိမ်းကစားရင်း cryptocurrency တွေ ရှာဖွေနိုင်ပါတယ်။
နည်းပညာဆိုင်ရာ
dApp တစ်ခုရဲ့ အခြေခံ architecture မှာ အဓိက layer သုံးခု ပါဝင်ပါတယ်။ ပထမဆုံး layer က smart contract layer ဖြစ်ပါတယ်။ ဒီ layer မှာ business logic တွေအားလုံးကို Solidity သို့မဟုတ် Vyper လို programming language တွေနဲ့ ရေးသားထားပါတယ်။ Smart contract တွေကို compile လုပ်တဲ့အခါ Ethereum Virtual Machine (EVM) bytecode အဖြစ် ပြောင်းလဲသွားပြီး blockchain ပေါ်မှာ deploy လုပ်လို့ရပါတယ်။
ဒုတိယ layer ကတော့ blockchain network layer ပဲ ဖြစ်ပါတယ်။ ဒီ layer က smart contract တွေရဲ့ state ကို သိမ်းဆည်းပေးပြီး transaction တွေကို ကိုင်တွယ်ပေးပါတယ်။ Ethereum မှာဆိုရင် PoS (Proof of Stake) consensus mechanism ကို သုံးပြီး network security ကို ထိန်းသိမ်းထားပါတယ်။ Transaction တစ်ခု အတည်ပြုဖို့အတွက် validator တွေက block တွေကို verify လုပ်ရပါတယ်။
တတိယ layer ကတော့ frontend layer ဖြစ်ပါတယ်။ ဒီ layer မှာ React သို့မဟုတ် Vue.js လို framework တွေနဲ့ user interface ကို တည်ဆောက်ထားပြီး Web3.js သို့မဟုတ် ethers.js လို library တွေနဲ့ blockchain ကို ချိတ်ဆက်ထားပါတယ်။ MetaMask လို wallet တွေနဲ့ ပေါင်းစည်းနိုင်တဲ့အတွက် အသုံးပြုသူတွေအနေနဲ့ transaction တွေကို လွယ်ကူစွာ ဆောင်ရွက်နိုင်ပါတယ်။
Smart contract တွေကို develop လုပ်တဲ့အခါ security အတွက် အထူးဂရုစိုက်ရပါတယ်။ Re-entrancy attack၊ integer overflow၊ access control issue စတဲ့ vulnerability တွေကို ရှောင်ရှားနိုင်ဖို့ OpenZeppelin လို security-audited library တွေကို အသုံးပြုသင့်ပါတယ်။ ဒါ့အပြင် Slither၊ Mythril လို static analysis tool တွေကိုလည်း သုံးကြပါတယ်။
Testing အပိုင်းမှာလည်း unit test တွေ၊ integration test တွေကို သေချာရေးသားဖို့ လိုအပ်ပါတယ်။ Hardhat သို့မဟုတ် Truffle လို development framework တွေက testing environment တွေကို ပေးထားပါတယ်။ Local blockchain network တွေမှာ test လုပ်ကိုလုပ်ရပါတယ်။
Performance optimization အတွက် gas optimization ကို အထူးဂရုစိုက်ရပါတယ်။ Storage variable တွေကို အသုံးပြုတဲ့အခါ memory နဲ့ storage ကို သင့်တော်သလို ရွေးချယ်သုံးစွဲရပါတယ်။ Loop တွေကို လျှော့ချဖို့က အဓိကပါ။ Ethereum လို blockchain မျိုးပေါ်မှာဆိုရင် gas သုံးစွဲခမြင့်တဲ့အတွက်ကြောင့် တတ်နိုင်သမျှ gas သုံးစွဲမှုနည်းအောင် smart contract ကို ရေးသားထားဖို့လိုအပ်ပါတယ်။
Interoperability အတွက် smart contract တွေမှာ standard interface တွေကို implement လုပ်သင့်ပါတယ်။ token contract တွေအတွက် ERC-20၊ ERC-721 လို standard တွေကို လိုက်နာရပါတယ်။ ဒါမှသာ အခြား dApp တွေနဲ့ အလွယ်တကူပေါင်းစည်းဆက်သွယ်မှုလုပ်နိုင်မှာ ဖြစ်ပါတယ်။
Data storage အတွက် on-chain နဲ့ off-chain solution နှစ်မျိုးလုံးကို ထည့်သွင်းစဉ်းစားရပါတယ်။ ပမာဏများတဲ့ data တွေကို blockchain ပေါ်မှာ တိုက်ရိုက် သိမ်းဆည်းတာထက် IPFS လို decentralized storage တွေကို အသုံးပြုတာက ပိုပြီး စရိတ်စက သက်သာပါတယ်။
ဒီလိုနည်းပညာပိုင်းဆိုင်ရာ အချက်အလက်တွေကို နားလည်ထားမှသာ လုံခြုံပြီး efficient ဖြစ်တဲ့ dApp တွေကို တည်ဆောက်နိုင်မှာ ဖြစ်ပါတယ်။ Blockchain technology က ဆက်လက်ပြီး တိုးတက်နေတဲ့အတွက် နည်းပညာပိုင်းဆိုင်ရာ အသိပညာတွေကိုလည်း အမြဲ update လုပ်နေဖို့ လိုအပ်ပါတယ်။
Original Article – https://medium.com/@minsithu_53495/dapp-decentralized-application-d5259d161009
Leave a Reply