[{"data":1,"prerenderedAt":948},["ShallowReactive",2],{"navigation_docs":3,"-guide-validation":168,"-guide-validation-surround":943},[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":16,"body":170,"description":936,"extension":937,"links":938,"meta":939,"navigation":237,"path":17,"seo":941,"stem":18,"__hash__":942},"docs\u002F1.guide\u002F03.validation.md",{"type":171,"value":172,"toc":929},"minimark",[173,178,421,440,451,455,458,462,887,890,894,905,909,925],[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 { getChain, InvalidAddressError } from \"@agntn\u002Fchains\";\n\nconst bitcoin = getChain(\"btc\");\n\nbitcoin.validatesAddress; \u002F\u002F true\nbitcoin.assertAddress(\"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4\"); \u002F\u002F returns the address\n\ntry {\n  bitcoin.assertAddress(\"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t5\");\n} catch (error) {\n  error instanceof InvalidAddressError; \u002F\u002F true, the checksum caught the last digit\n  (error as InvalidAddressError).chain; \u002F\u002F \"bitcoin\"\n}\n","ts","",[186,187,188,232,239,269,274,294,319,324,334,355,373,390,415],"code",{"__ignoreMap":184},[189,190,193,197,201,205,208,211,214,218,222,226,229],"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"," getChain",[189,206,207],{"class":199},",",[189,209,210],{"class":203}," InvalidAddressError",[189,212,213],{"class":199}," }",[189,215,217],{"class":216},"stCPd"," from",[189,219,221],{"class":220},"scVjq"," \"",[189,223,225],{"class":224},"sQ7BG","@agntn\u002Fchains",[189,227,228],{"class":220},"\"",[189,230,231],{"class":199},";\n",[189,233,235],{"class":191,"line":234},2,[189,236,238],{"emptyLinePlaceholder":237},true,"\n",[189,240,242,246,250,253,256,259,261,264,266],{"class":191,"line":241},3,[189,243,245],{"class":244},"s1TYA","const",[189,247,249],{"class":248},"saoiD"," bitcoin",[189,251,252],{"class":244}," =",[189,254,204],{"class":255},"sULi6",[189,257,258],{"class":199},"(",[189,260,228],{"class":220},[189,262,263],{"class":224},"btc",[189,265,228],{"class":220},[189,267,268],{"class":199},");\n",[189,270,272],{"class":191,"line":271},4,[189,273,238],{"emptyLinePlaceholder":237},[189,275,277,281,284,287,290],{"class":191,"line":276},5,[189,278,280],{"class":279},"spVlQ","bitcoin",[189,282,283],{"class":199},".",[189,285,286],{"class":279},"validatesAddress",[189,288,289],{"class":199},"; ",[189,291,293],{"class":292},"sjhu3","\u002F\u002F true\n",[189,295,297,299,301,304,306,308,311,313,316],{"class":191,"line":296},6,[189,298,280],{"class":279},[189,300,283],{"class":199},[189,302,303],{"class":255},"assertAddress",[189,305,258],{"class":199},[189,307,228],{"class":220},[189,309,310],{"class":224},"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4",[189,312,228],{"class":220},[189,314,315],{"class":199},"); ",[189,317,318],{"class":292},"\u002F\u002F returns the address\n",[189,320,322],{"class":191,"line":321},7,[189,323,238],{"emptyLinePlaceholder":237},[189,325,327,331],{"class":191,"line":326},8,[189,328,330],{"class":329},"szlwh","try",[189,332,333],{"class":199}," {\n",[189,335,337,340,342,344,346,348,351,353],{"class":191,"line":336},9,[189,338,339],{"class":279},"  bitcoin",[189,341,283],{"class":199},[189,343,303],{"class":255},[189,345,258],{"class":199},[189,347,228],{"class":220},[189,349,350],{"class":224},"bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t5",[189,352,228],{"class":220},[189,354,268],{"class":199},[189,356,358,361,364,367,370],{"class":191,"line":357},10,[189,359,360],{"class":199},"} ",[189,362,363],{"class":329},"catch",[189,365,366],{"class":199}," (",[189,368,369],{"class":279},"error",[189,371,372],{"class":199},") {\n",[189,374,376,379,382,385,387],{"class":191,"line":375},11,[189,377,378],{"class":279},"  error",[189,380,381],{"class":244}," instanceof",[189,383,210],{"class":384},"sCrqT",[189,386,289],{"class":199},[189,388,389],{"class":292},"\u002F\u002F true, the checksum caught the last digit\n",[189,391,393,396,398,402,404,407,410,412],{"class":191,"line":392},12,[189,394,395],{"class":199},"  (",[189,397,369],{"class":279},[189,399,401],{"class":400},"sp-LQ"," as",[189,403,210],{"class":384},[189,405,406],{"class":199},").",[189,408,409],{"class":279},"chain",[189,411,289],{"class":199},[189,413,414],{"class":292},"\u002F\u002F \"bitcoin\"\n",[189,416,418],{"class":191,"line":417},13,[189,419,420],{"class":199},"}\n",[422,423,424,427,428,431,432,435,436,439],"p",{},[186,425,426],{},"chain.assertAddress(address)"," returns the address when it fits the chain's format and throws ",[186,429,430],{},"InvalidAddressError"," when it doesn't. Chains without a validator throw ",[186,433,434],{},"AddressValidationUnsupportedError"," instead of quietly saying yes, and ",[186,437,438],{},"chain.validatesAddress"," tells you which ones those are before you ask. Right now every built-in chain validates. A false green light costs more than a false alarm when the caller is about to send funds.",[422,441,442,443,446,447,450],{},"The library doesn't trim. ",[186,444,445],{},"assertAddress(\" bc1q…\")"," fails on the space. The CLI's ",[186,448,449],{},"validate"," passes the argument through as typed too. The agent tools do trim, because an address lifted out of a log line keeps its trailing newline and one invisible byte should not turn a good address into a bad one.",[174,452,454],{"id":453},"why-decode","Why decode",[422,456,457],{},"Character counts aren't enough. A 34-character window takes a Bitcoin legacy address and a TRON address, both 25 bytes of Base58Check under different version bytes. Solana's System Program is 32 characters and 32 bytes, a Bitcoin address is 34 characters and 25 bytes. So the base58 validators decode and look at the bytes. The Bech32 validators run the polymod. And Octra is the one base58 chain where decoding would be wrong: a contract address there is cut out of a base58 string rather than encoded from a payload, so the width is the whole format.",[174,459,461],{"id":460},"what-each-family-checks","What each family checks",[463,464,465,484],"table",{},[466,467,468],"thead",{},[469,470,471,475,478,481],"tr",{},[472,473,474],"th",{},"Chain",[472,476,477],{},"Accepted forms",[472,479,480],{},"Verified",[472,482,483],{},"Left alone",[485,486,487,509,547,586,615,639,667,696,711,734,759,775,807,825,843,862],"tbody",{},[469,488,489,497,503,506],{},[490,491,492,496],"td",{},[493,494,495],"a",{"href":53},"EVM",", thirteen chains",[490,498,499,502],{},[186,500,501],{},"0x"," and 40 hex digits, any case",[490,504,505],{},"shape",[490,507,508],{},"EIP-55 checksum",[469,510,511,515,533,544],{},[490,512,513],{},[493,514,104],{"href":105},[490,516,517,518,521,522,525,526,529,530],{},"legacy ",[186,519,520],{},"1…"," ",[186,523,524],{},"3…",", Bech32 ",[186,527,528],{},"bc1q…",", Bech32m ",[186,531,532],{},"bc1p…",[490,534,535,536,539,540,543],{},"25 Base58Check bytes under ",[186,537,538],{},"0x00"," or ",[186,541,542],{},"0x05","; the full BIP-173\u002F350 encoding, witness version, program length, padding, checksum",[490,545,546],{},"legacy checksum",[469,548,549,553,565,580],{},[490,550,551],{},[493,552,108],{"href":109},[490,554,517,555,521,558,561,562],{},[186,556,557],{},"L…",[186,559,560],{},"M…",", ",[186,563,564],{},"ltc1…",[490,566,567,568,571,572,575,576,579],{},"same as Bitcoin under versions ",[186,569,570],{},"0x30"," and ",[186,573,574],{},"0x32"," and the ",[186,577,578],{},"ltc"," prefix",[490,581,582,583,585],{},"legacy checksum; deprecated ",[186,584,524],{}," script version is out",[469,587,588,592,603,612],{},[490,589,590],{},[493,591,112],{"href":113},[490,593,594,561,597,561,600],{},[186,595,596],{},"P…",[186,598,599],{},"9…",[186,601,602],{},"A…",[490,604,605,606,539,609],{},"25 bytes under ",[186,607,608],{},"0x38",[186,610,611],{},"0x16",[490,613,614],{},"checksum; no Bech32 at all",[469,616,617,621,627,636],{},[490,618,619],{},[493,620,116],{"href":117},[490,622,623,624],{},"CashAddr with or without ",[186,625,626],{},"ecash:",[490,628,629,630,539,632,635],{},"the CashAddr checksum, version ",[186,631,538],{},[186,633,634],{},"0x08",", 20-byte hash, zero padding",[490,637,638],{},"nothing; a bare Bitcoin Cash address fails on the checksum",[469,640,641,645,661,664],{},[490,642,643],{},[493,644,120],{"href":121},[490,646,647,648,561,651,654,655,521,658],{},"Shelley ",[186,649,650],{},"addr1…",[186,652,653],{},"stake1…",", Byron ",[186,656,657],{},"Ae2…",[186,659,660],{},"DdzFF…",[490,662,663],{},"Bech32 checksum past BIP-173's 90 characters, CIP-19 header, mainnet tag, payload length, pointer coordinates",[490,665,666],{},"Byron CRC and network",[469,668,669,673,690,693],{},[490,670,671],{},[493,672,164],{"href":165},[490,674,675,521,678,521,681,521,684,561,687],{},[186,676,677],{},"Ds",[186,679,680],{},"De",[186,682,683],{},"DS",[186,685,686],{},"Dc",[186,688,689],{},"Dk",[490,691,692],{},"26-byte hash forms, 39-byte public key form with its selector",[490,694,695],{},"BLAKE-256 checksum, curve points",[469,697,698,702,705,708],{},[490,699,700],{},[493,701,124],{"href":125},[490,703,704],{},"base58",[490,706,707],{},"exactly 32 decoded bytes",[490,709,710],{},"nothing else exists to check",[469,712,713,717,728,731],{},[490,714,715],{},[493,716,128],{"href":129},[490,718,719,720,521,723,521,725],{},"SEP-23 Strkey ",[186,721,722],{},"G…",[186,724,560],{},[186,726,727],{},"C…",[490,729,730],{},"canonical base32, version byte, CRC16-XModem",[490,732,733],{},"account existence",[469,735,736,740,750,756],{},[490,737,738],{},[493,739,132],{"href":133},[490,741,742,743,746,747],{},"classic ",[186,744,745],{},"r…",", X-address ",[186,748,749],{},"X…",[490,751,752,753,755],{},"the ledger's own base58 alphabet, version ",[186,754,538],{},", X-address prefix, flag and reserved bytes",[490,757,758],{},"checksum",[469,760,761,767,770,772],{},[490,762,763,561,765],{},[493,764,136],{"href":137},[493,766,140],{"href":141},[490,768,769],{},"64 hex digits or the single digit AIP-40 short form",[490,771,505],{},[490,773,774],{},"nothing else",[469,776,777,782,785,800],{},[490,778,779],{},[493,780,781],{"href":145},"TON",[490,783,784],{},"TEP-2 friendly, either base64 alphabet",[490,786,787,788,539,791,794,795,539,797],{},"36 bytes, tag ",[186,789,790],{},"0x11",[186,792,793],{},"0x51",", workchain ",[186,796,538],{},[186,798,799],{},"0xff",[490,801,802,803,806],{},"CRC16; the raw ",[186,804,805],{},"workchain:hex"," form isn't accepted",[469,808,809,813,818,823],{},[490,810,811],{},[493,812,148],{"href":149},[490,814,815],{},[186,816,817],{},"T…",[490,819,605,820],{},[186,821,822],{},"0x41",[490,824,758],{},[469,826,827,831,837,840],{},[490,828,829],{},[493,830,152],{"href":153},[490,832,833,836],{},[186,834,835],{},"oct"," and 44 base58 characters",[490,838,839],{},"the width and the alphabet",[490,841,842],{},"everything else, on purpose",[469,844,845,849,852,855],{},[490,846,847],{},[493,848,156],{"href":157},[490,850,851],{},"43 base64url characters",[490,853,854],{},"zero unused bits in the last digit",[490,856,857,858,861],{},"the optional ",[186,859,860],{},":checksum"," suffix is rejected",[469,863,864,868,881,884],{},[490,865,866],{},[493,867,160],{"href":161},[490,869,870,871,874,875,878,879],{},"standard ",[186,872,873],{},"4…",", subaddress ",[186,876,877],{},"8…",", integrated ",[186,880,873],{},[490,882,883],{},"base58 block bounds, mainnet type byte, 95 or 106 characters",[490,885,886],{},"Keccak checksum, curve points; testnet and stagenet are rejected",[422,888,889],{},"Mixed case fails on every Bech32 and CashAddr chain, all upper or all lower passes, as the specs say. Testnet forms are rejected everywhere the format can tell: Bitcoin's version bytes, TON's testnet flag, Monero's network byte, XRP's testnet X-address prefix. Cardano's Byron form is the one exception, its network hides in an attribute the check doesn't open.",[174,891,893],{"id":892},"move-addresses-and-evm-addresses","Move addresses and EVM addresses",[422,895,896,897,900,901,904],{},"Aptos and Sui want all 32 bytes of hex written out, or the single digit short form AIP-40 defines for the special addresses, which is how the framework address ",[186,898,899],{},"0x1"," is actually written. Anything in between stays rejected. Accepting dropped leading zeros would make every EVM address a valid Move address too, and ",[493,902,903],{"href":21},"identify"," would report a family nobody asked about.",[174,906,908],{"id":907},"where-this-stops","Where this stops",[422,910,911,912,920,921,924],{},"None of this touches a network. Not existence, not balances, not whether a contract sits at the address. That belongs in ",[493,913,917],{"href":914,"rel":915},"https:\u002F\u002Fgithub.com\u002Fagntn\u002Fnodes",[916],"nofollow",[186,918,919],{},"@agntn\u002Fnodes",", and the ",[493,922,40],{"href":923},"\u002Fplayground"," says the same thing under every green result.",[926,927,928],"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 .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 pre.shiki code .szlwh, html code.shiki .szlwh{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#D0679D}html pre.shiki code .sCrqT, html code.shiki .sCrqT{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#A6ACCDC0}html pre.shiki code .sp-LQ, html code.shiki .sp-LQ{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#A6ACCDC0}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);}",{"title":184,"searchDepth":234,"depth":234,"links":930},[931,932,933,934,935],{"id":176,"depth":234,"text":177},{"id":453,"depth":234,"text":454},{"id":460,"depth":234,"text":461},{"id":892,"depth":234,"text":893},{"id":907,"depth":234,"text":908},"assertAddress on every chain. What each family decodes and which checksums are verified and which are left alone. A format check and nothing more.","md",null,{"icon":940},"i-lucide-badge-check",{"title":16,"description":936},"8HN3xr4B1UKeXiKY4R9BLZhyLsXV1oZWdmno70lMa5E",[944,946],{"title":12,"path":13,"stem":14,"description":945,"children":-1},"Keys and display names plus the aliases people actually type. All land on the same class. How the registry is seeded and why nothing registers itself.",{"title":20,"path":21,"stem":22,"description":947,"children":-1},"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.",1789393739617]