[{"data":1,"prerenderedAt":548},["ShallowReactive",2],{"navigation_docs":3,"-guide-identify":168,"-guide-identify-surround":543},[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":167},"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],{"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","i-lucide-link",{"id":169,"title":20,"body":170,"description":536,"extension":537,"links":538,"meta":539,"navigation":231,"path":21,"seo":541,"stem":22,"__hash__":542},"docs\u002F1.guide\u002F04.identify.md",{"type":171,"value":172,"toc":530},"minimark",[173,178,402,423,427,437,440,444,455,459,492,505,511,519,526],[174,175,177],"h2",{"id":176},"the-call","The call",[179,180,185],"pre",{"className":181,"code":182,"language":183,"meta":184,"style":184},"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","",[186,187,188,226,233,275,315,326,331,361],"code",{"__ignoreMap":184},[189,190,193,197,201,205,208,212,216,220,223],"span",{"class":191,"line":192},"line",1,[189,194,196],{"class":195},"sP0CR","import",[189,198,200],{"class":199},"sKlNE"," {",[189,202,204],{"class":203},"snHMy"," identify",[189,206,207],{"class":199}," }",[189,209,211],{"class":210},"stCPd"," from",[189,213,215],{"class":214},"scVjq"," \"",[189,217,219],{"class":218},"sQ7BG","@agntn\u002Fchains",[189,221,222],{"class":214},"\"",[189,224,225],{"class":199},";\n",[189,227,229],{"class":191,"line":228},2,[189,230,232],{"emptyLinePlaceholder":231},true,"\n",[189,234,236,240,243,247,250,253,256,259,262,265,267,270,272],{"class":191,"line":235},3,[189,237,239],{"class":238},"s1TYA","const",[189,241,242],{"class":199}," { ",[189,244,246],{"class":245},"saoiD","matches",[189,248,249],{"class":199},", ",[189,251,252],{"class":245},"unchecked",[189,254,255],{"class":199}," } ",[189,257,258],{"class":238},"=",[189,260,204],{"class":261},"sULi6",[189,263,264],{"class":199},"(",[189,266,222],{"class":214},[189,268,269],{"class":218},"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",[189,271,222],{"class":214},[189,273,274],{"class":199},");\n",[189,276,278,281,284,287,290,294,297,300,303,305,308,311],{"class":191,"line":277},4,[189,279,246],{"class":280},"spVlQ",[189,282,283],{"class":199},".",[189,285,286],{"class":261},"map",[189,288,289],{"class":199},"((",[189,291,293],{"class":292},"s1jWp","chain",[189,295,296],{"class":199},") ",[189,298,299],{"class":238},"=>",[189,301,302],{"class":280}," chain",[189,304,283],{"class":199},[189,306,307],{"class":280},"key",[189,309,310],{"class":199},"); ",[189,312,314],{"class":313},"sjhu3","\u002F\u002F [\"solana\"]\n",[189,316,318,320,323],{"class":191,"line":317},5,[189,319,252],{"class":280},[189,321,322],{"class":199},"; ",[189,324,325],{"class":313},"\u002F\u002F []\n",[189,327,329],{"class":191,"line":328},6,[189,330,232],{"emptyLinePlaceholder":231},[189,332,334,337,339,341,344,346,349,351,353,356,358],{"class":191,"line":333},7,[189,335,336],{"class":261},"identify",[189,338,264],{"class":199},[189,340,222],{"class":214},[189,342,343],{"class":218},"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984",[189,345,222],{"class":214},[189,347,348],{"class":199},").",[189,350,246],{"class":280},[189,352,283],{"class":199},[189,354,355],{"class":245},"length",[189,357,322],{"class":199},[189,359,360],{"class":313},"\u002F\u002F 13, every EVM chain\n",[189,362,364,366,368,370,373,375,377,379,381,383,385,387,389,391,393,395,397,399],{"class":191,"line":363},8,[189,365,336],{"class":261},[189,367,264],{"class":199},[189,369,222],{"class":214},[189,371,372],{"class":218},"0x1",[189,374,222],{"class":214},[189,376,348],{"class":199},[189,378,246],{"class":280},[189,380,283],{"class":199},[189,382,286],{"class":261},[189,384,289],{"class":199},[189,386,293],{"class":292},[189,388,296],{"class":199},[189,390,299],{"class":238},[189,392,302],{"class":280},[189,394,283],{"class":199},[189,396,307],{"class":280},[189,398,310],{"class":199},[189,400,401],{"class":313},"\u002F\u002F [\"aptos\", \"sui\"]\n",[403,404,405,408,409,411,412,415,416,418,419,422],"p",{},[186,406,407],{},"identify(address)"," partitions the registry: ",[186,410,246],{}," holds every chain whose ",[186,413,414],{},"assertAddress"," accepted the string, ",[186,417,252],{}," holds every chain that carries no validator and so couldn't be asked. Only ",[186,420,421],{},"InvalidAddressError"," counts as a miss. Anything else a validator throws is a bug and comes back out.",[174,424,426],{"id":425},"what-a-match-means","What a match means",[403,428,429,430,433,434,436],{},"Format only. Every EVM chain shares one format, so a ",[186,431,432],{},"0x"," address with 40 hex digits matches all thirteen, and that's the honest answer. A match narrows the family rather than naming the chain an address is used on. Same for ",[186,435,372],{}," on Aptos and Sui: both write the framework address that way, and nothing in the string can tell them apart.",[403,438,439],{},"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.",[174,441,443],{"id":442},"unchecked-isnt-no","Unchecked isn't no",[403,445,446,447,451,452,454],{},"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 ",[448,449,450],"a",{"href":37},"custom chain"," that skips ",[186,453,414],{}," lands there.",[174,456,458],{"id":457},"on-the-cli-and-in-the-tools","On the CLI and in the tools",[179,460,464],{"className":461,"code":462,"language":463,"meta":184,"style":184},"language-bash shiki shiki-themes github-light github-light poimandres","chains identify 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\nchains identify EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v --json\n","bash",[186,465,466,479],{"__ignoreMap":184},[189,467,468,472,475],{"class":191,"line":192},[189,469,471],{"class":470},"sseY5","chains",[189,473,204],{"class":474},"sX7Zv",[189,476,478],{"class":477},"siHFe"," 0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\n",[189,480,481,483,485,488],{"class":191,"line":228},[189,482,471],{"class":470},[189,484,204],{"class":474},[189,486,487],{"class":474}," EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",[189,489,491],{"class":490},"sqT1Y"," --json\n",[403,493,494,496,497,500,501,504],{},[186,495,336],{}," 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. ",[186,498,499],{},"--json"," gives ",[186,502,503],{},"{ matches, unchecked }"," as arrays of keys.",[403,506,507,510],{},[186,508,509],{},"chains_identify_address"," is the same thing for a model, grouped by family, with the reach of a match spelled out in the text:",[179,512,517],{"className":513,"code":515,"language":516,"meta":184},[514],"language-text","\"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\" matches 13 of 29 checked chains.\nevm (13): ethereum, base, arbitrum, optimism, polygon, bsc, avalanche, fantom, gnosis, linea, zksync, scroll, berachain\nA format match narrows the family; it does not prove the address is used on any of these chains.\n","text",[186,518,515],{"__ignoreMap":184},[403,520,521,522,525],{},"The ",[448,523,40],{"href":524},"\u002Fplayground?op=identify"," runs the same partition in your browser and lights up the families as you type.",[527,528,529],"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":184,"searchDepth":228,"depth":228,"links":531},[532,533,534,535],{"id":176,"depth":228,"text":177},{"id":425,"depth":228,"text":426},{"id":442,"depth":228,"text":443},{"id":457,"depth":228,"text":458},"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":540},"i-lucide-scan-search",{"title":20,"description":536},"Yn7rDIxktyIsL6Rh8gTifYk41wBSjOvzXk7Ellcwrlo",[544,546],{"title":16,"path":17,"stem":18,"description":545,"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":547,"children":-1},"Every field on a chain class. Which ones may be missing and why. Where each decimals value was checked.",1789393739617]