[{"data":1,"prerenderedAt":1021},["ShallowReactive",2],{"navigation_docs":3,"-blockchains-sui":84,"-blockchains-sui-surround":1016},[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":76,"body":86,"description":1009,"extension":1010,"links":1011,"meta":1012,"navigation":160,"path":77,"seo":1014,"stem":78,"__hash__":1015},"docs\u002F2.blockchains\u002Fsui.md",{"type":87,"value":88,"toc":1002},"minimark",[89,96,101,215,219,223,277,288,299,365,383,458,461,465,516,521,525,536,608,612,634,787,801,998],[90,91],"chain-facts",{"coin":92,"curve":93,"driver":94,"formats":95},"784","ed25519, secp256k1","sui","0x hex (Blake2b)",[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 suiChain = useBlockchain(await blockchains.sui()());\nsuiChain.curve; \u002F\u002F ['ed25519', 'secp256k1']\n","js","",[109,110,111,155,162,197],"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"," suiChain",[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",[112,198,200,203,205,208,211],{"class":114,"line":199},4,[112,201,202],{"class":188},"suiChain",[112,204,191],{"class":122},[112,206,207],{"class":188},"curve",[112,209,210],{"class":122},"; ",[112,212,214],{"class":213},"sjhu3","\u002F\u002F ['ed25519', 'secp256k1']\n",[97,216,218],{"id":217},"two-curves-one-argument","Two curves, one argument",[220,221,222],"p",{},"Sui accepts several signature schemes and tags each key with a flag byte. The driver supports two of them:",[224,225,226,242],"table",{},[227,228,229],"thead",{},[230,231,232,236,239],"tr",{},[233,234,235],"th",{},"Scheme",[233,237,238],{},"Flag",[233,240,241],{},"Public key",[243,244,245,262],"tbody",{},[230,246,247,254,259],{},[248,249,250,253],"td",{},[109,251,252],{},"ed25519"," (default)",[248,255,256],{},[109,257,258],{},"0x00",[248,260,261],{},"32 bytes",[230,263,264,269,274],{},[248,265,266],{},[109,267,268],{},"secp256k1",[248,270,271],{},[109,272,273],{},"0x01",[248,275,276],{},"33 bytes, compressed",[220,278,279,280,283,284,287],{},"secp256r1 (",[109,281,282],{},"0x02",") and multisig (",[109,285,286],{},"0x03",") aren't implemented.",[220,289,290,291,294,295,298],{},"The address is ",[109,292,293],{},"Blake2b-256(flag + publicKey)"," with ",[109,296,297],{},"0x"," in front. Because the flag is part of the hash, the same private key gives two unrelated addresses depending on the scheme.",[102,300,302],{"className":104,"code":301,"language":106,"meta":107,"style":107},"\u002F\u002F ed25519, the default\nconst wallet = suiChain.generateWallet();\n\n\u002F\u002F secp256k1: the address type doubles as the scheme\nconst walletSecp = suiChain.generateWallet({}, \"secp256k1\");\n",[109,303,304,309,328,332,337],{"__ignoreMap":107},[112,305,306],{"class":114,"line":115},[112,307,308],{"class":213},"\u002F\u002F ed25519, the default\n",[112,310,311,313,316,318,320,322,325],{"class":114,"line":157},[112,312,168],{"class":167},[112,314,315],{"class":171}," wallet",[112,317,175],{"class":167},[112,319,172],{"class":188},[112,321,191],{"class":122},[112,323,324],{"class":178},"generateWallet",[112,326,327],{"class":122},"();\n",[112,329,330],{"class":114,"line":164},[112,331,161],{"emptyLinePlaceholder":160},[112,333,334],{"class":114,"line":199},[112,335,336],{"class":213},"\u002F\u002F secp256k1: the address type doubles as the scheme\n",[112,338,340,342,345,347,349,351,353,356,358,360,362],{"class":114,"line":339},5,[112,341,168],{"class":167},[112,343,344],{"class":171}," walletSecp",[112,346,175],{"class":167},[112,348,172],{"class":188},[112,350,191],{"class":122},[112,352,324],{"class":178},[112,354,355],{"class":122},"({}, ",[112,357,151],{"class":143},[112,359,268],{"class":147},[112,361,151],{"class":143},[112,363,364],{"class":122},");\n",[220,366,367,368,371,372,374,375,378,379,382],{},"Passing ",[109,369,370],{},"\"secp256k1\""," as the address type sets the scheme for the key as well, so ",[109,373,324],{},", ",[109,376,377],{},"deriveWallet",", and ",[109,380,381],{},"deriveHDWallet"," all stay consistent with one argument. When you go step by step you have to say it twice:",[102,384,386],{"className":104,"code":385,"language":106,"meta":107,"style":107},"const secpKey = suiChain.getKeyPublic(privateKey, { scheme: \"secp256k1\" });\nconst secpAddress = suiChain.getAddress(secpKey, \"secp256k1\");\n",[109,387,388,427],{"__ignoreMap":107},[112,389,390,392,395,397,399,401,404,406,409,412,415,418,420,422,424],{"class":114,"line":115},[112,391,168],{"class":167},[112,393,394],{"class":171}," secpKey",[112,396,175],{"class":167},[112,398,172],{"class":188},[112,400,191],{"class":122},[112,402,403],{"class":178},"getKeyPublic",[112,405,181],{"class":122},[112,407,408],{"class":188},"privateKey",[112,410,411],{"class":122},", {",[112,413,414],{"class":126}," scheme",[112,416,417],{"class":122},":",[112,419,144],{"class":143},[112,421,268],{"class":147},[112,423,151],{"class":143},[112,425,426],{"class":122}," });\n",[112,428,429,431,434,436,438,440,443,445,448,450,452,454,456],{"class":114,"line":157},[112,430,168],{"class":167},[112,432,433],{"class":171}," secpAddress",[112,435,175],{"class":167},[112,437,172],{"class":188},[112,439,191],{"class":122},[112,441,442],{"class":178},"getAddress",[112,444,181],{"class":122},[112,446,447],{"class":188},"secpKey",[112,449,374],{"class":122},[112,451,151],{"class":143},[112,453,268],{"class":147},[112,455,151],{"class":143},[112,457,364],{"class":122},[220,459,460],{},"Forget the second one and you hash a secp256k1 key with the ed25519 flag. The result validates, looks fine, and no key can ever spend from it. This is the single easiest way to lose funds with this package, which is why the wallet methods take the scheme once.",[97,462,464],{"id":463},"validation","Validation",[102,466,468],{"className":104,"code":467,"language":106,"meta":107,"style":107},"suiChain.validateAddress(\"0x7e08ac7940568c91564ddc6f5f3bf91b15a9334194ab7855daeac51c5cc74936\"); \u002F\u002F true\nsuiChain.validateAddress(\"7e08ac7940568c91564ddc6f5f3bf91b15a9334194ab7855daeac51c5cc74936\"); \u002F\u002F false\n",[109,469,470,494],{"__ignoreMap":107},[112,471,472,474,476,479,481,483,486,488,491],{"class":114,"line":115},[112,473,202],{"class":188},[112,475,191],{"class":122},[112,477,478],{"class":178},"validateAddress",[112,480,181],{"class":122},[112,482,151],{"class":143},[112,484,485],{"class":147},"0x7e08ac7940568c91564ddc6f5f3bf91b15a9334194ab7855daeac51c5cc74936",[112,487,151],{"class":143},[112,489,490],{"class":122},"); ",[112,492,493],{"class":213},"\u002F\u002F true\n",[112,495,496,498,500,502,504,506,509,511,513],{"class":114,"line":157},[112,497,202],{"class":188},[112,499,191],{"class":122},[112,501,478],{"class":178},[112,503,181],{"class":122},[112,505,151],{"class":143},[112,507,508],{"class":147},"7e08ac7940568c91564ddc6f5f3bf91b15a9334194ab7855daeac51c5cc74936",[112,510,151],{"class":143},[112,512,490],{"class":122},[112,514,515],{"class":213},"\u002F\u002F false\n",[220,517,518,520],{},[109,519,297],{}," and 64 hex characters, any case. No checksum, same caveat as Aptos.",[97,522,524],{"id":523},"mnemonics","Mnemonics",[220,526,527,528,531,532,535],{},"ed25519 goes through SLIP-10 and needs every segment hardened, ",[109,529,530],{},"m\u002F44'\u002F784'\u002F0'\u002F0'\u002F0'",". secp256k1 goes through BIP32 and takes the usual ",[109,533,534],{},"m\u002F54'\u002F784'\u002F0'\u002F0\u002F0"," shape. Pass the scheme as the address type and the driver picks the right derivation:",[102,537,539],{"className":104,"code":538,"language":106,"meta":107,"style":107},"suiChain.deriveHDWallet(mnemonic, \"m\u002F44'\u002F784'\u002F0'\u002F0'\u002F0'\").address; \u002F\u002F ed25519\nsuiChain.deriveHDWallet(mnemonic, \"m\u002F54'\u002F784'\u002F0'\u002F0\u002F0\", {}, \"secp256k1\").address;\n",[109,540,541,573],{"__ignoreMap":107},[112,542,543,545,547,549,551,554,556,558,560,562,565,568,570],{"class":114,"line":115},[112,544,202],{"class":188},[112,546,191],{"class":122},[112,548,381],{"class":178},[112,550,181],{"class":122},[112,552,553],{"class":188},"mnemonic",[112,555,374],{"class":122},[112,557,151],{"class":143},[112,559,530],{"class":147},[112,561,151],{"class":143},[112,563,564],{"class":122},").",[112,566,567],{"class":188},"address",[112,569,210],{"class":122},[112,571,572],{"class":213},"\u002F\u002F ed25519\n",[112,574,575,577,579,581,583,585,587,589,591,593,596,598,600,602,604,606],{"class":114,"line":157},[112,576,202],{"class":188},[112,578,191],{"class":122},[112,580,381],{"class":178},[112,582,181],{"class":122},[112,584,553],{"class":188},[112,586,374],{"class":122},[112,588,151],{"class":143},[112,590,534],{"class":147},[112,592,151],{"class":143},[112,594,595],{"class":122},", {}, ",[112,597,151],{"class":143},[112,599,268],{"class":147},[112,601,151],{"class":143},[112,603,564],{"class":122},[112,605,567],{"class":188},[112,607,154],{"class":122},[97,609,611],{"id":610},"signing","Signing",[220,613,614,617,618,621,622,625,626,629,630,633],{},[109,615,616],{},"signMessage"," signs what the Sui SDK's ",[109,619,620],{},"signPersonalMessage"," signs: the message as a BCS byte vector behind the ",[109,623,624],{},"PersonalMessage"," intent (",[109,627,628],{},"0x03 0x00 0x00","), hashed with Blake2b-256. ed25519 signs that digest as is, secp256k1 signs its SHA-256 the way ",[109,631,632],{},"Secp256k1Keypair"," does, so the same key gives the same bytes here and there. The scheme comes from the options, ed25519 by default.",[102,635,637],{"className":104,"code":636,"language":106,"meta":107,"style":107},"const signature = suiChain.signMessage(\"hello\", privateKey);\nsuiChain.verifyMessage(\"hello\", signature, publicKey); \u002F\u002F true\n\nconst secpSignature = suiChain.signMessage(\"hello\", privateKey, { scheme: \"secp256k1\" });\nsuiChain.verifyMessage(\"hello\", secpSignature, secpKey, { scheme: \"secp256k1\" }); \u002F\u002F true\n",[109,638,639,669,700,704,745],{"__ignoreMap":107},[112,640,641,643,646,648,650,652,654,656,658,661,663,665,667],{"class":114,"line":115},[112,642,168],{"class":167},[112,644,645],{"class":171}," signature",[112,647,175],{"class":167},[112,649,172],{"class":188},[112,651,191],{"class":122},[112,653,616],{"class":178},[112,655,181],{"class":122},[112,657,151],{"class":143},[112,659,660],{"class":147},"hello",[112,662,151],{"class":143},[112,664,374],{"class":122},[112,666,408],{"class":188},[112,668,364],{"class":122},[112,670,671,673,675,678,680,682,684,686,688,691,693,696,698],{"class":114,"line":157},[112,672,202],{"class":188},[112,674,191],{"class":122},[112,676,677],{"class":178},"verifyMessage",[112,679,181],{"class":122},[112,681,151],{"class":143},[112,683,660],{"class":147},[112,685,151],{"class":143},[112,687,374],{"class":122},[112,689,690],{"class":188},"signature",[112,692,374],{"class":122},[112,694,695],{"class":188},"publicKey",[112,697,490],{"class":122},[112,699,493],{"class":213},[112,701,702],{"class":114,"line":164},[112,703,161],{"emptyLinePlaceholder":160},[112,705,706,708,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741,743],{"class":114,"line":199},[112,707,168],{"class":167},[112,709,710],{"class":171}," secpSignature",[112,712,175],{"class":167},[112,714,172],{"class":188},[112,716,191],{"class":122},[112,718,616],{"class":178},[112,720,181],{"class":122},[112,722,151],{"class":143},[112,724,660],{"class":147},[112,726,151],{"class":143},[112,728,374],{"class":122},[112,730,408],{"class":188},[112,732,411],{"class":122},[112,734,414],{"class":126},[112,736,417],{"class":122},[112,738,144],{"class":143},[112,740,268],{"class":147},[112,742,151],{"class":143},[112,744,426],{"class":122},[112,746,747,749,751,753,755,757,759,761,763,766,768,770,772,774,776,778,780,782,785],{"class":114,"line":339},[112,748,202],{"class":188},[112,750,191],{"class":122},[112,752,677],{"class":178},[112,754,181],{"class":122},[112,756,151],{"class":143},[112,758,660],{"class":147},[112,760,151],{"class":143},[112,762,374],{"class":122},[112,764,765],{"class":188},"secpSignature",[112,767,374],{"class":122},[112,769,447],{"class":188},[112,771,411],{"class":122},[112,773,414],{"class":126},[112,775,417],{"class":122},[112,777,144],{"class":143},[112,779,268],{"class":147},[112,781,151],{"class":143},[112,783,784],{"class":122}," }); ",[112,786,493],{"class":213},[220,788,789,790,793,794,797,798,417],{},"What comes back is the 64 signature bytes in hex, ",[109,791,792],{},"r||s"," without a recovery byte on secp256k1, no flag and no public key. Sui tooling wants the serialized form, ",[109,795,796],{},"flag || signature || publicKey"," in base64, so build that before you hand it to ",[109,799,800],{},"verifyPersonalMessageSignature",[102,802,804],{"className":104,"code":803,"language":106,"meta":107,"style":107},"import { toBase64 } from \"@mysten\u002Fsui\u002Futils\";\nimport { verifyPersonalMessageSignature } from \"@mysten\u002Fsui\u002Fverify\";\nimport { hexToBytes } from \"@noble\u002Fhashes\u002Futils.js\";\n\nconst flag = 0x00; \u002F\u002F 0x01 for secp256k1\nconst serialized = toBase64(\n  Uint8Array.from([flag, ...hexToBytes(signature), ...hexToBytes(publicKey)]),\n);\nawait verifyPersonalMessageSignature(new TextEncoder().encode(\"hello\"), serialized, { address });\n",[109,805,806,828,850,872,876,894,909,952,957],{"__ignoreMap":107},[112,807,808,810,812,815,817,819,821,824,826],{"class":114,"line":115},[112,809,119],{"class":118},[112,811,123],{"class":122},[112,813,814],{"class":126}," toBase64",[112,816,136],{"class":122},[112,818,140],{"class":139},[112,820,144],{"class":143},[112,822,823],{"class":147},"@mysten\u002Fsui\u002Futils",[112,825,151],{"class":143},[112,827,154],{"class":122},[112,829,830,832,834,837,839,841,843,846,848],{"class":114,"line":157},[112,831,119],{"class":118},[112,833,123],{"class":122},[112,835,836],{"class":126}," verifyPersonalMessageSignature",[112,838,136],{"class":122},[112,840,140],{"class":139},[112,842,144],{"class":143},[112,844,845],{"class":147},"@mysten\u002Fsui\u002Fverify",[112,847,151],{"class":143},[112,849,154],{"class":122},[112,851,852,854,856,859,861,863,865,868,870],{"class":114,"line":164},[112,853,119],{"class":118},[112,855,123],{"class":122},[112,857,858],{"class":126}," hexToBytes",[112,860,136],{"class":122},[112,862,140],{"class":139},[112,864,144],{"class":143},[112,866,867],{"class":147},"@noble\u002Fhashes\u002Futils.js",[112,869,151],{"class":143},[112,871,154],{"class":122},[112,873,874],{"class":114,"line":199},[112,875,161],{"emptyLinePlaceholder":160},[112,877,878,880,883,885,889,891],{"class":114,"line":339},[112,879,168],{"class":167},[112,881,882],{"class":171}," flag",[112,884,175],{"class":167},[112,886,888],{"class":887},"siHFe"," 0x00",[112,890,210],{"class":122},[112,892,893],{"class":213},"\u002F\u002F 0x01 for secp256k1\n",[112,895,897,899,902,904,906],{"class":114,"line":896},6,[112,898,168],{"class":167},[112,900,901],{"class":171}," serialized",[112,903,175],{"class":167},[112,905,814],{"class":178},[112,907,908],{"class":122},"(\n",[112,910,912,915,917,920,923,926,928,931,934,936,938,941,943,945,947,949],{"class":114,"line":911},7,[112,913,914],{"class":188},"  Uint8Array",[112,916,191],{"class":122},[112,918,919],{"class":178},"from",[112,921,922],{"class":122},"([",[112,924,925],{"class":188},"flag",[112,927,374],{"class":122},[112,929,930],{"class":167},"...",[112,932,933],{"class":178},"hexToBytes",[112,935,181],{"class":122},[112,937,690],{"class":188},[112,939,940],{"class":122},"), ",[112,942,930],{"class":167},[112,944,933],{"class":178},[112,946,181],{"class":122},[112,948,695],{"class":188},[112,950,951],{"class":122},")]),\n",[112,953,955],{"class":114,"line":954},8,[112,956,364],{"class":122},[112,958,960,962,964,966,969,972,975,978,980,982,984,986,988,991,993,996],{"class":114,"line":959},9,[112,961,185],{"class":184},[112,963,836],{"class":178},[112,965,181],{"class":122},[112,967,968],{"class":118},"new",[112,970,971],{"class":178}," TextEncoder",[112,973,974],{"class":122},"().",[112,976,977],{"class":178},"encode",[112,979,181],{"class":122},[112,981,151],{"class":143},[112,983,660],{"class":147},[112,985,151],{"class":143},[112,987,940],{"class":122},[112,989,990],{"class":188},"serialized",[112,992,411],{"class":122},[112,994,995],{"class":188}," address",[112,997,426],{"class":122},[999,1000,1001],"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 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);}html pre.shiki code .siHFe, html code.shiki .siHFe{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#5DE4C7}",{"title":107,"searchDepth":157,"depth":157,"links":1003},[1004,1005,1006,1007,1008],{"id":99,"depth":157,"text":100},{"id":217,"depth":157,"text":218},{"id":463,"depth":157,"text":464},{"id":523,"depth":157,"text":524},{"id":610,"depth":157,"text":611},"ed25519 or secp256k1 on one chain. Blake2b over a flag byte and the public key.","md",null,{"icon":1013},"i-token-sui",{"title":76,"description":1009},"Qd2eiSMgj0irzswOe-IVhohuowen3oHTwh7yKingfrQ",[1017,1019],{"title":72,"path":73,"stem":74,"description":1018,"children":-1},"ed25519 with the public key wrapped as a G StrKey, and message signing the way SEP-53 says.",{"title":80,"path":81,"stem":82,"description":1020,"children":-1},"secp256k1 with Ethereum's 20 byte hash wrapped in base58check so every address starts with T.",1789825045801]