ప్రోహోస్టర్ > బ్లాగ్ > పరిపాలన > ఒంటాలజీ నెట్వర్క్లో WebAssembly స్మార్ట్ కాంట్రాక్ట్ను ఎలా వ్రాయాలి? పార్ట్ 1: రస్ట్
ఒంటాలజీ నెట్వర్క్లో WebAssembly స్మార్ట్ కాంట్రాక్ట్ను ఎలా వ్రాయాలి? పార్ట్ 1: రస్ట్
ఒంటాలజీ వాస్మ్ సాంకేతికత సంక్లిష్ట వ్యాపార లాజిక్తో dApp స్మార్ట్ కాంట్రాక్టులను బ్లాక్చెయిన్కు బదిలీ చేసే ఖర్చును తగ్గిస్తుంది, తద్వారా dApp పర్యావరణ వ్యవస్థను గణనీయంగా మెరుగుపరుస్తుంది.
ప్రస్తుతం, ఒంటాలజీ వాస్మ్ రస్ట్ మరియు C++ రెండింటిలో అభివృద్ధికి ఏకకాలంలో మద్దతు ఇస్తుంది. రస్ట్ లాంగ్వేజ్ వాస్మ్కు మెరుగ్గా మద్దతు ఇస్తుంది మరియు రూపొందించబడిన బైట్కోడ్ సరళమైనది, ఇది కాంట్రాక్ట్ కాల్ల ధరను మరింత తగ్గిస్తుంది. కాబట్టి, ఒంటాలజీ నెట్వర్క్పై ఒప్పందాన్ని అభివృద్ధి చేయడానికి రస్ట్ను ఎలా ఉపయోగించాలి?
రస్ట్ ఉపయోగించి WASM ఒప్పందాన్ని అభివృద్ధి చేయడం
ఒప్పందాన్ని సృష్టిస్తోంది
సరుకు రస్ట్లో ప్రోగ్రామ్లను అభివృద్ధి చేస్తున్నప్పుడు ప్రాజెక్ట్లను రూపొందించడానికి మరియు ప్యాకేజీలను నిర్వహించడానికి మంచి సాధనం, ఇది డెవలపర్లకు కోడ్ మరియు థర్డ్-పార్టీ లైబ్రరీల పరస్పర చర్యను మెరుగ్గా నిర్వహించడానికి సహాయపడుతుంది. కొత్త ఒంటాలజీ వాస్మ్ ఒప్పందాన్ని సృష్టించడానికి, కింది ఆదేశాన్ని అమలు చేయండి:
ఇది ఉత్పత్తి చేసే ప్రాజెక్ట్ నిర్మాణం:
ప్రాథమిక ప్రాజెక్ట్ సమాచారం మరియు ఆధారిత లైబ్రరీ సమాచారాన్ని కాన్ఫిగర్ చేయడానికి Cargo.toml ఫైల్ ఉపయోగించబడుతుంది. ఫైల్లోని [lib] విభాగం తప్పనిసరిగా crate-type = [“cdylib”]కి సెట్ చేయబడాలి. కాంట్రాక్ట్ లాజిక్ను కోడ్ చేయడానికి lib.rs ఫైల్ ఉపయోగించబడుతుంది. అదనంగా, మీరు Cargo.toml కాన్ఫిగరేషన్ ఫైల్ యొక్క [డిపెండెన్సీలు] విభాగానికి డిపెండెన్సీ పారామితులను జోడించాలి:
ఈ డిపెండెన్సీని ఉపయోగించి, డెవలపర్లు ఒంటాలజీ బ్లాక్చెయిన్తో ఇంటరాక్ట్ అయ్యే ఇంటర్ఫేస్లను మరియు సీరియలైజేషన్ పారామీటర్ వంటి సాధనాలను కాల్ చేయవచ్చు.
కాంట్రాక్ట్ ఎంట్రీ ఫంక్షన్
ప్రతి ప్రోగ్రామ్కు ఇన్పుట్ ఫంక్షన్ ఉంటుంది, మనం సాధారణంగా చూసే ప్రధాన ఫంక్షన్ లాగా, కానీ కాంట్రాక్ట్కు ప్రధాన విధి ఉండదు. రస్ట్ని ఉపయోగించి వాస్మ్ ఒప్పందాన్ని అభివృద్ధి చేస్తున్నప్పుడు, ఒప్పందాన్ని ఉపయోగించడం కోసం ఇన్పుట్ ఫంక్షన్గా ఇన్వోక్ ఫంక్షన్ డిఫాల్ట్గా ఉపయోగించబడుతుంది. రస్ట్ సోర్స్ కోడ్ను వర్చువల్ మెషీన్ ద్వారా అమలు చేయగల బైట్కోడ్లోకి కంపైల్ చేస్తున్నప్పుడు రస్ట్లోని ఫంక్షన్ పేరు అస్పష్టంగా ఉంటుంది. కంపైలర్ పునరావృత కోడ్ను రూపొందించకుండా నిరోధించడానికి మరియు ఒప్పందం యొక్క పరిమాణాన్ని తగ్గించడానికి, ఇన్వోక్ ఫంక్షన్ #[no_mangle] ఉల్లేఖనాన్ని జోడిస్తుంది.
లావాదేవీని నిర్వహించడానికి ఇన్వోక్ ఫంక్షన్ పారామితులను ఎలా స్వీకరిస్తుంది?
ontio_std లైబ్రరీ లావాదేవీని నిర్వహించడానికి పారామితులను స్వీకరించడానికి రన్టైమ్:: input() ఫంక్షన్ను అందిస్తుంది. ఫలితంగా వచ్చే బైట్ శ్రేణిని డీరియలైజ్ చేయడానికి డెవలపర్లు ZeroCopySourceని ఉపయోగించవచ్చు. దీనిలో మొదటి బైట్ శ్రేణి రీడ్ ఇన్వోక్ మెథడ్ పేరు, ఆ తర్వాత మెథడ్ పారామీటర్లు ఉంటాయి.
కాంట్రాక్ట్ అమలు ఫలితం ఎలా తిరిగి వస్తుంది?
ontio_std లైబ్రరీ అందించిన రన్టైమ్::ret ఫంక్షన్, మెథడ్ ఎగ్జిక్యూషన్ ఫలితాన్ని అందిస్తుంది.
పూర్తయిన ఇన్వోక్ ఫంక్షన్ ఇలా కనిపిస్తుంది:
కాంట్రాక్ట్ డేటా యొక్క సీరియలైజేషన్ మరియు డీరియలైజేషన్
కాంట్రాక్ట్లను అభివృద్ధి చేసే ప్రక్రియలో, డెవలపర్లు ఎల్లప్పుడూ సీరియలైజేషన్ మరియు డీరియలైజేషన్ సమస్యలను ఎదుర్కొంటారు, ప్రత్యేకంగా డేటాబేస్లో స్ట్రక్ట్ డేటా రకాన్ని ఎలా నిల్వ చేయాలి మరియు స్ట్రక్ట్ డేటా రకాన్ని పొందేందుకు డేటాబేస్ నుండి చదివిన బైట్ అర్రేని డీరియలైజ్ చేయడం ఎలా.
ontio_std లైబ్రరీ డేటాను సీరియలైజ్ చేయడానికి మరియు డీరియలైజ్ చేయడానికి డీకోడర్ మరియు ఎన్కోడర్ ఇంటర్ఫేస్లను అందిస్తుంది. స్ట్రక్ట్ యొక్క ఫీల్డ్లు డీకోడర్ మరియు ఎన్కోడర్ ఇంటర్ఫేస్లను కూడా అమలు చేస్తాయి, తద్వారా నిర్మాణాన్ని సీరియలైజ్ చేయవచ్చు మరియు డీరియలైజ్ చేయవచ్చు. వివిధ రకాల డేటా సీరియలైజ్ చేయబడినప్పుడు సింక్ క్లాస్ యొక్క ఉదాహరణలు అవసరమవుతాయి. సింక్ క్లాస్ యొక్క ఒక ఉదాహరణ బైట్ రకం డేటాను నిల్వ చేసే సెట్-టైప్ ఫీల్డ్ బఫ్ని కలిగి ఉంది మరియు మొత్తం సీరియలైజ్డ్ డేటా బఫ్లో నిల్వ చేయబడుతుంది.
స్థిర-పొడవు డేటా కోసం (ఉదా: బైట్, u16, u32, u64, మొదలైనవి), డేటా నేరుగా బైట్ శ్రేణికి మార్చబడుతుంది మరియు తర్వాత బఫ్లో నిల్వ చేయబడుతుంది; నాన్-ఫిక్స్డ్ లెంగ్త్ డేటా కోసం, మీరు ముందుగా నిడివిని సీరియలైజ్ చేయాలి మరియు ఆ తర్వాత Ddata (u16, u32 లేదా u64 మొదలైన వాటితో సహా తెలియని పరిమాణంలో సంతకం చేయని పూర్ణాంకాలు వంటివి).
డీసీరియలైజేషన్ ఖచ్చితమైన వ్యతిరేకం. ప్రతి సీరియలైజేషన్ పద్ధతికి సంబంధిత డీరియలైజేషన్ పద్ధతి ఉంటుంది. డీసీరియలైజేషన్కు సోర్స్ క్లాస్ యొక్క ఉదాహరణలను ఉపయోగించడం అవసరం. ఈ తరగతి ఉదాహరణలో బఫ్ మరియు పోస్ అనే రెండు ఫీల్డ్లు ఉన్నాయి. డీరియలైజ్ చేయబడే డేటాను నిల్వ చేయడానికి బఫ్ ఉపయోగించబడుతుంది మరియు ప్రస్తుత రీడింగ్ పొజిషన్ను స్టోర్ చేయడానికి pos ఉపయోగించబడుతుంది. నిర్దిష్ట రకం డేటాను చదివినప్పుడు, దాని పొడవు మీకు తెలిస్తే, మీరు దానిని నేరుగా చదవవచ్చు, తెలియని పొడవు ఉన్న డేటా కోసం, ముందుగా పొడవును చదివి ఆపై కంటెంట్ను చదవండి.
చైన్లోని డేటాను యాక్సెస్ చేయండి మరియు అప్డేట్ చేయండి
ఒంటాలజీ-వాస్మ్-సిడిటి-రస్ట్ - చైన్పై డేటాతో పని చేయడానికి ఒక కార్యాచరణ పద్ధతిని సంగ్రహించబడింది, ఇది డెవలపర్లకు గొలుసుపై డేటాను జోడించడం, తొలగించడం, మార్చడం మరియు ప్రశ్నించడం వంటి కార్యకలాపాలను అమలు చేయడానికి సౌకర్యవంతంగా ఉంటుంది:
డేటాబేస్ ::get(కీ) - గొలుసు నుండి డేటాను అభ్యర్థించడానికి ఉపయోగించబడుతుంది మరియు AsRef ఇంటర్ఫేస్ అమలు కోసం కీ అభ్యర్థనలు;
డేటాబేస్::పుట్(కీ, విలువ) - నెట్వర్క్లో డేటాను నిల్వ చేయడానికి ఉపయోగించబడుతుంది. AsRef ఇంటర్ఫేస్ అమలుకు కీలకమైన అభ్యర్థనలు మరియు ఎన్కోడర్ ఇంటర్ఫేస్ యొక్క విలువ అభ్యర్థనల అమలు;
డేటాబేస్ ::delete(కీ) - గొలుసు నుండి డేటాను తీసివేయడానికి ఉపయోగించబడుతుంది మరియు AsRef ఇంటర్ఫేస్ అమలును కీ అభ్యర్థిస్తుంది.
ఒప్పంద పరీక్ష
కాంట్రాక్ట్ పద్ధతులను అమలు చేస్తున్నప్పుడు, మాకు గొలుసులోని డేటాకు ప్రాప్యత అవసరం మరియు కాంట్రాక్ట్ బైట్కోడ్ను అమలు చేయడానికి మాకు సంబంధిత వర్చువల్ మెషీన్ అవసరం, కాబట్టి పరీక్ష కోసం కాంట్రాక్ట్ను చైన్కు అమలు చేయడం సాధారణంగా అవసరం. కానీ ఈ పరీక్ష విధానం సమస్యాత్మకమైనది. డెవలపర్ల కోసం ఒప్పంద పరీక్షను సులభతరం చేయడానికి, ontio_std లైబ్రరీ మాక్ టెస్టింగ్ మాడ్యూల్ను అందిస్తుంది. ఈ మాడ్యూల్ గొలుసులోని డేటా యొక్క అనుకరణను అందిస్తుంది, డెవలపర్లు ఒప్పందంలో పరీక్ష పద్ధతులను యూనిట్ చేయడం సులభం చేస్తుంది. నిర్దిష్ట ఉదాహరణలు కనుగొనవచ్చు ఇక్కడ.
ఒప్పందాన్ని డీబగ్ చేస్తోంది
కన్సోల్::డీబగ్(msg) ఒప్పందాన్ని డీబగ్ చేస్తున్నప్పుడు డీబగ్ సమాచారాన్ని ప్రింట్ చేస్తుంది. msg సమాచారం నోడ్ యొక్క లాగ్ ఫైల్లో నమోదు చేయబడుతుంది. స్థానిక ఒంటాలజీ టెస్ట్ నోడ్ని అమలు చేస్తున్నప్పుడు లాగ్ ఫైల్ స్థాయిని డీబగ్ మోడ్కు సెట్ చేయడం ఒక ముందస్తు అవసరం.
రన్టైమ్::నోటిఫై(msg) కాంట్రాక్ట్ డీబగ్ అవుతున్నప్పుడు తగిన డీబగ్గింగ్ సమాచారాన్ని ప్రింట్ చేస్తుంది. ఈ పద్ధతి నమోదు చేసిన సమాచారాన్ని గొలుసులో సేవ్ చేస్తుంది మరియు getSmartCodeEvent పద్ధతిని ఉపయోగించి గొలుసు నుండి ప్రశ్నించవచ్చు.
ముఖ్యంగా ఒంటాలజీ రష్యా కోసం హష్రేట్&షేర్స్ సంపాదకులు ఈ కథనాన్ని అనువదించారు. ఏడుస్తారు
మీరు డెవలపర్లా? మా సాంకేతిక సంఘంలో చేరండి అసమ్మతి. అలాగే, పరిశీలించండి డెవలపర్ సెంటర్ మా వెబ్సైట్లో, మీరు డెవలపర్ సాధనాలు, డాక్యుమెంటేషన్ మరియు మరిన్నింటిని కనుగొనవచ్చు.