blockchain ရှိ ဒစ်ဂျစ်တယ်လက်မှတ်ကို အခြေခံ၍ ကျပန်း Oracle

စိတ်ကူးမှသည် အကောင်အထည်ဖော်မှုအထိ- ကျွန်ုပ်တို့သည် အဆုံးအဖြတ်ရှိစေရန်အတွက် လက်ရှိ elliptic curve ဒစ်ဂျစ်တယ်လက်မှတ်အစီအစဉ်ကို မွမ်းမံပြင်ဆင်ပြီး ၎င်းကိုအခြေခံ၍ blockchain အတွင်း pseudo-random နံပါတ်များရရှိခြင်းအတွက် လုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးပါသည်။

blockchain ရှိ ဒစ်ဂျစ်တယ်လက်မှတ်ကို အခြေခံ၍ ကျပန်း Oracle

စိတ်ကူး

2018 ၏ဆောင်းဦးရာသီတွင်, Waves blockchain ပါဝင်သည်။ ပထမဆုံး စမတ်စာချုပ်များကို အသက်ဝင်စေပါသည်။, ရယူရန်ဖြစ်နိုင်ခြေနှင့် ပတ်သက်၍ ချက်ချင်းမေးခွန်းပေါ်လာသည်။ လျှို့ဝှက်နံပါတ်များသင်ယုံကြည်နိုင်ပါသည်။

ဤမေးခွန်းအတွက် စိတ်ရှုပ်ထွေးနေကာ နောက်ဆုံးတွင် ကျွန်ုပ်သည် နိဂုံးချုပ်လာသည်- မည်သည့် blockchain သည် ဆဲလ်တစ်ခုဖြစ်သည်၊ ပိတ်ထားသောစနစ်တွင် ယုံကြည်စိတ်ချရသော entropy အရင်းအမြစ်ကို ရယူရန် မဖြစ်နိုင်ပေ။

ဒါပေမယ့် ကျွန်တော် အကြံတစ်ခုတော့ ကြိုက်တုန်းပဲ၊ if ကျပန်း oracle အသုံးပြုသူဒေတာကို အဆုံးအဖြတ်ပေးသည့် အယ်လဂိုရီသမ်တစ်ခုဖြင့် လက်မှတ်ထိုးမည်၊ ထို့နောက် အသုံးပြုသူသည် အများသူငှာသော့ကို အသုံးပြု၍ ထိုသို့သော လက်မှတ်ကို အမြဲတမ်းအတည်ပြုနိုင်မည်ဖြစ်ပြီး ရလဒ်တန်ဖိုးမှာ ထူးခြားကြောင်း သေချာစေမည်ဖြစ်သည်။ Oracle သည် မည်မျှပင် ခက်ခဲစေကာမူ မည်သည့်အရာကိုမျှ ပြောင်းလဲ၍မရနိုင်ပါ၊ အယ်လဂိုရီသမ်သည် မရှင်းလင်းသောရလဒ်ကို ထုတ်ပေးပါသည်။ အခြေခံအားဖြင့်၊ အသုံးပြုသူသည် ရလဒ်ကို မှတ်တမ်းတင်သော်လည်း oracle မှ မထုတ်ပြန်မချင်း ၎င်းကို မသိပါ။ သင် oracle ကို လုံးဝမယုံနိုင်သော်လည်း ၎င်း၏အလုပ်၏ရလဒ်ကို စစ်ဆေးပါ။ ထို့နောက်၊ အောင်မြင်သောစိစစ်မှုတွင်၊ ထိုသို့သောလက်မှတ်သည် pseudorandom နံပါတ်အတွက် entropy အရင်းအမြစ်တစ်ခုဟု ယူဆနိုင်သည်။

Waves blockchain ပလပ်ဖောင်းသည် လက်မှတ်အစီအစဉ်ကို အသုံးပြုသည်။ EdDSA option ကို Ed25519. ဤအစီအစဥ်တွင်၊ လက်မှတ်တွင် R သည် ကျပန်းတန်ဖိုးပေါ်တွင်မူတည်သည့် တန်ဖိုးများ R နှင့် S ပါ၀င်ပြီး S သည် မက်ဆေ့ချ်လက်မှတ်ထိုးထားသော၊ သီးသန့်သော့နှင့် R ကဲ့သို့တူညီသောကျပန်းနံပါတ်အပေါ်အခြေခံ၍ တွက်ချက်သည်။ တူညီသော မှီခိုမှုများအတွက် ထူးခြားသော မှီခိုမှု မရှိပါ။ သုံးစွဲသူ မက်ဆေ့ချ်အတွက် တရားဝင် လက်မှတ်များစွာ ရှိပါသည်။

၎င်း၏ သန့်ရှင်းသောပုံစံဖြင့်၊ ထိုသို့သော လက်မှတ်ကို အတိအကျသတ်မှတ်ခြင်းမဟုတ်သောကြောင့် ၎င်းကို pseudo-random နံပါတ်များ၏ရင်းမြစ်တစ်ခုအဖြစ် အသုံးမပြုနိုင်သောကြောင့်၊ ထို့ကြောင့်၊ ထို့ကြောင့်၊ oracle မှ အလွယ်တကူ ခြယ်လှယ်နိုင်သည်။

သို့သော် ထွက်ပေါ်လာသည့်အတိုင်း၊ ၎င်းကို အမှန်တကယ် အဆုံးအဖြတ်ပေးနိုင်သည် ။

ငါမျှော်လင့်ချက်ကြီးကြီးမားမားရှိခဲ့တယ်။ အတည်ပြုနိုင်သော ကျပန်းလုပ်ဆောင်မှု (VRF)ဒါပေမယ့် ဟာ့ဒ်ဝဲကို လေ့လာပြီးနောက်မှာတော့ ဒီရွေးချယ်မှုကို စွန့်လွှတ်ခဲ့ရပါတယ်။ VRF သည် လက်မှတ်၏ အဆုံးအဖြတ်ပေးသော ဗားရှင်းနှင့် ၎င်း၏သက်သေကို ပေးဆောင်သော်လည်း oracle ကို ခြယ်လှယ်ရန်အတွက် black hole ကိုဖွင့်ပေးသည့် algorithm တွင် ထူးဆန်းသောနေရာတစ်ခု ရှိပါသည်။ ပြောရရင် k ရဲ့တန်ဖိုးကို တွက်ချက်တဲ့အခါ၊အပိုင်း ၄.၄) အသုံးပြုသူမှ မသိရသေးသော သီးသန့်သော့ကို အသုံးပြုထားသည်၊ ဆိုလိုသည်မှာ အသုံးပြုသူသည် k ၏ တွက်ချက်မှုမှန်ကန်မှုကို မစစ်ဆေးနိုင်ဘဲ ဆိုလိုသည်မှာ oracle သည် လိုအပ်သည့် k ၏ မည်သည့်တန်ဖိုးကိုမဆို အသုံးပြုနိုင်ပြီး တစ်ချိန်တည်းတွင် စာပေးစာယူဒေတာဘေ့စ်ကို ထိန်းသိမ်းထားနိုင်သည်။ VRF ၏အမြင်မှမှန်ကန်သောရလဒ်ကိုအမြဲပြန်လည်တွက်ချက်နိုင်စေရန်အတွက် k နှင့် လက်မှတ်ရေးထိုးထားသောဒေတာ။ လျှို့ဝှက်သော့ကို မဖော်ပြဘဲ VRF ကို အခြေခံထားသော ပုံတစ်ပုံကို သင်တွေ့ပါက၊ သင်သည် စမတ်ကျနိုင်သည်- သော့ကို ထုတ်ပြရန် လိုအပ်ကြောင်း ညွှန်ပြရန် သို့မဟုတ် k ၏ တွက်ချက်မှုမှ ဖယ်ထုတ်ရန် လိုအပ်သည်၊ ထို့နောက် ပထမဆုံး လက်မှတ်ပေါ်လာသောအခါတွင် သီးသန့်သော့သည် သူ့အလိုလို ပေါ်လာလိမ့်မည် . ယေဘူယျအားဖြင့်၊ ဖော်ပြထားပြီးဖြစ်သည့်အတိုင်း ကျပန်း oracle အတွက် ထူးဆန်းသောအစီအစဥ်တစ်ခုဖြစ်သည်။

အနည်းငယ်စဉ်းစားပြီး ပြည်တွင်းလေ့လာသုံးသပ်သူများ၏ ပံ့ပိုးကူညီမှုကို စာရင်းသွင်းပြီးနောက် VECRO အလုပ်အစီအစဉ်ကို မွေးဖွားလာခဲ့သည်။

VECRO သည် Verifiable Elliptic Curve Random Oracle ၏ အတိုကောက်ဖြစ်ပြီး ရုရှားဘာသာဖြင့် elliptic မျဉ်းကွေးများပေါ်ရှိ အတည်ပြုနိုင်သော ကျပန်း oracle ကို ဆိုလိုသည်။

အရာအားလုံးသည် အတော်လေးရိုးရှင်းသွားသည်; အဆုံးအဖြတ်ခံယူရန်၊ လက်မှတ်ရေးထိုးရမည့်မက်ဆေ့ချ်မပေါ်မီ R ၏တန်ဖိုးကို သင်ပြုပြင်ရန်လိုအပ်သည်။ R သည် ကတိသစ္စာပြုပြီး လက်မှတ်ထိုးထားသည့် မက်ဆေ့ဂျ်၏ တစ်စိတ်တစ်ပိုင်းဖြစ်ပါက၊ မက်ဆေ့ချ်တွင် R ကတိသစ္စာပြုကြောင်း သေချာစေသော၊ S ၏တန်ဖိုးကို အသုံးပြုသူ၏မက်ဆေ့ချ်မှ ထူးထူးခြားခြားဆုံးဖြတ်ပြီး ထို့ကြောင့် လိမ်လည်နံပါတ်များအတွက် အရင်းအမြစ်အဖြစ် အသုံးပြုနိုင်သည်။

ထိုသို့သောအစီအစဥ်တွင်၊ R ကိုမည်ကဲ့သို့ပြင်ဆင်ရသည်မှာအရေးမကြီးပါ၊ ၎င်းသည် oracle ၏တာဝန်ဖြစ်သည်။ S ကို အသုံးပြုသူမှ သီးခြားသတ်မှတ်ထားရန် အရေးကြီးသော်လည်း oracle မှ မထုတ်ပြန်မချင်း ၎င်း၏တန်ဖိုးကို မသိရသေးပါ။ ငါတို့အလိုရှိသမျှ။

ပုံသေ R အကြောင်းပြောရင် အဲဒါကို သတိပြုပါ။ R ကို ပြန်သုံးတယ်။ အမျိုးမျိုးသော မက်ဆေ့ချ်များကို လက်မှတ်ရေးထိုးသောအခါ၊ ၎င်းသည် EdDSA အစီအစဉ်တွင် သီးသန့်သော့ကို ထူးထူးခြားခြား ဖော်ပြသည်။ မတူညီသောအသုံးပြုသူမက်ဆေ့ချ်များကိုလက်မှတ်ထိုးရန် R ကိုပြန်သုံးနိုင်ခြေကိုဖယ်ရှားပစ်ရန် oracle ပိုင်ရှင်အတွက် အလွန်အရေးကြီးပါသည်။ ဆိုလိုသည်မှာ မည်သည့် ခြယ်လှယ်မှု သို့မဟုတ် ကြံစည်မှုဖြင့်မဆို၊ oracle သည် ၎င်း၏ လျှို့ဝှက်သော့ကို အမြဲတမ်း ဆုံးရှုံးနိုင်ခြေရှိသည်။

စုစုပေါင်း၊ oracle သည် သုံးစွဲသူများအား လုပ်ဆောင်ချက်နှစ်ခုကို ပေးဆောင်ရမည်- ကနဦးသတ်မှတ်ခြင်း၊ တန်ဖိုး R နှင့် S တန်ဖိုးကို ပြန်ပေးသည့် လက်မှတ်တို့ကို ပြင်ဆင်ပေးသည့် ကနဦးလုပ်ဆောင်မှု နှစ်ခုဖြစ်သည်။ ဤအခြေအနေတွင်၊ အတွဲ R၊ S သည် ပုံသေပါရှိသော အသုံးပြုသူမက်ဆေ့ချ်တစ်ခု၏ ပုံမှန်အတည်ပြုနိုင်သော လက်မှတ်ဖြစ်သည်။ တန်ဖိုး R နှင့် မတရားသော သုံးစွဲသူဒေတာ။

blockchain အတွက်ဤအစီအစဥ်သည်သာမန်ထက်ဘာမှမပိုကြောင်းစောဒကတက်နိုင်သည်။ commit-expand စီမံချက်. အမှန်ကတော့ ဟုတ်တယ်၊ ဒါက သူမပဲ။ ဒါပေမယ့် များစွာသော nuances တွေရှိပါတယ်။ ပထမဦးစွာ၊ oracle သည် လည်ပတ်မှုအားလုံးတွင် တူညီသောသော့ဖြင့် အမြဲအလုပ်လုပ်သည်၊ ဥပမာ၊ စာချုပ်များတွင် အသုံးပြုရန် အဆင်ပြေသည်။ ဒုတိယအနေဖြင့်၊ မှားယွင်းစွာပြုမူပါက oracle သည် သီးသန့်သော့ကို လွဲမှားစွာလုပ်ဆောင်ပါက ဆုံးရှုံးနိုင်ချေရှိပါသည်၊ ဥပမာအားဖြင့်၊ oracle သည် သင့်အား ရလဒ်၏နမူနာများပြုလုပ်နိုင်သည်၊ ထို့နောက် သီးသန့်သော့ကိုရှာဖွေပြီး အပြည့်အဝရရှိရန် စမ်းသပ်မှုနှစ်ခုသာပြုလုပ်ရန် လုံလောက်ပါသည်။ ပိုက်ဆံအိတ်သို့ဝင်ရောက်ပါ။ တတိယအချက်မှာ၊ blockchain တွင်မူရင်းအတည်ပြုနိုင်ပြီးကျပန်း၏ရင်းမြစ်တစ်ခုဖြစ်သောလက်မှတ်သည်လှပသည်။

ခြောက်လလောက်ကြာအောင် အကောင်အထည်ဖော်ဖို့ စိတ်ကူးက ငါ့ခေါင်းထဲမှာ တအုံနွေးနွေးဖြစ်ပြီး နောက်ဆုံးတော့ စေ့ဆော်မှုပုံစံပေါ်လာတဲ့အထိ၊ Waves Labs မှ ပေးအပ်သည်။. ကြီးမားသော ထောက်ပံ့ငွေဖြင့် ကြီးမားသော တာဝန် ရှိလာသောကြောင့် ပရောဂျက်သည် ထိုနေရာတွင် ရှိနေလိမ့်မည်။

အကောင်အထည်ဖော်မှု

ဒီတော့ ဒီပရောဂျက်မှာ VECRO ကို အကောင်အထည်ဖော်ခဲ့သည်။ အသုံးပြုသူနှင့် oracle အကြား လွှဲပြောင်းလွှဲပြောင်းမှုများကို အသုံးပြု၍ တောင်းဆိုချက်တုံ့ပြန်မှုမုဒ်ရှိ Waves blockchain တွင်။ တစ်ချိန်တည်းတွင်၊ အထက်ဖော်ပြပါ ယုတ္တိနှင့်အညီ အလုပ်အား တင်းကြပ်စွာ ထိန်းချုပ်သည့် oracle အကောင့်တွင် script တစ်ခုကို ထည့်သွင်းထားသည်။ Oracle အရောင်းအ၀ယ်များကို စိစစ်ပြီး သုံးစွဲသူ အပြန်အလှန်ဆက်သွယ်မှု ကွင်းဆက်တစ်ခုလုံးကို ပြန်လည်ရရှိမည်ဖြစ်သည်။ ငွေပေးငွေယူလေးခုစလုံးသည် နောက်ဆုံးတန်ဖိုးကို အတည်ပြုခြင်းတွင် ပါဝင်ပါသည်၊ စမတ်စာချုပ်သည် ၎င်းတို့အား တင်းကျပ်သော အတည်ပြုချည်မျှင်တစ်ခုဖြင့် ပေါင်းစပ်ထားပြီး တန်ဖိုးအားလုံးကို အဆင့်ဆင့်စစ်ဆေးကာ မည်သည့်ခြယ်လှယ်မှုအတွက် နေရာချန်ထားခြင်းမရှိပါ။

တစ်ဖန် ၎င်းကို ဘေးဖယ်ထား၍ ပိုမိုရှင်းလင်းစေပါသည်။ oracle သည် အဆိုပြုထားသော အစီအစဉ်အတိုင်း အလုပ်မလုပ်ပါ။ ၎င်း၏လုပ်ငန်းကို တည်ထောင်သူမှ blockchain အဆင့်တွင် လုံးဝထိန်းချုပ်ထားသည်။ တင်းတင်းကြပ်ကြပ်မတ်မတ်စာချုပ်နှင့်အတူ. ဘယ်ဘက်သို့ ခြေတစ်လှမ်း လှမ်းလိုက်သည်နှင့် အရောင်းအဝယ်က ရှင်းသွားမည်မဟုတ်ပေ။ ထို့ကြောင့်၊ ငွေပေးငွေယူတစ်ခုသည် blockchain တွင်ပါ ၀ င်ပါက၊ အသုံးပြုသူသည်ဘာမှမစစ်ဆေးရန်မလိုအပ်ပါ၊ ရာနှင့်ချီသော network node များသည်သူ့အတွက်အရာအားလုံးကိုစစ်ဆေးပြီးဖြစ်သည်။

လောလောဆယ်တွင်၊ Waves mainnet ပေါ်တွင် VECRO တစ်ခုအလုပ်လုပ်နေသည် (သင်ကိုယ်တိုင်လုပ်ဆောင်နိုင်သည်၊ ၎င်းသည်မခက်ခဲပါ၊ configuration ဥပမာကိုကြည့်ပါ။) လက်ရှိကုဒ်သည် PHP (on WavesKitဘယ်အကြောင်း၊ စောစောက ပြောဖူးတယ်။).

oracle ဝန်ဆောင်မှုကို အသုံးပြုရန်အတွက် သင်သည် လိုအပ်သည်-

  • R ကိုပြင်ဆင်ပါ
    • oracle alias init@vecr သို့ အနည်းဆုံး 0.005 Waves ပေးပို့ပါ။
    • oracle မှအသုံးပြုသူထံသို့ 1 R-vecr တိုကင်လွှဲပြောင်းခြင်းတွင် ပူးတွဲပါအကွက်တွင် R-ကုဒ်ကို လက်ခံရယူပါ။
  • လက်မှတ်ရယူပါ။
    • oracle alias random@vecr သို့ အနည်းဆုံး 0.005 Waves ပေးပို့ပြီး ပူးတွဲပါဖိုင်အကွက်တွင် ယခင်က ရရှိထားသော R-ကုဒ်နှင့် အပိုအသုံးပြုသူဒေတာတို့ကိုလည်း ညွှန်ပြရပါမည်။
    • oracle မှ သုံးစွဲသူထံ 1 S-vecr တိုကင်ကို လွှဲပြောင်းရာတွင် ပူးတွဲပါအကွက်တွင် S-ကုဒ်ကို လက်ခံရယူပါ။
  • S-code ကို pseudo-random နံပါတ်၏ရင်းမြစ်အဖြစ် အသုံးပြုပါ။

လက်ရှိအကောင်အထည်ဖော်မှု၏ ကွဲလွဲချက်များ-

  • oracle သို့ ပေးပို့ထားသော လှိုင်းများကို အများဆုံး 1 Waves အထိ သုံးစွဲသူထံ ပြန်ပေးငွေအတွက် ကော်မရှင်အဖြစ် အသုံးပြုပါသည်။
  • R-code သည် 'R' စာလုံး၏ byte တစ်ခုနှင့် 32-byte base58-encoded R တန်ဖိုး၊
  • ပူးတွဲပါရှိ R-ကုဒ်သည် ပထမဖြစ်သင့်သည်၊ အသုံးပြုသူဒေတာသည် R-ကုဒ်ပြီးနောက် ထွက်ပေါ်လာသည်။
  • S-code သည် 'S' အက္ခရာ၏ byte တစ်ခုနှင့် S ၏ 32-byte base58-encoded value၊
  • S သည် modulo ပိုင်းခြားခြင်း၏ရလဒ်ဖြစ်သောကြောင့် 256-bit pseudorandom နံပါတ်အပြည့်အစုံအဖြစ် S ကို သင်အသုံးမပြုနိုင်ပါ။
  • အရိုးရှင်းဆုံးရွေးချယ်မှုမှာ S-code hash ကို pseudo-random နံပါတ်အဖြစ် အသုံးပြုရန်ဖြစ်သည်။

S-code လက်ခံခြင်း၏ ဥပမာ-

နည်းပညာပိုင်းအရ ကြည့်ပါက၊ oracle သည် အလုပ်အတွက် လုံးဝအဆင်သင့်ဖြစ်ပြီ၊ သင်သည် ၎င်းကို ဘေးကင်းစွာ အသုံးပြုနိုင်သည်။ ပျမ်းမျှအသုံးပြုသူ၏အသုံးပြုမှုအမြင်အရ၊ အဆင်ပြေသောဂရပ်ဖစ်အင်တာဖေ့စ်မရှိခြင်း၊ ၎င်းကိုစောင့်ဆိုင်းရမည်ဖြစ်ပါသည်။

မေးခွန်းလေးတွေ ဖြေပြီး မှတ်ချက်တွေ လက်ခံပေးလို့ ဝမ်းသာပါတယ် ကျေးဇူးပါ။

source: www.habr.com

မှတ်ချက် Add