[{"data":1,"prerenderedAt":576},["ShallowReactive",2],{"navigation_docs":3,"-guide-identify":196,"-guide-identify-surround":571},[4,44],{"title":5,"path":6,"stem":7,"children":8,"icon":43},"Guide","\u002Fguide","1.guide\u002F01.index",[9,11,15,19,23,27,31,35,39],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Registry and aliases","\u002Fguide\u002Fregistry","1.guide\u002F02.registry",{"title":16,"path":17,"stem":18},"Address validation","\u002Fguide\u002Fvalidation","1.guide\u002F03.validation",{"title":20,"path":21,"stem":22},"Identify","\u002Fguide\u002Fidentify","1.guide\u002F04.identify",{"title":24,"path":25,"stem":26},"Metadata","\u002Fguide\u002Fmetadata","1.guide\u002F05.metadata",{"title":28,"path":29,"stem":30},"CLI","\u002Fguide\u002Fcli","1.guide\u002F06.cli",{"title":32,"path":33,"stem":34},"Agents","\u002Fguide\u002Fagents","1.guide\u002F07.agents",{"title":36,"path":37,"stem":38},"Custom chains","\u002Fguide\u002Fcustom","1.guide\u002F08.custom",{"title":40,"path":41,"stem":42},"Playground","\u002Fguide\u002Fplayground","1.guide\u002F09.playground","i-lucide-book-open",{"title":45,"path":46,"stem":47,"children":48,"icon":195},"Chains","\u002Fchains","2.chains\u002F00.index",[49,51,55,59,63,67,71,75,79,83,87,91,95,99,103,107,111,115,119,123,127,131,135,139,143,147,151,155,159,163,167,171,175,179,183,187,191],{"title":50,"path":46,"stem":47},"Overview",{"title":52,"path":53,"stem":54},"Ethereum","\u002Fchains\u002Fethereum","2.chains\u002F01.ethereum",{"title":56,"path":57,"stem":58},"Base","\u002Fchains\u002Fbase","2.chains\u002F02.base",{"title":60,"path":61,"stem":62},"Arbitrum One","\u002Fchains\u002Farbitrum","2.chains\u002F03.arbitrum",{"title":64,"path":65,"stem":66},"Optimism","\u002Fchains\u002Foptimism","2.chains\u002F04.optimism",{"title":68,"path":69,"stem":70},"Polygon PoS","\u002Fchains\u002Fpolygon","2.chains\u002F05.polygon",{"title":72,"path":73,"stem":74},"BNB Chain","\u002Fchains\u002Fbsc","2.chains\u002F06.bsc",{"title":76,"path":77,"stem":78},"Avalanche C-Chain","\u002Fchains\u002Favalanche","2.chains\u002F07.avalanche",{"title":80,"path":81,"stem":82},"Fantom Opera","\u002Fchains\u002Ffantom","2.chains\u002F08.fantom",{"title":84,"path":85,"stem":86},"Gnosis Chain","\u002Fchains\u002Fgnosis","2.chains\u002F09.gnosis",{"title":88,"path":89,"stem":90},"Linea","\u002Fchains\u002Flinea","2.chains\u002F10.linea",{"title":92,"path":93,"stem":94},"zkSync Era","\u002Fchains\u002Fzksync","2.chains\u002F11.zksync",{"title":96,"path":97,"stem":98},"Scroll","\u002Fchains\u002Fscroll","2.chains\u002F12.scroll",{"title":100,"path":101,"stem":102},"Berachain","\u002Fchains\u002Fberachain","2.chains\u002F13.berachain",{"title":104,"path":105,"stem":106},"Bitcoin","\u002Fchains\u002Fbitcoin","2.chains\u002F14.bitcoin",{"title":108,"path":109,"stem":110},"Litecoin","\u002Fchains\u002Flitecoin","2.chains\u002F15.litecoin",{"title":112,"path":113,"stem":114},"Pepecoin","\u002Fchains\u002Fpepecoin","2.chains\u002F16.pepecoin",{"title":116,"path":117,"stem":118},"eCash","\u002Fchains\u002Fecash","2.chains\u002F17.ecash",{"title":120,"path":121,"stem":122},"Cardano","\u002Fchains\u002Fcardano","2.chains\u002F18.cardano",{"title":124,"path":125,"stem":126},"Solana","\u002Fchains\u002Fsolana","2.chains\u002F19.solana",{"title":128,"path":129,"stem":130},"Stellar","\u002Fchains\u002Fstellar","2.chains\u002F20.stellar",{"title":132,"path":133,"stem":134},"XRP Ledger","\u002Fchains\u002Fxrpl","2.chains\u002F21.xrpl",{"title":136,"path":137,"stem":138},"Aptos","\u002Fchains\u002Faptos","2.chains\u002F22.aptos",{"title":140,"path":141,"stem":142},"Sui","\u002Fchains\u002Fsui","2.chains\u002F23.sui",{"title":144,"path":145,"stem":146},"TON (The Open Network)","\u002Fchains\u002Fton","2.chains\u002F24.ton",{"title":148,"path":149,"stem":150},"TRON","\u002Fchains\u002Ftron","2.chains\u002F25.tron",{"title":152,"path":153,"stem":154},"Octra","\u002Fchains\u002Foctra","2.chains\u002F26.octra",{"title":156,"path":157,"stem":158},"Arweave","\u002Fchains\u002Farweave","2.chains\u002F27.arweave",{"title":160,"path":161,"stem":162},"Monero","\u002Fchains\u002Fmonero","2.chains\u002F28.monero",{"title":164,"path":165,"stem":166},"Decred","\u002Fchains\u002Fdecred","2.chains\u002F29.decred",{"title":168,"path":169,"stem":170},"Arc","\u002Fchains\u002Farc","2.chains\u002F30.arc",{"title":172,"path":173,"stem":174},"Dogecoin","\u002Fchains\u002Fdogecoin","2.chains\u002F31.dogecoin",{"title":176,"path":177,"stem":178},"Bitcoin Cash","\u002Fchains\u002Fbitcoincash","2.chains\u002F32.bitcoincash",{"title":180,"path":181,"stem":182},"Bitcoin SV","\u002Fchains\u002Fbitcoinsv","2.chains\u002F33.bitcoinsv",{"title":184,"path":185,"stem":186},"Bitcoin Gold","\u002Fchains\u002Fbitcoingold","2.chains\u002F34.bitcoingold",{"title":188,"path":189,"stem":190},"Dash","\u002Fchains\u002Fdash","2.chains\u002F35.dash",{"title":192,"path":193,"stem":194},"Zcash","\u002Fchains\u002Fzcash","2.chains\u002F36.zcash","i-lucide-link",{"id":197,"title":20,"body":198,"description":564,"extension":565,"links":566,"meta":567,"navigation":259,"path":21,"seo":569,"stem":22,"__hash__":570},"docs\u002F1.guide\u002F04.identify.md",{"type":199,"value":200,"toc":558},"minimark",[201,206,430,451,455,465,468,472,483,487,520,533,539,547,554],[202,203,205],"h2",{"id":204},"the-call","The call",[207,208,213],"pre",{"className":209,"code":210,"language":211,"meta":212,"style":212},"language-ts shiki shiki-themes github-light github-light poimandres","import { identify } from \"@agntn\u002Fchains\";\n\nconst { matches, unchecked } = identify(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\");\nmatches.map((chain) => chain.key); \u002F\u002F [\"solana\"]\nunchecked; \u002F\u002F []\n\nidentify(\"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\").matches.length; \u002F\u002F 13, every EVM chain\nidentify(\"0x1\").matches.map((chain) => chain.key); \u002F\u002F [\"aptos\", \"sui\"]\n","ts","",[214,215,216,254,261,303,343,354,359,389],"code",{"__ignoreMap":212},[217,218,221,225,229,233,236,240,244,248,251],"span",{"class":219,"line":220},"line",1,[217,222,224],{"class":223},"sP0CR","import",[217,226,228],{"class":227},"sKlNE"," {",[217,230,232],{"class":231},"snHMy"," identify",[217,234,235],{"class":227}," }",[217,237,239],{"class":238},"stCPd"," from",[217,241,243],{"class":242},"scVjq"," \"",[217,245,247],{"class":246},"sQ7BG","@agntn\u002Fchains",[217,249,250],{"class":242},"\"",[217,252,253],{"class":227},";\n",[217,255,257],{"class":219,"line":256},2,[217,258,260],{"emptyLinePlaceholder":259},true,"\n",[217,262,264,268,271,275,278,281,284,287,290,293,295,298,300],{"class":219,"line":263},3,[217,265,267],{"class":266},"s1TYA","const",[217,269,270],{"class":227}," { ",[217,272,274],{"class":273},"saoiD","matches",[217,276,277],{"class":227},", ",[217,279,280],{"class":273},"unchecked",[217,282,283],{"class":227}," } ",[217,285,286],{"class":266},"=",[217,288,232],{"class":289},"sULi6",[217,291,292],{"class":227},"(",[217,294,250],{"class":242},[217,296,297],{"class":246},"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",[217,299,250],{"class":242},[217,301,302],{"class":227},");\n",[217,304,306,309,312,315,318,322,325,328,331,333,336,339],{"class":219,"line":305},4,[217,307,274],{"class":308},"spVlQ",[217,310,311],{"class":227},".",[217,313,314],{"class":289},"map",[217,316,317],{"class":227},"((",[217,319,321],{"class":320},"s1jWp","chain",[217,323,324],{"class":227},") ",[217,326,327],{"class":266},"=>",[217,329,330],{"class":308}," chain",[217,332,311],{"class":227},[217,334,335],{"class":308},"key",[217,337,338],{"class":227},"); ",[217,340,342],{"class":341},"sjhu3","\u002F\u002F [\"solana\"]\n",[217,344,346,348,351],{"class":219,"line":345},5,[217,347,280],{"class":308},[217,349,350],{"class":227},"; ",[217,352,353],{"class":341},"\u002F\u002F []\n",[217,355,357],{"class":219,"line":356},6,[217,358,260],{"emptyLinePlaceholder":259},[217,360,362,365,367,369,372,374,377,379,381,384,386],{"class":219,"line":361},7,[217,363,364],{"class":289},"identify",[217,366,292],{"class":227},[217,368,250],{"class":242},[217,370,371],{"class":246},"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984",[217,373,250],{"class":242},[217,375,376],{"class":227},").",[217,378,274],{"class":308},[217,380,311],{"class":227},[217,382,383],{"class":273},"length",[217,385,350],{"class":227},[217,387,388],{"class":341},"\u002F\u002F 13, every EVM chain\n",[217,390,392,394,396,398,401,403,405,407,409,411,413,415,417,419,421,423,425,427],{"class":219,"line":391},8,[217,393,364],{"class":289},[217,395,292],{"class":227},[217,397,250],{"class":242},[217,399,400],{"class":246},"0x1",[217,402,250],{"class":242},[217,404,376],{"class":227},[217,406,274],{"class":308},[217,408,311],{"class":227},[217,410,314],{"class":289},[217,412,317],{"class":227},[217,414,321],{"class":320},[217,416,324],{"class":227},[217,418,327],{"class":266},[217,420,330],{"class":308},[217,422,311],{"class":227},[217,424,335],{"class":308},[217,426,338],{"class":227},[217,428,429],{"class":341},"\u002F\u002F [\"aptos\", \"sui\"]\n",[431,432,433,436,437,439,440,443,444,446,447,450],"p",{},[214,434,435],{},"identify(address)"," partitions the registry: ",[214,438,274],{}," holds every chain whose ",[214,441,442],{},"assertAddress"," accepted the string, ",[214,445,280],{}," holds every chain that carries no validator and so couldn't be asked. Only ",[214,448,449],{},"InvalidAddressError"," counts as a miss. Anything else a validator throws is a bug and comes back out.",[202,452,454],{"id":453},"what-a-match-means","What a match means",[431,456,457,458,461,462,464],{},"Format only. Every EVM chain shares one format, so a ",[214,459,460],{},"0x"," address with 40 hex digits matches all fourteen, and that's the honest answer. A match narrows the family rather than naming the chain an address is used on. Same for ",[214,463,400],{}," on Aptos and Sui: both write the framework address that way, and nothing in the string can tell them apart.",[431,466,467],{},"A miss on a chain says the string doesn't fit that format. A miss everywhere says no registered format fits, which isn't the same as the address being wrong. It could be a chain this package doesn't know.",[202,469,471],{"id":470},"unchecked-isnt-no","Unchecked isn't no",[431,473,474,475,479,480,482],{},"A chain without a validator is named as unchecked rather than skipped, because a silent skip would let \"matches none\" read as \"belongs to no registered chain\". The list is empty right now, every built-in chain validates, but a ",[476,477,478],"a",{"href":37},"custom chain"," that skips ",[214,481,442],{}," lands there.",[202,484,486],{"id":485},"on-the-cli-and-in-the-tools","On the CLI and in the tools",[207,488,492],{"className":489,"code":490,"language":491,"meta":212,"style":212},"language-bash shiki shiki-themes github-light github-light poimandres","chains identify 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\nchains identify EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --json\n","bash",[214,493,494,507],{"__ignoreMap":212},[217,495,496,500,503],{"class":219,"line":220},[217,497,499],{"class":498},"sseY5","chains",[217,501,232],{"class":502},"sX7Zv",[217,504,506],{"class":505},"siHFe"," 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\n",[217,508,509,511,513,516],{"class":219,"line":256},[217,510,499],{"class":498},[217,512,232],{"class":502},[217,514,515],{"class":502}," EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",[217,517,519],{"class":518},"sqT1Y"," --json\n",[431,521,522,524,525,528,529,532],{},[214,523,364],{}," exits 0 even when nothing matches, because that's an answer too. It prints a warning line in that case and the matching chains otherwise, one per line with the family and the name. ",[214,526,527],{},"--json"," gives ",[214,530,531],{},"{ matches, unchecked }"," as arrays of keys.",[431,534,535,538],{},[214,536,537],{},"chains_identify_address"," is the same thing for a model, grouped by family, with the reach of a match spelled out in the text:",[207,540,545],{"className":541,"code":543,"language":544,"meta":212},[542],"language-text","\"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\" matches 14 of 36 checked chains.\nevm (14): ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, fantom, gnosis, linea, zksync, scroll, berachain, arc\nA format match narrows the family; it does not prove the address is used on any of these chains.\n","text",[214,546,543],{"__ignoreMap":212},[431,548,549,550,553],{},"The ",[476,551,40],{"href":552},"\u002Fplayground?op=identify"," runs the same partition in your browser and lights up the families as you type.",[555,556,557],"style",{},"html pre.shiki code .sP0CR, html code.shiki .sP0CR{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7}html pre.shiki code .sKlNE, html code.shiki .sKlNE{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#A6ACCD}html pre.shiki code .snHMy, html code.shiki .snHMy{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#ADD7FF}html pre.shiki code .stCPd, html code.shiki .stCPd{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCD}html pre.shiki code .scVjq, html code.shiki .scVjq{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#A6ACCD}html pre.shiki code .sQ7BG, html code.shiki .sQ7BG{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#5DE4C7}html pre.shiki code .s1TYA, html code.shiki .s1TYA{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#91B4D5}html pre.shiki code .saoiD, html code.shiki .saoiD{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#E4F0FB}html pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}html pre.shiki code .s1jWp, html code.shiki .s1jWp{--shiki-light:#E36209;--shiki-default:#E36209;--shiki-dark:#E4F0FB}html pre.shiki code .sjhu3, html code.shiki .sjhu3{--shiki-light:#6A737D;--shiki-light-font-style:inherit;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#767C9DB0;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sseY5, html code.shiki .sseY5{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#91B4D5}html pre.shiki code .sX7Zv, html code.shiki .sX7Zv{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#ADD7FF}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}html pre.shiki code .sqT1Y, html code.shiki .sqT1Y{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#ADD7FF}",{"title":212,"searchDepth":256,"depth":256,"links":559},[560,561,562,563],{"id":204,"depth":256,"text":205},{"id":453,"depth":256,"text":454},{"id":470,"depth":256,"text":471},{"id":485,"depth":256,"text":486},"One address of unknown origin through every registered validator. Which chains accept the format and which couldn't be asked. What a match doesn't mean.","md",null,{"icon":568},"i-lucide-scan-search",{"title":20,"description":564},"yfViWbqEava9ddb7sHftLLWSqsx62zTeEBlQW0kO-S0",[572,574],{"title":16,"path":17,"stem":18,"description":573,"children":-1},"assertAddress on every chain. What each family decodes and which checksums are verified and which are left alone. A format check and nothing more.",{"title":24,"path":25,"stem":26,"description":575,"children":-1},"Every field on a chain class. Which ones may be missing and why. Where each decimals value, magic and proof-of-work hash was checked.",1790377618915]