స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం
పేజీ చివరి అప్డేట్: 21 అక్టోబర్, 2025
Ethereumలోని స్మార్ట్ కాంట్రాక్టులు అనేవి ఇథీరియం వర్చువల్ మెషిన్ (EVM)లో పనిచేసే స్వీయ-నిర్వహణ ప్రోగ్రామ్లు. ఈ ప్రోగ్రామ్లు డిజైన్ ప్రకారం మార్పులేనివి, ఇది కాంట్రాక్టును అమలు చేసిన తర్వాత వ్యాపార తర్కానికి ఏవైనా నవీకరణలను నిరోధిస్తుంది.
స్మార్ట్ కాంట్రాక్టుల యొక్క విశ్వసనీయత, వికేంద్రీకరణ మరియు భద్రత కోసం మార్పులేనితనం అవసరమైనప్పటికీ, ఇది కొన్ని సందర్భాల్లో ఒక లోపంగా ఉండవచ్చు. ఉదాహరణకు, మార్పులేని కోడ్ డెవలపర్లకు హాని కలిగించే కాంట్రాక్టులను సరిచేయడం అసాధ్యం చేస్తుంది.
అయితే, స్మార్ట్ కాంట్రాక్టులను మెరుగుపరచడంలో పెరిగిన పరిశోధన అనేక ఉన్నతీకరణ నమూనాల పరిచయానికి దారితీసింది. ఈ ఉన్నతీకరణ నమూనాలు డెవలపర్లను వేర్వేరు కాంట్రాక్టులలో వ్యాపార తర్కాన్ని ఉంచడం ద్వారా స్మార్ట్ కాంట్రాక్టులను (మార్పులేనితనాన్ని కాపాడుకుంటూ) ఉన్నతీకరించడానికి అనుమతిస్తాయి.
అవసరాలు
మీకు స్మార్ట్ కాంట్రాక్టులు, స్మార్ట్ కాంట్రాక్ట్ అనాటమీ, మరియు ఇథీరియం వర్చువల్ మెషీన్ (EVM) లపై మంచి అవగాహన ఉండాలి. ఈ మార్గదర్శిని పాఠకులకు స్మార్ట్ కాంట్రాక్టులను ప్రోగ్రామింగ్ చేయడంపై పట్టు ఉందని కూడా భావిస్తుంది.
స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణ అంటే ఏమిటి?
స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణ అనేది కాంట్రాక్ట్ యొక్క స్థితిని కాపాడుకుంటూ, ఒక స్మార్ట్ కాంట్రాక్ట్ యొక్క వ్యాపార తర్కాన్ని మార్చడం. ముఖ్యంగా స్మార్ట్ కాంట్రాక్టుల సందర్భంలో, ఉన్నతీకరణ సామర్థ్యం మరియు మార్పుచెందే గుణం ఒకటే కాదని స్పష్టం చేయడం ముఖ్యం.
ఇథీరియం నెట్వర్క్లోని ఒక చిరునామాకు అమలు చేయబడిన ప్రోగ్రామ్ను మీరు ఇప్పటికీ మార్చలేరు. కానీ వినియోగదారులు స్మార్ట్ కాంట్రాక్ట్తో పరస్పర చర్య చేసినప్పుడు అమలు చేయబడే కోడ్ను మీరు మార్చవచ్చు.
కింది పద్ధతుల ద్వారా ఇది చేయవచ్చు:
-
స్మార్ట్ కాంట్రాక్ట్ యొక్క బహుళ సంస్కరణలను సృష్టించడం మరియు పాత కాంట్రాక్ట్ నుండి కొత్త కాంట్రాక్ట్ యొక్క ఉదాహరణకు స్థితిని (అంటే, డేటాను) వలస తీసుకురావడం.
-
వ్యాపార తర్కం మరియు స్థితిని నిల్వ చేయడానికి వేర్వేరు కాంట్రాక్టులను సృష్టించడం.
-
మార్పులేని ప్రాక్సీ కాంట్రాక్ట్ నుండి మార్చగల లాజిక్ కాంట్రాక్ట్కు ఫంక్షన్ కాల్స్ను అప్పగించడానికి ప్రాక్సీ నమూనాలను ఉపయోగించడం.
-
నిర్దిష్ట విధులను అమలు చేయడానికి సరళమైన ఉపగ్రహ కాంట్రాక్టులతో పరస్పర చర్య చేసి, వాటిపై ఆధారపడే మార్పులేని ప్రధాన కాంట్రాక్ట్ను సృష్టించడం.
-
ఒక ప్రాక్సీ కాంట్రాక్ట్ నుండి లాజిక్ కాంట్రాక్టులకు ఫంక్షన్ కాల్స్ను అప్పగించడానికి డైమండ్ నమూనాని ఉపయోగించడం.
ఉన్నతీకరణ యంత్రాంగం #1: కాంట్రాక్ట్ వలస
కాంట్రాక్ట్ వలస సంస్కరణపై ఆధారపడి ఉంటుంది—అదే సాఫ్ట్వేర్ యొక్క ప్రత్యేకమైన స్థితులను సృష్టించడం మరియు నిర్వహించడం అనే ఆలోచన. కాంట్రాక్ట్ వలస అనేది ఇప్పటికే ఉన్న స్మార్ట్ కాంట్రాక్ట్ యొక్క కొత్త ఉదాహరణను అమలు చేయడం మరియు నిల్వ మరియు బ్యాలెన్స్లను కొత్త కాంట్రాక్ట్కు బదిలీ చేయడం.
కొత్తగా అమలు చేయబడిన కాంట్రాక్ట్ ఖాళీ నిల్వను కలిగి ఉంటుంది, ఇది పాత కాంట్రాక్ట్ నుండి డేటాను పునరుద్ధరించి కొత్త అమలులోకి వ్రాయడానికి మిమ్మల్ని అనుమతిస్తుంది. ఆ తరువాత, పాత కాంట్రాక్ట్తో పరస్పర చర్య చేసిన అన్ని కాంట్రాక్టులను కొత్త చిరునామాను ప్రతిబింబించేలా మీరు నవీకరించాలి.
కాంట్రాక్ట్ వలసలో చివరి దశ కొత్త కాంట్రాక్ట్ను ఉపయోగించడానికి వినియోగదారులను ఒప్పించడం. కొత్త కాంట్రాక్ట్ సంస్కరణ వినియోగదారు బ్యాలెన్స్లు మరియు చిరునామాలను నిలుపుకుంటుంది, ఇది మార్పులేనితనాన్ని కాపాడుతుంది. ఇది టోకెన్-ఆధారిత కాంట్రాక్ట్ అయితే, పాత కాంట్రాక్ట్ను విస్మరించి కొత్త కాంట్రాక్ట్ను ఉపయోగించడానికి మీరు మార్పిడులను కూడా సంప్రదించవలసి ఉంటుంది.
వినియోగదారు పరస్పర చర్యలకు భంగం కలిగించకుండా స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి కాంట్రాక్ట్ వలస అనేది సాపేక్షంగా సూటిగా మరియు సురక్షితమైన కొలత. అయితే, వినియోగదారు నిల్వ మరియు బ్యాలెన్స్లను కొత్త కాంట్రాక్ట్కు మాన్యువల్గా వలస తీసుకురావడం సమయం తీసుకునేది మరియు అధిక గ్యాస్ ఖర్చులను కలిగించవచ్చు.
కాంట్రాక్ట్ వలసపై మరింత.opens in a new tab
ఉన్నతీకరణ యంత్రాంగం #2: డేటా వేర్పాటు
స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి మరో పద్ధతి వ్యాపార తర్కం మరియు డేటా నిల్వను వేర్వేరు కాంట్రాక్టులుగా విభజించడం. దీని అర్థం వినియోగదారులు లాజిక్ కాంట్రాక్ట్తో పరస్పర చర్య చేస్తారు, అయితే డేటా నిల్వ కాంట్రాక్ట్లో నిల్వ చేయబడుతుంది.
వినియోగదారులు అప్లికేషన్తో పరస్పర చర్య చేసినప్పుడు అమలు చేయబడే కోడ్ను లాజిక్ కాంట్రాక్ట్ కలిగి ఉంటుంది. ఇది నిల్వ కాంట్రాక్ట్ యొక్క చిరునామాను కూడా కలిగి ఉంటుంది మరియు డేటాను పొందడానికి మరియు సెట్ చేయడానికి దానితో పరస్పర చర్య చేస్తుంది.
ఇంతలో, నిల్వ కాంట్రాక్ట్ స్మార్ట్ కాంట్రాక్ట్తో అనుబంధించబడిన స్థితిని కలిగి ఉంటుంది, ఉదాహరణకు వినియోగదారు బ్యాలెన్స్లు మరియు చిరునామాలు. నిల్వ కాంట్రాక్ట్ లాజిక్ కాంట్రాక్ట్ యాజమాన్యంలో ఉందని మరియు అమలు సమయంలో దాని చిరునామాతో కాన్ఫిగర్ చేయబడిందని గమనించండి. ఇది అనధికార కాంట్రాక్టులు నిల్వ కాంట్రాక్ట్ను కాల్ చేయకుండా లేదా దాని డేటాను నవీకరించకుండా నిరోధిస్తుంది.
డిఫాల్ట్గా, నిల్వ కాంట్రాక్ట్ మార్పులేనిది—కానీ అది సూచించే లాజిక్ కాంట్రాక్ట్ను మీరు కొత్త అమలుతో భర్తీ చేయవచ్చు. ఇది EVMలో నడిచే కోడ్ను మారుస్తుంది, అయితే నిల్వ మరియు బ్యాలెన్స్లను చెక్కుచెదరకుండా ఉంచుతుంది.
ఈ ఉన్నతీకరణ పద్ధతిని ఉపయోగించడానికి నిల్వ కాంట్రాక్ట్లోని లాజిక్ కాంట్రాక్ట్ యొక్క చిరునామాను నవీకరించడం అవసరం. ముందు వివరించిన కారణాల వల్ల మీరు కొత్త లాజిక్ కాంట్రాక్ట్ను నిల్వ కాంట్రాక్ట్ యొక్క చిరునామాతో కూడా కాన్ఫిగర్ చేయాలి.
కాంట్రాక్ట్ వలసతో పోలిస్తే డేటా వేర్పాటు నమూనాని అమలు చేయడం వాదించదగ్గ సులభం. అయితే, మీరు బహుళ కాంట్రాక్టులను నిర్వహించవలసి ఉంటుంది మరియు దురుద్దేశపూర్వక ఉన్నతీకరణల నుండి స్మార్ట్ కాంట్రాక్టులను రక్షించడానికి సంక్లిష్టమైన అధికార పథకాలను అమలు చేయాలి.
ఉన్నతీకరణ యంత్రాంగం #3: ప్రాక్సీ నమూనాలు
ప్రాక్సీ నమూనా కూడా వ్యాపార తర్కం మరియు డేటాను వేర్వేరు కాంట్రాక్టులలో ఉంచడానికి డేటా వేర్పాటును ఉపయోగిస్తుంది. అయితే, ఒక ప్రాక్సీ నమూనాలో, నిల్వ కాంట్రాక్ట్ (ప్రాక్సీ అని పిలుస్తారు) కోడ్ అమలు సమయంలో లాజిక్ కాంట్రాక్ట్ను కాల్ చేస్తుంది. ఇది డేటా వేర్పాటు పద్ధతికి రివర్స్, ఇక్కడ లాజిక్ కాంట్రాక్ట్ నిల్వ కాంట్రాక్ట్ను కాల్ చేస్తుంది.
ప్రాక్సీ నమూనాలో ఇది జరుగుతుంది:
-
వినియోగదారులు ప్రాక్సీ కాంట్రాక్ట్తో పరస్పర చర్య చేస్తారు, ఇది డేటాను నిల్వ చేస్తుంది, కానీ వ్యాపార తర్కాన్ని కలిగి ఉండదు.
-
delegatecallఫంక్షన్ను ఉపయోగించి ప్రాక్సీ కాంట్రాక్ట్ లాజిక్ కాంట్రాక్ట్ యొక్క చిరునామాను నిల్వ చేస్తుంది మరియు అన్ని ఫంక్షన్ కాల్స్ను లాజిక్ కాంట్రాక్ట్కు (ఇది వ్యాపార తర్కాన్ని కలిగి ఉంటుంది) అప్పగిస్తుంది. -
కాల్ లాజిక్ కాంట్రాక్ట్కు ఫార్వార్డ్ చేయబడిన తర్వాత, లాజిక్ కాంట్రాక్ట్ నుండి తిరిగి వచ్చిన డేటా తిరిగి పొందబడుతుంది మరియు వినియోగదారుకు తిరిగి ఇవ్వబడుతుంది.
ప్రాక్సీ నమూనాలను ఉపయోగించడానికి delegatecall ఫంక్షన్ పై అవగాహన అవసరం. ప్రాథమికంగా, delegatecall అనేది ఒక ఆప్కోడ్, ఇది ఒక కాంట్రాక్ట్ను మరొక కాంట్రాక్ట్ను కాల్ చేయడానికి అనుమతిస్తుంది, అయితే వాస్తవ కోడ్ అమలు కాలింగ్ కాంట్రాక్ట్ సందర్భంలో జరుగుతుంది. ప్రాక్సీ నమూనాలలో delegatecall ఉపయోగించడం యొక్క ఒక సూచన ఏమిటంటే, ప్రాక్సీ కాంట్రాక్ట్ దాని నిల్వకు చదువుతుంది మరియు వ్రాస్తుంది మరియు అంతర్గత ఫంక్షన్ను కాల్ చేస్తున్నట్లుగా లాజిక్ కాంట్రాక్ట్లో నిల్వ చేయబడిన తర్కాన్ని అమలు చేస్తుంది.
Solidity డాక్యుమెంటేషన్opens in a new tab నుండి:
సందేశ కాల్ యొక్క ఒక ప్రత్యేక రూపాంతరం ఉంది, దీనిని డెలిగేట్ కాల్ అని పిలుస్తారు, ఇది సందేశ కాల్కు సమానంగా ఉంటుంది, అయితే లక్ష్య చిరునామా వద్ద ఉన్న కోడ్ కాలింగ్ కాంట్రాక్ట్ సందర్భంలో (అంటే, చిరునామాలో) అమలు చేయబడుతుంది మరియు
msg.senderమరియుmsg.valueవాటి విలువలను మార్చవు. దీని అర్థం ఒక కాంట్రాక్ట్ రన్టైమ్లో వేరొక చిరునామా నుండి కోడ్ను డైనమిక్గా లోడ్ చేయగలదు. నిల్వ, ప్రస్తుత చిరునామా మరియు బ్యాలెన్స్ ఇప్పటికీ కాలింగ్ కాంట్రాక్ట్ను సూచిస్తాయి, కోడ్ మాత్రమే పిలువబడిన చిరునామా నుండి తీసుకోబడుతుంది.
ప్రాక్సీ కాంట్రాక్ట్, వినియోగదారు ఒక ఫంక్షన్ను కాల్ చేసినప్పుడల్లా delegatecall ను ప్రారంభించాలని తెలుసు, ఎందుకంటే దానిలో fallback ఫంక్షన్ నిర్మించబడింది. Solidity ప్రోగ్రామింగ్లో ఫాల్బ్యాక్ ఫంక్షన్opens in a new tab ఒక కాంట్రాక్ట్లో పేర్కొన్న ఫంక్షన్లతో ఫంక్షన్ కాల్ సరిపోలనప్పుడు అమలు చేయబడుతుంది.
ప్రాక్సీ నమూనాని పని చేయడానికి, ప్రాక్సీ కాంట్రాక్ట్ మద్దతు ఇవ్వని ఫంక్షన్ కాల్స్ను ఎలా నిర్వహించాలో పేర్కొనే కస్టమ్ ఫాల్బ్యాక్ ఫంక్షన్ను వ్రాయడం అవసరం. ఈ సందర్భంలో, ప్రాక్సీ యొక్క ఫాల్బ్యాక్ ఫంక్షన్ ఒక డెలిగేట్కాల్ను ప్రారంభించడానికి మరియు వినియోగదారు యొక్క అభ్యర్థనను ప్రస్తుత లాజిక్ కాంట్రాక్ట్ అమలుకు తిరిగి మళ్లించడానికి ప్రోగ్రామ్ చేయబడింది.
ప్రాక్సీ కాంట్రాక్ట్ డిఫాల్ట్గా మార్పులేనిది, కానీ నవీకరించబడిన వ్యాపార తర్కంతో కొత్త లాజిక్ కాంట్రాక్టులను సృష్టించవచ్చు. ఉన్నతీకరణను నిర్వహించడం అప్పుడు ప్రాక్సీ కాంట్రాక్ట్లో సూచించబడిన లాజిక్ కాంట్రాక్ట్ యొక్క చిరునామాను మార్చడం మాత్రమే.
ప్రాక్సీ కాంట్రాక్ట్ను కొత్త లాజిక్ కాంట్రాక్ట్కు సూచించడం ద్వారా, వినియోగదారులు ప్రాక్సీ కాంట్రాక్ట్ ఫంక్షన్ను కాల్ చేసినప్పుడు అమలు చేయబడిన కోడ్ మారుతుంది. ఇది వినియోగదారులను కొత్త కాంట్రాక్ట్తో పరస్పర చర్య చేయమని అడగకుండా కాంట్రాక్ట్ యొక్క తర్కాన్ని ఉన్నతీకరించడానికి మాకు అనుమతిస్తుంది.
ప్రాక్సీ నమూనాలు స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి ఒక ప్రసిద్ధ పద్ధతి, ఎందుకంటే అవి కాంట్రాక్ట్ వలసతో సంబంధం ఉన్న ఇబ్బందులను తొలగిస్తాయి. అయితే, ప్రాక్సీ నమూనాలు ఉపయోగించడానికి మరింత సంక్లిష్టంగా ఉంటాయి మరియు సరిగా ఉపయోగించకపోతే, ఫంక్షన్ సెలెక్టర్ ఘర్షణలుopens in a new tab వంటి క్లిష్టమైన లోపాలను ప్రవేశపెట్టగలవు.
ప్రాక్సీ నమూనాలపై మరింతopens in a new tab.
ఉన్నతీకరణ యంత్రాంగం #4: స్ట్రాటజీ నమూనా
ఈ సాంకేతికత స్ట్రాటజీ నమూనాopens in a new tab ద్వారా ప్రభావితమైంది, ఇది నిర్దిష్ట లక్షణాలను అమలు చేయడానికి ఇతర ప్రోగ్రామ్లతో ఇంటర్ఫేస్ చేసే సాఫ్ట్వేర్ ప్రోగ్రామ్లను సృష్టించడాన్ని ప్రోత్సహిస్తుంది. ఇథీరియం అభివృద్ధికి స్ట్రాటజీ నమూనాని వర్తింపజేయడం అంటే ఇతర కాంట్రాక్టుల నుండి ఫంక్షన్లను కాల్ చేసే స్మార్ట్ కాంట్రాక్ట్ను నిర్మించడం.
ఈ సందర్భంలో ప్రధాన కాంట్రాక్ట్ కోర్ బిజినెస్ లాజిక్ను కలిగి ఉంటుంది, కానీ కొన్ని విధులను అమలు చేయడానికి ఇతర స్మార్ట్ కాంట్రాక్టులతో ("శాటిలైట్ కాంట్రాక్టులు") ఇంటర్ఫేస్ చేస్తుంది. ఈ ప్రధాన కాంట్రాక్ట్ ప్రతి శాటిలైట్ కాంట్రాక్ట్ కోసం చిరునామాను కూడా నిల్వ చేస్తుంది మరియు శాటిలైట్ కాంట్రాక్ట్ యొక్క వేర్వేరు అమలుల మధ్య మారగలదు.
మీరు కొత్త శాటిలైట్ కాంట్రాక్ట్ను నిర్మించవచ్చు మరియు ప్రధాన కాంట్రాక్ట్ను కొత్త చిరునామాతో కాన్ఫిగర్ చేయవచ్చు. ఇది స్మార్ట్ కాంట్రాక్ట్ కోసం వ్యూహాలను మార్చడానికి మిమ్మల్ని అనుమతిస్తుంది (అంటే, కొత్త తర్కాన్ని అమలు చేయడం).
ముందు చర్చించిన ప్రాక్సీ నమూనాకు సమానంగా ఉన్నప్పటికీ, స్ట్రాటజీ నమూనా భిన్నమైనది ఎందుకంటే ప్రధాన కాంట్రాక్ట్, వినియోగదారులు పరస్పర చర్య చేసేది, వ్యాపార తర్కాన్ని కలిగి ఉంటుంది. ఈ నమూనాని ఉపయోగించడం కోర్ మౌలిక సదుపాయాలను ప్రభావితం చేయకుండా స్మార్ట్ కాంట్రాక్ట్కు పరిమిత మార్పులను ప్రవేశపెట్టే అవకాశాన్ని మీకు ఇస్తుంది.
ప్రధాన లోపం ఏమిటంటే, ఈ నమూనా ఎక్కువగా చిన్న ఉన్నతీకరణలను విడుదల చేయడానికి ఉపయోగపడుతుంది. అలాగే, ప్రధాన కాంట్రాక్ట్ రాజీపడితే (ఉదా., హ్యాక్ ద్వారా), మీరు ఈ ఉన్నతీకరణ పద్ధతిని ఉపయోగించలేరు.
ఉన్నతీకరణ యంత్రాంగం #5: డైమండ్ నమూనా
డైమండ్ నమూనాని ప్రాక్సీ నమూనాపై మెరుగుదలగా పరిగణించవచ్చు. డైమండ్ ప్రాక్సీ కాంట్రాక్ట్ ఒకటి కంటే ఎక్కువ లాజిక్ కాంట్రాక్టులకు ఫంక్షన్ కాల్స్ను అప్పగించగలదు కాబట్టి డైమండ్ నమూనాలు ప్రాక్సీ నమూనాల నుండి భిన్నంగా ఉంటాయి.
డైమండ్ నమూనాలోని లాజిక్ కాంట్రాక్టులను ఫేసెట్స్ అని పిలుస్తారు. డైమండ్ నమూనాని పని చేయడానికి, మీరు ప్రాక్సీ కాంట్రాక్ట్లో ఒక మ్యాపింగ్ను సృష్టించాలి, ఇది ఫంక్షన్ సెలెక్టర్లనుopens in a new tab వేర్వేరు ఫేసెట్ చిరునామాలకు మ్యాప్ చేస్తుంది.
ఒక వినియోగదారు ఫంక్షన్ కాల్ చేసినప్పుడు, ఆ ఫంక్షన్ను అమలు చేయడానికి బాధ్యత వహించే ఫేసెట్ను కనుగొనడానికి ప్రాక్సీ కాంట్రాక్ట్ మ్యాపింగ్ను తనిఖీ చేస్తుంది. అప్పుడు అది delegatecall (ఫాల్బ్యాక్ ఫంక్షన్ను ఉపయోగించి) ను ప్రారంభిస్తుంది మరియు కాల్ను తగిన లాజిక్ కాంట్రాక్ట్కు మళ్లిస్తుంది.
సాంప్రదాయ ప్రాక్సీ ఉన్నతీకరణ నమూనాలపై డైమండ్ ఉన్నతీకరణ నమూనాకు కొన్ని ప్రయోజనాలు ఉన్నాయి:
-
ఇది మొత్తం కోడ్ను మార్చకుండా కాంట్రాక్ట్ యొక్క ఒక చిన్న భాగాన్ని ఉన్నతీకరించడానికి మిమ్మల్ని అనుమతిస్తుంది. ఉన్నతీకరణల కోసం ప్రాక్సీ నమూనాని ఉపయోగించడం అనేది చిన్న ఉన్నతీకరణలకు కూడా పూర్తిగా కొత్త లాజిక్ కాంట్రాక్ట్ను సృష్టించడం అవసరం.
-
అన్ని స్మార్ట్ కాంట్రాక్టులు (ప్రాక్సీ నమూనాలలో ఉపయోగించే లాజిక్ కాంట్రాక్టులతో సహా) 24KB పరిమాణ పరిమితిని కలిగి ఉంటాయి, ఇది ఒక పరిమితిగా ఉంటుంది—ముఖ్యంగా ఎక్కువ ఫంక్షన్లు అవసరమయ్యే సంక్లిష్ట కాంట్రాక్టుల కోసం. డైమండ్ నమూనా బహుళ లాజిక్ కాంట్రాక్టుల మధ్య ఫంక్షన్లను విభజించడం ద్వారా ఈ సమస్యను పరిష్కరించడం సులభం చేస్తుంది.
-
ప్రాక్సీ నమూనాలు యాక్సెస్ నియంత్రణలకు క్యాచ్-ఆల్ విధానాన్ని అవలంబిస్తాయి. ఉన్నతీకరణ ఫంక్షన్లకు యాక్సెస్ ఉన్న ఒక సంస్థ మొత్తం కాంట్రాక్ట్ను మార్చగలదు. కానీ డైమండ్ నమూనా మాడ్యులర్ అనుమతుల విధానాన్ని ప్రారంభిస్తుంది, ఇక్కడ మీరు స్మార్ట్ కాంట్రాక్ట్లోని కొన్ని ఫంక్షన్లను ఉన్నతీకరించడానికి సంస్థలను పరిమితం చేయవచ్చు.
డైమండ్ నమూనాపై మరింతopens in a new tab.
స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం యొక్క ప్రయోజనాలు మరియు నష్టాలు
| ప్రయోజనాలు | అప్రయోజనాలు |
|---|---|
| స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణ అమలు తర్వాత దశలో కనుగొనబడిన దుర్బలత్వాలను సరిచేయడం సులభం చేస్తుంది. | స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం కోడ్ మార్పులేనితనం అనే ఆలోచనను తిరస్కరిస్తుంది, ఇది వికేంద్రీకరణ మరియు భద్రతపై ప్రభావాలను కలిగి ఉంటుంది. |
| వికేంద్రీకృత అప్లికేషన్లకు కొత్త ఫీచర్లను జోడించడానికి డెవలపర్లు లాజిక్ ఉన్నతీకరణలను ఉపయోగించవచ్చు. | వినియోగదారులు డెవలపర్లు స్మార్ట్ కాంట్రాక్టులను ఏకపక్షంగా సవరించరని విశ్వసించాలి. |
| బగ్లను త్వరగా సరిచేయవచ్చు కాబట్టి స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణలు తుది-వినియోగదారులకు భద్రతను మెరుగుపరుస్తాయి. | స్మార్ట్ కాంట్రాక్టులలోకి ఉన్నతీకరణ కార్యాచరణను ప్రోగ్రామింగ్ చేయడం సంక్లిష్టత యొక్క మరొక పొరను జోడిస్తుంది మరియు క్లిష్టమైన లోపాల సంభావ్యతను పెంచుతుంది. |
| కాంట్రాక్ట్ ఉన్నతీకరణలు డెవలపర్లకు వేర్వేరు ఫీచర్లతో ప్రయోగాలు చేయడానికి మరియు కాలక్రమేణా డాప్స్ను మెరుగుపరచడానికి ఎక్కువ అవకాశం ఇస్తాయి. | స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించే అవకాశం అభివృద్ధి దశలో తగిన శ్రద్ధ వహించకుండా ప్రాజెక్టులను వేగంగా ప్రారంభించడానికి డెవలపర్లను ప్రోత్సహించవచ్చు. |
| స్మార్ట్ కాంట్రాక్టులలో అసురక్షిత యాక్సెస్ నియంత్రణ లేదా కేంద్రీకరణ దురుద్దేశపూర్వక నటులకు అనధికారిక ఉన్నతీకరణలు చేయడం సులభం చేస్తుంది. |
స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి పరిగణనలు
-
అనధికారిక స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణలను నివారించడానికి సురక్షిత యాక్సెస్ నియంత్రణ/అధికార యంత్రాంగాలను ఉపయోగించండి, ప్రత్యేకించి ప్రాక్సీ నమూనాలు, స్ట్రాటజీ నమూనాలు లేదా డేటా వేర్పాటును ఉపయోగిస్తుంటే. ఒక ఉదాహరణ, ఉన్నతీకరణ ఫంక్షన్కు యాక్సెస్ను పరిమితం చేయడం, తద్వారా కాంట్రాక్ట్ యజమాని మాత్రమే దానిని కాల్ చేయగలరు.
-
స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం ఒక సంక్లిష్టమైన చర్య మరియు దుర్బలత్వాల పరిచయాన్ని నివారించడానికి అధిక స్థాయి శ్రద్ధ అవసరం.
-
ఉన్నతీకరణలను అమలు చేసే ప్రక్రియను వికేంద్రీకరించడం ద్వారా విశ్వాస ఊహలను తగ్గించండి. సాధ్యమైన వ్యూహాలలో ఉన్నతీకరణలను నియంత్రించడానికి మల్టీ-సిగ్ వాలెట్ కాంట్రాక్ట్ ఉపయోగించడం, లేదా ఉన్నతీకరణను ఆమోదించడంపై ఓటు వేయమని DAO సభ్యులను కోరడం ఉన్నాయి.
-
కాంట్రాక్టులను ఉన్నతీకరించడంలో ఉన్న ఖర్చుల గురించి తెలుసుకోండి. ఉదాహరణకు, కాంట్రాక్ట్ వలస సమయంలో పాత కాంట్రాక్ట్ నుండి కొత్త కాంట్రాక్ట్కు స్థితిని (ఉదా., వినియోగదారు బ్యాలెన్స్లు) కాపీ చేయడానికి ఒకటి కంటే ఎక్కువ లావాదేవీలు అవసరం కావచ్చు, అంటే ఎక్కువ గ్యాస్ ఫీజులు.
-
వినియోగదారులను రక్షించడానికి టైమ్లాక్లను అమలు చేయడాన్ని పరిగణించండి. టైమ్లాక్ అంటే ఒక వ్యవస్థకు మార్పులపై అమలు చేయబడిన ఆలస్యం. ఉన్నతీకరణలను నియంత్రించడానికి టైమ్లాక్లను మల్టీ-సిగ్ గవర్నెన్స్ సిస్టమ్తో కలపవచ్చు: ఒక ప్రతిపాదిత చర్య అవసరమైన ఆమోద పరిమితిని చేరుకుంటే, ముందుగా నిర్వచించిన ఆలస్య వ్యవధి ముగిసే వరకు అది అమలు కాదు.
టైమ్లాక్లు వినియోగదారులకు ప్రతిపాదిత మార్పుతో (ఉదా., లాజిక్ ఉన్నతీకరణ లేదా కొత్త ఫీజు పథకాలు) ఏకీభవించకపోతే సిస్టమ్ నుండి నిష్క్రమించడానికి కొంత సమయం ఇస్తాయి. టైమ్లాక్లు లేకుండా, వినియోగదారులు డెవలపర్లు ముందస్తు నోటీసు లేకుండా స్మార్ట్ కాంట్రాక్ట్లో ఏకపక్ష మార్పులను అమలు చేయరని విశ్వసించాలి. ఇక్కడ ఉన్న లోపం ఏమిటంటే, టైమ్లాక్లు దుర్బలత్వాలను త్వరగా ప్యాచ్ చేసే సామర్థ్యాన్ని పరిమితం చేస్తాయి.
వనరులు
OpenZeppelin అప్గ్రేడ్స్ ప్లగిన్లు - ఉన్నతీకరించగల స్మార్ట్ కాంట్రాక్టులను అమలు చేయడానికి మరియు సురక్షితం చేయడానికి ఉపకరణాల సూట్.
ట్యుటోరియల్స్
- ప్యాట్రిక్ కాలిన్స్ ద్వారా మీ స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడం | YouTube ట్యుటోరియల్opens in a new tab
- ఆస్టిన్ గ్రిఫిత్ ద్వారా ఇథీరియం స్మార్ట్ కాంట్రాక్ట్ వలస ట్యుటోరియల్opens in a new tab
- ప్రణేష్ A.S ద్వారా స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడానికి UUPS ప్రాక్సీ నమూనాని ఉపయోగించడంopens in a new tab
- fangjun.eth ద్వారా Web3 ట్యుటోరియల్: OpenZeppelin ఉపయోగించి ఉన్నతీకరించగల స్మార్ట్ కాంట్రాక్ట్ (ప్రాక్సీ) వ్రాయండిopens in a new tab
మరింత సమాచారం
- శాంటియాగో పల్లాడినో ద్వారా స్మార్ట్ కాంట్రాక్ట్ ఉన్నతీకరణల స్థితిopens in a new tab
- ఒక Solidity స్మార్ట్ కాంట్రాక్ట్ను ఉన్నతీకరించడానికి బహుళ మార్గాలుopens in a new tab - క్రిప్టో మార్కెట్ పూల్ బ్లాగ్
- తెలుసుకోండి: స్మార్ట్ కాంట్రాక్టులను ఉన్నతీకరించడంopens in a new tab - OpenZeppelin డాక్స్
- నవీన్ సాహు ద్వారా Solidity కాంట్రాక్టుల ఉన్నతీకరణ సామర్థ్యం కోసం ప్రాక్సీ నమూనాలు: పారదర్శక vs UUPS ప్రాక్సీలుopens in a new tab
- నిక్ మడ్జ్ ద్వారా డైమండ్ ఉన్నతీకరణలు ఎలా పనిచేస్తాయిopens in a new tab