[{"data":1,"prerenderedAt":495},["ShallowReactive",2],{"navigation_docs":3,"-chains-zcash":196,"-chains-zcash-surround":492},[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":485,"extension":486,"links":487,"meta":488,"navigation":343,"path":193,"seo":490,"stem":194,"__hash__":491},"docs\u002F2.chains\u002F36.zcash.md",{"type":199,"value":200,"toc":481},"minimark",[201,205,210,242,253,260,281,284,291,458,462,477],[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 github-light github-light poimandres","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,338,345,375,404,427,443],{"__ignoreMap":297},[301,302,305,309,313,317,320,324,328,332,335],"span",{"class":303,"line":304},"line",1,[301,306,308],{"class":307},"sP0CR","import",[301,310,312],{"class":311},"sKlNE"," {",[301,314,316],{"class":315},"snHMy"," getChain",[301,318,319],{"class":311}," }",[301,321,323],{"class":322},"stCPd"," from",[301,325,327],{"class":326},"scVjq"," \"",[301,329,331],{"class":330},"sQ7BG","@agntn\u002Fchains",[301,333,334],{"class":326},"\"",[301,336,337],{"class":311},";\n",[301,339,341],{"class":303,"line":340},2,[301,342,344],{"emptyLinePlaceholder":343},true,"\n",[301,346,348,352,356,359,362,365,367,370,372],{"class":303,"line":347},3,[301,349,351],{"class":350},"s1TYA","const",[301,353,355],{"class":354},"saoiD"," chain",[301,357,358],{"class":350}," =",[301,360,316],{"class":361},"sULi6",[301,363,364],{"class":311},"(",[301,366,334],{"class":326},[301,368,369],{"class":330},"zec",[301,371,334],{"class":326},[301,373,374],{"class":311},");\n",[301,376,378,382,385,388,390,392,395,397,400],{"class":303,"line":377},4,[301,379,381],{"class":380},"spVlQ","chain",[301,383,384],{"class":311},".",[301,386,387],{"class":361},"assertAddress",[301,389,364],{"class":311},[301,391,334],{"class":326},[301,393,394],{"class":330},"t1VmmGiyjVNeCjxDZzg7vZmd99WyzVby9yC",[301,396,334],{"class":326},[301,398,399],{"class":311},"); ",[301,401,403],{"class":402},"sjhu3","\u002F\u002F returned unchanged\n",[301,405,407,409,411,413,415,417,420,422,424],{"class":303,"line":406},5,[301,408,381],{"class":380},[301,410,384],{"class":311},[301,412,387],{"class":361},[301,414,364],{"class":311},[301,416,334],{"class":326},[301,418,419],{"class":330},"tex1s2rt77ggv6q989lr49rkgzmh5slsksa9khdgte",[301,421,334],{"class":326},[301,423,399],{"class":311},[301,425,426],{"class":402},"\u002F\u002F the same key hash, as TEX\n",[301,428,430,432,434,437,440],{"class":303,"line":429},6,[301,431,381],{"class":380},[301,433,384],{"class":311},[301,435,436],{"class":380},"bip44",[301,438,439],{"class":311},"; ",[301,441,442],{"class":402},"\u002F\u002F 133\n",[301,444,446,448,450,453,455],{"class":303,"line":445},7,[301,447,381],{"class":380},[301,449,384],{"class":311},[301,451,452],{"class":380},"caip2",[301,454,439],{"class":311},[301,456,457],{"class":402},"\u002F\u002F \"bip122:00040fe8ec8471911baa1db1266ea15d\"\n",[206,459,461],{"id":460},"spellings","Spellings",[211,463,464,270,466,270,468,470,471,473,474,384],{},[215,465,204],{},[215,467,369],{},[215,469,192],{},". The key is ",[215,472,204],{},", the ticker resolves through ",[215,475,476],{},"getChain",[478,479,480],"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 .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":340,"depth":340,"links":482},[483,484],{"id":208,"depth":340,"text":209},{"id":460,"depth":340,"text":461},"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":489},"i-token-zec",{"title":192,"description":485},"Pwa-sBbAUoiBpy0DVDbkXuzlokug05146Zx8AfxUFiE",[493,487],{"title":188,"path":189,"stem":190,"description":494,"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.",1790270264675]