---
title: "ఈవెంట్‌లతో స్మార్ట్ కాంట్రాక్ట్‌ల నుండి డేటాను లాగ్ చేయడం"
description: "స్మార్ట్ కాంట్రాక్ట్ ఈవెంట్‌లకు పరిచయం మరియు డేటాను లాగ్ చేయడానికి మీరు వాటిని ఎలా ఉపయోగించవచ్చు"
author: "jdourlens"
tags: ["స్మార్ట్ కాంట్రాక్ట్‌లు", "Remix", "Solidity", "ఈవెంట్‌లు"]
skill: intermediate
breadcrumb: "ఈవెంట్ లాగింగ్"
lang: te
published: 2020-04-03
source: EthereumDev
sourceUrl: https://ethereumdev.io/logging-data-with-events/
address: "0x19dE91Af973F404EDF5B4c093983a7c6E3EC8ccE"
---

Solidity లో, [ఈవెంట్‌లు](/developers/docs/smart-contracts/anatomy/#events-and-logs) అనేవి స్మార్ట్ కాంట్రాక్ట్‌లు ఫైర్ చేయగల డిస్పాచ్ చేయబడిన సిగ్నల్స్. వికేంద్రీకృత అప్లికేషన్‌లు (dapps), లేదా ఎథీరియం జేసన్-ఆర్‌పీసీ API కి కనెక్ట్ చేయబడిన ఏదైనా సరే, ఈ ఈవెంట్‌లను వినగలవు మరియు తదనుగుణంగా వ్యవహరించగలవు. ఈవెంట్ చరిత్రను తర్వాత వెతకడానికి వీలుగా ఒక ఈవెంట్‌ను ఇండెక్స్ కూడా చేయవచ్చు.

## ఈవెంట్‌లు {#events}

ఈ వ్యాసం రాసే సమయానికి ఎథీరియం బ్లాక్‌చైన్‌లో అత్యంత సాధారణ ఈవెంట్ ఏమిటంటే, ఎవరైనా టోకెన్‌లను బదిలీ చేసినప్పుడు ERC-20 టోకెన్‌ల ద్వారా ఎమిట్ చేయబడే Transfer ఈవెంట్.

```solidity
event Transfer(address indexed from, address indexed to, uint256 value);
```

ఈవెంట్ సంతకం కాంట్రాక్ట్ కోడ్ లోపల డిక్లేర్ చేయబడుతుంది మరియు emit కీవర్డ్‌తో ఎమిట్ చేయబడుతుంది. ఉదాహరణకు, బదిలీ (transfer) ఈవెంట్ బదిలీని ఎవరు పంపారు (_from_), ఎవరికి పంపారు (_to_) మరియు ఎన్ని టోకెన్‌లు బదిలీ చేయబడ్డాయి (_value_) అనే విషయాలను లాగ్ చేస్తుంది.

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

```solidity
pragma solidity 0.5.17;

contract Counter {

    event ValueChanged(uint oldValue, uint256 newValue);

    // కౌంట్‌ల సంఖ్యను ఉంచడానికి అన్‌సైన్డ్ ఇంట్ రకానికి చెందిన ప్రైవేట్ వేరియబుల్
    uint256 private count = 0;

    // మన కౌంటర్‌ను పెంచే ఫంక్షన్
    function increment() public {
        count += 1;
        emit ValueChanged(count - 1, count);
    }

    // కౌంట్ విలువను పొందడానికి గెట్టర్
    function getCount() public view returns (uint256) {
        return count;
    }

}
```

వీటిని గమనించండి:

- **లైన్ 5**: మనం మన ఈవెంట్‌ను మరియు అది దేనిని కలిగి ఉందో, పాత విలువ మరియు కొత్త విలువను డిక్లేర్ చేస్తాము.

- **లైన్ 13**: మనం మన కౌంట్ వేరియబుల్‌ను పెంచినప్పుడు (increment), మనం ఈవెంట్‌ను ఎమిట్ చేస్తాము.

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

![Remix screenshot](./remix-screenshot.png)

మీ స్మార్ట్ కాంట్రాక్ట్‌లను డీబగ్ చేయడానికి లాగ్‌లు నిజంగా ఉపయోగపడతాయి, అయితే మీరు వేర్వేరు వ్యక్తులు ఉపయోగించే అప్లికేషన్‌లను నిర్మిస్తే అవి కూడా ముఖ్యమైనవి మరియు మీ స్మార్ట్ కాంట్రాక్ట్ ఎలా ఉపయోగించబడుతుందో ట్రాక్ చేయడానికి మరియు అర్థం చేసుకోవడానికి విశ్లేషణలను (analytics) సులభతరం చేస్తాయి. లావాదేవీల ద్వారా రూపొందించబడిన లాగ్‌లు ప్రసిద్ధ బ్లాక్ ఎక్స్‌ప్లోరర్‌లలో ప్రదర్శించబడతాయి మరియు ఉదాహరణకు నిర్దిష్ట ఈవెంట్‌లను వినడానికి మరియు అవి సంభవించినప్పుడు చర్య తీసుకోవడానికి ఆఫ్‌చైన్ స్క్రిప్ట్‌లను సృష్టించడానికి కూడా మీరు వాటిని ఉపయోగించవచ్చు.