హలో అందరికీ!
ఇటీవల, వేవ్స్ ల్యాబ్స్
మేము DAO కేసును ఎంచుకున్నాము ఎందుకంటే
మేము ఒక సాధారణ ఉదాహరణతో ప్రారంభించాము
ఈ ఉదాహరణను విశ్లేషిద్దాం, పరికల్పనలను పరీక్షించండి మరియు కొన్ని విచిత్రాలను పరిశీలిద్దాం:
మాకు ఆలిస్ - dApp యజమానిని కలిగి ఉండండి
బూబ్ మరియు కూపర్ ఆలిస్ యొక్క భాగస్వాములు, ఆలిస్-BC DAO సహ వ్యవస్థాపకులు
నెలి ఒక వ్యాపార యజమానికి నిధులు కావాలి
బ్యాంక్ - టోకెన్లను పంపిణీ చేసే బ్యాంకు
స్టేజ్ 1. బ్యాలెన్స్లను ప్రారంభించడం
వేవ్స్ టెస్ట్ నెట్వర్క్లో టోకెన్లను స్వీకరించడానికి, మీరు సంప్రదించాలి
ఖాతా వివరాలను వెల్లడించడం ద్వారా IDEలో చిరునామాను కనుగొనవచ్చు.
బ్యాంక్ 10 వేవ్లను ఎంచుకోండి. వారు బ్లాక్ మరియు ట్రాన్సాక్షన్ ఎక్స్ప్లోరర్ ద్వారా వచ్చారని మేము తనిఖీ చేసిన తర్వాత:
ఇప్పుడు మిగిలిన పార్టిసిపెంట్లకు బ్యాంక్ నుండి టోకెన్లను పంపిణీ చేద్దాం. (గమనిక: వేవ్స్ నెట్వర్క్లోని అన్ని లావాదేవీలు ఉచితం కాదు, కాబట్టి లావాదేవీలు చేయడానికి పాల్గొనే వారందరికీ కనీస సానుకూల బ్యాలెన్స్ అవసరం).
1 వేవ్స్ = 100000000 యూనిట్లు (వేవ్లెట్స్) మొత్తాలు పూర్ణాంకం మాత్రమే కావచ్చు
0.01 వేవ్స్ (లావాదేవీ రుసుము) = 1000000
బ్యాంక్ -> [3 వేవ్స్] -> ఆలిస్, ట్రాన్స్ఫర్ట్రాన్సాక్షన్ ద్వారా (రకం: 4).
లావాదేవీలు సంతకం చేయబడిన env.SEED మా బ్యాంక్కు అనుగుణంగా ఉందో లేదో మేము తనిఖీ చేస్తాము:

మీకు సరిపోలే విత్తన పదబంధాలు లేకుంటే, ఖాతాల ట్యాబ్లో దానికి మారండి మరియు మళ్లీ తనిఖీ చేయండి.
ఆ తర్వాత, మేము 3 వేవ్స్ ఆలిస్ బదిలీపై లావాదేవీని సృష్టిస్తాము, ప్రకటిస్తాము మరియు సంతకం చేస్తాము.
మీరు env.accounts వేరియబుల్ ద్వారా ఆలిస్ డేటాను కూడా కనుగొనవచ్చు. నంబరింగ్ 0 నుండి ప్రారంభమవుతుంది, కాబట్టి ఆలిస్ env.accounts[1].
broadcast(transfer({recipient:address(env.accounts[1]), amount: 300000000, fee: 1000000}))
ఫలితాన్ని బ్రౌజర్లో కూడా గమనించవచ్చు, అమలు చేసిన వెంటనే దానికి లింక్ మాకు తిరిగి వస్తుంది
మేము ఆలిస్ యొక్క బ్యాలెన్స్ 3 వేవ్స్తో భర్తీ చేయబడిందని మరియు 10 - 3 - 0.01 = 0.699 బ్యాంక్ బ్యాలెన్స్లో ఉండేలా చూసుకుంటాము.
మేము బూబ్ మరియు కూపర్లను 3 వేవ్ల ద్వారా మరియు నెలి, క్సేనా మరియు మార్క్లను 0.2 వేవ్ల ద్వారా పంపుతాము.
(గమనిక: మేము ఒక అక్షరం పొరపాటు చేసాము మరియు నెలి 0.02 వేవ్లను పంపాము. జాగ్రత్తగా ఉండండి!)
broadcast(transfer({recipient:address(env.accounts[4]), amount: 20000000, fee: 1000000}))
పాల్గొనే వారందరి బ్యాలెన్స్లను భర్తీ చేసిన తర్వాత, మేము చూస్తాము:
దశ 2. dApp ఖాతాను సృష్టించండి
వికేంద్రీకృత అప్లికేషన్ యొక్క సృష్టికర్త మరియు యజమాని అలిస్ అని మేము అంగీకరించాము.
ఖాతాలలో, ముందుకు సాగి, దానిని SEEDగా సెట్ చేయండి మరియు env.SEED ఆలిస్తో సరిపోలుతుందో తనిఖీ చేయండి.
ఆలిస్ ఖాతాలో సాధ్యమైనంత సరళమైన స్క్రిప్ట్ (కాంట్రాక్ట్)ని ఇన్స్టాల్ చేయడానికి ప్రయత్నిద్దాం.
వేవ్స్లోని స్మార్ట్ పరిచయాలు కొన్ని షరతులలో కొన్ని రకాల అవుట్గోయింగ్ లావాదేవీలను అమలు చేయడానికి నిరోధించే లేదా అనుమతించే అంచనాలు. ఈ సందర్భంలో, ఆ పరిస్థితి ఎల్లప్పుడూ ఉంటుంది. కాంట్రాక్ట్ కోడ్ నిజం. మేము deploy() అని పిలుస్తాము.
సెట్స్క్రిప్ట్ లావాదేవీకి రుసుము 1400000/100000000 = 0.014 వేవ్లు. ఆలిస్ బ్యాలెన్స్లో 2.986 వేవ్లు మిగిలి ఉన్నాయి.
ఇప్పుడు వివరించిన ఆలిస్ ఖాతాలో మరింత క్లిష్టమైన స్మార్ట్ కాంట్రాక్ట్ లాజిక్ను ఇన్స్టాల్ చేయడానికి ప్రయత్నిద్దాం
Ride4Dapps ఇప్పుడు 2 కొత్త ఉల్లేఖన రకాలు ఉన్నాయి:
- @కాల్ చేయదగిన(i) — పరామితి iగా తీసుకుంటుంది, లావాదేవీకి కాల్ చేసిన/సంతకం చేసిన ఖాతా గురించి డేటా. ఇది dApp ఖాతా యొక్క స్థితిలో మార్పును నిర్ణయించే ఈ ఫంక్షన్ యొక్క ఫలితం. ఇతర ఖాతాలు ఈ ఉల్లేఖనంతో లావాదేవీలను సృష్టించగలవు మరియు ఫంక్షన్లను అమలు చేయగలవు మరియు dApp ఖాతా స్థితిని మార్చగలవు.
- @Verifier(tx) - లావాదేవీ tx పరామితితో లావాదేవీ వెరిఫైయర్. RIDE నుండి ప్రిడికేట్ల లాజిక్కు అనుగుణంగా ఉంటుంది. ఈ వ్యక్తీకరణలో మీరు dApp ఖాతాలో స్మార్ట్ ఒప్పందాల లాజిక్లో తదుపరి మార్పులను అనుమతించవచ్చు లేదా నిషేధించవచ్చు.
చేద్దాం dApp పాల్గొనే వారందరికీ సాధారణ వాలెట్గా ఖాతా.
ఖాతాలో ప్రస్తుతం ఏ కాంట్రాక్ట్ సక్రియంగా ఉందో తనిఖీ చేయడానికి, మీరు బ్లాక్ ఎక్స్ప్లోరర్లో స్మార్ట్ కాంట్రాక్ట్ బేస్64 కోడ్ను కాపీ చేసి, డీకంపైలర్ ద్వారా గుర్తించవచ్చు (
స్మార్ట్ కాంట్రాక్ట్ యొక్క లాజిక్ మేము ఆశించిన దానికి సరిపోలుతుందని మేము నిర్ధారించుకుంటాము.
ఆలిస్ బ్యాలెన్స్లో 2.972 వేవ్లు మిగిలి ఉన్నాయి.
ఈ dApp మెకానిజం ద్వారా సాధారణ నిధికి పాల్గొనేవారిలో ప్రతి ఒక్కరు ఎంత మొత్తంలో సహకరిస్తారో ట్రాక్ చేస్తుంది డేటా లావాదేవీ - డేటాఎంట్రీ(ప్రస్తుత కీ, కొత్తమొత్తం), కరెంట్కీ అనేది డిపాజిట్ ఫంక్షన్ని పిలిచే ఖాతా మరియు కొత్తఅమౌంట్ అనేది తిరిగి నింపబడిన బ్యాలెన్స్ విలువ.
బూబ్ మరియు కూపర్ 1 వేవ్లను dApp ఖాతాకు జమ చేస్తారు.
మేము పొరపాటు చేస్తాము మరియు లావాదేవీ జరగదు. మేము బాబ్ తరపున లావాదేవీ చేస్తున్నామని మేము నిర్ధారించినప్పటికీ, సూచికలో పొరపాటు చేసాము మరియు స్మార్ట్ ఒప్పందం లేని బ్యాంక్ ఖాతాను సూచించాము. ఇక్కడ ఒక ముఖ్యమైన విషయాన్ని గమనించడం విలువ - లావాదేవీలను ప్రారంభించడానికి విఫల ప్రయత్నాలకు, కమిషన్ తీసివేయబడలేదు! ఆలిస్ బ్యాలెన్స్లో 2.972 వేవ్లు మిగిలి ఉన్నాయి. బాబ్కు 3 వేవ్లు ఉన్నాయి.
బాబ్ 1 వేవ్లను dApp ఖాతాకు పంపారు.
broadcast(invokeScript({dappAddress: address(env.accounts[1]), call:{function:"deposit",args:[]}, payment: [{amount: 100000000, asset:null }]}))
బాబ్కి 1.99 వేవ్లు మిగిలి ఉన్నాయి. అంటే, బాబ్ 0.01 వేవ్స్ కమీషన్ చెల్లించాడు
ఆలిస్ తన బ్యాలెన్స్లో 2.972 వేవ్లను కలిగి ఉంది, అది 3.972 అయింది. ఆలిస్ ఖాతాలో లావాదేవీ కూడా నమోదు చేయబడింది, అయితే dApp ఖాతా (ఆలిస్) నుండి ఎటువంటి కమీషన్ వసూలు చేయబడలేదు.
కూపర్ కూడా ఖాతాను తిరిగి నింపిన తర్వాత, ఆలిస్ తన బ్యాలెన్స్లో 4.972 వేవ్లను కలిగి ఉంది.
డేటా ట్యాబ్లోని బ్లాక్ ఎక్స్ప్లోరర్లోని సాధారణ వాలెట్లో ఎన్ని వేవ్లు ఉన్నాయో మీరు కనుగొనవచ్చు.
కూపర్ సాధారణ వాలెట్లో 1 వేవ్స్ మొత్తాన్ని వదిలివేయడం గురించి తన మనసు మార్చుకున్నాడు మరియు అనుబంధాలలో సగం ఉపసంహరించుకోవాలని నిర్ణయించుకున్నాడు. దీన్ని చేయడానికి, ఇది తప్పనిసరిగా ఉపసంహరణ ఫంక్షన్కు కాల్ చేయాలి.
అయినప్పటికీ, మేము మళ్లీ పొరపాటు చేసాము, ఎందుకంటే ఉపసంహరణ ఫంక్షన్ పూర్తిగా భిన్నమైన పారామితులను కలిగి ఉంది, వేరే సంతకం. మీరు RIDE4DAPPSలో స్మార్ట్ ఒప్పందాలను రూపొందించినప్పుడు, మీరు ఈ పాయింట్పై శ్రద్ధ వహించాలి
కూపర్ తన బ్యాలెన్స్ షీట్లో 2.48 వేవ్లను కలిగి ఉన్నాడు. వరుసగా 3 అలలు - 1 - 0.01, ఆపై + 0.5 - 0.01. దీని ప్రకారం, డిపాజిట్ చేయడానికి మరియు ఉపసంహరించుకోవడానికి ప్రతి కాల్కు 0.01 వేవ్లు ఖర్చవుతాయి. ఫలితంగా, dApps యజమానుల పట్టికలోని ఎంట్రీలు క్రింది విధంగా మార్చబడ్డాయి.
బాబ్ సాధారణ వాలెట్ నుండి కొంత డబ్బును కూడా ఉపసంహరించుకోవాలని నిర్ణయించుకున్నాడు, కానీ అతను పొరపాటు చేసాడు మరియు 1.5 వేవ్లను సేకరించేందుకు ప్రయత్నించాడు.
అయితే, స్మార్ట్ కాంట్రాక్టులో అలాంటి పరిస్థితికి చెక్ పడింది.
Xena సాధారణ ఖాతా నుండి 1 వేవ్లను ఉపసంహరించుకోవడానికి ప్రయత్నించిన స్కామర్.
ఆమె కూడా విఫలమైంది.
తదుపరి భాగంలో, మేము Alice dApp ఖాతా యొక్క అసంపూర్ణతకు సంబంధించిన మరింత క్లిష్టమైన సమస్యలను పరిశీలిస్తాము.
మూలం: www.habr.com