ప్రధాన కంటెంట్‌కు దాటవేయి
Change page

స్మార్ట్ కాంట్రాక్టుల నిర్మాణం

పేజీ చివరి నవీకరణ: 15 ఏప్రిల్, 2026

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

అవసరాలు

ముందుగా మీరు స్మార్ట్ కాంట్రాక్టుల గురించి చదివారని నిర్ధారించుకోండి. ఈ డాక్యుమెంట్ మీరు ఇప్పటికే జావాస్క్రిప్ట్ లేదా పైథాన్ వంటి ప్రోగ్రామింగ్ భాషలతో సుపరిచితులని భావిస్తుంది.

డేటా

ఏదైనా కాంట్రాక్ట్ డేటాను ఒక ప్రదేశానికి కేటాయించాలి: storage లేదా memory. స్మార్ట్ కాంట్రాక్ట్‌లో స్టోరేజీని సవరించడం ఖర్చుతో కూడుకున్నది, కనుక మీ డేటా ఎక్కడ ఉండాలో మీరు పరిగణించాలి.

నిల్వ

శాశ్వత డేటాను స్టోరేజ్ అని పిలుస్తారు మరియు ఇది స్టేట్ వేరియబుల్స్ ద్వారా సూచించబడుతుంది. ఈ విలువలు బ్లాక్ చైనులో శాశ్వతంగా నిల్వ చేయబడతాయి. మీరు రకాన్ని ప్రకటించాలి, తద్వారా కాంట్రాక్ట్ కంపైల్ అయినప్పుడు బ్లాక్‌చైన్‌లో ఎంత స్టోరేజ్ అవసరమో ట్రాక్ చేయగలదు.

// Solidity example
contract SimpleStorage {
    uint storedData; // State variable
    // ...
}
# Vyper example
storedData: int128

మీరు ఇప్పటికే ఆబ్జెక్ట్-ఓరియెంటెడ్ భాషలను ప్రోగ్రామ్ చేసి ఉంటే, మీరు చాలా రకాలతో సుపరిచితులుగా ఉండే అవకాశం ఉంది. అయితే, మీరు Ethereum డెవలప్‌మెంట్‌కు కొత్త అయితే address మీకు కొత్తగా ఉండాలి.

ఒక address రకం 20 బైట్లు లేదా 160 బిట్‌లకు సమానమైన Ethereum చిరునామాను కలిగి ఉంటుంది. ఇది ప్రముఖ 0xతో హెక్సాడెసిమల్ సంజ్ఞామానంలో తిరిగి వస్తుంది.

ఇతర రకాలు:

  • బూలియన్
  • పూర్ణాంకం
  • ఫిక్స్డ్ పాయింట్ సంఖ్యలు
  • ఫిక్స్డ్-సైజ్ బైట్ అర్రేలు
  • డైనమిక్‌గా పరిమాణంలో ఉండే బైట్ శ్రేణులు
  • రేషనల్ మరియు పూర్ణాంక లిటరల్స్
  • స్ట్రింగ్ లిటరల్స్
  • హెక్సాడెసిమల్ లిటరల్స్
  • ఎన్యుమ్స్

మరింత వివరణ కోసం, డాక్స్ చూడండి:

మెమరీ

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

సొలిడిటీ డాక్స్‌ (opens in a new tab)లో EVM డేటాను (స్టోరేజ్, మెమరీ మరియు స్టాక్) ఎలా నిల్వ చేస్తుందో మరింత తెలుసుకోండి.

ఎన్విరాన్‌మెంట్ వేరియబుల్స్

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

ఉదాహరణలు:

ప్రాప్స్టేట్ వేరియబుల్వివరణ
block.timestampuint256ప్రస్తుత బ్లాక్ ఎపోక్ టైమ్‌స్టాంప్
msg.senderచిరునామాసందేశం పంపినవారు (ప్రస్తుత కాల్)

ఫంక్షన్స్

చాలా సరళమైన పరంగా చెప్పాలంటే, ఇన్‌కమింగ్ లావాదేవీలకు ప్రతిస్పందనగా ఫంక్షన్‌లు సమాచారాన్ని పొందగలవు లేదా సమాచారాన్ని సెట్ చేయగలవు.

ఫంక్షన్ కాల్స్‌లో రెండు రకాలు ఉన్నాయి:

  • internal – ఇవి EVM కాల్‌ను సృష్టించవు
    • అంతర్గత ఫంక్షన్‌లు మరియు స్టేట్ వేరియబుల్స్ అంతర్గతంగా మాత్రమే యాక్సెస్ చేయబడతాయి (అంటే, ప్రస్తుత కాంట్రాక్ట్ లేదా దాని నుండి పొందిన కాంట్రాక్ట్‌ల నుండి)
  • external – ఇవి EVM కాల్‌ను సృష్టిస్తాయి
    • బాహ్య ఫంక్షన్‌లు కాంట్రాక్ట్ ఇంటర్‌ఫేస్‌లో భాగంగా ఉంటాయి, అంటే వాటిని ఇతర కాంట్రాక్ట్‌ల నుండి మరియు లావాదేవీల ద్వారా కాల్ చేయవచ్చు. ఒక బాహ్య ఫంక్షన్ fని అంతర్గతంగా కాల్ చేయలేము (అంటే, f() పని చేయదు, కానీ this.f() పని చేస్తుంది).

అవి public లేదా private కూడా కావచ్చు

  • public ఫంక్షన్‌లను కాంట్రాక్ట్ లోపల అంతర్గతంగా లేదా సందేశాల ద్వారా బాహ్యంగా కాల్ చేయవచ్చు
  • private ఫంక్షన్‌లు అవి నిర్వచించబడిన కాంట్రాక్ట్‌కు మాత్రమే కనిపిస్తాయి మరియు ఉత్పన్నమైన కాంట్రాక్ట్‌లలో కనిపించవు

ఫంక్షన్‌లు మరియు స్టేట్ వేరియబుల్స్ రెండింటినీ పబ్లిక్ లేదా ప్రైవేట్‌గా చేయవచ్చు

ఒక కాంట్రాక్ట్‌లోని స్టేట్ వేరియబుల్‌ను అప్‌డేట్ చేయడానికి ఇక్కడ ఒక ఫంక్షన్ ఉంది:

// Solidity example
function update_name(string value) public {
    dapp_name = value;
}
  • string రకం యొక్క value పరామితి ఫంక్షన్‌లోకి పంపబడుతుంది: update_name
  • ఇది publicగా ప్రకటించబడింది, అంటే ఎవరైనా దీన్ని యాక్సెస్ చేయవచ్చు
  • ఇది viewగా ప్రకటించబడలేదు, కాబట్టి ఇది కాంట్రాక్ట్ స్టేట్‌ను సవరించగలదు

వ్యూ ఫంక్షన్‌లు

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

// Solidity example
function balanceOf(address _owner) public view returns (uint256 _balance) {
    return ownerPizzaCount[_owner];
}
dappName: public(string)

@view
@public
def readName() -> string:
  return dappName

స్థితిని సవరించడంగా ఏమి పరిగణించబడుతుంది:

  1. స్టేట్ వేరియబుల్స్‌కి రాయడం.
  2. ఈవెంట్‌లను విడుదల చేయడం (opens in a new tab).
  3. ఇతర కాంట్రాక్ట్‌లను సృష్టించడం (opens in a new tab).
  4. selfdestruct ఉపయోగించడం.
  5. కాల్స్ ద్వారా ఈథర్‌ను పంపడం.
  6. view లేదా pure అని మార్క్ చేయని ఏ ఫంక్షన్‌ను అయినా కాల్ చేయడం.
  7. తక్కువ-స్థాయి కాల్స్‌ను ఉపయోగించడం.
  8. కొన్ని ఆప్‌కోడ్‌లను కలిగి ఉన్న ఇన్‌లైన్ అసెంబ్లీని ఉపయోగించడం.

కన్స్ట్రక్టర్ ఫంక్షన్‌లు

constructor ఫంక్షన్‌లు కాంట్రాక్ట్‌ను మొదటిసారి డిప్లాయ్ చేసినప్పుడు ఒకసారి మాత్రమే అమలు చేయబడతాయి. అనేక క్లాస్-ఆధారిత ప్రోగ్రామింగ్ భాషలలో constructor లాగా, ఈ ఫంక్షన్‌లు తరచుగా స్టేట్ వేరియబుల్స్‌ను వాటి పేర్కొన్న విలువలకు ప్రారంభిస్తాయి.

# Vyper example

@external
def __init__(_beneficiary: address, _bidding_time: uint256):
    self.beneficiary = _beneficiary
    self.auctionStart = block.timestamp
    self.auctionEnd = self.auctionStart + _bidding_time

అంతర్నిర్మిత ఫంక్షన్‌లు

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

  • address.send() – సొలిడిటీ
  • send(address) – వైపర్

ఇవి కాంట్రాక్ట్‌లను ఇతర ఖాతాలకు ETH పంపడానికి అనుమతిస్తాయి.

ఫంక్షన్‌లను రాయడం

మీ ఫంక్షన్‌కు అవసరం:

  • పరామితి వేరియబుల్ మరియు రకం (ఇది పరామితులను అంగీకరిస్తే)
  • అంతర్గత/బాహ్య యొక్క ప్రకటన
  • pure/view/payable యొక్క ప్రకటన
  • రిటర్న్స్ రకం (ఇది ఒక విలువను తిరిగి ఇస్తే)

ఒక పూర్తి కాంట్రాక్ట్ ఇలా ఉండవచ్చు. ఇక్కడ constructor ఫంక్షన్ dapp_name వేరియబుల్ కోసం ప్రారంభ విలువను అందిస్తుంది.

ఈవెంట్‌లు మరియు లాగ్‌లు

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

వివరణాత్మక ఉదాహరణలు

ఇవి Solidity లో వ్రాసిన కొన్ని ఉదాహరణలు. మీరు కోడ్‌తో ఆడాలనుకుంటే, మీరు Remix (opens in a new tab)లో వాటితో ఇంటరాక్ట్ అవ్వవచ్చు.

హలో వరల్డ్

టోకెన్

ప్రత్యేక డిజిటల్ ఆస్తి

మరింత సమాచారం

స్మార్ట్ కాంట్రాక్టుల యొక్క మరింత పూర్తి అవలోకనం కోసం సొలిడిటీ మరియు వైపర్ యొక్క డాక్యుమెంటేషన్‌ను చూడండి:

ఈ వ్యాసం ఉపయోగకరంగా ఉందా?