[{"data":1,"prerenderedAt":450},["ShallowReactive",2],{"navigation_docs":3,"-chains-zcash":196,"-chains-zcash-surround":447},[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":192,"body":198,"description":440,"extension":441,"links":442,"meta":443,"navigation":328,"path":193,"seo":445,"stem":194,"__hash__":446},"docs\u002F2.chains\u002F36.zcash.md",{"type":199,"value":200,"toc":436},"minimark",[201,205,210,242,253,260,281,284,291,411,415,432],[202,203],"chain-facts",{"chain":204},"zcash",[206,207,209],"h2",{"id":208},"address-format","Address format",[211,212,213,214,218,219,222,223,226,227,230,231,234,235,238,239,241],"p",{},"Four forms, and each one gets decoded, not measured. Transparent ",[215,216,217],"code",{},"t1…"," and ",[215,220,221],{},"t3…"," are Base58Check with a two-byte version, ",[215,224,225],{},"0x1cb8"," for a key hash and ",[215,228,229],{},"0x1cbd"," for a script hash, 26 bytes with the checksum. Sapling ",[215,232,233],{},"zs1…"," is Bech32 over 43 bytes. A ZIP-320 ",[215,236,237],{},"tex1…"," is the same 20-byte key hash as a ",[215,240,217],{},", written in Bech32m so a wallet knows to send there from transparent funds only.",[211,243,244,245,248,249,252],{},"The Unified Address ",[215,246,247],{},"u1…"," is the interesting one. It bundles receivers of different pools into one string. Bech32m carries it past BIP-173's 90 characters, so the checksum runs over the whole thing. Under the checksum sits F4Jumble, a four-round Feistel permutation over BLAKE2b, there so that changing a few characters scrambles everything. The check undoes it and wants the 16 bytes at the end to spell ",[215,250,251],{},"u"," padded with zeros. Then it reads the items, the way ZIP-316 tells a consumer to for Revision 0: typecodes ascending with no repeats, 20 bytes for P2PKH and P2SH, 43 for Sapling and Orchard, never P2PKH and P2SH together, and at least one item that isn't transparent. A typecode it doesn't know passes, because the ZIP says a wallet has to skip those. MUST-understand metadata fails, Revision 0 has no room for it.",[211,254,255,256,259],{},"What it doesn't do is decompress the curve points inside a Sapling or Orchard receiver. ",[215,257,258],{},"zcash_address"," doesn't either, it takes the bytes at their length.",[211,261,262,263,266,267,270,271,270,274,270,277,280],{},"Sprout ",[215,264,265],{},"zc…"," addresses fail on purpose. Canopy closed the Sprout pool to new value in ZIP 211, so nothing can pay one. Testnet forms (",[215,268,269],{},"tm…",", ",[215,272,273],{},"ztestsapling1…",[215,275,276],{},"textest1…",[215,278,279],{},"utest1…",") fail too.",[211,282,283],{},"The ZIP lets a Unified Address grow to about four megabytes, and the check reads all of it. That's around two seconds at the very top. A real one is under a millisecond.",[211,285,286,287,290],{},"The chain started from its own genesis block, so the CAIP-2 reference is plain BIP-122: the first 32 hex digits of the hash zcashd's ",[215,288,289],{},"chainparams.cpp"," asserts.",[292,293,298],"pre",{"className":294,"code":295,"language":296,"meta":297,"style":297},"language-ts shiki shiki-themes chains chains chains","import { getChain } from \"@agntn\u002Fchains\";\n\nconst chain = getChain(\"zec\");\nchain.assertAddress(\"t1VmmGiyjVNeCjxDZzg7vZmd99WyzVby9yC\"); \u002F\u002F returned unchanged\nchain.assertAddress(\"tex1s2rt77ggv6q989lr49rkgzmh5slsksa9khdgte\"); \u002F\u002F the same key hash, as TEX\nchain.bip44; \u002F\u002F 133\nchain.caip2; \u002F\u002F \"bip122:00040fe8ec8471911baa1db1266ea15d\"\n","ts","",[215,299,300,323,330,355,376,393,402],{"__ignoreMap":297},[301,302,305,309,313,316,320],"span",{"class":303,"line":304},"line",1,[301,306,308],{"class":307},"skH_V","import",[301,310,312],{"class":311},"s38Sx"," { getChain } ",[301,314,315],{"class":307},"from",[301,317,319],{"class":318},"shU9J"," \"@agntn\u002Fchains\"",[301,321,322],{"class":311},";\n",[301,324,326],{"class":303,"line":325},2,[301,327,329],{"emptyLinePlaceholder":328},true,"\n",[301,331,333,336,339,342,346,349,352],{"class":303,"line":332},3,[301,334,335],{"class":307},"const",[301,337,338],{"class":311}," chain ",[301,340,341],{"class":307},"=",[301,343,345],{"class":344},"sK71F"," getChain",[301,347,348],{"class":311},"(",[301,350,351],{"class":318},"\"zec\"",[301,353,354],{"class":311},");\n",[301,356,358,361,364,366,369,372],{"class":303,"line":357},4,[301,359,360],{"class":311},"chain.",[301,362,363],{"class":344},"assertAddress",[301,365,348],{"class":311},[301,367,368],{"class":318},"\"t1VmmGiyjVNeCjxDZzg7vZmd99WyzVby9yC\"",[301,370,371],{"class":311},"); ",[301,373,375],{"class":374},"scIB-","\u002F\u002F returned unchanged\n",[301,377,379,381,383,385,388,390],{"class":303,"line":378},5,[301,380,360],{"class":311},[301,382,363],{"class":344},[301,384,348],{"class":311},[301,386,387],{"class":318},"\"tex1s2rt77ggv6q989lr49rkgzmh5slsksa9khdgte\"",[301,389,371],{"class":311},[301,391,392],{"class":374},"\u002F\u002F the same key hash, as TEX\n",[301,394,396,399],{"class":303,"line":395},6,[301,397,398],{"class":311},"chain.bip44; ",[301,400,401],{"class":374},"\u002F\u002F 133\n",[301,403,405,408],{"class":303,"line":404},7,[301,406,407],{"class":311},"chain.caip2; ",[301,409,410],{"class":374},"\u002F\u002F \"bip122:00040fe8ec8471911baa1db1266ea15d\"\n",[206,412,414],{"id":413},"spellings","Spellings",[211,416,417,270,419,270,422,424,425,427,428,431],{},[215,418,204],{},[215,420,421],{},"zec",[215,423,192],{},". The key is ",[215,426,204],{},", the ticker resolves through ",[215,429,430],{},"getChain",".",[433,434,435],"style",{},"html pre.shiki code .skH_V, html code.shiki .skH_V{--shiki-light:var(--shiki-token-keyword);--shiki-default:var(--shiki-token-keyword);--shiki-dark:var(--shiki-token-keyword)}html pre.shiki code .s38Sx, html code.shiki .s38Sx{--shiki-light:var(--ui-text-highlighted);--shiki-default:var(--ui-text-highlighted);--shiki-dark:var(--ui-text-highlighted)}html pre.shiki code .shU9J, html code.shiki .shU9J{--shiki-light:var(--shiki-token-string);--shiki-default:var(--shiki-token-string);--shiki-dark:var(--shiki-token-string)}html pre.shiki code .sK71F, html code.shiki .sK71F{--shiki-light:var(--shiki-token-function);--shiki-default:var(--shiki-token-function);--shiki-dark:var(--shiki-token-function)}html pre.shiki code .scIB-, html code.shiki .scIB-{--shiki-light:var(--shiki-token-comment);--shiki-default:var(--shiki-token-comment);--shiki-dark:var(--shiki-token-comment)}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":297,"searchDepth":325,"depth":325,"links":437},[438,439],{"id":208,"depth":325,"text":209},{"id":413,"depth":325,"text":414},"Transparent t1 and t3, Sapling zs1, TEX and Unified Addresses under ZIP-316, F4Jumble undone and every item read. Sprout stays out.","md",null,{"icon":444},"i-token-zec",{"title":192,"description":440},"UNnPHu9xnWAgLBXL_KXRthpSoVWJqQ7rMAKn7f-0BdM",[448,442],{"title":188,"path":189,"stem":190,"description":449,"children":-1},"Base58Check under 0x4c and 0x10, 25 bytes, no Bech32. Its own genesis, so unlike the Bitcoin forks it gets a CAIP-2 reference.",1791206683525]