இல் ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] பகுதி 1 ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] user life cycle வாழ்வியல் A UserOperation is the unit of work bundlers operate on. It encapsulates everything required to execute an action on behalf of a smart account — authorization, gas constraints, execution calldata, and optional paymaster logic. EntryPoint v0.8 இல், UserOperations ஒரு packaged, gas-optimized format இல் on-chain செய்யப்படுகிறது.When working with SDKs such as permissionless.js, they are represented as an explicit, unpacked structure: type UserOperation = { sender: Address nonce: bigint factory?: Address // Account factory (for first-time deployment) factoryData?: Hex // Factory calldata callData: Hex callGasLimit: bigint verificationGasLimit: bigint preVerificationGas: bigint maxFeePerGas: bigint maxPriorityFeePerGas: bigint paymaster?: Address paymasterVerificationGasLimit?: bigint paymasterPostOpGasLimit?: bigint paymasterData?: Hex signature: Hex } On chain, the EntryPoint uses a packed format for gas efficiency (அவ்வாறான அட்டவணைகளை ஒப்பிடுதல்) SDK இந்த தொகுப்பை 자동மாக செயல்படுத்துகிறது - நீங்கள் அதை பற்றி கவலைப்பட தேவையில்லை. accountGasLimits = verificationGasLimit | callGasLimit ஒரு UserOperation வாழ்க்கை வகுப்பு இப்படி இருக்கும்: : User constructs the UserOp with their smart account SDK (like permissionless.js) Creation Signing: UserOp hash ஐ எழுதி, அவர்கள் நடவடிக்கையை அனுமதித்தனர் என்று நிரூபிக்கவும் Submission: UserOp eth_sendUserOperation மூலம் ஒரு பவுண்டரிக்கு அனுப்பப்படுகிறது Validation: Bundler simulates the UserOp to check if it will succeed Mempool: அநேகமாக, UserOp bundler's mempool இல் நுழைகிறது Bundling: Bundler Packages Multiple UserOps to a Single HandOps Call (பொதுவாக பல UserOps ஐ ஒரே HandOps அழைப்பில் சேர்க்கவும்) : EntryPoint contract validates each UserOp on-chain, then executes them Execution செலவு: EntryPoint ஒவ்வொரு கணக்கில் (அல்லது தங்கள் paymaster) இருந்து எரிபொருள் செலவுகளை சேகரிக்கிறது. Key insight is that validation happens twice: once off-chain by the bundler (to decide whether to accept the UserOp), and once on-chain by the EntryPoint (first actually executing).If these two validations produce different results, the bundler loses money—paying for gas on a transaction that ultimately fails. ஒவ்வொரு சான்றிதழும் ஒரு அணுகுமுறையை அழித்துக்கொள்ளும் ஒரு அணுகுமுறையைத் தவிர்க்க வேண்டும்.Each validation rule exists to eliminate a class of attack where a UserOp passes simulation but fails on-chain. Validation: Why Bundlers Are Paranoid இதே சூழல், ஒவ்வொரு ஆண்டும் தொடர் கதையாக இருந்தும், அதிகாரிகள் போதிய கவனம் செலுத்த முன்வரவில்லை. இந்த ஒரே உண்மை முழு பிளாக் எச்சரிக்கை வடிவத்தைக் குறிக்கிறது. ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] ERC-4337 எவ்வாறு உத்தரவாதம் குறியீடு செய்ய அனுமதிக்கப்படுகிறது என்பதை கடுமையாக உத்தரவாதம் மூலம் பதிலளிக்கிறது. The EntryPoint enforces a strict separation of concerns: கவலைகளுக்கான சரியான பிரிவு: அதேபோல், இறுதித் தேர்தல் ஆணையம், இறுதித் தேர்தல் ஆணையம், இறுதித் தேர்தல் ஆணையம், இறுதித் தேர்தல் ஆணையம் ஆகியவற்றின் உறுப்பினர்கள் தேர்வு செய்யப்பட்டுள்ளன. Validation Phase ஆங்கிலத்தில் இதை Single Orgasm, Multiple Orgasm என்றும் கூறுகிறார்கள். Execution Phase காவல்துறை Opcodes Certain opcodes are banned during validation because their values can change between simulation and execution: TimeTamp, NUMBER, COINBASE, PREVRANDAO: Block-dependent values.A account could check if (block.timestamp > deadline) revert, pass simulation, then fail when the bundle lands in a later block. : Returns different values for different blocks. Same attack vector. BLOCKHASH , : Change based on network conditions. GASPRICE BASEFEE Balance, Self-Balance: ERC-7562 [OP-080] க்கான பங்குதாரர்கள் மட்டுமே அனுமதிக்கப்படுகின்றனர். ஆங்கிலத்தில் இதை Single Orgasm, Multiple Orgasm என்றும் கூறுகிறார்கள். BLOBHASH, BLOBBASEFEE: EIP-4844 blob-related opcodes that vary per block. SELFDESTRUCT, INVALID: வெற்றிகரமான opcodes not allowed during validation: வெற்றிகரமான opcodes not allowed during validation. எரிபொருள்: *CALL, DELEGATECALL, STATICCALL, or CALLCODE (to gas forwarding to other contracts) என்று அழைக்கப்படும் போது மட்டுமே அனுமதிக்கப்படுகிறது. ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] இதோ உங்கள் கணக்கை பயன்படுத்தும் போது நடக்கும் விஷயங்கள்: // This validateUserOp will be rejected by bundlers function validateUserOp(PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 missingAccountFunds) external returns (uint256 validationData) { // BANNED: block.timestamp can change require(block.timestamp < deadline, "Expired"); // ... rest of validation } பவுண்டரி ஒரு டைரக்டர் செல்கிறது Simulation (Using a Trace) ஒரு ERC-7562 ஒப்பிடும் tracer) மற்றும் எந்த UserOp தங்கள் சான்றிதழ்களை சுட்டிக்காட்டுகிறது. modern bundlers may use either a JavaScript tracer or the native Go implementation introduced with EntryPoint v0.8.The RPC response will indicate which opcode caused the rejection. debug_traceCall Storage Access Rules Beyond opcodes, bundlers restrict which storage slots validation code can read and write. The rules (from ERC-7562) are roughly: can only access: Unstaked entities அவர்களின் தனிப்பட்ட சேமிப்பு (the account’s storage) கணக்கு முகவரி A-க்கு "அதிகப்படுத்துகின்ற" சேமிப்பு துளைகள்: துளை மதிப்பு A, OR was calculated as keccak256(Aannoo x) + n where x is bytes32 and n is in the range 0 to 128 இவ்வாறு, உங்கள் கணக்கில் கணக்கு முகவரிக்கு ஓதும் / எழுத முடியும்.ஆகவே, ஒரு ERC-20 டாக்டர் கணக்கு முகவரிக்கு அளவுகளை சேமிக்கிறது. . The actual storage slot is உங்கள் கணக்கு முகவரி மூலமாக இருந்தால், அந்த ஸ்லாட் உங்களுக்கு "அதிகமாக" உள்ளது. அப்ளிகேஷன் (0-128) அப்ளிகேஷன் அட்டவணையைப் பின்னர் சேமிக்கப்பட்டுள்ள அப்ளிகேஷன் உறுப்பினர்களுக்கு அணுகுமுறையை அனுமதிக்கிறது – அப்ளிகேஷன் மதிப்பு ஒரு அப்ளிகேஷன் ஆகும்போது இது பயனுள்ளதாகும். mapping(address => uint256) balances keccak256(address || slot_of_mapping) +n (Accounts, paymasters, or factories that have deposited stake in the EntryPoint) get more freedom: Staked entities தங்கள் சொந்த சேமிப்பில் எந்த ஸ்லாட் அணுக முடியும் (STO-031) UserOp (STO-032) இல் எந்த அம்சத்திற்கும் தொடர்புடைய சேமிப்பு அணுக முடியும் Non-entity contracts (STO-033) இல் எழுதப்படாத சேமிப்புக்கு மட்டுமே அணுக முடியும் View Full Storage Access Rules உள்ளடக்கத்தைப் பாருங்கள் . ஐரோப்பா 7562 ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................. இது எத்தனையாவது [...] உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பினர்கள், உச்சநீதிமன்ற உறுப்பின Reputation அமைப்பு Even with validation rules, entities can behave badly. An account might consistently submit UserOps that pass simulation but fail on-chain due to subtle state changes. A paymaster might approve UserOps during simulation but decline payment on-chain. Bundlers track these entities with a ஒவ்வொரு அம்சத்திற்கும் (பணம் அட்டை, paymaster அட்டை, factory address), bundler tracks: reputation system opsSeen: எத்தனை UserOps இந்த entity இல் உள்ளன இந்த bundler பார்த்தது : How many of those actually got included on-chain opsIncluded ஆங்கிலத்தில் இதை Single Orgasm, Multiple Orgasm என்றும் கூறுகிறார்கள். ) : ஐரோப்பா 7562 maxSeen = opsSeen / MIN_INCLUSION_RATE_DENOMINATOR (10 for bundlers) status = BANNED if maxSeen > opsIncluded + BAN_SLACK (50) status = THROTTLED if maxSeen > opsIncluded + THROTTLING_SLACK (10) status = OK otherwise “Slack” values are tolerance buffers which prevent false positives from normal operational variance.எனவே “Slack” values are tolerance buffers that prevent false positive from normal operational variance. அதாவது, ஒரு விவசாயி ஒரு விவசாயிக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கு எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான விவசாயிகளுக்கும் எதிரான வி ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] THROTTLING_SLACK = 10 BAN_SLACK = 50 When an entity is அதேபோல், பட்ஜெட்டில் எத்தனையோ பயனர் தேர்வுகள் உள்ளன என்று குறிப்பிடப்படுகிறது. அதேபோல், இந்த அலுவலகத்தைச் சேர்ந்த அனைத்து ஊழியர்களும் விரைவில் கைது செய்யப்படுவார்கள். throttled banned Staking Entities can improve their standing by staking ETH in the EntryPoint contract: எண்கள் தங்கள் நிலையை மேம்படுத்துவதன் மூலம் ETH ஐ EntryPoint ஒப்பந்தத்தில் சேர்க்க முடியும்: entryPoint.addStake{ value: 1 ether }(unstakeDelaySec); கடன் இல்லை - அது மட்டுமே மூடப்பட்டது.ஆனால் அது ஈடுபாடு மற்றும் ஆதரவுகளைக் காட்டுகிறது: மெனுவில் தோன்றும், Staff details ஐ Click செய்யவும். MEPOL LIMIT அதிகமான Reputation Thresholds For paymasters and factories, especially, staking is almost mandatory for production use. Without it, a single failed UserOp can quickly get the entity throttled. The canonical mempool requires (chain-specific, typically 1 ETH or equivalent) and 86400 நிமிடங்கள் (1 நாள்).The exact stake amount varies by chain and is defined in the mempool metadata - check the bundler documentation for your target network. MIN_STAKE_VALUE MIN_UNSTAKE_DELAY Gas Economics அவர்கள் பட்ஜெட்டுகளை அனுப்புவதற்கான எரிபொருள் செலவுகளை செலுத்துகிறார்கள் மற்றும் அவர்கள் சேர்க்கும் UserOps இருந்து திருப்பி பெறுகிறார்கள். The Bundler பற்றிய தகவல்கள் Revenue = Σ (each UserOp's payment to beneficiary) Cost = Gas used × Gas price paid for handleOps tx Profit = Revenue - Cost Each UserOp pays based on its gas usage and the gas prices it specified: Payment = (actualGasUsed + preVerificationGas) × min(maxFeePerGas, baseFee + maxPriorityFeePerGas) The bundler set the அலுவலகத்தில் இந்த செலவுகளை பெற்றுக் கொள்ளுங்கள். beneficiary handleOps PreVerificationதொடர்பு உன் விவசாயிகளுக்கு வழங்கப்படும் பணத்தைத் தவிர்க்க முடியாது: preVerificationGas Calldata விலை: 16 gas per non-zero byte, 4 gas per zero byte : Fixed costs per handleOps call that get amortized across UserOps Bundle overhead L2 data fees: Optimism அல்லது Arbitrum போன்ற L2s மீது, L1 க்கு calldata அனுப்பும் கூடுதல் செலவுகள் உள்ளன எரிபொருள் மதிப்பீடு செய்வதன் மூலம், bundlers preVerificationGas UserOp இன் அளவு அடிப்படையில் கணக்கிடுகின்றன: // Simplified preVerificationGas calculation const calldataCost = userOpBytes.reduce((sum, byte) => sum + (byte === 0 ? 4n : 16n), 0n ); const overhead = 38000n; // ~21000 tx base + ~10000 bundle overhead + ~7000 per-op preVerificationGas = calldataCost + overhead + l2DataFee; ஆங்கிலத்தில் இதை Single Orgasm, Multiple Orgasm என்றும் கூறுகிறார்கள். , , . Always use Hardcoding இல்லாமல் transactionGasStipend: 21000 fixedGasOverhead: 9830 perUserOp: 7260 eth_estimateUserOperationGas The Unused Gas Penalty ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] (அதிகப்படுத்துதல் மற்றும் (for paymaster post-operations): callGasLimit paymasterPostOpGasLimit If unused gas in either field exceeds (40,000), the account pays 10% ( ) of the unused amount (does NOT apply to or ) PENALTY_GAS_THRESHOLD UNUSED_GAS_PENALTY_PERCENT verificationGasLimit preVerificationGas இதன் காரணமாக மிகப்பெரிய அதிகாரப்பூர்வமான "அதிகப்பூர்வமான பாதுகாப்பு" அதிகாரப்பூர்வமான "அதிகப்பூர்வமான" நீங்கள் எரிபொருள் குறியீடு தவறுகள் கண்டால், உங்கள் அளவுகள் சரியாக உள்ளதா என்று பாருங்கள். இறுதி முடிவுகள் மிகப்பெரிய தவறுகளை ஏற்படுத்திவிடும். eth_estimateUserOperationGas தவறுகள் மற்றும் Debugging RPC error is the only signal you get.Bundlers return structured error codes that explain exactly why the operation failed - but only if you know how to read them. AA1x: Factory Errors (பொதுமையில் தவறுகள்) இவை ஒரு புதிய கணக்கை உபயோகப்படுத்துவதன் மூலம் ஏற்படுகின்றன.EntryPoint v0.8 இல், நீங்கள் மற்றும் as separate fields (the EntryPoint packs them into internally): factory factoryData initCode AA10: "Sender already constructed" - அனுப்பிய முகவரிக்கு குறியீடு ஏற்கனவே செயல்பட்டுள்ளது. : "initCode failed or OOG" - The factory's createAccount call failed or ran out of gas. AA13 : "initCode must return sender" - The factory returned a different address than expected. AA14 AA15: "initCode must create sender" - Factory call completed but did not deploy code to the sender address. உன் அலுவலகத்தைப் பார்த்து இதன் பின்னணியில், பல்வேறு வடிவமைப்புகளைப் பயன்படுத்தி, பல்வேறு வடிவமைப்புகளைப் பயன்படுத்துவதாகவும், பல்வேறு வடிவமைப்புகளைப் பயன்படுத்துவதாகவும் கருதப்படுகிறது. Debugging createAccount AA2x: கணக்கு சான்றிதழ் தவறுகள் மிகப் பிரபலமான Category: : "account not deployed" - The sender address has no code and no was provided. AA20 initCode ஆங்கிலத்தில் இதை Single Orgasm, Multiple Orgasm என்றும் கூறுகிறார்கள். ஆஆவ்வ்வ்வ்வ்வ்வ்வ்வ்வ்வ்வ்வ்வ்வ்வ்வ் : "reverted" - The account's function reverted. Check your signature validation logic. AA23 validateUserOp : "signature error" - The returned validation data indicates an invalid signature. AA24 ஆங்கிலத்தில் இதை Single Orgasm, Multiple Orgasm என்றும் கூறுகிறார்கள்.அதற்காக science fiction நாவல்கள் எல்லாம் science ஆகாது.Fictionஐ ஓரளவு இரசிக்கலாம்.Fictionஐ ஓரளவு இரசிக்கலாம். Reusing a nonce that was already included Using the wrong nonce key அதே சமயத்தில் மற்றொரு இளைஞன் அமர்ந்திருக்கிறான். "over verificationGasLimit" - Account validation used more gas than allocated. AA3x: Paymaster Errors : "paymaster not deployed" - The paymaster address has no code deployed. AA30 : "paymaster deposit too low" - The paymaster's deposit in the EntryPoint can't cover the gas cost. Top it up: AA31 entryPoint.depositTo{ value: 1 ether }(paymasterAddress); AA32: "paymaster expired or not due" - AA22, ஆனால் paymaster's validation data போன்றது. : "paymaster reverted" - The paymaster's function reverted. AA33 validatePaymasterUserOp : "paymaster signature error" - Bad signature in the paymaster data. AA34 : "over paymasterVerificationGasLimit" - Paymaster validation used more gas than allocated. Increase . AA36 paymasterVerificationGasLimit Working with Bundlers RPC Methods Every ERC-4337 bundler implements these standard methods: : Submit a UserOp for inclusion eth_sendUserOperation const userOpHash = await bundler.request({ method: 'eth_sendUserOperation', params: [userOp, entryPointAddress] }); : Get gas limit estimates eth_estimateUserOperationGas const gasEstimate = await bundler.request({ method: 'eth_estimateUserOperationGas', params: [userOp, entryPointAddress] }); // Returns: { preVerificationGas, verificationGasLimit, callGasLimit, ... } : Look up a UserOp by its ஹேக் eth_getUserOperationByHash const userOp = await bundler.request({ method: 'eth_getUserOperationByHash', params: [userOpHash] }); : Inclusion பின்னூட்டத்தைப் பெற eth_getUserOperationReceipt const receipt = await bundler.request({ method: 'eth_getUserOperationReceipt', params: [userOpHash] }); // Returns: { success, actualGasUsed, receipt: { transactionHash, ... } } : Discover which EntryPoint versions the bundler supports eth_supportedEntryPoints const entryPoints = await bundler.request({ method: 'eth_supportedEntryPoints', params: [] }); // Returns: ['0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108'] The Shared Mempool முதலில், ஒவ்வொரு பாக்கர் தங்கள் தனிப்பட்ட mempool வைத்திருந்தது.This created problems: : A single bundler could refuse to include certain UserOps Censorship risk : Users had to know which bundlers to submit to Fragmentation : If your bundler went down, your UserOps were stuck Single points of failure The solution is the , a P2P network where bundlers gossip UserOps to each other. It works similarly to how Ethereum nodes gossip transactions: ERC-4337 shared mempool User submits UserOp to any participating bundler Bundler validates and adds to the local mempool Bundler broadcasts to connected peers இணையத்தில் உள்ள எந்த தொகுப்பும் UserOp ஐ சேர்க்க முடியும். இதன் மூலம் libp2p ஐ networking செய்ய பயன்படுத்துகிறது.Bundlers அவர்கள் ஆதரவுள்ள mempools (IPFS CIDs மூலம் அடையாளம் காண்பிக்கப்படுகின்றது) மற்றும் validation ஐ அனுப்பும் UserOps மட்டுமே பரப்புகிறது. chainId: '1' entryPointContract: '0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108' description: Canonical ERC-4337 mempool for Ethereum Mainnet minimumStake: '1000000000000000000' இந்த கோப்பு IPFS CID P2P தலைப்பு பெயர்களில் பயன்படுத்தப்படும் mempool அடையாளமாக மாறுகிறது. mempool மாறுபட்ட தகவல்கள் உத்தரவாதம் அமைக்கிறது: எந்த opcodes தடுக்கப்பட்டுள்ளன, சேமிப்பு அணுகுமுறைகள், gas limits, and reputation thresholds.When a bundler receives a UserOp via P2P gossip, it re-validates against its own rules before adding to its local mempool. Advanced விஷயங்கள் Aggregators Signature verification is expensive on-chain. The ecrecover precompile costs 3,000 gas per call, but smart account signature verification typically costs more due to additional validation logic—often 6,000-10,000 gas total. For 100 UserOps in a bundle, that's 600,000+ gas just for signatures. Aggregators enable batch signature verification—verify all 100 signatures in a single operation for a fraction of the cost. What problem do aggregators solve? Instead of each account verifying its own signature, accounts can delegate to an aggregator contract. The aggregator implements a batch verification algorithm (like BLS signatures, where multiple signatures can be combined into one). How it works: Account’s validateUserOp returns an aggregator address in its validation data (உண்மைப்படுத்தல் தரவுகளில் ஒரு aggregator address) Bundler groups all UserOps using the same aggregator Bundler calls once for the group aggregator.validateSignatures(userOps, aggregatedSignature) Verification passes, all UserOps in that group are considered valid.இந்தக் குழுவில் உள்ள அனைத்து UserOps உள்ளன. Return value : திரும்பத் திரும்பத் திரும்பத் திரும்ப மூன்று தரவுகளை ஒரே 256-பிட் அளவுக்கு சேகரிக்கிறது: The validationData encoding validateUserOp validationData = uint160(aggregator) | // bits 0-159: aggregator address (uint256(validUntil) << 160) | // bits 160-207: expiration timestamp (uint256(validAfter) << 208) // bits 208-255: earliest valid time ஒப்பந்தம் (பிட் 0-159): ஒப்பந்தம் ஒப்பந்தம் Address, or special values: 0 = signature valid, 1 = signature invalid (bits 160-207): Timestamp after which this UserOp expires (0 = no expiry) validUntil (bits 208-255): Timestamp before which this UserOp is not valid (0 = immediately valid) validAfter இந்த குறியீடு கணக்குகள் ஒருங்கிணைந்த பதிலளிப்பு மதிப்பெண் ஒருங்கிணைந்த பதிலளிப்பு உறுப்பினராகவும், நேரடி மதிப்பெண் ஒருங்கிணைந்த பதிலளிக்க அனுமதிக்கிறது. Paymasters Paymasters abstract gas payment from users.Instead of the account paying for gas, a paymaster can: செலுத்தும் செலவு செலுத்தும் செலவு செலவு செலவு செலவு செலவு செலவு செலவு செலவு செலவு செலவு செலவு செலவு Sponsor Transactions: Pay on behalf of users (gasless UX) ERC-20 டாக்டர்களை ஏற்றுக்கொள்ளவும்: பயனர்கள் stablecoins அல்லது மற்ற டாக்டர்களை செலுத்தலாம் : Rate limiting, subscription models, etc. Implement custom logic The paymaster's validation flow runs during the validation phase: function validatePaymasterUserOp( PackedUserOperation calldata userOp, bytes32 userOpHash, uint256 maxCost ) external returns (bytes memory context, uint256 validationData); The திரும்பி வந்தது இங்கு வந்தது after execution completes, allowing the paymaster to perform final accounting (like charging an ERC-20 token): context postOp function postOp( PostOpMode mode, bytes calldata context, uint256 actualGasCost, uint256 actualUserOpFeePerGas ) external; கொழும்பில் நடைபெற்ற LankaPay Technnovation விருதுகள் வழங்கும் நிகழ்வில், ‘The Best Common ATM Acquirer of the year - Category C’ என்ற பிரிவில் DFCC வங்கி வெற்றியாளராக தெரிவானது. technically function with basic operations, staking is practically required for any serious paymaster implementation. முடியும் Testing Locally இந்த பகுதியில் நீங்கள் EntryPoint v0.8 உடன் Anvil இயங்கும் என்று கருதுகிறோம். , Pimlico's TypeScript bundler, and , a viem-based library for ERC-4337 interactions. Alto permissionless.js SimpleAccountFactory In Part 1 we built a minimal smart account. But how do users deploy it? They can't send a regular transaction—they don't have ETH for gas yet. ERC-4337 solves this with factory contracts. For Reference Implementation என்றும் கூறுவார்கள் . Deploy it alongside the EntryPoint before running the examples below. SimpleAccount SimpleAccountFactory Account Deployment via UserOp When the EntryPoint receives a UserOp with factory and factoryData fields: குறியீடு உள்ளதா என்று கண்காணிப்பு – Yes, skip deployment Calls via the factory.createAccount(owner, salt) factoryData வடிவமைக்கப்பட்டுள்ள வடிவமைப்பு தொடர்பான விசாரணைகள் Continues with validation on the newly-deployed account Running Alto alto \ --rpc-url http://localhost:8545 \ --entrypoints 0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108 \ --executor-private-keys 0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d \ --utility-private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 \ --safe-mode false \ --api-version v1,v2 \ --bundle-mode auto முக்கியமான விலங்குகள் : --executor-private-keys: submit bundles க்கான key (ETH வேண்டும்) --safe-mode false: Anvil முழு ERC-7562 உத்தரவாதத்திற்கு JavaScript Tracker இல்லை : Accept both UserOp formats (v1 for 0.6, v2 for 0.7/0.8) --api-version v1,v2 UserOperations மூலம் permissionless.js அனுப்புதல் Install dependencies: npm install viem permissionless Step 1: Set up clients We need three clients: one for reading chain state, one for bundler-specific RPCs, and one for the smart account owner. import { http, createPublicClient, createWalletClient, parseEther } from "viem" import { privateKeyToAccount } from "viem/accounts" import { foundry } from "viem/chains" import { toSimpleSmartAccount } from "permissionless/accounts" import { createSmartAccountClient } from "permissionless/clients" import { createPimlicoClient } from "permissionless/clients/pimlico" const ENTRYPOINT = "0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108" const publicClient = createPublicClient({ chain: foundry, transport: http("http://localhost:8545") }) const pimlicoClient = createPimlicoClient({ chain: foundry, transport: http("http://localhost:4337"), entryPoint: { address: ENTRYPOINT, version: "0.8" } }) const owner = privateKeyToAccount(process.env.PRIVATE_KEY) The அலெக்ஸின் RPC க்கு இணைக்கிறது மற்றும் எரிபொருள் மதிப்பீடு வழங்குகிறது . pimlicoClient pimlico_getUserOperationGasPrice Step 2: Create the smart account instance const simpleAccount = await toSimpleSmartAccount({ client: publicClient, owner, entryPoint: { address: ENTRYPOINT, version: "0.8" } }) const accountAddress = await simpleAccount.getAddress() console.log("Account:", accountAddress) This computes the counterfactual address using the factory's function. The account doesn't exist yet—but we know exactly where it will be deployed. getAddress Step 3: Fund the account Smart account needs ETH to pay for gas (or use a paymaster).We can send ETH to the counterfactual address: const walletClient = createWalletClient({ account: owner, chain: foundry, transport: http("http://localhost:8545") }) await walletClient.sendTransaction({ to: accountAddress, value: parseEther("1") }) இதன் பின்னணியில், பணிபுரியும் பணிபுரியும் பணிபுரியும் பணிபுரியும் பணிபுரியும் பணிபுரியும் பணிபுரியும் பணிபுரியும். Step 4: Create the smart account client const smartAccountClient = createSmartAccountClient({ client: publicClient, account: simpleAccount, bundlerTransport: http("http://localhost:4337"), userOperation: { estimateFeesPerGas: async () => (await pimlicoClient.getUserOperationGasPrice()).fast } }) The UserOp construction, nonce management, gas estimation, and signing என்பதையும் பயன்படுத்துகிறது. callback, current gas prices என்பதன் அடிப்படை வடிவம் smartAccountClient estimateFeesPerGas Step 5: Send a UserOperation const hash = await smartAccountClient.sendUserOperation({ calls: [{ to: "0xa0Ee7A142d267C1f36714E4a8F75612F20a79720", value: parseEther("0.01"), data: "0x" }] }) const receipt = await smartAccountClient.waitForUserOperationReceipt({ hash }) console.log("Success:", receipt.success) For the first UserOp, the SDK automatically includes மற்றும் fields. The EntryPoint deploys the account, then executes the transfer—all in one transaction. factory factoryData நாம் அறிந்தவை பிளேட்டர்கள் ERC-4337 இன் செயல்பாடு அட்டவணை ஆகும்.அவர்கள் Account Abstraction ஒரு விதிமுறைக்கு ஒரு உற்பத்தியாளராக மாற்றுகின்றன. ஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] ERC-4337 திட்டத்தில் இருந்து கடினத்தை அமைப்புக்கு மாற்றுகிறது.பொதுவாக விற்பனையாளர்கள் விற்பனையாளர்களைத் தவிர்க்க ஆரம்பித்தால், விற்பனையாளர்கள் தங்கள் அமைப்புகளைப் பெற்றுக் கொள்வார்கள்.