मुख्य सामग्री पर जाएं
इस 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 का उपयोग करें:

Validator monitoring Web3 Action template

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 स्थापित
  • Node.js (v20 वर्तमान में समर्थित)
  • npm
  • एक Telegram bot token और channel ID
  • एक Tenderly account और project

Setup

आइए अपने Lido Validator Exit Notification system को सेट अप करने के चरणों से गुज़रें:
1
Repository को Clone करें
2
पहले, project repository को clone करें और project directory पर navigate करें:
3
git clone https://github.com/Tenderly/tenderly-lido-validator-monitoring-solution
cd tenderly-lido-validator-monitoring-solution
4
Dependencies स्थापित करें
5
आवश्यक npm packages स्थापित करें:
6
npm install
7
Tenderly Project कॉन्फ़िगर करें
8
इन चरणों का पालन करके अपना Tenderly project सेट अप करें:
9
  • अपने Tenderly account में log in करें
  • एक नया project बनाएँ या एक मौजूदा का उपयोग करें
  • अपना Account Name और Project Slug नोट करें
  • 10
    tenderly.yaml कॉन्फ़िगर करें
    11
    अपने Tenderly project information के साथ tenderly.yaml file को update करें:
    12
    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>"
    
    13
    <YOUR_ACCOUNT_ID> और <YOUR_PROJECT_SLUG> को अपने वास्तविक Tenderly Account Name और Project Slug से बदलना सुनिश्चित करें।
    14
    contract address को project में जोड़ें
    15
    action deploy करने और वांछित contract की निगरानी करने में सक्षम होने के लिए, आपको उस contract को project में जोड़ने की आवश्यकता है।
    16
    इस मामले में हम 0x0de4ea0184c2ad0baca7183356aea5b8d5bf5c6e जोड़ना चाहते हैं।
    17
    Secrets सेट अप करें
    18
    अपनी Web3 Actions में निम्न secrets जोड़ें:
    19
  • BEARER: आपकी Tenderly API bearer token
  • BOT-TOKEN: आपका Telegram bot token
  • CHANNEL-ID: आपकी Telegram channel ID
  • 20
    secrets जोड़ने के लिए, अपने project के भीतर Web3 Actions पर जाएँ और Secrets अनुभाग पर navigate करें।
    21
    Deployment
    22
    अपनी Web3 Action deploy करने के लिए, Tenderly CLI का उपयोग करें:
    23
    tenderly actions deploy
    
    24
    यह command आपकी tenderly.yaml file में परिभाषित action को deploy करेगा।

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

    आइए lidoEvents.ts file के main components का breakdown करें:
    showLineNumbers
    
    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 है:
    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 करने के लिए करते हैं:
    showLineNumbers
    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 करने की अनुमति देता है।
    transaction traces के लिए Tenderly API का उपयोग करना on-chain events के बारे में detailed जानकारी access करने का एक शक्तिशाली तरीका प्रदान करता है, बिना blockchain के साथ सीधे interact किए या अपना खुद का node सेट अप किए।

    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 शर्तों को बदलने के लिए:
    showLineNumbers
    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 पर संदेश भेजने की अनुमति है
    यह setup विशेष रूप से Ethereum mainnet पर Lido validator exit requests की निगरानी के लिए designed है।

    निष्कर्ष

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