[{"data":1,"prerenderedAt":1052},["ShallowReactive",2],{"navigation_docs":3,"-guide":84,"-guide-surround":1049},[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":10,"body":86,"description":1043,"extension":1044,"links":1045,"meta":1046,"navigation":219,"path":6,"seo":1047,"stem":7,"__hash__":1048},"docs\u002F1.guide\u002F1.index.md",{"type":87,"value":88,"toc":1029},"minimark",[89,97,104,109,113,120,124,149,162,166,421,432,436,587,597,601,604,609,632,647,651,701,708,712,770,773,782,786,815,818,822,870,873,877,888,908,1013,1025],[90,91,92,96],"warning",{},[93,94,95],"strong",{},"Still experimental."," Package name, public API, the lazy loader, and the tool surface can all change before 1.0. Pin exact versions if you build on it now.",[98,99,100,103],"caution",{},[93,101,102],{},"Never point this at real funds."," Every key that passes through the library, the explorer, or the MCP server is plaintext in a process, a log, or an agent transcript. Treat it as burned the moment it exists. Real money belongs on a hardware wallet.",[105,106,108],"h2",{"id":107},"why-this-exists","Why this exists",[110,111,112],"p",{},"Every chain has its own idea of a key, an address, and a signature. Bitcoin hashes twice and encodes in base58, Ethereum takes the tail of a Keccak hash, Solana just base58 encodes the public key, Cardano wants bech32 with a header byte. Pulling one library per chain into a project means five APIs, five option shapes, and five ways to get an address wrong.",[110,114,115,119],{},[116,117,118],"code",{},"@agntn\u002Fkeys"," puts ten chains behind one class shape. Same calls, same option object, same wallet type. The chain decides the rules, you decide the key.",[105,121,123],{"id":122},"install","Install",[125,126,131],"pre",{"className":127,"code":128,"language":129,"meta":130,"style":130},"language-bash shiki shiki-themes github-light github-light poimandres","pnpm add @agntn\u002Fkeys\n","bash","",[116,132,133],{"__ignoreMap":130},[134,135,138,142,146],"span",{"class":136,"line":137},"line",1,[134,139,141],{"class":140},"sseY5","pnpm",[134,143,145],{"class":144},"sX7Zv"," add",[134,147,148],{"class":144}," @agntn\u002Fkeys\n",[110,150,151,152,155,156,161],{},"Node.js 24 or newer. Pure JavaScript all the way down, nothing to compile, and no ",[116,153,154],{},"node:"," import anywhere, so a browser bundle needs no shim. The ",[157,158,160],"a",{"href":159},"\u002Fkeyspace","Keyspace"," explorer is exactly that bundle.",[105,163,165],{"id":164},"first-wallet","First wallet",[125,167,172],{"className":168,"code":169,"filename":170,"language":171,"meta":130,"style":130},"language-js shiki shiki-themes github-light github-light poimandres","import { useBlockchain, blockchains } from \"@agntn\u002Fkeys\";\n\n\u002F\u002F Concrete classes load on demand. First call takes options, second call imports and constructs.\nconst bitcoin = await blockchains.bitcoin()();\nconst ethereum = await blockchains.ethereum()();\n\nconst bitcoinChain = useBlockchain(bitcoin);\nconst ethereumChain = useBlockchain(ethereum);\n\nconst btcWallet = bitcoinChain.generateWallet();\nconst ethWallet = ethereumChain.generateWallet();\n\nconsole.log(btcWallet.address); \u002F\u002F 1...\nconsole.log(ethWallet.address); \u002F\u002F 0x...\n","my-wallet.js","js",[116,173,174,214,221,228,259,280,285,305,323,328,348,366,371,398],{"__ignoreMap":130},[134,175,176,180,184,188,191,194,197,201,205,208,211],{"class":136,"line":137},[134,177,179],{"class":178},"sP0CR","import",[134,181,183],{"class":182},"sKlNE"," {",[134,185,187],{"class":186},"snHMy"," useBlockchain",[134,189,190],{"class":182},",",[134,192,193],{"class":186}," blockchains",[134,195,196],{"class":182}," }",[134,198,200],{"class":199},"stCPd"," from",[134,202,204],{"class":203},"scVjq"," \"",[134,206,118],{"class":207},"sQ7BG",[134,209,210],{"class":203},"\"",[134,212,213],{"class":182},";\n",[134,215,217],{"class":136,"line":216},2,[134,218,220],{"emptyLinePlaceholder":219},true,"\n",[134,222,224],{"class":136,"line":223},3,[134,225,227],{"class":226},"sjhu3","\u002F\u002F Concrete classes load on demand. First call takes options, second call imports and constructs.\n",[134,229,231,235,239,242,246,249,252,256],{"class":136,"line":230},4,[134,232,234],{"class":233},"s1TYA","const",[134,236,238],{"class":237},"saoiD"," bitcoin",[134,240,241],{"class":233}," =",[134,243,245],{"class":244},"sZW6a"," await",[134,247,193],{"class":248},"spVlQ",[134,250,251],{"class":182},".",[134,253,255],{"class":254},"sULi6","bitcoin",[134,257,258],{"class":182},"()();\n",[134,260,262,264,267,269,271,273,275,278],{"class":136,"line":261},5,[134,263,234],{"class":233},[134,265,266],{"class":237}," ethereum",[134,268,241],{"class":233},[134,270,245],{"class":244},[134,272,193],{"class":248},[134,274,251],{"class":182},[134,276,277],{"class":254},"ethereum",[134,279,258],{"class":182},[134,281,283],{"class":136,"line":282},6,[134,284,220],{"emptyLinePlaceholder":219},[134,286,288,290,293,295,297,300,302],{"class":136,"line":287},7,[134,289,234],{"class":233},[134,291,292],{"class":237}," bitcoinChain",[134,294,241],{"class":233},[134,296,187],{"class":254},[134,298,299],{"class":182},"(",[134,301,255],{"class":248},[134,303,304],{"class":182},");\n",[134,306,308,310,313,315,317,319,321],{"class":136,"line":307},8,[134,309,234],{"class":233},[134,311,312],{"class":237}," ethereumChain",[134,314,241],{"class":233},[134,316,187],{"class":254},[134,318,299],{"class":182},[134,320,277],{"class":248},[134,322,304],{"class":182},[134,324,326],{"class":136,"line":325},9,[134,327,220],{"emptyLinePlaceholder":219},[134,329,331,333,336,338,340,342,345],{"class":136,"line":330},10,[134,332,234],{"class":233},[134,334,335],{"class":237}," btcWallet",[134,337,241],{"class":233},[134,339,292],{"class":248},[134,341,251],{"class":182},[134,343,344],{"class":254},"generateWallet",[134,346,347],{"class":182},"();\n",[134,349,351,353,356,358,360,362,364],{"class":136,"line":350},11,[134,352,234],{"class":233},[134,354,355],{"class":237}," ethWallet",[134,357,241],{"class":233},[134,359,312],{"class":248},[134,361,251],{"class":182},[134,363,344],{"class":254},[134,365,347],{"class":182},[134,367,369],{"class":136,"line":368},12,[134,370,220],{"emptyLinePlaceholder":219},[134,372,374,377,379,382,384,387,389,392,395],{"class":136,"line":373},13,[134,375,376],{"class":248},"console",[134,378,251],{"class":182},[134,380,381],{"class":254},"log",[134,383,299],{"class":182},[134,385,386],{"class":248},"btcWallet",[134,388,251],{"class":182},[134,390,391],{"class":248},"address",[134,393,394],{"class":182},"); ",[134,396,397],{"class":226},"\u002F\u002F 1...\n",[134,399,401,403,405,407,409,412,414,416,418],{"class":136,"line":400},14,[134,402,376],{"class":248},[134,404,251],{"class":182},[134,406,381],{"class":254},[134,408,299],{"class":182},[134,410,411],{"class":248},"ethWallet",[134,413,251],{"class":182},[134,415,391],{"class":248},[134,417,394],{"class":182},[134,419,420],{"class":226},"\u002F\u002F 0x...\n",[110,422,423,424,427,428,431],{},"The double call looks odd the first time. It's deliberate: ",[116,425,426],{},"blockchains.bitcoin({ network: \"testnet\" })"," only records the options, and the second ",[116,429,430],{},"()"," is the moment the chain module actually gets imported. Nothing you never call ends up in your bundle.",[105,433,435],{"id":434},"what-ships","What ships",[437,438,439,455],"table",{},[440,441,442],"thead",{},[443,444,445,449,452],"tr",{},[446,447,448],"th",{},"Chain",[446,450,451],{},"Curve",[446,453,454],{},"Addresses",[456,457,458,469,490,502,511,520,532,542,554,566,578],"tbody",{},[443,459,460,463,466],{},[461,462,48],"td",{},[461,464,465],{},"secp256k1",[461,467,468],{},"legacy, p2sh, segwit, p2wsh, taproot",[443,470,471,473,475],{},[461,472,64],{},[461,474,465],{},[461,476,477,478,481,482,485,486,489],{},"the same five, with ",[116,479,480],{},"L",", ",[116,483,484],{},"M"," and ",[116,487,488],{},"ltc1"," prefixes",[443,491,492,494,496],{},[461,493,56],{},[461,495,465],{},[461,497,498,499],{},"legacy ECDSA P2PKH, starts with ",[116,500,501],{},"Ds",[443,503,504,506,508],{},[461,505,60],{},[461,507,465],{},[461,509,510],{},"EIP-55 hex",[443,512,513,515,517],{},[461,514,44],{},[461,516,465],{},[461,518,519],{},"EIP-55 hex, same as Ethereum",[443,521,522,524,526],{},[461,523,80],{},[461,525,465],{},[461,527,528,529],{},"base58check, starts with ",[116,530,531],{},"T",[443,533,534,536,539],{},[461,535,68],{},[461,537,538],{},"ed25519",[461,540,541],{},"base58 public key",[443,543,544,546,548],{},[461,545,72],{},[461,547,538],{},[461,549,550,553],{},[116,551,552],{},"G"," StrKey, base32 with a checksum",[443,555,556,558,560],{},[461,557,40],{},[461,559,538],{},[461,561,562,565],{},[116,563,564],{},"0x"," hex, SHA3-256",[443,567,568,570,573],{},[461,569,76],{},[461,571,572],{},"ed25519 or secp256k1",[461,574,575,577],{},[116,576,564],{}," hex, Blake2b",[443,579,580,582,584],{},[461,581,52],{},[461,583,538],{},[461,585,586],{},"bech32 base, enterprise, stake",[110,588,589,590,592,593,596],{},"Each chain has its own page under ",[157,591,33],{"href":34}," with the exact rules and the gotchas. Two of them refuse ",[116,594,595],{},"deriveHDWallet"," on purpose, Decred and Cardano, and their pages say why.",[105,598,600],{"id":599},"the-three-steps","The three steps",[110,602,603],{},"Every chain does the same three things, with different rules for each.",[605,606,608],"h3",{"id":607},"_1-a-private-key-is-32-random-bytes","1. A private key is 32 random bytes",[125,610,612],{"className":168,"code":611,"language":171,"meta":130,"style":130},"const privateKey = bitcoinChain.generateKeyPrivate();\n",[116,613,614],{"__ignoreMap":130},[134,615,616,618,621,623,625,627,630],{"class":136,"line":137},[134,617,234],{"class":233},[134,619,620],{"class":237}," privateKey",[134,622,241],{"class":233},[134,624,292],{"class":248},[134,626,251],{"class":182},[134,628,629],{"class":254},"generateKeyPrivate",[134,631,347],{"class":182},[110,633,634,635,638,639,642,643,646],{},"A 64 character hex string. Both curves ask ",[116,636,637],{},"@noble\u002Fcurves"," for it, ",[116,640,641],{},"randomSecretKey()"," on secp256k1 and on ed25519, and noble reads ",[116,644,645],{},"globalThis.crypto"," underneath. Same code in Node and in the browser.",[605,648,650],{"id":649},"_2-the-public-key-comes-from-the-curve","2. The public key comes from the curve",[125,652,654],{"className":168,"code":653,"language":171,"meta":130,"style":130},"const publicKey = bitcoinChain.getKeyPublic(privateKey);\nconst keys = bitcoinChain.generateKeys(); \u002F\u002F both at once\n",[116,655,656,679],{"__ignoreMap":130},[134,657,658,660,663,665,667,669,672,674,677],{"class":136,"line":137},[134,659,234],{"class":233},[134,661,662],{"class":237}," publicKey",[134,664,241],{"class":233},[134,666,292],{"class":248},[134,668,251],{"class":182},[134,670,671],{"class":254},"getKeyPublic",[134,673,299],{"class":182},[134,675,676],{"class":248},"privateKey",[134,678,304],{"class":182},[134,680,681,683,686,688,690,692,695,698],{"class":136,"line":216},[134,682,234],{"class":233},[134,684,685],{"class":237}," keys",[134,687,241],{"class":233},[134,689,292],{"class":248},[134,691,251],{"class":182},[134,693,694],{"class":254},"generateKeys",[134,696,697],{"class":182},"(); ",[134,699,700],{"class":226},"\u002F\u002F both at once\n",[110,702,703,704,707],{},"secp256k1 chains give you a compressed 33 byte key by default. Pass ",[116,705,706],{},"{ compressed: false }"," for the 65 byte one. ed25519 keys are always 32 bytes.",[605,709,711],{"id":710},"_3-the-address-is-a-hash-then-an-encoding","3. The address is a hash, then an encoding",[125,713,715],{"className":168,"code":714,"language":171,"meta":130,"style":130},"const address = bitcoinChain.getAddress(publicKey);\nconst segwit = bitcoinChain.getAddress(publicKey, \"segwit\");\n",[116,716,717,740],{"__ignoreMap":130},[134,718,719,721,724,726,728,730,733,735,738],{"class":136,"line":137},[134,720,234],{"class":233},[134,722,723],{"class":237}," address",[134,725,241],{"class":233},[134,727,292],{"class":248},[134,729,251],{"class":182},[134,731,732],{"class":254},"getAddress",[134,734,299],{"class":182},[134,736,737],{"class":248},"publicKey",[134,739,304],{"class":182},[134,741,742,744,747,749,751,753,755,757,759,761,763,766,768],{"class":136,"line":216},[134,743,234],{"class":233},[134,745,746],{"class":237}," segwit",[134,748,241],{"class":233},[134,750,292],{"class":248},[134,752,251],{"class":182},[134,754,732],{"class":254},[134,756,299],{"class":182},[134,758,737],{"class":248},[134,760,481],{"class":182},[134,762,210],{"class":203},[134,764,765],{"class":207},"segwit",[134,767,210],{"class":203},[134,769,304],{"class":182},[110,771,772],{},"The second argument is the address type. Chains with one format ignore it, chains with several use it to pick, and Decred throws if you ask for one it doesn't have.",[110,774,775,778,779,251],{},[116,776,777],{},"generateWallet()"," runs all three and hands back ",[116,780,781],{},"{ keys: { private, public }, address }",[105,783,785],{"id":784},"checking-an-address","Checking an address",[125,787,789],{"className":168,"code":788,"language":171,"meta":130,"style":130},"bitcoinChain.validateAddress(\"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa\"); \u002F\u002F true\n",[116,790,791],{"__ignoreMap":130},[134,792,793,796,798,801,803,805,808,810,812],{"class":136,"line":137},[134,794,795],{"class":248},"bitcoinChain",[134,797,251],{"class":182},[134,799,800],{"class":254},"validateAddress",[134,802,299],{"class":182},[134,804,210],{"class":203},[134,806,807],{"class":207},"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",[134,809,210],{"class":203},[134,811,394],{"class":182},[134,813,814],{"class":226},"\u002F\u002F true\n",[110,816,817],{},"Every built in chain validates its own formats, including checksums where the format has one. It's a format check, not a lookup: a valid address can still have zero history on chain.",[105,819,821],{"id":820},"which-curve-am-i-on","Which curve am I on",[125,823,825],{"className":168,"code":824,"language":171,"meta":130,"style":130},"bitcoinChain.curve; \u002F\u002F 'secp256k1'\nsolanaChain.curve; \u002F\u002F 'ed25519'\nsuiChain.curve; \u002F\u002F ['ed25519', 'secp256k1']\n",[116,826,827,842,856],{"__ignoreMap":130},[134,828,829,831,833,836,839],{"class":136,"line":137},[134,830,795],{"class":248},[134,832,251],{"class":182},[134,834,835],{"class":248},"curve",[134,837,838],{"class":182},"; ",[134,840,841],{"class":226},"\u002F\u002F 'secp256k1'\n",[134,843,844,847,849,851,853],{"class":136,"line":216},[134,845,846],{"class":248},"solanaChain",[134,848,251],{"class":182},[134,850,835],{"class":248},[134,852,838],{"class":182},[134,854,855],{"class":226},"\u002F\u002F 'ed25519'\n",[134,857,858,861,863,865,867],{"class":136,"line":223},[134,859,860],{"class":248},"suiChain",[134,862,251],{"class":182},[134,864,835],{"class":248},[134,866,838],{"class":182},[134,868,869],{"class":226},"\u002F\u002F ['ed25519', 'secp256k1']\n",[110,871,872],{},"Sui is the only chain that answers with a list. Its page explains how to pick one.",[105,874,876],{"id":875},"agents","Agents",[110,878,879,880,883,884,887],{},"The same code runs as an MCP server over stdio, 18 tools from ",[116,881,882],{},"keys_generate_wallet"," through ",[116,885,886],{},"keys_bip44_path",":",[125,889,891],{"className":127,"code":890,"language":129,"meta":130,"style":130},"npx -y @agntn\u002Fkeys mcp\n",[116,892,893],{"__ignoreMap":130},[134,894,895,898,902,905],{"class":136,"line":137},[134,896,897],{"class":140},"npx",[134,899,901],{"class":900},"sqT1Y"," -y",[134,903,904],{"class":144}," @agntn\u002Fkeys",[134,906,907],{"class":144}," mcp\n",[125,909,913],{"className":910,"code":911,"language":912,"meta":130,"style":130},"language-json shiki shiki-themes github-light github-light poimandres","{\n  \"mcpServers\": {\n    \"keys\": { \"command\": \"npx\", \"args\": [\"-y\", \"@agntn\u002Fkeys\", \"mcp\"] }\n  }\n}\n","json",[116,914,915,920,934,1003,1008],{"__ignoreMap":130},[134,916,917],{"class":136,"line":137},[134,918,919],{"class":182},"{\n",[134,921,922,926,929,931],{"class":136,"line":216},[134,923,925],{"class":924},"sy8Ar","  \"",[134,927,928],{"class":237},"mcpServers",[134,930,210],{"class":924},[134,932,933],{"class":182},": {\n",[134,935,936,939,942,944,947,949,953,955,958,960,962,964,966,968,971,973,976,978,981,983,985,987,989,991,993,995,998,1000],{"class":136,"line":223},[134,937,938],{"class":924},"    \"",[134,940,941],{"class":900},"keys",[134,943,210],{"class":924},[134,945,946],{"class":182},": { ",[134,948,210],{"class":924},[134,950,952],{"class":951},"s39Ir","command",[134,954,210],{"class":924},[134,956,957],{"class":182},": ",[134,959,210],{"class":203},[134,961,897],{"class":207},[134,963,210],{"class":203},[134,965,481],{"class":182},[134,967,210],{"class":924},[134,969,970],{"class":951},"args",[134,972,210],{"class":924},[134,974,975],{"class":182},": [",[134,977,210],{"class":203},[134,979,980],{"class":207},"-y",[134,982,210],{"class":203},[134,984,481],{"class":182},[134,986,210],{"class":203},[134,988,118],{"class":207},[134,990,210],{"class":203},[134,992,481],{"class":182},[134,994,210],{"class":203},[134,996,997],{"class":207},"mcp",[134,999,210],{"class":203},[134,1001,1002],{"class":182},"] }\n",[134,1004,1005],{"class":136,"line":230},[134,1006,1007],{"class":182},"  }\n",[134,1009,1010],{"class":136,"line":261},[134,1011,1012],{"class":182},"}\n",[110,1014,1015,1016,1024],{},"Wallets, HD derivation, addresses, signing, BIP44 paths, mnemonics in all ten BIP39 lists, WIF both ways and public key conversion, with the same parameters the library takes. The Pi extension in ",[157,1017,1021],{"href":1018,"rel":1019},"https:\u002F\u002Fgithub.com\u002Fagntn\u002Fkeys\u002Ftree\u002Fmain\u002Fpackages\u002Fpi",[1020],"nofollow",[116,1022,1023],{},"packages\u002Fpi"," runs the exact same executors from a checkout. A generated mnemonic comes back with a line saying it's in the transcript now. That line isn't decoration, it's the whole security model: public puzzle material and throwaway keys only.",[1026,1027,1028],"style",{},"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 .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 .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 .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 .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 .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 pre.shiki code .sULi6, html code.shiki .sULi6{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#E4F0FBD0}html pre.shiki code .sqT1Y, html code.shiki .sqT1Y{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#ADD7FF}html pre.shiki code .sy8Ar, html code.shiki .sy8Ar{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#A6ACCD}html pre.shiki code .s39Ir, html code.shiki .s39Ir{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#91B4D5}",{"title":130,"searchDepth":216,"depth":216,"links":1030},[1031,1032,1033,1034,1035,1040,1041,1042],{"id":107,"depth":216,"text":108},{"id":122,"depth":216,"text":123},{"id":164,"depth":216,"text":165},{"id":434,"depth":216,"text":435},{"id":599,"depth":216,"text":600,"children":1036},[1037,1038,1039],{"id":607,"depth":223,"text":608},{"id":649,"depth":223,"text":650},{"id":710,"depth":223,"text":711},{"id":784,"depth":216,"text":785},{"id":820,"depth":216,"text":821},{"id":875,"depth":216,"text":876},"Install the package. Load a chain. Get a wallet out in five lines.","md",null,{"icon":31},{"title":10,"description":1043},"l9RvxFmB3VDNPhIG7BUw5hgbHJKuziAWE9NaI3x-6C4",[1045,1050],{"title":12,"path":13,"stem":14,"description":1051,"children":-1},"Private and public keys. Compression and WIF. The one chain that speaks two curves.",1789795655546]