స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలు
మీ ప్రాజెక్ట్లోని ప్రతి స్మార్ట్ కాంట్రాక్ట్ను మొదటి నుండి రాయాల్సిన అవసరం లేదు. మీ ప్రాజెక్ట్ కోసం పునర్వినియోగ బిల్డింగ్ బ్లాక్లను అందించే అనేక ఓపెన్ సోర్స్ స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలు అందుబాటులో ఉన్నాయి, ఇవి మీరు అనవసరంగా మళ్లీ మొదటి నుండి శ్రమించకుండా సమయాన్ని ఆదా చేస్తాయి.
ముందస్తు అవసరాలు
స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలలోకి వెళ్లే ముందు, స్మార్ట్ కాంట్రాక్ట్ నిర్మాణం గురించి మంచి అవగాహన కలిగి ఉండటం మంచిది. మీరు ఇంకా అలా చేయకపోతే స్మార్ట్ కాంట్రాక్ట్ అనాటమీకి వెళ్లండి.
లైబ్రరీలో ఏముంటుంది
మీరు సాధారణంగా స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలలో రెండు రకాల బిల్డింగ్ బ్లాక్లను కనుగొనవచ్చు: మీ కాంట్రాక్ట్లకు మీరు జోడించగల పునర్వినియోగ ప్రవర్తనలు (behaviors) మరియు వివిధ ప్రమాణాల (standards) అమలులు.
ప్రవర్తనలు (Behaviors)
స్మార్ట్ కాంట్రాక్ట్లను రాసేటప్పుడు, కాంట్రాక్ట్లో రక్షిత కార్యకలాపాలను నిర్వహించడానికి ఒక admin చిరునామాను కేటాయించడం లేదా ఊహించని సమస్య తలెత్తినప్పుడు అత్యవసర pause బటన్ను జోడించడం వంటి ఒకే విధమైన ప్యాటర్న్లను మీరు పదే పదే రాయాల్సి రావచ్చు.
స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలు సాధారణంగా ఈ ప్రవర్తనల యొక్క పునర్వినియోగ అమలులను లైబ్రరీలు (కొత్త ట్యాబ్లో తెరవబడుతుంది)గా లేదా Solidityలో వారసత్వం (inheritance) (కొత్త ట్యాబ్లో తెరవబడుతుంది) ద్వారా అందిస్తాయి.
ఉదాహరణకు, కింద ఇవ్వబడినది ఓపెన్జెప్పెలిన్ కాంట్రాక్ట్స్ లైబ్రరీ (కొత్త ట్యాబ్లో తెరవబడుతుంది) నుండి Ownable కాంట్రాక్ట్ (కొత్త ట్యాబ్లో తెరవబడుతుంది) యొక్క సరళీకృత వెర్షన్, ఇది ఒక చిరునామాను కాంట్రాక్ట్ యజమానిగా నిర్దేశిస్తుంది మరియు ఒక పద్ధతికి (method) యాక్సెస్ను కేవలం ఆ యజమానికి మాత్రమే పరిమితం చేయడానికి ఒక మాడిఫైయర్ను అందిస్తుంది.
contract Ownable {
address public owner;
constructor() internal {
owner = msg.sender;
}
modifier onlyOwner() {
require(owner == msg.sender, "Ownable: caller is not the owner");
_;
}
}
మీ కాంట్రాక్ట్లో ఇలాంటి బిల్డింగ్ బ్లాక్ను ఉపయోగించడానికి, మీరు ముందుగా దాన్ని దిగుమతి (import) చేసుకోవాలి, ఆపై మీ స్వంత కాంట్రాక్ట్లలో దాని నుండి విస్తరించాలి (extend). ఇది మీ స్వంత ఫంక్షన్లను సురక్షితం చేయడానికి బేస్ Ownable కాంట్రాక్ట్ అందించిన మాడిఫైయర్ను ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది.
import ".../Ownable.sol"; // దిగుమతి చేసిన లైబ్రరీకి మార్గం
contract MyContract is Ownable {
// ఈ కింది ఫంక్షన్ను యజమాని మాత్రమే కాల్ చేయగలరు
function secured() onlyOwner public {
msg.sender.transfer(1 ether);
}
}
మరొక ప్రసిద్ధ ఉదాహరణ SafeMath (కొత్త ట్యాబ్లో తెరవబడుతుంది) లేదా DsMath (కొత్త ట్యాబ్లో తెరవబడుతుంది). ఇవి ఓవర్ఫ్లో తనిఖీలతో అంకగణిత ఫంక్షన్లను అందించే లైబ్రరీలు (బేస్ కాంట్రాక్ట్లకు భిన్నంగా), ఇవి భాష ద్వారా అందించబడవు. విపత్కర పరిణామాలకు దారితీసే ఓవర్ఫ్లోల నుండి మీ కాంట్రాక్ట్ను రక్షించడానికి స్థానిక అంకగణిత కార్యకలాపాలకు బదులుగా ఈ లైబ్రరీలలో దేనినైనా ఉపయోగించడం మంచి పద్ధతి!
ప్రమాణాలు (Standards)
కూర్పు సామర్థ్యం మరియు పరస్పర అనుసంధానతను సులభతరం చేయడానికి, ఎథీరియం కమ్యూనిటీ ERCs రూపంలో అనేక ప్రమాణాలను నిర్వచించింది. మీరు వాటి గురించి ప్రమాణాలు విభాగంలో మరింత చదవవచ్చు.
మీ కాంట్రాక్ట్లలో భాగంగా ఒక ERCని చేర్చేటప్పుడు, మీ స్వంతంగా అమలు చేయడానికి ప్రయత్నించే బదులు ప్రామాణిక అమలుల కోసం వెతకడం మంచిది. అనేక స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలు అత్యంత ప్రజాదరణ పొందిన ERCల కోసం అమలులను కలిగి ఉంటాయి. ఉదాహరణకు, సర్వవ్యాప్తమైన ERC-20 ఫంజిబుల్ టోకెన్ ప్రమాణాన్ని HQ20 (కొత్త ట్యాబ్లో తెరవబడుతుంది), DappSys (కొత్త ట్యాబ్లో తెరవబడుతుంది) మరియు ఓపెన్జెప్పెలిన్ (కొత్త ట్యాబ్లో తెరవబడుతుంది)లలో కనుగొనవచ్చు. అదనంగా, కొన్ని ERCలు ERCలో భాగంగానే కానానికల్ అమలులను కూడా అందిస్తాయి.
కొన్ని ERCలు స్వతంత్రమైనవి కావు, కానీ ఇతర ERCలకు అదనపు చేర్పులు అని గమనించాలి. ఉదాహరణకు, ERC-2612 (కొత్త ట్యాబ్లో తెరవబడుతుంది) దాని వినియోగాన్ని మెరుగుపరచడానికి ERC-20కి ఒక పొడిగింపును (extension) జోడిస్తుంది.
లైబ్రరీని ఎలా జోడించాలి
మీ ప్రాజెక్ట్లో లైబ్రరీని ఎలా చేర్చాలో నిర్దిష్ట సూచనల కోసం మీరు ఎల్లప్పుడూ చేర్చుతున్న లైబ్రరీ యొక్క డాక్యుమెంటేషన్ను చూడండి. అనేక Solidity కాంట్రాక్ట్ లైబ్రరీలు npm ఉపయోగించి ప్యాకేజీ చేయబడతాయి, కాబట్టి మీరు వాటిని కేవలం npm install చేయవచ్చు. కాంట్రాక్ట్లను కంపైలింగ్ చేయడానికి చాలా సాధనాలు స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీల కోసం మీ node_modulesలో వెతుకుతాయి, కాబట్టి మీరు ఈ క్రింది వాటిని చేయవచ్చు:
// ఇది మీ node_modules నుండి @openzeppelin/contracts లైబ్రరీని లోడ్ చేస్తుంది
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
contract MyNFT is ERC721 {
constructor() ERC721("MyNFT", "MNFT") public { }
}
మీరు ఏ పద్ధతిని ఉపయోగించినప్పటికీ, లైబ్రరీని చేర్చేటప్పుడు, ఎల్లప్పుడూ భాష వెర్షన్పై ఓ కన్నేసి ఉంచండి. ఉదాహరణకు, మీరు మీ కాంట్రాక్ట్లను Solidity 0.5లో రాస్తుంటే, మీరు Solidity 0.6 కోసం ఉన్న లైబ్రరీని ఉపయోగించలేరు.
ఎప్పుడు ఉపయోగించాలి
మీ ప్రాజెక్ట్ కోసం స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీని ఉపయోగించడం వల్ల అనేక ప్రయోజనాలు ఉన్నాయి. అన్నింటికంటే ముఖ్యంగా, మీరు వాటిని మీరే కోడ్ చేయాల్సిన అవసరం లేకుండా, మీ సిస్టమ్లో చేర్చగల ఉపయోగించడానికి సిద్ధంగా ఉన్న బిల్డింగ్ బ్లాక్లను అందించడం ద్వారా ఇది మీ సమయాన్ని ఆదా చేస్తుంది.
భద్రత కూడా ఒక ప్రధాన ప్లస్ పాయింట్. ఓపెన్ సోర్స్ స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలు తరచుగా తీవ్రంగా పరిశీలించబడతాయి. అనేక ప్రాజెక్ట్లు వాటిపై ఆధారపడి ఉన్నందున, వాటిని నిరంతరం సమీక్షలో ఉంచడానికి కమ్యూనిటీకి బలమైన ప్రోత్సాహం ఉంటుంది. పునర్వినియోగ కాంట్రాక్ట్ లైబ్రరీల కంటే అప్లికేషన్ కోడ్లో లోపాలను కనుగొనడం చాలా సాధారణం. అదనపు భద్రత కోసం కొన్ని లైబ్రరీలు బాహ్య ఆడిట్లకు (external audits) (కొత్త ట్యాబ్లో తెరవబడుతుంది) కూడా లోనవుతాయి.
అయితే, స్మార్ట్ కాంట్రాక్ట్ లైబ్రరీలను ఉపయోగించడం వల్ల మీకు పరిచయం లేని కోడ్ను మీ ప్రాజెక్ట్లో చేర్చే ప్రమాదం ఉంది. ఒక కాంట్రాక్ట్ను దిగుమతి చేసుకుని దాన్ని నేరుగా మీ ప్రాజెక్ట్లో చేర్చడం ఆకర్షణీయంగా అనిపించవచ్చు, కానీ ఆ కాంట్రాక్ట్ ఏమి చేస్తుందో సరైన అవగాహన లేకుండా, ఊహించని ప్రవర్తన కారణంగా మీరు అనుకోకుండా మీ సిస్టమ్లో ఒక సమస్యను ప్రవేశపెట్టవచ్చు. మీరు దిగుమతి చేసుకుంటున్న కోడ్ యొక్క డాక్యుమెంటేషన్ను ఎల్లప్పుడూ చదివారని నిర్ధారించుకోండి మరియు దాన్ని మీ ప్రాజెక్ట్లో భాగం చేయడానికి ముందు కోడ్ను స్వయంగా సమీక్షించండి!
చివరగా, లైబ్రరీని చేర్చాలా వద్దా అని నిర్ణయించేటప్పుడు, దాని మొత్తం వినియోగాన్ని పరిగణించండి. విస్తృతంగా ఆమోదించబడిన లైబ్రరీకి పెద్ద కమ్యూనిటీ ఉండటం మరియు సమస్యల కోసం ఎక్కువ మంది దానిని పరిశీలించడం వంటి ప్రయోజనాలు ఉంటాయి. స్మార్ట్ కాంట్రాక్ట్లతో నిర్మించేటప్పుడు భద్రత మీ ప్రాథమిక దృష్టి అయి ఉండాలి!
సంబంధిత సాధనాలు
ఓపెన్జెప్పెలిన్ కాంట్రాక్ట్స్ - సురక్షితమైన స్మార్ట్ కాంట్రాక్ట్ డెవలప్మెంట్ కోసం అత్యంత ప్రజాదరణ పొందిన లైబ్రరీ.
- డాక్యుమెంటేషన్ (కొత్త ట్యాబ్లో తెరవబడుతుంది)
- GitHub (కొత్త ట్యాబ్లో తెరవబడుతుంది)
- కమ్యూనిటీ ఫోరమ్ (కొత్త ట్యాబ్లో తెరవబడుతుంది)
DappSys - స్మార్ట్ కాంట్రాక్ట్ల కోసం సురక్షితమైన, సరళమైన, సౌకర్యవంతమైన బిల్డింగ్-బ్లాక్లు.
HQ20 - వాస్తవ ప్రపంచం కోసం పూర్తి-ఫీచర్లు కలిగిన డిస్ట్రిబ్యూటెడ్ అప్లికేషన్లను నిర్మించడంలో మీకు సహాయపడటానికి కాంట్రాక్ట్లు, లైబ్రరీలు మరియు ఉదాహరణలతో కూడిన ఒక Solidity ప్రాజెక్ట్.
thirdweb Solidity SDK - కస్టమ్ స్మార్ట్ కాంట్రాక్ట్లను సమర్థవంతంగా నిర్మించడానికి అవసరమైన సాధనాలను అందిస్తుంది
సంబంధిత ట్యుటోరియల్స్
- ఎథీరియం డెవలపర్ల కోసం భద్రతా పరిగణనలు – లైబ్రరీ వినియోగంతో సహా స్మార్ట్ కాంట్రాక్ట్లను నిర్మించేటప్పుడు భద్రతా పరిగణనలపై ఒక ట్యుటోరియల్.
- ERC-20 టోకెన్ స్మార్ట్ కాంట్రాక్ట్ను అర్థం చేసుకోండి - బహుళ లైబ్రరీల ద్వారా అందించబడిన ERC-20 ప్రమాణంపై ట్యుటోరియల్.
మరింత పఠనం
మీకు సహాయపడిన కమ్యూనిటీ వనరు గురించి తెలుసా? ఈ పేజీని సవరించి, దాన్ని జోడించండి!