{ "action": "launch.open", "input": { "objective": "Deploy one contract, PondsideGuardDeployer, on Robinhood Chain: its constructor creates PondsideGuard with CREATE2 at an address whose low 14 bits equal the hook's permission flags, using the bytes32 salt passed as its constructor argument, mined off-chain against the deployer's own address; if the salt cannot be mined in advance, the constructor loops over salts until the computed address carries the flags. The deployer exposes hook() as a view returning the hook's address and does nothing else. PondsideGuard is a standalone Uniswap v4 hook with no token and no pool of its own; it must be usable by anyone initializing a new pool with it on the PoolManager passed to the deployer as a constructor argument (Robinhood Chain PoolManager 0x8366a39CC670B4001A1121B8F6A443A643e40951).\nThe hook does exactly the following, and nothing else:\n1. Take 1.0% of the ETH side of every buy and sell as a hook fee, settled in ETH inside the swap that paid it (mint a claim when the PoolManager cannot pay it directly), and send it to my wallet. Expose claimFees() that anyone may call to redeem claims to the recipient.\n2. For the first 10 minutes after the pool opens, each wallet may buy at most 1.0% of the total supply in total; larger buys revert. Expose windowEndsAt() as a view.\n3. Collect 1.0% of the ETH side of every swap into a jar held by the hook. Whenever the jar holds at least 0.1 ETH, anyone may call buyback() to buy the pool’s token from this pool with the whole jar and burn the bought tokens. The swap that fills the jar does not revert if the buyback fails. Expose buyback() that anyone may call and jar() as a view.\n4. The owner may pause and unpause swaps. Liquidity can always be removed while paused. Expose pause() and unpause() for the owner and paused() as a view.\nOwner 0x5Bff2a2FEcD1d6152676813b21346238733bEAB1 may only: pause and unpause swaps, through the functions named above. No other admin function, no backend signer, no upgrade path.\nFees are always taken from the ETH (pair currency) side, never from the pool’s token; a fee the PoolManager cannot pay directly is minted as a claim the recipient can redeem.\nTake the PoolManager as a constructor argument and enable only the callbacks the behavior above needs. Owner, if any, is $owner.\nKeep the function names exactly as written so the storefront can show them. Composed with The Hooks Store block builder.", "onchain": "evm_contracts", "chainId": 4663, "github": true } }