> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Lido Validator Exit Notifications

> Lido validator exit requests की निगरानी करने और open-source monitoring template का उपयोग करके Telegram के माध्यम से notifications भेजने के लिए Tenderly Web3 Actions का उपयोग करना सीखें।

इस tutorial में, हम आपको दिखाएंगे कि कैसे **Lido validator exit requests की निगरानी के लिए एक Tenderly Web3 Action सेट अप करें** और Telegram के माध्यम से notifications भेजें। यह project प्रदर्शित करता है कि smart contracts और external APIs के साथ interact करने के लिए Web3 Actions का उपयोग कैसे करें और एक custom notification system कैसे बनाएँ।

Lido validator exit requests की अपनी खुद की निगरानी सेट अप करने के लिए इस Github project template का उपयोग करें:

<Card title="Validator monitoring Web3 Action template" href="" />

## Project अवलोकन

इस project का उद्देश्य एक system सेट अप करना है जो Lido validator exit requests की निगरानी करता है और विशिष्ट शर्तें पूरी होने पर notifications भेजता है।

यहाँ project के flow का एक quick breakdown है:

1. **प्रासंगिक on-chain events पर subscribe करें**: Web3 Action Ethereum mainnet पर Lido contract से `ValidatorExitRequest` events के लिए listen करता है।
2. **Tenderly API का उपयोग करके event को Decode करें**: जब कोई event detect होता है, तो यह Tenderly API का उपयोग करके transaction विवरण प्राप्त करता है।
3. **रुचि के विशिष्ट events के लिए Filter करें**: `ValidatorExitRequest` event का आगे मूल्यांकन तब किया जाता है जब `stakingModuleId` 1 है और `nodeOperatorId` 14 है।
4. **प्रतिक्रिया दें**: यदि रुचि का `ValidatorExitRequest` हुआ है, तो Web3 Action validator exit request के बारे में विवरण के साथ निर्दिष्ट Telegram channel पर एक notification भेजता है।

## पूर्वापेक्षाएँ

शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित है:

* [Tenderly CLI](https://github.com/Tenderly/tenderly-cli) स्थापित
* [Node.js](https://nodejs.org/) (v20 वर्तमान में समर्थित)
* [npm](https://www.npmjs.com/)
* एक Telegram bot token और channel ID
* एक Tenderly account और project

### Setup

आइए अपने Lido Validator Exit Notification system को सेट अप करने के चरणों से गुज़रें:

<Steps>
  ### Repository को Clone करें

  पहले, project repository को clone करें और project directory पर navigate करें:

  ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  git clone https://github.com/Tenderly/tenderly-lido-validator-monitoring-solution
  cd tenderly-lido-validator-monitoring-solution
  ```

  ### Dependencies स्थापित करें

  आवश्यक npm packages स्थापित करें:

  ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  npm install
  ```

  ### Tenderly Project कॉन्फ़िगर करें

  इन चरणों का पालन करके अपना Tenderly project सेट अप करें:

  1. अपने Tenderly account में log in करें
  2. एक नया project बनाएँ या एक मौजूदा का उपयोग करें
  3. अपना [**Account Name और Project Slug**](/platform/account/projects/slug) नोट करें

  ### tenderly.yaml कॉन्फ़िगर करें

  अपने Tenderly project information के साथ `tenderly.yaml` file को update करें:

  ```yaml showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  account_id: "<YOUR_ACCOUNT_ID>"
  actions:
    <YOUR_ACCOUNT_ID>/<YOUR_PROJECT_SLUG>:
      runtime: v2
      sources: actions
      specs:
        action_name:
          description: Get a notification when condition matches on Lido tx
          function: lidoEvents:subscribeToLidoValidatorExitRequestFn
          execution_type: parallel
          trigger:
            type: transaction
            transaction:
              status:
                - mined
              filters:
                - network: 1
                  eventEmitted:
                    contract:
                      address: 0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e
                    name: ValidatorExitRequest
  project_slug: "<YOUR_PROJECT_SLUG>"
  ```

  `<YOUR_ACCOUNT_ID>` और `<YOUR_PROJECT_SLUG>` को अपने वास्तविक Tenderly **Account Name** और **Project Slug** से बदलना सुनिश्चित करें।

  ### contract address को project में जोड़ें

  action deploy करने और वांछित contract की निगरानी करने में सक्षम होने के लिए, आपको उस contract को project में जोड़ने की आवश्यकता है।

  इस मामले में हम **`0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e`** जोड़ना चाहते हैं।

  ### Secrets सेट अप करें

  अपनी Web3 Actions में निम्न secrets जोड़ें:

  * `BEARER`: आपकी Tenderly API bearer token
  * `BOT-TOKEN`: आपका Telegram bot token
  * `CHANNEL-ID`: आपकी Telegram channel ID

  secrets जोड़ने के लिए, अपने project के भीतर Web3 Actions पर जाएँ और [Secrets](/monitoring/web3-actions/references/context#secrets) अनुभाग पर navigate करें।

  ### Deployment

  अपनी Web3 Action deploy करने के लिए, Tenderly CLI का उपयोग करें:

  ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  tenderly actions deploy
  ```

  यह command आपकी `tenderly.yaml` file में परिभाषित action को deploy करेगा।
</Steps>

## यह कैसे काम करता है

आइए `lidoEvents.ts` file के main components का breakdown करें:

```typescript showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}

const subscribeToLidoValidatorExitRequestFn = async (
  context: Context,
  transactionEvent: TransactionEvent,
) => {
  // Event handling logic here
};

// Helper functions for API calls and notifications
```

`subscribeToLidoValidatorExitRequestFn` function हमारी Web3 Action के लिए मुख्य entry point है। यह निम्न tasks को संभालता है:

1. Tenderly API का उपयोग करके transaction विवरण retrieve करता है
2. जाँच करता है कि `stakingModuleId` 1 है और `nodeOperatorId` 14 है
3. यदि शर्त पूरी हो जाती है, तो निर्दिष्ट Telegram channel पर notification भेजता है

### Transaction Trace के लिए Tenderly API

इस Web3 Action का एक महत्वपूर्ण हिस्सा Tenderly API का उपयोग करके transaction trace retrieve करना है। यहाँ उपयोग किया गया API endpoint है:

```typescript theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const url = `https://api.tenderly.co/api/v1/public-contract/${network}/trace/${txHash}`;
```

यह API endpoint transaction का detailed trace देता है, जिसमें transaction execution के दौरान emit किए गए सभी logs और events शामिल हैं। यहाँ URL का प्रत्येक भाग क्या दर्शाता है:

* `https://api.tenderly.co/api/v1/public-contract/`: Tenderly के public contract API के लिए base URL
* `${network}`: network identifier (जैसे Ethereum Mainnet के लिए `1`)
* `${txHash}`: उस transaction का hash जिसमें हमारी रुचि है

इस API से response में transaction के बारे में जानकारी की एक wealth होती है, जिसमें शामिल हैं:

* सभी emit किए गए events और उनके parameters
* transaction के दौरान किए गए internal calls
* हुए state changes

हमारी Web3 Action में, हम इस trace का उपयोग `ValidatorExitRequest` event को खोजने और प्रासंगिक जानकारी extract करने के लिए करते हैं:

```typescript showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const validatorExitRequestLog = result.logs.find(
  (log: any) => log.name === "ValidatorExitRequest"
);

if (validatorExitRequestLog) {
  const stakingModuleId = validatorExitRequestLog.inputs.find(
    (input: any) => input.soltype.name === "stakingModuleId"
  )?.value;
  const nodeOperatorId = validatorExitRequestLog.inputs.find(
    (input: any) => input.soltype.name === "nodeOperatorId"
  )?.value;
  // ... other parameters
}
```

यह हमें रुचि के validator exit requests को precisely पहचानने और notification भेजने के लिए आवश्यक जानकारी extract करने की अनुमति देता है।

<Note>
  transaction traces के लिए Tenderly API का उपयोग करना on-chain events के बारे में detailed जानकारी access करने का एक शक्तिशाली तरीका प्रदान करता है, बिना blockchain के साथ सीधे interact किए या अपना खुद का node सेट अप किए।
</Note>

## Customization

Lido validator exits के लिए, रुचि के events को `stakingModuleId` parameter के मान 1, और `nodeOperatorId` के मान 14 द्वारा पहचाना जाता है।

इन filtering शर्तों को modify करने या निगरानी के लिए अधिक events जोड़ने के लिए:

1. `lidoEvents.ts` file को edit करें
2. अपनी आवश्यकताओं से मेल खाने के लिए `if` statement में condition check को update करें
3. message format को modify करें या आवश्यकतानुसार अतिरिक्त जानकारी जोड़ें

उदाहरण के लिए, `stakingModuleId` और `nodeOperatorId` शर्तों को बदलने के लिए:

```typescript showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
if (stakingModuleId == 1 && nodeOperatorId == 14) {
  // Your custom logic here
}
```

## Monitoring और Troubleshooting

यह सुनिश्चित करने के लिए कि आपकी Web3 Action सही तरीके से काम कर रही है:

* Tenderly dashboard में अपनी Web3 Action executions की निगरानी करें
* किसी भी error संदेशों या execution विवरण के लिए Tenderly logs की जाँच करें
* सुनिश्चित करें कि आपके Telegram bot को निर्दिष्ट channel पर संदेश भेजने की अनुमति है

<Warning>
  यह setup विशेष रूप से Ethereum mainnet पर Lido validator exit requests की निगरानी के लिए designed है।
</Warning>

## निष्कर्ष

आपने अब Lido validator exit requests की निगरानी के लिए Tenderly Web3 Actions का उपयोग करके एक custom notification system सेट अप कर लिया है।
