వేవ్స్ బ్లాక్‌చెయిన్‌లో వికేంద్రీకృత, ఓపెన్ సోర్స్ అనుబంధ ప్రోగ్రామ్

వేవ్స్ బ్లాక్‌చెయిన్‌పై వికేంద్రీకృత అనుబంధ ప్రోగ్రామ్, బెటెక్స్ బృందం ద్వారా వేవ్స్ ల్యాబ్స్ గ్రాంట్‌లో భాగంగా అమలు చేయబడింది.

పోస్ట్ ప్రకటన కాదు! ప్రోగ్రామ్ ఓపెన్ సోర్స్, దాని ఉపయోగం మరియు పంపిణీ ఉచితం. ప్రోగ్రామ్ యొక్క ఉపయోగం dApp అప్లికేషన్‌ల అభివృద్ధిని ప్రేరేపిస్తుంది మరియు సాధారణంగా వికేంద్రీకరణను ప్రోత్సహిస్తుంది, ఇది ప్రతి ఇంటర్నెట్ వినియోగదారుకు ప్రయోజనం చేకూరుస్తుంది.

వేవ్స్ బ్లాక్‌చెయిన్‌లో వికేంద్రీకృత, ఓపెన్ సోర్స్ అనుబంధ ప్రోగ్రామ్

అనుబంధ ప్రోగ్రామ్‌ల కోసం సమర్పించబడిన dApp అనేది వాటి కార్యాచరణలో భాగంగా అనుబంధాన్ని కలిగి ఉన్న ప్రాజెక్ట్‌ల కోసం ఒక టెంప్లేట్. కోడ్‌ను కాపీ చేయడానికి టెంప్లేట్‌గా, లైబ్రరీగా లేదా సాంకేతిక అమలు కోసం ఆలోచనల సమితిగా ఉపయోగించవచ్చు.

ఫంక్షనాలిటీ పరంగా, ఇది రెఫరర్‌తో రిజిస్ట్రేషన్‌ని అమలు చేసే సాధారణ అనుబంధ వ్యవస్థ, రిఫరల్స్‌కు బహు-స్థాయి బహుమతులు మరియు సిస్టమ్‌లో నమోదు చేసుకోవడానికి ప్రేరణ (క్యాష్‌బ్యాక్). సిస్టమ్ ఒక “స్వచ్ఛమైన” dApp, అంటే వెబ్ అప్లికేషన్ దాని స్వంత బ్యాకెండ్, డేటాబేస్ మొదలైనవి లేకుండా నేరుగా బ్లాక్‌చెయిన్‌తో పరస్పర చర్య చేస్తుంది.

అనేక ఇతర ప్రాజెక్ట్‌లలో కూడా ఉపయోగపడే సాంకేతికతలు:

  • తక్షణ రీపేమెంట్‌తో స్మార్ట్ ఖాతాను అప్పుగా కాల్ చేయడం (కాల్ సమయంలో కాల్ కోసం చెల్లించడానికి ఖాతాలో టోకెన్‌లు లేవు, కానీ అవి కాల్ ఫలితంగా అక్కడ కనిపిస్తాయి).
  • PoW-captcha - స్మార్ట్ ఖాతా ఫంక్షన్‌లకు అధిక-ఫ్రీక్వెన్సీ ఆటోమేటెడ్ కాల్‌ల నుండి రక్షణ - captchaకి సారూప్యంగా ఉంటుంది, కానీ కంప్యూటింగ్ వనరుల వినియోగానికి రుజువు ద్వారా.
  • టెంప్లేట్ ఉపయోగించి డేటా కీల కోసం ప్రశ్న.

అప్లికేషన్ వీటిని కలిగి ఉంటుంది:

  • ride4dapps భాషలో స్మార్ట్ ఖాతా కోడ్ (ఇది ప్రణాళిక ప్రకారం, అనుబంధ కార్యాచరణను అమలు చేయాల్సిన ప్రధాన స్మార్ట్ ఖాతాలో విలీనం చేయబడింది);
  • వేవ్స్ నోడ్ రెస్ట్ APIపై నైరూప్య స్థాయిని అమలు చేసే js రేపర్;
  • vuejs ఫ్రేమ్‌వర్క్‌పై కోడ్, ఇది లైబ్రరీ మరియు RIDE కోడ్‌ని ఉపయోగించేందుకు ఉదాహరణ.

జాబితా చేయబడిన అన్ని లక్షణాలను వివరిద్దాం.

తక్షణ రీపేమెంట్‌తో రుణం కోసం స్మార్ట్ ఖాతాకు కాల్ చేస్తోంది

ఇన్వోక్‌స్క్రిప్ట్‌కి కాల్ చేయడానికి లావాదేవీని ప్రారంభించే ఖాతా నుండి రుసుము చెల్లించాలి. మీరు వారి ఖాతాలో నిర్దిష్ట మొత్తంలో WAVES టోకెన్‌లను కలిగి ఉన్న బ్లాక్‌చెయిన్ గీక్‌ల కోసం ప్రాజెక్ట్‌ను రూపొందిస్తున్నట్లయితే ఇది సమస్య కాదు, అయితే ఉత్పత్తి సాధారణ ప్రజల వినియోగాన్ని లక్ష్యంగా చేసుకుంటే, ఇది తీవ్రమైన సమస్యగా మారుతుంది. అన్నింటికంటే, వినియోగదారు తప్పనిసరిగా WAVES టోకెన్‌లను (లేదా లావాదేవీల కోసం చెల్లించడానికి ఉపయోగించే మరొక సరిఅయిన ఆస్తి) కొనుగోలు చేయడంలో శ్రద్ధ వహించాలి, ఇది ప్రాజెక్ట్‌లోకి ప్రవేశించడానికి ఇప్పటికే గణనీయమైన అవరోధాన్ని పెంచుతుంది. మా సిస్టమ్ నుండి లిక్విడ్ అసెట్‌ను పంప్ చేయడానికి ఆటోమేటెడ్ సిస్టమ్‌లు సృష్టించబడినప్పుడు లావాదేవీల కోసం చెల్లించగలిగే మరియు వారి దుర్వినియోగ ప్రమాదాన్ని ఎదుర్కొనే వినియోగదారులకు మేము ఆస్తిని పంపిణీ చేయవచ్చు.

ఇన్వోక్‌స్క్రిప్ట్‌ను "గ్రహీత యొక్క వ్యయంతో" (స్క్రిప్ట్ ఇన్‌స్టాల్ చేయబడిన స్మార్ట్ ఖాతా) అని పిలవడం సాధ్యమైతే ఇది చాలా సౌకర్యవంతంగా ఉంటుంది మరియు అటువంటి అవకాశం స్పష్టంగా లేనప్పటికీ, ఉనికిలో ఉంది.

InvokeScript లోపల మీరు కాలర్ చిరునామాకు స్క్రిప్ట్‌ట్రాన్స్‌ఫర్ చేస్తే, అది ఖర్చు చేసిన రుసుము టోకెన్‌లను భర్తీ చేస్తుంది, కాల్ సమయంలో కాలింగ్ ఖాతాలో ఆస్తులు లేకపోయినా, అలాంటి కాల్ విజయవంతమవుతుంది. ఇది సాధ్యపడుతుంది, ఎందుకంటే లావాదేవీకి ముందు కాకుండా, లావాదేవీని పిలిచిన తర్వాత తగినంత టోకెన్‌ల కోసం తనిఖీ చేయబడుతుంది, తద్వారా లావాదేవీలు తక్షణ తిరిగి చెల్లింపుకు లోబడి క్రెడిట్‌పై చేయబడతాయి.

స్క్రిప్ట్ బదిలీ (i.కాలర్, i. ఫీజు, యూనిట్)

దిగువ కోడ్ స్మార్ట్ ఖాతా నిధులను ఉపయోగించి ఖర్చు చేసిన రుసుమును రీయింబర్స్ చేస్తుంది. ఈ ఫీచర్ యొక్క దుర్వినియోగం నుండి రక్షించడానికి, కాలర్ రుసుమును అవసరమైన ఆస్తిలో మరియు సహేతుకమైన పరిమితుల్లో ఖర్చు చేస్తారో లేదో తనిఖీ చేయడం అవసరం:

func checkFee(i:Invocation) = {
if i.fee > maxFee then throw(“unreasonable large fee”) else
if i.feeAssetId != unit then throw(“fee must be in WAVES”) else true
}

అలాగే, హానికరమైన మరియు తెలివిలేని నిధుల వ్యర్థాల నుండి రక్షించడానికి, ఆటోమేటిక్ కాల్ ప్రొటెక్షన్ (PoW-captcha) అవసరం.

PoW-captcha

ప్రూఫ్-ఆఫ్-వర్క్ క్యాప్చా యొక్క ఆలోచన కొత్తది కాదు మరియు WAVES ఆధారంగా అమలు చేయబడిన వాటితో సహా వివిధ ప్రాజెక్ట్‌లలో ఇప్పటికే అమలు చేయబడింది. ఆలోచన ఏమిటంటే, మా ప్రాజెక్ట్ యొక్క వనరులను వినియోగించే చర్యను నిర్వహించడానికి, కాలర్ దాని స్వంత వనరులను కూడా ఖర్చు చేయాలి, ఇది వనరుల క్షీణత దాడిని చాలా ఖరీదైనదిగా చేస్తుంది. లావాదేవీని పంపినవారు PoW సమస్యను పరిష్కరించారని చాలా సులభమైన మరియు తక్కువ ధర ధృవీకరణ కోసం, లావాదేవీ ID తనిఖీ ఉంది:

తీసుకుంటే(toBase58String(i.transactionId), 3) != “123” ఆపై త్రో (“పని విఫలమైంది”) వేరే

లావాదేవీని నిర్వహించడానికి, కాలర్ అటువంటి పారామితులను తప్పక ఎంచుకోవాలి, తద్వారా దాని బేస్ 58 కోడ్ (ఐడి) 123 సంఖ్యలతో ప్రారంభమవుతుంది, ఇది సగటున రెండు పదుల సెకన్ల ప్రాసెసర్ సమయానికి అనుగుణంగా ఉంటుంది మరియు సాధారణంగా మా పనికి సహేతుకమైనది. సరళమైన లేదా మరింత సంక్లిష్టమైన PoW అవసరమైతే, ఆ పనిని స్పష్టమైన మార్గంలో సులభంగా సవరించవచ్చు.

టెంప్లేట్ ఉపయోగించి డేటా కీల కోసం ప్రశ్న

బ్లాక్‌చెయిన్‌ను డేటాబేస్‌గా ఉపయోగించడానికి, టెంప్లేట్‌ల ఆధారంగా డేటాబేస్‌ను కీ-వాల్‌గా ప్రశ్నించడానికి API సాధనాలను కలిగి ఉండటం చాలా అవసరం. అటువంటి టూల్‌కిట్ జూలై 2019 ప్రారంభంలో పరామితి రూపంలో కనిపించింది ?సరిపోలుతుంది REST API అభ్యర్థన వద్ద /addresses/data?matches=regexp. ఇప్పుడు, మనం ఒక వెబ్ అప్లికేషన్ నుండి ఒకటి కంటే ఎక్కువ కీలను పొందవలసి ఉంటే మరియు అన్ని కీలను ఒకేసారి కాకుండా, కొంత సమూహం మాత్రమే పొందాలంటే, మనం కీ పేరుతో ఎంపిక చేసుకోవచ్చు. ఉదాహరణకు, ఈ ప్రాజెక్ట్‌లో, ఉపసంహరణ లావాదేవీలు ఇలా ఎన్‌కోడ్ చేయబడతాయి

withdraw_${userAddress}_${txid}

టెంప్లేట్‌ని ఉపయోగించి ఏదైనా ఇచ్చిన చిరునామా కోసం నిధుల ఉపసంహరణ కోసం లావాదేవీల జాబితాను పొందడానికి ఇది మిమ్మల్ని అనుమతిస్తుంది:

?matches=withdraw_${userAddress}_.*

ఇప్పుడు పూర్తి పరిష్కారం యొక్క భాగాలను చూద్దాం.

Vuejs కోడ్

కోడ్ నిజమైన ప్రాజెక్ట్‌కి దగ్గరగా పని చేసే డెమో. ఇది Waves Keeper ద్వారా లాగిన్‌ని అమలు చేస్తుంది మరియు affiliate.js లైబ్రరీతో పని చేస్తుంది, దీనితో ఇది వినియోగదారుని సిస్టమ్‌లో నమోదు చేస్తుంది, లావాదేవీ డేటాను ప్రశ్నిస్తుంది మరియు వినియోగదారు ఖాతాకు సంపాదించిన నిధులను ఉపసంహరించుకోవడానికి మిమ్మల్ని అనుమతిస్తుంది.

వేవ్స్ బ్లాక్‌చెయిన్‌లో వికేంద్రీకృత, ఓపెన్ సోర్స్ అనుబంధ ప్రోగ్రామ్

RIDE కోసం కోడ్

రిజిస్టర్, ఫండ్ మరియు విత్‌డ్రా ఫంక్షన్‌లను కలిగి ఉంటుంది.

రిజిస్టర్ ఫంక్షన్ సిస్టమ్‌లో వినియోగదారుని నమోదు చేస్తుంది. ఇది రెండు పారామితులను కలిగి ఉంది: రిఫరర్ (రిఫరర్ చిరునామా) మరియు ఉప్పు పరామితి, ఇది ఫంక్షన్ కోడ్‌లో ఉపయోగించబడదు, ఇది లావాదేవీ ఐడిని (PoW-captcha టాస్క్) ఎంచుకోవడానికి అవసరం.

ఫంక్షన్ (ఈ ప్రాజెక్ట్‌లోని ఇతర ఫంక్షన్‌ల వలె) డెట్ కాల్ టెక్నిక్‌ని ఉపయోగిస్తుంది, ఈ ఫంక్షన్‌కి కాల్ చేయడానికి రుసుము చెల్లింపుకు ఫైనాన్స్ చేయడం ఫంక్షన్ యొక్క ఫలితం. ఈ పరిష్కారానికి ధన్యవాదాలు, ఇప్పుడే వాలెట్‌ను సృష్టించిన వినియోగదారు వెంటనే సిస్టమ్‌తో పని చేయవచ్చు మరియు లావాదేవీ రుసుమును చెల్లించడానికి అనుమతించే ఆస్తిని కొనుగోలు చేయడం లేదా స్వీకరించడం గురించి ఆందోళన చెందాల్సిన అవసరం లేదు.

రిజిస్ట్రేషన్ ఫంక్షన్ యొక్క ఫలితం రెండు రికార్డులు:

${owner)_referer = referer
${referer}_referral_${owner} = owner

ఇది ఫార్వర్డ్ మరియు రివర్స్ సెర్చ్‌లను అనుమతిస్తుంది (ఇచ్చిన యూజర్ యొక్క రిఫరర్ మరియు ఇచ్చిన యూజర్ యొక్క అన్ని రిఫరల్స్).

ఫండ్ ఫంక్షన్ అనేది నిజమైన కార్యాచరణను అభివృద్ధి చేయడానికి ఒక టెంప్లేట్. దాని సమర్పించిన రూపంలో, ఇది లావాదేవీ ద్వారా బదిలీ చేయబడిన మొత్తం నిధులను తీసుకుంటుంది మరియు వాటిని "క్యాష్‌బ్యాక్" ఖాతా మరియు "మార్పు" ఖాతా (మునుపటికి పంపిణీ చేసినప్పుడు మిగిలి ఉన్నవన్నీ) స్థాయిలు 1, 2, 3 యొక్క రెఫరర్ల ఖాతాలకు పంపిణీ చేస్తుంది ఖాతాలు ఇక్కడకు వెళ్తాయి).

క్యాష్‌బ్యాక్ అనేది రిఫరల్ సిస్టమ్‌లో పాల్గొనడానికి తుది వినియోగదారుని ప్రేరేపించే సాధనం. రిఫరల్‌ల కోసం రివార్డ్‌ల మాదిరిగానే వినియోగదారు "క్యాష్‌బ్యాక్" రూపంలో సిస్టమ్ ద్వారా చెల్లించే కమీషన్ భాగాన్ని ఉపసంహరించుకోవచ్చు.

రిఫరల్ సిస్టమ్‌ను ఉపయోగిస్తున్నప్పుడు, ఫండ్ ఫంక్షన్‌ని సవరించాలి మరియు సిస్టమ్ పని చేసే స్మార్ట్ ఖాతా యొక్క ప్రధాన లాజిక్‌లో విలీనం చేయాలి. ఉదాహరణకు, చేసిన పందెం కోసం రిఫరల్ రివార్డ్ చెల్లించబడితే, ఫండ్ ఫంక్షన్ పందెం ఉంచబడిన లాజిక్‌లో నిర్మించబడాలి (లేదా రివార్డ్ చెల్లించే మరొక లక్ష్య చర్య చేయబడుతుంది). ఈ ఫంక్షన్‌లో మూడు స్థాయిల రెఫరల్ రివార్డ్‌లు కోడ్ చేయబడ్డాయి. మీరు ఎక్కువ లేదా తక్కువ స్థాయిలను చేయవలసి వస్తే, ఇది కోడ్‌లో కూడా సరిదిద్దబడుతుంది. రివార్డ్ శాతం గణించబడే కోడ్‌లోని level1-level3 స్థిరాంకాల ద్వారా సెట్ చేయబడింది; మొత్తం * స్థాయి / 1000, అంటే, విలువ 1 0,1%కి అనుగుణంగా ఉంటుంది (దీనిని కోడ్‌లో కూడా మార్చవచ్చు).

ఫంక్షన్‌కు కాల్ చేయడం ఖాతా బ్యాలెన్స్‌ని మారుస్తుంది మరియు ఫారమ్ యొక్క లాగింగ్ ప్రయోజనాల కోసం ఎంట్రీలను కూడా సృష్టిస్తుంది:

fund_address_txid = address:owner:inc:level:timestamp
Для получения timestamp (текущего времени) используется такая вот связка
func getTimestamp() = {
let block = extract(blockInfoByHeight(height))
toString(block.timestamp)
}

అంటే, లావాదేవీ సమయం అది ఉన్న బ్లాక్ యొక్క సమయం. లావాదేవీ నుండి టైమ్‌స్టాంప్‌ను ఉపయోగించడం కంటే ఇది మరింత నమ్మదగినది, ప్రత్యేకించి ఇది కాల్ చేయదగినది నుండి అందుబాటులో లేదు.
ఉపసంహరణ ఫంక్షన్ వినియోగదారు ఖాతాకు సేకరించబడిన అన్ని రివార్డ్‌లను ప్రదర్శిస్తుంది. లాగింగ్ ప్రయోజనాల కోసం ఎంట్రీలను సృష్టిస్తుంది:

# withdraw log: withdraw_user_txid=amount:timestamp

అప్లికేషన్

అప్లికేషన్ యొక్క ప్రధాన భాగం affiliate.js లైబ్రరీ, ఇది అనుబంధ డేటా మోడల్‌లు మరియు WAVES NODE REST API మధ్య వంతెన. ఫ్రేమ్‌వర్క్‌తో సంబంధం లేకుండా సంగ్రహణ స్థాయిని అమలు చేస్తుంది (ఏదైనా ఉపయోగించవచ్చు). సిస్టమ్‌లో వేవ్స్ కీపర్ ఇన్‌స్టాల్ చేయబడిందని సక్రియ విధులు (రిజిస్టర్, ఉపసంహరించుకోవడం) లైబ్రరీ స్వయంగా తనిఖీ చేయదు.

అమలు పద్ధతులు:

fetchReferralTransactions
fetchWithdrawTransactions
fetchMyBalance
fetchReferrals
fetchReferer
withdraw
register

పేర్ల నుండి పద్ధతుల యొక్క కార్యాచరణ స్పష్టంగా ఉంటుంది మరియు తిరిగి వచ్చిన డేటా కోడ్‌లో వివరించబడింది. రిజిస్టర్ ఫంక్షన్‌కు అదనపు వ్యాఖ్యలు అవసరం - ఇది లావాదేవీ ఐడిని ఎంచుకునే చక్రాన్ని ప్రారంభిస్తుంది, తద్వారా ఇది 123 వద్ద ప్రారంభమవుతుంది - ఇది పైన వివరించిన PoW-captcha, ఇది భారీ రిజిస్ట్రేషన్‌ల నుండి రక్షిస్తుంది. ఫంక్షన్ అవసరమైన ఐడితో లావాదేవీని కనుగొంటుంది, ఆపై దానిని వేవ్స్ కీపర్ ద్వారా సంతకం చేస్తుంది.

DEX అనుబంధ ప్రోగ్రామ్ ఇక్కడ అందుబాటులో ఉంది GitHub.com.

మూలం: www.habr.com

ఒక వ్యాఖ్యను జోడించండి