Bunni Liquidity Hook
PASSConformanceDon’t trust — verify
Re-check this certificate yourself with the open-source MIT checker. It pulls the live bytecode via eth_getCode, confirms it hashes to the pinned bytecode_hash, fetches and hashes the witness, replays the derivation locally, and prints PASS only if all hold — trusting nothing from veric.audit except the math.
tarski-verify-veric verify --cert ethereum-conformance.hook-cert.jsontarski-verify-veric@0.4.2tarski-verify-veric repo (MIT)What this proves
- For this exact bytecode on this chain, the cork-class access-control + state-transition property holds.
- The specific failure shape that cost Cork Protocol ~$11M is provably absent — to the strength stated by the trust flavour.
- The result is re-checkable by the open MIT tarski-verify-veric checker, trusting nothing from this site.
What this does NOT prove
- That the hook is safe, bug-free, or audited overall.
- Anything about reentrancy, oracle/MEV, donation, rounding, admin/upgrade, or economic-design risk.
- Anything about a different bytecode, a different chain, or the surrounding protocol.
- Liveness or fitness for purpose.
- A guarantee over time — a proxy upgrade or redeploy voids this cert.
The certificate
- Property
- cork-class/access-control+state-transition
- Verdict
- PASS
- Trust flavour
- conformance
- Analyzer
- tarski-verify-veric@0.4.2 (3034b09)
- Checked at
- 23 May 2026
- Expires
- Never on a clock — a bytecode change voids it
- Bytecode hash (the pin)
sha256:9e1c4a7f0b2d8e35a16c94f7b3e0d2a85c47f1908b6e23d40a7c91f5e8d3b206
This cert is valid only for this exact bytecode. A proxy upgrade or redeploy changes the hash and voids the cert.
Raw .hook-cert.json (the exact bytes a re-checker consumes)
{
"schema": "hook-cert/v1",
"subject": {
"kind": "uniswap-v4-hook",
"chain": "ethereum",
"address": "0x7F4e8a23B6C19D2cF0aE51Bb4d8A9c3E2D17F60a",
"bytecode_hash": "sha256:9e1c4a7f0b2d8e35a16c94f7b3e0d2a85c47f1908b6e23d40a7c91f5e8d3b206"
},
"property": "cork-class/access-control+state-transition",
"verdict": "PASS",
"trust_flavor": "conformance",
"analyzer": {
"name": "tarski-verify-veric",
"version": "0.4.2",
"git": "3034b09"
},
"evidence": {
"witness_uri": "veric.audit/witness/ethereum-conformance.json",
"witness_hash": "sha256:af3c9012d7e54b8a1f60c2398e7d4ba5021f8c6e93d70a48b1c5e2f094a7d3b8"
},
"recheck": {
"checker": "tarski-verify-veric",
"checker_version": "0.4.2",
"cmd": "tarski-verify-veric verify --cert ethereum-conformance.hook-cert.json"
},
"checked_at": "2026-05-23T18:42:11Z",
"expires_hint": null
}Witness
This is the re-checkable witness the cert points at — the artifact the trust rests on. You don’t trust this rendering; you trust the re-check. Confirm the bytes hash to the pin below.
sha256:af3c9012d7e54b8a1f60c2398e7d4ba5021f8c6e93d70a48b1c5e2f094a7d3b8{
"schema": "hook-witness/v1",
"cert_ref": "ethereum:0x7F4e8a23B6C19D2cF0aE51Bb4d8A9c3E2D17F60a",
"analyzer": {
"name": "tarski-verify-veric",
"version": "0.4.2"
},
"trust_flavor": "conformance",
"inputs": {
"chain": "ethereum",
"address": "0x7F4e8a23B6C19D2cF0aE51Bb4d8A9c3E2D17F60a",
"bytecode_hash": "sha256:9e1c4a7f0b2d8e35a16c94f7b3e0d2a85c47f1908b6e23d40a7c91f5e8d3b206",
"property": "cork-class/access-control+state-transition",
"evm_semantics": "shanghai"
},
"derivation": {
"method": "abstract-interpretation+state-machine-conformance",
"steps": [
{
"id": "decode",
"summary": "Lift bytecode to the typed CFG; recover the 14 hook callback entry points."
},
{
"id": "access-control",
"summary": "Prove every state-mutating callback is guarded by the PoolManager-only caller predicate; no unguarded external write path reaches hook storage."
},
{
"id": "state-transition",
"summary": "Prove the beforeSwap/afterSwap delta accounting cannot be re-entered or replayed to desync the settlement invariant (the cork-class failure shape)."
},
{
"id": "conformance",
"summary": "Confirm the bytecode conforms to the EVM semantics the proof is stated against; the conclusion is re-derivable end-to-end from this witness."
}
],
"conclusion": "PASS"
}
}This cert pins bytecode sha256:9e1c4a7f0b2d8e35a16c94f7b3e0d2a85c47f1908b6e23d40a7c91f5e8d3b206. If the contract is upgraded or redeployed, the pin no longer matches and the cert is pulled on the next pipeline run. A row disappearing is not a published statement about the hook.