setHook rejects an EOA but accepts zero or an arbitrary contract with code, without checking its interface, pair, PoolManager, caps or audit status. Clearing the trusted hook makes an actual old-hook afterSwap call revert NotHook when it tries to obtain settlement clearance. Calling current beforeInitialize with its canonical 3000/60 key or a second valid same-pair 500/10 key both reverts PoolAlreadyInitialized. Wrong currencies revert UnexpectedPoolCurrencies. The canonicalPoolId has no setter. Some comments say only the owner can initialize, but executable code also accepts a third-party sender within an owner-approved price band. Approval stores sqrtprice and tolerance; it does not bind fee or tickSpacing. Initialization checks currencies, approved price and the one-use flag before recording the supplied PoolKey.No real pointer was changed. The old-hook callback test impersonates the PoolManager in eth_call. The token stores only one hook, so this does not establish a seamless migration procedure or guarantee simultaneous old/new pool cleTIBBIR UNIVERSE THIS IS TIBBIR How to get TIBBIR Ribbit in numbers Connected clues Account archive Bridge & contracts On-chain research Connections Community The story Reading room Network map Timeline Findings Source library Conversations People & companies Open questions Export & reuse