[{"data":1,"prerenderedAt":391},["ShallowReactive",2],{"navigation_docs":3,"-blockchains-solana":84,"-blockchains-solana-surround":386},[4,32],{"title":5,"path":6,"stem":7,"children":8,"icon":31},"Guide","\u002Fguide","1.guide\u002F1.index",[9,11,15,19,23,27],{"title":10,"path":6,"stem":7},"Getting Started",{"title":12,"path":13,"stem":14},"Working with Keys","\u002Fguide\u002Fkeys","1.guide\u002F2.keys",{"title":16,"path":17,"stem":18},"Working with Addresses","\u002Fguide\u002Faddresses","1.guide\u002F3.addresses",{"title":20,"path":21,"stem":22},"Generating Wallets","\u002Fguide\u002Fwallets","1.guide\u002F4.wallets",{"title":24,"path":25,"stem":26},"Working with EVM Chains","\u002Fguide\u002Fevm","1.guide\u002F5.evm",{"title":28,"path":29,"stem":30},"Creating Custom Blockchains","\u002Fguide\u002Fcustom","1.guide\u002F6.custom","i-lucide-book-open",{"title":33,"path":34,"stem":35,"children":36,"icon":83},"Blockchains","\u002Fblockchains","2.blockchains\u002F0.index",[37,39,43,47,51,55,59,63,67,71,75,79],{"title":38,"path":34,"stem":35},"Overview",{"title":40,"path":41,"stem":42},"Aptos","\u002Fblockchains\u002Faptos","2.blockchains\u002Faptos",{"title":44,"path":45,"stem":46},"Base","\u002Fblockchains\u002Fbase","2.blockchains\u002Fbase",{"title":48,"path":49,"stem":50},"Bitcoin","\u002Fblockchains\u002Fbitcoin","2.blockchains\u002Fbitcoin",{"title":52,"path":53,"stem":54},"Cardano","\u002Fblockchains\u002Fcardano","2.blockchains\u002Fcardano",{"title":56,"path":57,"stem":58},"Decred","\u002Fblockchains\u002Fdecred","2.blockchains\u002Fdecred",{"title":60,"path":61,"stem":62},"Ethereum","\u002Fblockchains\u002Fethereum","2.blockchains\u002Fethereum",{"title":64,"path":65,"stem":66},"Litecoin","\u002Fblockchains\u002Flitecoin","2.blockchains\u002Flitecoin",{"title":68,"path":69,"stem":70},"Solana","\u002Fblockchains\u002Fsolana","2.blockchains\u002Fsolana",{"title":72,"path":73,"stem":74},"Stellar","\u002Fblockchains\u002Fstellar","2.blockchains\u002Fstellar",{"title":76,"path":77,"stem":78},"Sui","\u002Fblockchains\u002Fsui","2.blockchains\u002Fsui",{"title":80,"path":81,"stem":82},"TRON","\u002Fblockchains\u002Ftron","2.blockchains\u002Ftron","i-lucide-boxes",{"id":85,"title":68,"body":86,"description":379,"extension":380,"links":381,"meta":382,"navigation":160,"path":69,"seo":384,"stem":70,"__hash__":385},"docs\u002F2.blockchains\u002Fsolana.md",{"type":87,"value":88,"toc":372},"minimark",[89,96,101,197,201,254,262,266,293,296,300,303,340,350,354,368],[90,91],"chain-facts",{"coin":92,"curve":93,"driver":94,"formats":95},"501","ed25519","solana","base58",[97,98,100],"h2",{"id":99},"load-it","Load it",[102,103,108],"pre",{"className":104,"code":105,"language":106,"meta":107,"style":107},"language-js shiki shiki-themes github-light github-light poimandres","import { useBlockchain, blockchains } from \"@agntn\u002Fkeys\";\n\nconst solanaChain = useBlockchain(await blockchains.solana()());\n","js","",[109,110,111,155,162],"code",{"__ignoreMap":107},[112,113,116,120,124,128,131,134,137,141,145,149,152],"span",{"class":114,"line":115},"line",1,[112,117,119],{"class":118},"sP0CR","import",[112,121,123],{"class":122},"sKlNE"," {",[112,125,127],{"class":126},"snHMy"," useBlockchain",[112,129,130],{"class":122},",",[112,132,133],{"class":126}," blockchains",[112,135,136],{"class":122}," }",[112,138,140],{"class":139},"stCPd"," from",[112,142,144],{"class":143},"scVjq"," \"",[112,146,148],{"class":147},"sQ7BG","@agntn\u002Fkeys",[112,150,151],{"class":143},"\"",[112,153,154],{"class":122},";\n",[112,156,158],{"class":114,"line":157},2,[112,159,161],{"emptyLinePlaceholder":160},true,"\n",[112,163,165,169,173,176,179,182,186,189,192,194],{"class":114,"line":164},3,[112,166,168],{"class":167},"s1TYA","const",[112,170,172],{"class":171},"saoiD"," solanaChain",[112,174,175],{"class":167}," =",[112,177,127],{"class":178},"sULi6",[112,180,181],{"class":122},"(",[112,183,185],{"class":184},"sZW6a","await",[112,187,133],{"class":188},"spVlQ",[112,190,191],{"class":122},".",[112,193,94],{"class":178},[112,195,196],{"class":122},"()());\n",[97,198,200],{"id":199},"the-address","The address",[102,202,204],{"className":104,"code":203,"language":106,"meta":107,"style":107},"const publicKey = solanaChain.getKeyPublic(privateKey); \u002F\u002F 32 bytes, 64 hex chars\nsolanaChain.getAddress(publicKey); \u002F\u002F base58 of the same 32 bytes\n",[109,205,206,234],{"__ignoreMap":107},[112,207,208,210,213,215,217,219,222,224,227,230],{"class":114,"line":115},[112,209,168],{"class":167},[112,211,212],{"class":171}," publicKey",[112,214,175],{"class":167},[112,216,172],{"class":188},[112,218,191],{"class":122},[112,220,221],{"class":178},"getKeyPublic",[112,223,181],{"class":122},[112,225,226],{"class":188},"privateKey",[112,228,229],{"class":122},"); ",[112,231,233],{"class":232},"sjhu3","\u002F\u002F 32 bytes, 64 hex chars\n",[112,235,236,239,241,244,246,249,251],{"class":114,"line":157},[112,237,238],{"class":188},"solanaChain",[112,240,191],{"class":122},[112,242,243],{"class":178},"getAddress",[112,245,181],{"class":122},[112,247,248],{"class":188},"publicKey",[112,250,229],{"class":122},[112,252,253],{"class":232},"\u002F\u002F base58 of the same 32 bytes\n",[255,256,257,258,261],"p",{},"No hash, no version byte, no checksum. The address is the public key with a friendlier encoding, that's it. It makes Solana the easiest chain in the package and the one where ",[109,259,260],{},"validateAddress"," can say the least: any 32 bytes that decode from base58 pass, including a program address that no private key controls.",[97,263,265],{"id":264},"validation","Validation",[102,267,269],{"className":104,"code":268,"language":106,"meta":107,"style":107},"solanaChain.validateAddress(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"); \u002F\u002F true\n",[109,270,271],{"__ignoreMap":107},[112,272,273,275,277,279,281,283,286,288,290],{"class":114,"line":115},[112,274,238],{"class":188},[112,276,191],{"class":122},[112,278,260],{"class":178},[112,280,181],{"class":122},[112,282,151],{"class":143},[112,284,285],{"class":147},"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin",[112,287,151],{"class":143},[112,289,229],{"class":122},[112,291,292],{"class":232},"\u002F\u002F true\n",[255,294,295],{},"Decodes as base58 and is exactly 32 bytes. That is the whole check.",[97,297,299],{"id":298},"mnemonics","Mnemonics",[255,301,302],{},"Solana derives with SLIP-10, which only has hardened children. Every segment of the path needs the tick:",[102,304,306],{"className":104,"code":305,"language":106,"meta":107,"style":107},"solanaChain.deriveHDWallet(mnemonic, \"m\u002F44'\u002F501'\u002F0'\u002F0'\").address;\n",[109,307,308],{"__ignoreMap":107},[112,309,310,312,314,317,319,322,325,327,330,332,335,338],{"class":114,"line":115},[112,311,238],{"class":188},[112,313,191],{"class":122},[112,315,316],{"class":178},"deriveHDWallet",[112,318,181],{"class":122},[112,320,321],{"class":188},"mnemonic",[112,323,324],{"class":122},", ",[112,326,151],{"class":143},[112,328,329],{"class":147},"m\u002F44'\u002F501'\u002F0'\u002F0'",[112,331,151],{"class":143},[112,333,334],{"class":122},").",[112,336,337],{"class":188},"address",[112,339,154],{"class":122},[255,341,342,343,346,347,191],{},"A path with an unhardened segment throws before derivation, there isn't a soft child to give you. Phantom and Solflare use exactly this shape, so the first account matches what those wallets show. ",[109,344,345],{},"solanaChain.getDerivationPath(1)"," gives the next one, ",[109,348,349],{},"m\u002F44'\u002F501'\u002F1'\u002F0'",[97,351,353],{"id":352},"signing","Signing",[255,355,356,359,360,363,364,367],{},[109,357,358],{},"signMessage"," is a plain ed25519 signature over the message bytes, hex encoded, and ",[109,361,362],{},"verifyMessage"," checks it against the public key. That is the format ",[109,365,366],{},"nacl.sign.detached"," produces, minus the base58 wrapper some wallets add on top.",[369,370,371],"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 .sZW6a, html code.shiki .sZW6a{--shiki-light:#D73A49;--shiki-default:#D73A49;--shiki-dark:#5DE4C7C0}html pre.shiki code .spVlQ, html code.shiki .spVlQ{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E4F0FB}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 .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}",{"title":107,"searchDepth":157,"depth":157,"links":373},[374,375,376,377,378],{"id":99,"depth":157,"text":100},{"id":199,"depth":157,"text":200},{"id":264,"depth":157,"text":265},{"id":298,"depth":157,"text":299},{"id":352,"depth":157,"text":353},"ed25519. The address is the public key itself in base58 with nothing hashed.","md",null,{"icon":383},"i-token-sol",{"title":68,"description":379},"c2wK5u426GQGME8ga_xYAPGBEmynapzQH9U63MJ9tL0",[387,389],{"title":64,"path":65,"stem":66,"description":388,"children":-1},"Bitcoin's driver with Litecoin's prefixes. Five address formats on mainnet and testnet and its own signed message preamble.",{"title":72,"path":73,"stem":74,"description":390,"children":-1},"ed25519 with the public key wrapped as a G StrKey, and message signing the way SEP-53 says.",1789938975649]