[{"data":1,"prerenderedAt":450},["ShallowReactive",2],{"navigation_docs":3,"-guide-explorer":120,"-guide-explorer-surround":445},[4,56,116],{"title":5,"path":6,"stem":7,"children":8,"icon":55},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39,43,47,51],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"CLI","\u002Fguide\u002Fcli","1.guide\u002F02.cli",{"title":16,"path":17,"stem":18},"Provider selection","\u002Fguide\u002Fselection","1.guide\u002F03.selection",{"title":20,"path":21,"stem":22},"Balances","\u002Fguide\u002Fbalances","1.guide\u002F04.balances",{"title":24,"path":25,"stem":26},"Transactions","\u002Fguide\u002Ftransactions","1.guide\u002F05.transactions",{"title":28,"path":29,"stem":30},"Tokens","\u002Fguide\u002Ftokens","1.guide\u002F06.tokens",{"title":32,"path":33,"stem":34},"Contracts","\u002Fguide\u002Fcontracts","1.guide\u002F07.contracts",{"title":36,"path":37,"stem":38},"Gas and blocks","\u002Fguide\u002Fgas-and-blocks","1.guide\u002F08.gas-and-blocks",{"title":40,"path":41,"stem":42},"Errors","\u002Fguide\u002Ferrors","1.guide\u002F09.errors",{"title":44,"path":45,"stem":46},"Agents","\u002Fguide\u002Fagents","1.guide\u002F10.agents",{"title":48,"path":49,"stem":50},"Custom providers","\u002Fguide\u002Fcustom","1.guide\u002F11.custom",{"title":52,"path":53,"stem":54},"Explorer","\u002Fguide\u002Fexplorer","1.guide\u002F12.explorer","i-solar-book-2-linear",{"title":57,"path":58,"stem":59,"children":60,"icon":115},"Providers","\u002Fproviders","2.providers\u002F0.index",[61,63,67,71,75,79,83,87,91,95,99,103,107,111],{"title":62,"path":58,"stem":59},"Overview",{"title":64,"path":65,"stem":66},"Etherscan","\u002Fproviders\u002Fetherscan","2.providers\u002F01.etherscan",{"title":68,"path":69,"stem":70},"Blockscout","\u002Fproviders\u002Fblockscout","2.providers\u002F02.blockscout",{"title":72,"path":73,"stem":74},"Blockchair","\u002Fproviders\u002Fblockchair","2.providers\u002F03.blockchair",{"title":76,"path":77,"stem":78},"Mempool","\u002Fproviders\u002Fmempool","2.providers\u002F04.mempool",{"title":80,"path":81,"stem":82},"Blockstream","\u002Fproviders\u002Fblockstream","2.providers\u002F05.blockstream",{"title":84,"path":85,"stem":86},"Solscan","\u002Fproviders\u002Fsolscan","2.providers\u002F06.solscan",{"title":88,"path":89,"stem":90},"Helius","\u002Fproviders\u002Fhelius","2.providers\u002F07.helius",{"title":92,"path":93,"stem":94},"TONAPI","\u002Fproviders\u002Fton","2.providers\u002F08.ton",{"title":96,"path":97,"stem":98},"TRONSCAN","\u002Fproviders\u002Ftronscan","2.providers\u002F09.tronscan",{"title":100,"path":101,"stem":102},"Aptos Explorer","\u002Fproviders\u002Faptos","2.providers\u002F10.aptos",{"title":104,"path":105,"stem":106},"Blockberry","\u002Fproviders\u002Fblockberry","2.providers\u002F11.blockberry",{"title":108,"path":109,"stem":110},"Koios","\u002Fproviders\u002Fkoios","2.providers\u002F12.koios",{"title":112,"path":113,"stem":114},"Arweave gateway","\u002Fproviders\u002Farweave","2.providers\u002F13.arweave","i-solar-library-linear",{"title":117,"path":118,"stem":119},"Chains","\u002Fchains","3.chains",{"id":121,"title":52,"body":122,"description":437,"extension":438,"links":439,"meta":440,"navigation":442,"path":53,"seo":443,"stem":54,"__hash__":444},"docs\u002F1.guide\u002F12.explorer.md",{"type":123,"value":124,"toc":428},"minimark",[125,139,144,292,303,310,314,352,356,359,370,374,400,404],[126,127,128,129,133,134,138],"p",{},"The ",[130,131,52],"a",{"href":132},"\u002Fexplorer"," is a block explorer in the usual shape: one search box, a chain, and pages for an address, a transaction and a block, with every hash, address and block number on them linked to its own page. Under the hood the page calls the docs worker and the worker calls the library through ",[135,136,137],"code",{},"withProvider()",", so what you see is exactly what a script gets: the normalized shapes, the provider that answered, and its typed errors.",[140,141,143],"h2",{"id":142},"pages","Pages",[145,146,147,163],"table",{},[148,149,150],"thead",{},[151,152,153,157,160],"tr",{},[154,155,156],"th",{},"Page",[154,158,159],{},"Reads",[154,161,162],{},"Tool equivalent",[164,165,166,179,223,241,259,277],"tbody",{},[151,167,168,173,176],{},[169,170,171],"td",{},[135,172,132],{},[169,174,175],{},"the chain's tip: height, stats, the latest blocks and transactions, refreshed every fifteen seconds",[169,177,178],{},"none, see below",[151,180,181,186,206],{},[169,182,183],{},[135,184,185],{},"\u002Fexplorer\u002Faddress\u002F:chain\u002F:id",[169,187,188,191,192,195,196,195,199,202,203],{},[135,189,190],{},"getBalance",", then tabs for ",[135,193,194],{},"getTxHistory",", ",[135,197,198],{},"getTokenBalances",[135,200,201],{},"getTokenTransfers"," and ",[135,204,205],{},"getContractInfo",[169,207,208,195,211,195,214,195,217,195,220],{},[135,209,210],{},"explorers_balance",[135,212,213],{},"explorers_tx_history",[135,215,216],{},"explorers_tokens",[135,218,219],{},"explorers_token_transfers",[135,221,222],{},"explorers_contract",[151,224,225,230,236],{},[169,226,227],{},[135,228,229],{},"\u002Fexplorer\u002Ftx\u002F:chain\u002F:hash",[169,231,232,235],{},[135,233,234],{},"getTxDetail",", token transfers and OP_RETURN payloads included",[169,237,238],{},[135,239,240],{},"explorers_tx_detail",[151,242,243,248,254],{},[169,244,245],{},[135,246,247],{},"\u002Fexplorer\u002Fblock\u002F:chain\u002F:number",[169,249,250,253],{},[135,251,252],{},"getBlockInfo",", with previous and next",[169,255,256],{},[135,257,258],{},"explorers_block",[151,260,261,266,272],{},[169,262,263],{},[135,264,265],{},"\u002Fexplorer\u002Fgas",[169,267,268,271],{},[135,269,270],{},"getGasData"," on every chain with a provider that quotes fees",[169,273,274],{},[135,275,276],{},"explorers_gas",[151,278,279,284,287],{},[169,280,281],{},[135,282,283],{},"\u002Fexplorer\u002Fproviders",[169,285,286],{},"which providers the worker holds a key for",[169,288,289],{},[135,290,291],{},"explorers_providers",[126,293,294,295,298,299,302],{},"The search box classifies what you typed the way ",[135,296,297],{},"classifyInput"," does in the library: a 64-hex string is a transaction on Ethereum, the Bitcoin family, TRON and Cardano, a base58 string of the right length is a transaction on Solana and Sui, digits are a block, everything else is an address, and a ",[135,300,301],{},".eth"," name resolves on the address page. Arweave ids and addresses share a shape, so the address page offers the transaction reading as a link.",[126,304,305,306,309],{},"Every page is a deep link. An address page keeps its tab and page number in the query, so ",[135,307,308],{},"\u002Fexplorer\u002Faddress\u002Fethereum\u002Fvitalik.eth?tab=tokens"," opens on the holdings. Tabs a chain cannot serve are not shown: no token tab on Bitcoin, no contract tab on Solana.",[140,311,313],{"id":312},"the-live-feed","The live feed",[126,315,316,317,320,321,195,324,202,327,330,331,195,334,202,337,340,341,195,344,347,348,351],{},"The library reads one address, one hash or one block at a time; it has no \"latest blocks\" read, and a block explorer without one is a search box. So the hub asks the chain's public explorer API directly, through the library's own ",[135,318,319],{},"getJSON",", for the few list endpoints the providers do not wrap: Blockscout's ",[135,322,323],{},"\u002Fapi\u002Fv2\u002Fstats",[135,325,326],{},"\u002Fapi\u002Fv2\u002Fblocks",[135,328,329],{},"\u002Fapi\u002Fv2\u002Ftransactions"," on the ten EVM chains it serves, Mempool's ",[135,332,333],{},"\u002Fapi\u002Fv1\u002Fblocks",[135,335,336],{},"\u002Fapi\u002Fmempool",[135,338,339],{},"\u002Fapi\u002Fmempool\u002Frecent"," on Bitcoin, Litecoin and Pepecoin, and the Arweave gateway's ",[135,342,343],{},"\u002Finfo",[135,345,346],{},"\u002Fblock\u002Fcurrent"," and GraphQL index. The block page lists a block's transactions the same way. Everything else on the site runs the library. The nine other chains have no keyless feed, and the hub says so instead of pretending. When the library grows a tip read, ",[135,349,350],{},"docs\u002Fserver\u002Futils\u002Ftip.ts"," goes away.",[140,353,355],{"id":354},"caching-and-manners","Caching and manners",[126,357,358],{},"Answers are cached on the worker, in KV in production: two minutes for a balance, five for history and transfers, ten for holdings, an hour for a transaction or a block, a day for contract metadata, thirty seconds for gas, fifteen seconds for the feed. A thrown failure is never cached, so a typo or an outage does not stick. One address can start thirty new explorer requests a minute, cache hits are free.",[126,360,361,362,365,366,369],{},"Inputs are capped before they reach the library: an address, a name or a hash is at most 128 characters of letters, digits, dots, dashes, underscores and colons, a page is at most 25 rows, a block number at most two billion. ",[135,363,364],{},"raw"," never leaves the worker, a contract's ABI and source are measured rather than shipped, and token holdings stop at fifty rows with the total alongside. The worker is not a proxy to arbitrary URLs and takes no ",[135,367,368],{},"baseUrl",".",[140,371,373],{"id":372},"where-a-key-matters","Where a key matters",[126,375,376,377,380,381,384,385,388,389,392,393,396,397,399],{},"The worker holds keys as Cloudflare secrets, never in the page. Without ",[135,378,379],{},"ETHERSCAN_API_KEY"," every EVM read goes through Blockscout, which serves the same eight operations. Without ",[135,382,383],{},"SOLSCAN_API_KEY"," or ",[135,386,387],{},"HELIUS_API_KEY"," Solana answers 503, without ",[135,390,391],{},"TRONSCAN_API_KEY"," TRON does, without ",[135,394,395],{},"BLOCKBERRY_API_KEY"," Sui does. The ",[130,398,57],{"href":283}," page says which keys the worker has. Never a key, just configured or not.",[140,401,403],{"id":402},"the-landing","The landing",[126,405,406,407,411,412,415,416,419,420,423,424,427],{},"The panels on the ",[130,408,410],{"href":409},"\u002F","home page"," start from answers recorded through the library and labelled ",[135,413,414],{},"sample",". As the page walks through three addresses on three chains, each one is swapped for the worker's live answer and relabelled ",[135,417,418],{},"live",". The recorded answers live in ",[135,421,422],{},"docs\u002Fapp\u002Futils\u002Flanding-fixtures.ts"," and are regenerated with ",[135,425,426],{},"pnpm fixtures",". Never by hand, hand edited fixtures drift and nobody notices.",{"title":429,"searchDepth":430,"depth":430,"links":431},"",2,[432,433,434,435,436],{"id":142,"depth":430,"text":143},{"id":312,"depth":430,"text":313},{"id":354,"depth":430,"text":355},{"id":372,"depth":430,"text":373},{"id":402,"depth":430,"text":403},"The block explorer behind explorers.agntn.dev, a search box and address, transaction and block pages on 23 chains, running the library live through a Cloudflare Worker.","md",null,{"icon":441},"i-solar-tuning-2-linear",true,{"title":52,"description":437},"YwjPQd462VtpkDdrIGb1iIdXe_XV5Z6d6gQjNQ0l0JI",[446,448],{"title":48,"path":49,"stem":50,"description":447,"children":-1},"Extend Provider for an explorer this package does not know, register it with its chains and capabilities, and let selection find it.",{"title":62,"path":58,"stem":59,"description":449,"children":-1},"Thirteen provider classes, one contract. Pick one to see its auth, its endpoints, what it maps and the traps.",1788626961008]