---
title: "స్మార్ట్ కాంట్రాక్ట్‌ల పరిచయం"
description: "స్మార్ట్ కాంట్రాక్ట్‌ల యొక్క ప్రత్యేక లక్షణాలు మరియు పరిమితులపై దృష్టి సారించే ఒక అవలోకనం."
lang: te
---

## స్మార్ట్ కాంట్రాక్ట్ అంటే ఏమిటి? {#what-is-a-smart-contract}

ఒక "స్మార్ట్ కాంట్రాక్ట్" అనేది కేవలం [ఎథీరియం](/) బ్లాక్‌చైన్‌పై రన్ అయ్యే ఒక ప్రోగ్రామ్. ఇది ఎథీరియం బ్లాక్‌చైన్‌లోని ఒక నిర్దిష్ట చిరునామా వద్ద ఉండే కోడ్ (దాని ఫంక్షన్‌లు) మరియు డేటా (దాని స్థితి) యొక్క సేకరణ.

స్మార్ట్ కాంట్రాక్ట్‌లు ఒక రకమైన [ఎథీరియం ఖాతా](/developers/docs/accounts/). అంటే వాటికి బ్యాలెన్స్ ఉంటుంది మరియు అవి లావాదేవీలకు లక్ష్యంగా ఉండగలవు. అయితే అవి వినియోగదారుచే నియంత్రించబడవు, బదులుగా అవి నెట్‌వర్క్‌కు డిప్లాయ్ చేయబడతాయి మరియు ప్రోగ్రామ్ చేయబడిన విధంగా రన్ అవుతాయి. వినియోగదారు ఖాతాలు స్మార్ట్ కాంట్రాక్ట్‌పై నిర్వచించబడిన ఫంక్షన్‌ను అమలు చేసే లావాదేవీలను సమర్పించడం ద్వారా స్మార్ట్ కాంట్రాక్ట్‌తో ఇంటరాక్ట్ అవ్వగలవు. స్మార్ట్ కాంట్రాక్ట్‌లు సాధారణ కాంట్రాక్ట్ లాగా నియమాలను నిర్వచించగలవు మరియు కోడ్ ద్వారా వాటిని స్వయంచాలకంగా అమలు చేయగలవు. స్మార్ట్ కాంట్రాక్ట్‌లను డిఫాల్ట్‌గా తొలగించలేము మరియు వాటితో జరిగే ఇంటరాక్షన్‌లను వెనక్కి తీసుకోలేము.

## ముందస్తు అవసరాలు {#prerequisites}

మీరు ఇప్పుడే ప్రారంభిస్తున్నట్లయితే లేదా తక్కువ సాంకేతిక పరిచయం కోసం చూస్తున్నట్లయితే, మా [స్మార్ట్ కాంట్రాక్ట్‌ల పరిచయం](/smart-contracts/)ని మేము సిఫార్సు చేస్తున్నాము.

స్మార్ట్ కాంట్రాక్ట్‌ల ప్రపంచంలోకి ప్రవేశించే ముందు మీరు [ఖాతాలు](/developers/docs/accounts/), [లావాదేవీలు](/developers/docs/transactions/) మరియు [ఎథీరియం వర్చువల్ మెషీన్](/developers/docs/evm/) గురించి చదివారని నిర్ధారించుకోండి.

## డిజిటల్ వెండింగ్ మెషీన్ {#a-digital-vending-machine}

[నిక్ సబో](https://unenumerated.blogspot.com/) వివరించినట్లుగా, స్మార్ట్ కాంట్రాక్ట్‌కు బహుశా ఉత్తమ రూపకం వెండింగ్ మెషీన్. సరైన ఇన్‌పుట్‌లతో, నిర్దిష్ట అవుట్‌పుట్ హామీ ఇవ్వబడుతుంది.

వెండింగ్ మెషీన్ నుండి స్నాక్ పొందడానికి:

```
డబ్బు + స్నాక్ ఎంపిక = స్నాక్ పంపిణీ చేయబడుతుంది
```

ఈ లాజిక్ వెండింగ్ మెషీన్‌లో ప్రోగ్రామ్ చేయబడింది.

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

```solidity
pragma solidity 0.8.7;

contract VendingMachine {

    // కాంట్రాక్ట్ యొక్క స్థితి వేరియబుల్స్‌ను ప్రకటించండి
    address public owner;
    mapping (address => uint) public cupcakeBalances;

    // 'VendingMachine' కాంట్రాక్ట్ డిప్లాయ్ చేసినప్పుడు:
    // 1. డిప్లాయ్ చేసే చిరునామాను కాంట్రాక్ట్ యొక్క యజమానిగా సెట్ చేయండి
    // 2. డిప్లాయ్ చేసిన స్మార్ట్ కాంట్రాక్ట్ యొక్క కప్‌కేక్ బ్యాలెన్స్‌ను 100కి సెట్ చేయండి
    constructor() {
        owner = msg.sender;
        cupcakeBalances[address(this)] = 100;
    }

    // స్మార్ట్ కాంట్రాక్ట్ యొక్క కప్‌కేక్ బ్యాలెన్స్‌ను పెంచడానికి యజమానిని అనుమతించండి
    function refill(uint amount) public {
        require(msg.sender == owner, "Only the owner can refill.");
        cupcakeBalances[address(this)] += amount;
    }

    // కప్‌కేక్‌లను కొనుగోలు చేయడానికి ఎవరినైనా అనుమతించండి
    function purchase(uint amount) public payable {
        require(msg.value >= amount * 1 ether, "You must pay at least 1 ETH per cupcake");
        require(cupcakeBalances[address(this)] >= amount, "Not enough cupcakes in stock to complete this purchase");
        cupcakeBalances[address(this)] -= amount;
        cupcakeBalances[msg.sender] += amount;
    }
}
```

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

## అనుమతి రహిత {#permissionless}

ఎవరైనా స్మార్ట్ కాంట్రాక్ట్‌ను వ్రాసి దానిని నెట్‌వర్క్‌కు డిప్లాయ్ చేయవచ్చు. మీరు కేవలం [స్మార్ట్ కాంట్రాక్ట్ భాష](/developers/docs/smart-contracts/languages/)లో కోడ్ చేయడం ఎలాగో నేర్చుకోవాలి మరియు మీ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడానికి తగినంత ETH కలిగి ఉండాలి. స్మార్ట్ కాంట్రాక్ట్‌ను డిప్లాయ్ చేయడం సాంకేతికంగా ఒక లావాదేవీ, కాబట్టి మీరు సాధారణ ETH బదిలీకి గ్యాస్ చెల్లించినట్లే [గ్యాస్](/developers/docs/gas/) చెల్లించాలి. అయితే, కాంట్రాక్ట్ డిప్లాయ్‌మెంట్ కోసం గ్యాస్ ఖర్చులు చాలా ఎక్కువగా ఉంటాయి.

స్మార్ట్ కాంట్రాక్ట్‌లను వ్రాయడానికి ఎథీరియం డెవలపర్-స్నేహపూర్వక భాషలను కలిగి ఉంది:

- Solidity
- Vyper

[భాషల గురించి మరింత](/developers/docs/smart-contracts/languages/)

అయితే, ఎథీరియం యొక్క వర్చువల్ మెషీన్ కాంట్రాక్ట్‌ను అర్థం చేసుకోవడానికి మరియు నిల్వ చేయడానికి వీలుగా వాటిని డిప్లాయ్ చేయడానికి ముందు కంపైల్ చేయాలి. [కంపైలేషన్ గురించి మరింత](/developers/docs/smart-contracts/compiling/)

## కూర్పు సామర్థ్యం {#composability}

స్మార్ట్ కాంట్రాక్ట్‌లు ఎథీరియంలో పబ్లిక్‌గా ఉంటాయి మరియు వాటిని ఓపెన్ APIలుగా భావించవచ్చు. అంటే సాధ్యమయ్యే వాటిని గొప్పగా విస్తరించడానికి మీరు మీ స్వంత స్మార్ట్ కాంట్రాక్ట్‌లో ఇతర స్మార్ట్ కాంట్రాక్ట్‌లను కాల్ చేయవచ్చు. కాంట్రాక్ట్‌లు ఇతర కాంట్రాక్ట్‌లను కూడా డిప్లాయ్ చేయగలవు.

[స్మార్ట్ కాంట్రాక్ట్ కూర్పు సామర్థ్యం](/developers/docs/smart-contracts/composability/) గురించి మరింత తెలుసుకోండి.

## పరిమితులు {#limitations}

స్మార్ట్ కాంట్రాక్ట్‌లు మాత్రమే "వాస్తవ-ప్రపంచ" ఈవెంట్‌ల గురించి సమాచారాన్ని పొందలేవు ఎందుకంటే అవి ఆఫ్‌చైన్ మూలాల నుండి డేటాను తిరిగి పొందలేవు. అంటే అవి వాస్తవ ప్రపంచంలోని ఈవెంట్‌లకు ప్రతిస్పందించలేవు. ఇది డిజైన్ ద్వారా జరిగింది. బాహ్య సమాచారంపై ఆధారపడటం ఏకాభిప్రాయాన్ని ప్రమాదంలో పడేస్తుంది, ఇది భద్రత మరియు వికేంద్రీకరణకు ముఖ్యమైనది.

అయితే, బ్లాక్‌చైన్ అప్లికేషన్‌లు ఆఫ్‌చైన్ డేటాను ఉపయోగించగలగడం ముఖ్యం. దీనికి పరిష్కారం [ఆరకిల్స్ (oracles)](/developers/docs/oracles/), ఇవి ఆఫ్‌చైన్ డేటాను గ్రహించి స్మార్ట్ కాంట్రాక్ట్‌లకు అందుబాటులో ఉంచే సాధనాలు.

స్మార్ట్ కాంట్రాక్ట్‌ల యొక్క మరొక పరిమితి గరిష్ట కాంట్రాక్ట్ పరిమాణం. స్మార్ట్ కాంట్రాక్ట్ గరిష్టంగా 24KB ఉండవచ్చు లేదా దానికి గ్యాస్ అయిపోతుంది. [డైమండ్ ప్యాటర్న్](https://eips.ethereum.org/EIPS/eip-2535)ని ఉపయోగించడం ద్వారా దీనిని అధిగమించవచ్చు.

## మల్టీసిగ్ కాంట్రాక్ట్‌లు {#multisig}

మల్టీసిగ్ (బహుళ-సంతకాల) కాంట్రాక్ట్‌లు అనేవి లావాదేవీని అమలు చేయడానికి బహుళ చెల్లుబాటు అయ్యే సంతకాలు అవసరమయ్యే స్మార్ట్ కాంట్రాక్ట్ ఖాతాలు. గణనీయమైన మొత్తంలో ఈథర్ లేదా ఇతర టోకెన్‌లను కలిగి ఉన్న కాంట్రాక్ట్‌ల కోసం సింగిల్ పాయింట్ ఆఫ్ ఫెయిల్యూర్‌ను నివారించడానికి ఇది చాలా ఉపయోగకరంగా ఉంటుంది. మల్టీసిగ్‌లు కాంట్రాక్ట్ అమలు మరియు కీ నిర్వహణ బాధ్యతను బహుళ పార్టీల మధ్య విభజిస్తాయి మరియు ఒకే ప్రైవేట్ కీ కోల్పోవడం వల్ల నిధులు తిరిగి పొందలేని విధంగా నష్టపోకుండా నిరోధిస్తాయి. ఈ కారణాల వల్ల, సాధారణ DAO పరిపాలన కోసం మల్టీసిగ్ కాంట్రాక్ట్‌లను ఉపయోగించవచ్చు. మల్టీసిగ్‌లు అమలు కావడానికి M సాధ్యమయ్యే ఆమోదయోగ్యమైన సంతకాలలో N సంతకాలు అవసరం (ఇక్కడ N ≤ M, మరియు M > 1). `N = 3, M = 5` మరియు `N = 4, M = 7` సాధారణంగా ఉపయోగించబడతాయి. 4/7 మల్టీసిగ్‌కు ఏడు సాధ్యమయ్యే చెల్లుబాటు అయ్యే సంతకాలలో నాలుగు అవసరం. అంటే మూడు సంతకాలు కోల్పోయినప్పటికీ నిధులను తిరిగి పొందవచ్చు. ఈ సందర్భంలో, కాంట్రాక్ట్ అమలు కావడానికి మెజారిటీ కీ-హోల్డర్‌లు అంగీకరించి సంతకం చేయాలని కూడా దీని అర్థం.

## స్మార్ట్ కాంట్రాక్ట్ వనరులు {#smart-contract-resources}

**ఓపెన్‌జెప్పెలిన్ కాంట్రాక్ట్‌లు -** **_సురక్షితమైన స్మార్ట్ కాంట్రాక్ట్ డెవలప్‌మెంట్ కోసం లైబ్రరీ._**

- [openzeppelin.com/contracts/](https://openzeppelin.com/contracts/)
- [GitHub](https://github.com/OpenZeppelin/openzeppelin-contracts)
- [కమ్యూనిటీ ఫోరమ్](https://forum.openzeppelin.com/c/general/16)

## మరింత పఠనం {#further-reading}

- [కాయిన్‌బేస్: స్మార్ట్ కాంట్రాక్ట్ అంటే ఏమిటి?](https://www.coinbase.com/learn/crypto-basics/what-is-a-smart-contract)
- [చైన్‌లింక్: స్మార్ట్ కాంట్రాక్ట్ అంటే ఏమిటి?](https://chain.link/education/smart-contracts)
- [వీడియో: సులభంగా వివరించబడింది - స్మార్ట్ కాంట్రాక్ట్‌లు](https://youtu.be/ZE2HxTmxfrI)
- [Cyfrin Updraft: Web3 లెర్నింగ్ మరియు ఆడిటింగ్ ప్లాట్‌ఫారమ్](https://updraft.cyfrin.io)

## ట్యుటోరియల్స్: ఎథీరియంపై స్మార్ట్ కాంట్రాక్ట్ సంతకాలు (EIP-1271) {#tutorials}

- [EIP-1271: స్మార్ట్ కాంట్రాక్ట్ సంతకాలను సంతకం చేయడం మరియు ధృవీకరించడం](/developers/tutorials/eip-1271-smart-contract-signatures/) _– సేఫ్ (Safe) ఇంప్లిమెంటేషన్ యొక్క వాక్‌త్రూతో, సంతకాలను ధృవీకరించడానికి EIP-1271 స్మార్ట్ కాంట్రాక్ట్‌లను ఎలా అనుమతిస్తుంది._