{
  "v": 1,
  "requestId": "ceada165-c2be-4980-9546-64b175fdb24c",
  "chainId": 1,
  "window": {
    "toBlock": 26026607,
    "fromBlock": 26019451,
    "toBlockHash": "0x8a84f5aa1d5976b1d454cfe7b479740ae9b7e7015bfd4635b124cb47767cdec2"
  },
  "answerType": "uint256",
  "answer": "206958104539285714",
  "figure": "206958104539285714",
  "definitions": {
    "sale": "an OrderFulfilled event emitted by Seaport 1.5 (0x00000000000000adc04c56bf30ac9d3c0aaf14dc) or Seaport 1.6 (0x0000000000000068f116a894984e2db1123eb395) on Ethereum mainnet whose offer and consideration items together contain exactly one ERC-721 item (itemType 2) of the collection and no other NFT; bundles and ERC-1155 fills are excluded",
    "price": "for a listing fill (the single offer item is the NFT), the sum of every consideration amount paid in native ETH (itemType 0) or WETH 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 (itemType 1), fees included, and only if every consideration item is ETH or WETH; for a bid fill (the single offer item is ETH or WETH), the offer amount; fills paid in any other token are excluded",
    "source": "the chain itself: eth_getLogs for the OrderFulfilled topic on both Seaport contracts over exactly the pinned blocks, decoded with the Seaport ABI",
    "average": "the arithmetic mean, rounded down to an integer number of wei, of the price of every qualifying sale in the pinned block window; 0 only if there was no qualifying sale",
    "collection": "0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270",
    "denomination": "Wei; native ETH and canonical mainnet WETH are combined at 1:1, without fiat conversion. Gas costs are excluded.",
    "window": "Both endpoint blocks are included; the closing block hash must equal the pinned hash.",
    "counting": "One sale per qualifying non-removed OrderFulfilled log, deduplicated by blockNumber and logIndex. Repeated sales of the same token count separately. The ERC-721 amount must be 1. The offer must contain exactly one item.",
    "marketplace": "OpenSea means the two Seaport emitters specified in the request; no additional frontend, zone, conduit, recipient or transaction-sender restriction.",
    "bidFees": "The bid price is the single ETH/WETH offer amount, without adding its fee consideration again. Every non-NFT consideration item must also be ETH or WETH; any other token excludes the fill."
  },
  "recipe": {
    "kind": "panel",
    "source": "https://rpc.flashbots.net/fast"
  },
  "notes": "Computed with the supplied scan.mjs adapted in scratch to decode the dynamic item arrays and reduce qualifying prices. Read 12231 OrderFulfilled logs in four nonoverlapping chunks. Found 28 sales (15 listings, 13 bids), all on Seaport 1.6, totaling 5794826927100000000 wei; floor(sum/28) = 206958104539285714 wei (remainder 8). Chain and closing hash also confirmed on https://rpc.mevblocker.io/fast; https://ethereum-rpc.publicnode.com was probed for chainId only. The request pins evidence=panel, so the required catalogue recipe is panel; its source is the public RPC, with complete reproduction below. No indexer or dependencies required. Save the following JavaScript as reproduce.mjs and run node reproduce.mjs beside artifacts/answer.json (Node 22+). ABI: OrderFulfilled(bytes32 orderHash,address indexed offerer,address indexed zone,address recipient,(uint8 itemType,address token,uint256 identifier,uint256 amount)[] offer,(uint8 itemType,address token,uint256 identifier,uint256 amount,address recipient)[] consideration).\n\nimport fs from 'node:fs';\nconst a=JSON.parse(fs.readFileSync('artifacts/answer.json','utf8'));\nconst url=a.recipe.source, w=a.window;\nconst addresses=['0x00000000000000adc04c56bf30ac9d3c0aaf14dc','0x0000000000000068f116a894984e2db1123eb395'];\nconst topic='0x9d9af8e38d66c62e2c12f0225249fd9d721c54b83f48d9352c97c6cacdcb6f31';\nconst collection='0xa7d8d9ef8d8ce8992df33d8b8cf4aebabd5bd270', weth='0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';\nconst hex=n=>'0x'+n.toString(16);\nasync function rpc(method,params){const r=await fetch(url,{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({jsonrpc:'2.0',id:1,method,params}),signal:AbortSignal.timeout(60000)});if(!r.ok)throw Error('HTTP '+r.status);const j=await r.json();if(j.error)throw Error(JSON.stringify(j.error));return j.result;}\nif(Number(await rpc('eth_chainId',[]))!==a.chainId)throw Error('chain mismatch');\nif((await rpc('eth_getBlockByNumber',[hex(w.toBlock),false])).hash!==w.toBlockHash)throw Error('pin mismatch');\nasync function logs(lo,hi){try{return await rpc('eth_getLogs',[{address:addresses,topics:[topic],fromBlock:hex(lo),toBlock:hex(hi)}]);}catch(e){if(lo===hi)throw e;const mid=Math.floor((lo+hi)/2);return [...await logs(lo,mid),...await logs(mid+1,hi)];}}\nlet count=0n,sum=0n;const seen=new Set();\nfor(let lo=w.fromBlock;lo<=w.toBlock;lo+=2000){for(const l of await logs(lo,Math.min(lo+1999,w.toBlock))){\nconst key=l.blockNumber+':'+l.logIndex;if(l.removed||seen.has(key))continue;seen.add(key);\nconst d=l.data.slice(2).match(/.{64}/g), n=i=>BigInt('0x'+d[i]);\nconst arr=(h,s)=>{const p=Number(n(h))/32;return Array.from({length:Number(n(p))},(_,j)=>{const k=p+1+s*j;return {t:Number(n(k)),token:'0x'+d[k+1].slice(24).toLowerCase(),amount:n(k+3)};});};\nconst o=arr(2,4),c=arr(3,5),nft=[...o,...c].filter(i=>i.t>=2);\nconst money=i=>i.t===0||(i.t===1&&i.token===weth);\nif(o.length!==1||nft.length!==1||nft[0].t!==2||nft[0].token!==collection||nft[0].amount!==1n)continue;\nlet p;if(o[0]===nft[0]&&c.every(money))p=c.reduce((s,i)=>s+i.amount,0n);else if(money(o[0])&&c.every(i=>i===nft[0]||money(i)))p=o[0].amount;else continue;\ncount++;sum+=p;\n}}\nconst answer=(count?sum/count:0n).toString();\nconsole.log(JSON.stringify({count:count.toString(),sum:sum.toString(),answer}));\nif(answer!==a.answer)throw Error('answer mismatch');\n"
}
