- Functions: custom JavaScript या TypeScript code जिसे आप तब निष्पादित करना चाहते हैं जब कोई बाहरी event होता है। यह आपकी automation का मुख्य है।
- Triggers: पूर्व-परिभाषित बाहरी events जिनके लिए आपकी Web3 Action listen करने के लिए कॉन्फ़िगर की गई है। जब event होता है, तो trigger Tenderly को आपका custom code (function) निष्पादित करने का निर्देश देता है।
- Events (Trigger Types): पूर्व-परिभाषित बाहरी events जिन्हें आप एक trigger सेट करके listen कर सकते हैं। जब event होता है, तो trigger आपके custom code (functions) को कॉल करेगा।
Execution Types
Tenderly में Web3 Actions को दो modes में निष्पादित किया जा सकता है: Sequential और Parallel।
Sequential Execution
sequential execution में, actions एक-एक करके उस क्रम में निष्पादित होती हैं जिस क्रम में उन्हें invoke किया गया था। यह execution का default mode है। इस mode में, प्रत्येक action अपना execution शुरू करने से पहले पिछली action के पूरा होने की प्रतीक्षा करती है। यहाँ sequential execution के लिए action configuration का एक उदाहरण है:example
Parallel Execution
parallel execution में, actions समानांतर में निष्पादित होती हैं, जिससे उच्च throughput होता है। इस mode में, execution के क्रम की गारंटी नहीं है और action storage के साथ संभावित race conditions हो सकती हैं। यहाँ parallel execution के लिए action configuration का एक उदाहरण है:example
Action functions
Web3 Action functions मानक JavaScript या TypeScript functions के रूप में लिखे गए custom code को संदर्भित करते हैं, लेकिन उन्हें कुछ नियमों का पालन करना चाहिए।- Functions asynchronous होने चाहिए,
Promise<void>return करते हुए - Functions दो parameters स्वीकार करते हैं:
contextऔरevent - Functions को file से एक named export होना चाहिए
- Functions को actions root directory के तहत किसी भी file में रखा जा सकता है
contextparameter जो Storage और Secrets तक पहुँच रखता है।eventparameter जो “अभी क्या हुआ?” प्रश्न का उत्तर देने वाली जानकारी वाला एक object है। इस parameter में trigger type के लिए विशिष्ट data होता है जिसके लिए Web3 Action function listen कर रहा है। बाहरी events के लिए triggers निर्दिष्ट करना अनुभाग बाहरी events के बारे में विस्तार से बताता है।
Web3 Action functions का निष्पादन 30 सेकंड तक सीमित है। यदि आपका function 30 सेकंड से अधिक समय लेता है, तो इसे समाप्त कर दिया जाएगा।
event parameter समर्थित trigger types (events) में से कोई एक हो सकता है।
example.ts
dashboard-आधारित actions के लिए उपलब्ध libraries
Tenderly runtime कई javascript libraries के साथ pre-bundled आता है जिन्हें आप Tenderly Dashboard के माध्यम से Web3 Actions बनाते समय import कर सकते हैं। उपलब्ध libraries में शामिल हैं: इनमें से किसी भी libraries को import करने के लिए,require() function का उपयोग वैसे ही करें जैसे आप एक मानक npm-आधारित project के साथ करते (ES6 के बिना)।
Axios के लिए उदाहरण import इस तरह दिखता है:
example.jsx
CLI-आधारित Web3 Actions के लिए npm libraries का उपयोग करना
Tenderly CLI द्वारा बनाया गया project वास्तव में एक npm module है। आप अपने actions root folder से किसी भी npm package को स्थापित कर सकते हैं।बाहरी events और trigger types
जब कोई बाहरी event होता है, तो यह आपके custom code (functions) के निष्पादन को trigger करता है। आप listen करने के लिए चार बाहरी events में से चुन सकते हैं:- Block event: एक block किसी चयनित network पर mine होता है।
- Periodic event: यह trigger तब होता है जब कुछ समय अंतराल गुजरते हैं या CRON expressions के आधार पर।
- Webhook event: एक HTTP request webhook URL पर पोस्ट किया जाता है (Web3 Action एक webhook उजागर करता है)
- Transaction event: दिए गए filter criteria से मेल खाने वाला एक transaction किसी चयनित network पर निष्पादित होता है।
आपको प्रत्येक trigger type के लिए अलग functions लिखने चाहिए। विभिन्न trigger types के लिए एक ही function का उपयोग करने की अनुशंसा नहीं की जाती है।
Web3 Action functions को events पर subscribe करना
JavaScript में अपने action function को परिभाषित करने के अलावा, आपको trigger configuration भी प्रदान करने की आवश्यकता है, जो Tenderly को बताता है कि इसे क्या trigger करता है, वह बाहरी event जिस पर आपका function subscribe होता है। Tenderly Dashboard के माध्यम से Web3 Actions बनाते समय, UI में creation flow आपके लिए इस भाग को संभालेगा। Dashboard Quickstart guide पढ़ें। code-आधारित Web3 Actions के साथ काम करते समय, functions और उनके triggers कोtenderly.yaml file में परिभाषित किया जाना चाहिए, जो Tenderly CLI द्वारा उत्पन्न होती है। CLI Quickstart guide पढ़ें।
उदाहरण
नीचे दिए गए उदाहरण में, हम bestActionEver नामक Web3 Action घोषित कर रहे हैं और actions/myCoolTsFile.ts file से export किए गए awesomeActionFunction function का reference दे रहे हैं। यह वह function है जिसे Tenderly Web3 Action trigger होने पर कॉल करेगा। execution को execution_type के माध्यम से नियंत्रित किया जाता है, इस मामले में इसे parallel पर सेट किया गया है।
tenderly.yaml
बाहरी events के लिए triggers निर्दिष्ट करना
इस अनुभाग में, हमtrigger declaration की जाँच करेंगे। tenderly.yaml file लिखने के बारे में अधिक जानकारी के लिए, इस गाइड का reference लें।
trigger type और संबंधित configurations tenderly.yaml file में परिभाषित किए गए हैं। आपको पहले trigger object परिभाषित करना होगा, जिसमें दो अनिवार्य properties हैं:
typeproperty, जो trigger type निर्दिष्ट करता है, जो हो सकता है:periodic | webhook | block | transaction- चयनित trigger type के लिए विशिष्ट configuration वाला एक object
Periodic event
एक periodic event का उपयोग तब किया जाता है जब आप चाहते हैं कि आपकी Web3 Action विशिष्ट समय अंतराल पर trigger हो। यह time ले जाता है: invocation का समय।example.ts
periodic type है। यह interval- या cron-आधारित हो सकता है:
trigger.yaml
interval property निम्न में से कोई भी मान ले सकती है: 5m | 10m | 15m | 30m | 1h | 3h | 6h | 12h | 1d
यदि आपको अपने Web3 Action के निष्पादित होने पर अधिक granular नियंत्रण की आवश्यकता है, तो CRON-आधारित periodic trigger का उपयोग करें:
trigger.yaml
cron property कोई भी मान्य CRON string हो सकती है।
Webhook event
Webhook-आधारित Web3 Actions एक custom webhook URL उजागर करती हैं, जिससे उन्हें एक साधारण HTTP POST request का उपयोग करके बाहरी systems से trigger करना संभव हो जाता है। संबंधित trigger type में दो properties होती हैं: invocation का time और कोई भी payload (एक JSON object)। Tenderly आपके payload पर कोई validation या inspections नहीं करता है।example.ts
webhook-trigger.yaml
authenticated को true पर सेट किया गया है, तो आपको Web3 Action चलाने में सक्षम होने के लिए x-access-key के value के रूप में अपनी request के साथ Tenderly Access Token शामिल करना होगा। आप Tenderly Dashboard में Web3 Action overview में उजागर किए गए webhook का cURL पा सकते हैं।
example
Block event
block event का उपयोग तब किया जाता है जब आप एक या कई networks पर blocks के mining के लिए listen करना चाहते हैं। आप दो consecutive invocations के बीच mine किए गए blocks की संख्या निर्दिष्ट करके अपनी Web3 Action को “block-periodic” बना सकते हैं।example.ts
network: network IDs का एक single value या एक list जिसमें आप रुचि रखते हैंblocks: Web3 Action के दो consecutive executions के बीच mine किए गए blocks की संख्या। उदाहरण के लिए, प्रत्येक 100वें mine किए गए block पर Web3 Action निष्पादित करें।
block-trigger.yaml
Transaction event
transaction trigger type आपको विशिष्ट transactions के लिए listen करने की अनुमति देता है क्योंकि वे on-chain निष्पादित होते हैं।smart contract से transactions के लिए listen करने के लिए, smart contract को Tenderly Dashboard में verified और आपके project में जोड़ा जाना चाहिए। यदि ऐसा नहीं है तो CLI एक warning फेंकेगा।
event parameter के माध्यम से पास किए गए ठीक उसी transaction payload के साथ invoke किया जाएगा।
example.ts
- Transaction mining status:
mined(transaction mine हो गया है) याconfirmed10(transaction वाले block के बाद से 10 blocks confirmed हैं) - Filters:
filterslist का उपयोग करते हुए transaction payload से जुड़ी शर्तों की एक सूची। केवल वे transactions जो filters से मेल खाते हैं, आपके code के निष्पादन को trigger करेंगे।
transactions को filter करना
filters list आपको transaction properties का उपयोग करके triggering criteria परिभाषित करने की अनुमति देती है ताकि विशिष्ट transactions से मेल खा सकें।
list में प्रत्येक filter एक object है जहाँ सभी fields AND-ed होते हैं। मेल खाने के लिए filter में हर शर्त true होनी चाहिए। filters list स्वयं OR-ed है: एक transaction तब मेल खाता है जब यह list में किसी भी एक filter को संतुष्ट करता है।
| Filter | विवरण |
|---|---|
*अनिवार्य / **इनमें से कम से कम एक मौजूद होना चाहिए | |
| network* | वह network ID जहाँ से transaction उत्पन्न हुआ |
| status | transaction status: fail या success |
| from** | transaction उत्पन्नकर्ता का address |
| to** | transaction recipient का address |
| eventEmitted** | एक विशिष्ट प्रकार का event, जो किसी विशेष contract द्वारा emit किया गया है |
| logEmitted** | एक विशिष्ट contract द्वारा emit किए गए logs, raw log entry के prefix से मेल खाकर |
| function** | दिए गए function को direct call। contracts के बीच internal calls पर लागू नहीं |
| ethBalance** | एक account या contract जिसका ETH balance transaction time पर एक numeric शर्त को पूरा करता है |
| stateChanged** | एक contract जिसका on-chain state variable transaction के दौरान बदला, वैकल्पिक value/percentage शर्तों के साथ |
| value | transaction के भीतर wei में transfer किया गया मान |
| gasUsed | transaction द्वारा wei में उपयोग की गई gas की मात्रा |
| gasLimit | transaction के लिए wei में सेट की गई gas limit |
| fee | wei में transaction fee |
| contract | transaction में शामिल एक smart contract (देखें contract filter) |
0x236..fd62 को भेजे गए transaction का एक उदाहरण।
transaction-trigger.yaml
- Filter 1: network 1 (Ethereum) AND status fail AND to
0x2364...fd62 - Filter 2: network 8453 (Base) AND status fail AND to
0x2364...fd62
transaction fields द्वारा transactions को filter करना
सामान्य transaction fields के बीच, आप विशिष्ट मानों वाली निम्नलिखित properties द्वारा filter कर सकते हैं।from- एक विशिष्ट sender पर filtering। एक single address या addresses की list (OR-ed) हो सकती है। वैकल्पिक।to- एक विशिष्ट receiver पर filtering। एक single address या addresses की list (OR-ed) हो सकती है। वैकल्पिक।status- transaction status पर filtering:successयाfail। एक single value या list (OR-ed) हो सकती है। वैकल्पिक।network- network द्वारा filtering। एक single chain ID या chain IDs की list (OR-ed) हो सकती है। अनिवार्य।contract.address- केवल इस विशिष्ट address वाले contract से जुड़े transactions पर filtering। वैकल्पिक।
0xf63c48626f874bf5604D3Ba9f4A85d5cE58f8019)।
list-fields.yaml
valuegasUsedgasLimitfee
eq, gte, gt, lt, lte। आप comparison को negate करने के लिए not boolean flag का भी उपयोग कर सकते हैं।
| Operator | अर्थ |
|---|---|
eq | बराबर |
gt | से अधिक |
gte | से अधिक या बराबर |
lt | से कम |
lte | से कम या बराबर |
not | Boolean। comparison को negate करने के लिए true पर सेट करें (जैसे मेल तब जब value range में नहीं है) |
numeric-filters.yaml
not flag का उपयोग करना:
negated-comparison.yaml
emit किए गए EVM Events का उपयोग करके transactions को filter करना
transaction execution द्वारा emit किए गए EVM events के लिए listen करने के लिए Web3 Actions को कॉन्फ़िगर करना आपको इन events द्वारा logged महत्वपूर्ण परिवर्तनों पर react करने की अनुमति देता है। आपeventEmitted operator का उपयोग करके इसे प्राप्त कर सकते हैं, जो निम्न nested properties का समर्थन करता है:
contract(अनिवार्य): event की उत्पत्ति निर्दिष्ट करने के लिए।contract.address: event emit करने वाले contract का address।contract.invocation: नियंत्रित करता है कि contract को कैसे कॉल किया गया:direct,internal, याany(default)। विवरण के लिए contract filter देखें।
name: event का नाम (एक verified contract की आवश्यकता है)।id: event signature का topic hash (nameका विकल्प)। unverified contracts के लिए उपयोगी जहाँ ABI उपलब्ध नहीं है। उदाहरण के लिए,Transfer(address,address,uint256)event का topic hash0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efहै।not: Boolean। पूरे event match को negate करने के लिएtrueपर सेट करें, parameters सहित (trigger तब जब event निर्दिष्ट parameters के साथ emit नहीं हुआ है)।parameters: decoded event argument values पर शर्तों की एक list। सभी शर्तें AND-ed हैं: हर शर्त मेल खानी चाहिए। प्रत्येक entry समर्थन करती है:name(आवश्यक): event argument का नाम।string: string comparison। exact match के लिए एक plain string स्वीकार करता है, याexactऔरnotfields वाला object। विवरण के लिए StringComparison देखें।int: Integer comparison। numeric filters के समान operators (eq,gt,gte,lt,lte) का समर्थन करता है। एक singleintblock के भीतर सभी operators AND-ed हैं। संयुक्त शर्त को negate करने के लिएnotflag का उपयोग करें। विवरण के लिए IntComparison देखें।
एक single
eventEmitted entry के parameters के भीतर कोई OR नहीं है। सभी शर्तें AND-ed हैं।
एक ही parameter पर OR logic के लिए, कई eventEmitted entries का उपयोग करें (जो outer list में OR-ed हैं)।name या parameters के साथ eventEmitted filter का उपयोग करने के लिए, contract को verified और Tenderly Dashboard में project में जोड़ा जाना चाहिए। unverified contracts के लिए id (topic hash) का उपयोग करें।0x418d..9d45 address पर smart contract निष्पादित होने पर TxSubmission या TxConfirmation event emit हो।
event-emitted-filter.yaml
event-parameters.yaml
negated-parameter.yaml
eventEmitted entries का उपयोग करें:
event-parameter-or.yaml
not का उपयोग करना:
negated-event.yaml
emit किए गए logs द्वारा transactions को filter करना
EVM events के लिए listen करने का एक और तरीका उन्हें log topic द्वारा query करना है।logEmitted filter एक single object या एक list (entries OR-ed हैं) हो सकता है। यह निम्न properties का समर्थन करता है:
startsWith(अनिवार्य): transaction के log topics के विरुद्ध match करने के लिए topic values की एक list। प्रत्येक entry की तुलना case-insensitive तरीके से संबंधित topic से exact equality के आधार पर की जाती है। व्यवहार में ये पूर्ण 32-byte topic hashes (0x-prefixed, 64 hex chars) होते हैं, लेकिन field किसी भी मान्य hex string को स्वीकार करता है।contract.address(वैकल्पिक): logs का source। जब निर्दिष्ट किया जाता है, तो केवल इस contract से logs match किए जाते हैं।matchAny: Boolean। जबtrue,startsWithसे किसी भी एक topic को match करना पर्याप्त है। जबfalse(default), सभी topics को match करना होगा।not: Boolean। पूरे log match को negate करने के लिएtrueपर सेट करें (trigger तब जब log emit नहीं होता)।
logEmitted का उपयोग करने से आप event topic prefix को raw रूप में events के लिए filter करने के लिए उपयोग कर सकते हैं।
यह उपयोगी है यदि आप unverified contract पर Web3 Action सेट कर रहे हैं।log-emitted-filter.yaml
किसी विशिष्ट contract से जुड़े transactions को filter करना
अपने execution के दौरान किसी विशिष्ट contract को कॉल करने वाले transactions के लिए filter करने के लिए, आप वैकल्पिकcontract filter का उपयोग कर सकते हैं।
contract filter निम्न properties का समर्थन करता है:
address: contract का address।invocation: नियंत्रित करता है कि contract को कैसे कॉल किया गया। संभावित मान:direct: contract को transaction sender (EOA) द्वारा सीधे कॉल किया गया था। इसका उपयोग तब करें जब आप केवल contract पर top-level calls के बारे में परवाह करते हैं।internal: execution के दौरान किसी अन्य contract द्वारा contract को internally कॉल किया गया था (जैसेCALL,DELEGATECALL, याSTATICCALLopcodes के माध्यम से)। इसका उपयोग यह पता लगाने के लिए करें कि आपका contract कब multi-contract interaction के हिस्से के रूप में invoke किया जाता है।any: direct और internal दोनों calls से मेल खाता है। यह default है।
invocation field हर जगह उपलब्ध है जहाँ contract object का उपयोग किया जाता है, eventEmitted filters के अंदर भी। उदाहरण के लिए, आप eventEmitted contract पर invocation: internal का उपयोग कर सकते हैं ताकि केवल internal calls के दौरान emit किए गए events से मेल खा सकें। schema के लिए Contract देखें।
नीचे दिए गए उदाहरण में, पहला filter Sepolia पर 0x2364...fd62 को भेजे गए किसी भी सफल transaction से मेल खाता है। दूसरा filter अधिक restrictive है: केवल वे transactions जो contract 0xad88...80d6 को internal call भी करते हैं, Web3 Action को trigger करेंगे।
contract-filter.yaml
function call द्वारा transactions को filter करना
किसी विशिष्ट function को सीधे कॉल करने वाले transactions के लिए filter करने के लिए, आप वैकल्पिकfunction filter का उपयोग कर सकते हैं। इसके लिए contract के address contract.address और function के name या signature में से किसी एक की आवश्यकता है।
function filter निम्न properties का समर्थन करता है:
contract(अनिवार्य): target contract निर्दिष्ट करने के लिए।contract.address: कॉल किए जा रहे contract का address।contract.invocation: नियंत्रित करता है कि function को कैसे कॉल किया जाना चाहिए:any(default, दोनों direct और internal),direct(केवल EOA-initiated), याinternal(केवल sub-calls)। विवरण के लिए contract filter देखें।
name: function का नाम (एक verified contract की आवश्यकता है)।signature: 4-byte function selector (जैसे0xa9059cbb)। unverified contracts के लिए उपयोगी जहाँ ABI उपलब्ध नहीं है।not: Boolean। पूरे function match को negate करने के लिएtrueपर सेट करें, parameters सहित (trigger तब जब function निर्दिष्ट parameters के साथ कॉल नहीं होता)।parameters: decoded function input argument values पर शर्तों की एक list। सभी शर्तें AND-ed हैं: हर शर्त मेल खानी चाहिए। प्रत्येक entry समर्थन करती है:name(आवश्यक): function argument का नाम।string: string comparison। exact match के लिए एक plain string स्वीकार करता है, याexactऔरnotfields वाला object। विवरण के लिए StringComparison देखें।int: Integer comparison। numeric filters के समान operators (eq,gt,gte,lt,lte) का समर्थन करता है। एक singleintblock के भीतर सभी operators AND-ed हैं। संयुक्त शर्त को negate करने के लिएnotflag का उपयोग करें। विवरण के लिए IntComparison देखें।
एक single
function entry के parameters के भीतर कोई OR नहीं है। सभी शर्तें AND-ed हैं।
एक ही parameter पर OR logic के लिए, कई function entries का उपयोग करें (जो outer list में OR-ed हैं)।name या parameters के साथ function filter का उपयोग करने के लिए, contract को verified और Tenderly Dashboard में project में जोड़ा जाना चाहिए। unverified contracts के लिए signature (4-byte selector) का उपयोग करें।function को एक single object या list के रूप में निर्दिष्ट कर सकते हैं। जब एक list प्रदान की जाती है, तो entries OR-ed होती हैं। filter तब match होता है जब list में कोई भी function कॉल किया जाता है। पूर्ण field reference के लिए, FunctionFilter देखें।
नीचे 0xad88...80d6 पर deploy किए गए contract के verySpecialFunction को किसी भी कॉल (direct या internal) पर प्रतिक्रिया देने वाले Web3 Action trigger का एक उदाहरण है।
function-filter.yaml
function-selector.yaml
function-parameters.yaml
function-negated-string.yaml
function-negated-parameter.yaml
function entries का उपयोग करें:
function-parameter-or.yaml
transfer जो किसी router या flash-loan provider द्वारा trigger किया जाता है, न कि सीधे किसी उपयोगकर्ता द्वारा, invocation: internal सेट करें। यह उदाहरण केवल तब trigger करता है जब कोई अन्य contract USDC पर कम से कम 1,000 USDC के लिए transfer को internally कॉल करता है:
function-internal-with-params.yaml
ETH balance द्वारा transactions को filter करना
ethBalance filter आपकी Web3 Action को तब trigger करता है जब किसी account या contract का ETH balance किसी transaction के दौरान एक numeric शर्त को पूरा करता है। यह बड़े whale movements, protocol treasury thresholds, या wallet funding events की निगरानी के लिए उपयोगी है।
filter निम्न properties का समर्थन करता है:
address(अनिवार्य): निगरानी करने के लिए account या contract address।balanceCmp(अनिवार्य): transaction time पर balance के विरुद्ध एक numeric comparison।BigIntComparisonoperators (eq,gt,gte,lt,lte) का उपयोग करता है। values wei में हैं और decimal strings (जैसे"1000000000000000000") या0x-prefixed hex (जैसे"0xde0b6b3a7640000") के रूप में प्रदान किए जा सकते हैं।not(वैकल्पिक): पूरे match को negate करने के लिएtrueपर सेट करें।
ethBalance object या एक list प्रदान कर सकते हैं, entries OR-ed हैं।
पूर्ण field reference के लिए, EthBalanceFilter देखें।
उदाहरण: तब trigger करें जब किसी wallet का balance कम से कम 1 ETH तक पहुँच जाए:
eth-balance-filter.yaml
eth-balance-multi.yaml
eth-balance-range.yaml
eth-balance-not.yaml
contract state changes द्वारा transactions को filter करना
stateChanged filter आपकी Web3 Action को तब trigger करता है जब किसी contract का state variable किसी transaction के दौरान बदलता है। आप किसी भी संयोजन पर match कर सकते हैं: क्या variable बिल्कुल बदला, एक विशिष्ट नया मान, एक percentage change, या एक raw storage slot key।
filter निम्न properties का समर्थन करता है:
address(अनिवार्य जब तकmatchAny: trueन हो): देखने के लिए contract address।matchAny(वैकल्पिक): जबtrue, transaction में किसी भी contract पर state changes से मेल खाता है,addressको omit किया जा सकता है। protocol-wide निगरानी के लिए उपयोगी।params(वैकल्पिक): state variable शर्तों की एक list। सभी entries AND-ed हैं। जब omit किया जाता है, तो filter निर्दिष्ट address पर किसी भी state change से मेल खाता है।not(वैकल्पिक): पूरे match को negate करने के लिएtrueपर सेट करें।
params में प्रत्येक entry की आवश्यकता है:
name(अनिवार्य): state variable का नाम।- कम से कम एक शर्त:
change: true: तब match करता है जब variable का मान बिल्कुल बदला।valueCmp(BigIntComparison), तब match करता है जब नया मान एक numeric शर्त को पूरा करता है।percentageCmp(BigIntComparison), signed percentage change पर match करता है जिसकी गणना(newValue - oldValue) * 100 / oldValueके रूप में की जाती है। positive values का अर्थ है वृद्धि, negative values का अर्थ है कमी। उदाहरण के लिए,gte: "10"10%+ की वृद्धि पर fire होता है;lte: "-10"10%+ की कमी पर fire होता है। नोट: जबoldValue0 है, तो percentage हमेशा 0 होता है, इसके बजायchange: trueयाvalueCmpका उपयोग करें।storageSlotKey: raw storage slot key द्वारा match करता है (unverified contracts के लिए उपयोगी)।
StateChangedFilter देखें।
name-आधारित state variable matching का उपयोग करने के लिए, contract को verified और आपके project में Tenderly Dashboard में जोड़ा जाना चाहिए।totalSupply बिल्कुल बदले:
state-changed-basic.yaml
totalSupply एक threshold तक पहुँच जाए:
state-changed-value.yaml
totalSupply 50% या अधिक बढ़ जाए:
state-changed-percentage-increase.yaml
totalSupply 10% या अधिक घट जाए:
state-changed-percentage-decrease.yaml
totalSupply बदला AND नया मान एक floor से ऊपर है):
state-changed-multi-params.yaml
balances[bob]) देखें:
mappings के लिए, प्रति entry कोई named variable नहीं है, अपनी परवाह वाली key के लिए keccak256-derived slot के साथ storageSlotKey का उपयोग करें। storage slot N पर mapping(address => uint256) balances और key addr के लिए slot keccak256(abi.encode(addr, N)) है।
state-changed-slot.yaml
storageSlotKey दृष्टिकोण unverified contracts और किसी भी storage layout के लिए काम करता है, इसके लिए contract को verified या आपके Tenderly project में जोड़े जाने की आवश्यकता नहीं है।
उदाहरण: transaction में किसी भी contract की निगरानी के लिए matchAny:
state-changed-match-any.yaml
stateChanged और ethBalance को एक ही filter object में किसी भी अन्य filter के साथ जोड़ा जा सकता है, सभी fields AND-ed हैं। नीचे दिए गए उदाहरण सामान्य real-world combinations दिखाते हैं।
उदाहरण: mint() कॉल किया गया था AND totalSupply बदला (पुष्टि करें कि कॉल का on-chain प्रभाव था):
state-changed-with-function.yaml
Transfer event emit हुआ AND paused state बदला (transfer के दौरान ownership या pause flag toggle हुआ):
state-changed-with-event.yaml
eth-balance-with-to.yaml
togglePause() कॉल किया गया था लेकिन balances नहीं बदला (यानी tx ने केवल paused flag को प्रभावित किया):
state-changed-not.yaml
पूर्ण transaction trigger reference
निम्नलिखित annotated YAML block एक ही स्थान पर transaction triggers के लिए हर उपलब्ध field दिखाता है। अपने trigger configuration का निर्माण करते समय इसे एक quick reference के रूप में उपयोग करें। type definitions के लिए, नीचे Trigger YAML schema reference देखें।complete-reference.yaml
Trigger YAML schema reference
नीचे दिया गया schema trigger configuration द्वारा स्वीकृत हर field की संरचना और types का वर्णन करता है। अपनेtenderly.yaml का निर्माण करते समय ऊपर annotated example के साथ इसका उपयोग करें।
Notation: ? = वैकल्पिक, | = में से एक, [] = list। “single or list” के रूप में चिह्नित fields या तो scalar value या YAML list स्वीकार करते हैं।
सभी trigger types
schema.yaml
TransactionFilter
schema.yaml
top-level
contract field filter के लिए shared default के रूप में कार्य करता है। यह किसी भी function या eventEmitted entry पर स्वचालित रूप से लागू होता है जो अपना खुद का contract निर्दिष्ट नहीं करता है, जिससे आप एक ही address को दोहराने से बच सकते हैं। यह logEmitted पर लागू नहीं होता है।Shared types
schema.yaml
FunctionFilter
schema.yaml
EventFilter (eventEmitted)
schema.yaml
LogFilter (logEmitted)
schema.yaml
EthBalanceFilter (ethBalance)
schema.yaml
StateChangedFilter (stateChanged)
schema.yaml