UNPKG

@ravenrebels/ravencoin-key

Version:

Generate Ravencoin addresses from mnemonic code. BIP32, BIP39, BIP44

119 lines (110 loc) 5.71 kB
import {Buffer as $hCgyA$Buffer} from "buffer"; import {chains as $hCgyA$chains} from "@hyperbitjs/chains"; import {mnemonicToSeedSync as $hCgyA$mnemonicToSeedSync, generateMnemonic as $hCgyA$generateMnemonic, wordlists as $hCgyA$wordlists, validateMnemonic as $hCgyA$validateMnemonic, entropyToMnemonic as $hCgyA$entropyToMnemonic} from "bip39"; import * as $hCgyA$coinkey from "coinkey"; import $hCgyA$hdkey from "hdkey"; //Gives us meta data about coins/chains var $c3f6c693698dc7cd$require$Buffer = $hCgyA$Buffer; function $c3f6c693698dc7cd$var$getNetwork(name) { const c = name.toLowerCase(); //Just to be sure const map = { rvn: (0, $hCgyA$chains).rvn.mainnet.versions, "rvn-test": (0, $hCgyA$chains).rvn.testnet?.versions, evr: (0, $hCgyA$chains).evr.mainnet.versions, "evr-test": (0, $hCgyA$chains).evr.testnet?.versions }; const network = map[c]; if (!network) throw new Error("network must be of value " + Object.keys(map).toString()); return network; } function $c3f6c693698dc7cd$export$23109f16a8a07245(network) { const chain = $c3f6c693698dc7cd$var$getNetwork(network); return chain.bip44; } function $c3f6c693698dc7cd$export$6e3ac79f8c0a2892(network, mnemonic, account, position) { const hdKey = $c3f6c693698dc7cd$export$6c78ccde21ad48f6(network, mnemonic); const coin_type = $c3f6c693698dc7cd$export$23109f16a8a07245(network); //https://github.com/satoshilabs/slips/blob/master/slip-0044.md //Syntax of BIP44 //m / purpose' / coin_type' / account' / change / address_index const externalPath = `m/44'/${coin_type}'/${account}'/0/${position}`; const externalAddress = $c3f6c693698dc7cd$export$6fc951b76952b95e(network, hdKey, externalPath); //change address const internalPath = `m/44'/${coin_type}'/${account}'/1/${position}`; const internalAddress = $c3f6c693698dc7cd$export$6fc951b76952b95e(network, hdKey, internalPath); return { internal: internalAddress, external: externalAddress, position: position }; } function $c3f6c693698dc7cd$export$6c78ccde21ad48f6(network, mnemonic) { const chain = $c3f6c693698dc7cd$var$getNetwork(network); const seed = $hCgyA$mnemonicToSeedSync(mnemonic).toString("hex"); //From the seed, get a hdKey, can we use CoinKey instead? const hdKey = (0, $hCgyA$hdkey).fromMasterSeed($c3f6c693698dc7cd$require$Buffer.from(seed, "hex"), chain.bip32); return hdKey; } function $c3f6c693698dc7cd$export$6fc951b76952b95e(network, hdKey, path) { const chain = $c3f6c693698dc7cd$var$getNetwork(network); const derived = hdKey.derive(path); var ck2 = new $hCgyA$coinkey(derived.privateKey, chain); return { address: ck2.publicAddress, path: path, privateKey: ck2.privateKey.toString("hex"), WIF: ck2.privateWif }; } function $c3f6c693698dc7cd$export$9f993213e5806bf0() { return $hCgyA$generateMnemonic(); } function $c3f6c693698dc7cd$export$2b99b9ff149202f3(mnemonic) { //Check all languages const wordlists = Object.values($hCgyA$wordlists); //If mnemonic is valid in any language, return true, otherwise false for (const wordlist of wordlists){ const v = $hCgyA$validateMnemonic(mnemonic, wordlist); if (v === true) return true; } return false; } function $c3f6c693698dc7cd$export$f43d70cb4ddd5664(network, privateKeyWIF) { const coinKey = $hCgyA$coinkey.fromWif(privateKeyWIF); coinKey.versions = $c3f6c693698dc7cd$var$getNetwork(network); return { address: coinKey.publicAddress, privateKey: coinKey.privateKey.toString("hex"), WIF: coinKey.privateWif }; } const $c3f6c693698dc7cd$export$4becd65eb23312e6 = $hCgyA$entropyToMnemonic; function $c3f6c693698dc7cd$export$de190b37be25f71b(network = "rvn") { const mnemonic = $c3f6c693698dc7cd$export$9f993213e5806bf0(); const account = 0; const position = 0; const addressPair = $c3f6c693698dc7cd$export$6e3ac79f8c0a2892(network, mnemonic, account, position); const addressObject = addressPair.external; const result = { ...addressObject, mnemonic: mnemonic, network: network }; return result; } function $c3f6c693698dc7cd$export$e2e336010351d8a8(network = "rvn") { return $c3f6c693698dc7cd$export$de190b37be25f71b(network); } var $c3f6c693698dc7cd$export$2e2bcd8739ae039 = { entropyToMnemonic: $c3f6c693698dc7cd$export$4becd65eb23312e6, generateAddress: $c3f6c693698dc7cd$export$e2e336010351d8a8, generateMnemonic: $c3f6c693698dc7cd$export$9f993213e5806bf0, getAddressByPath: $c3f6c693698dc7cd$export$6fc951b76952b95e, getAddressByWIF: $c3f6c693698dc7cd$export$f43d70cb4ddd5664, getAddressPair: $c3f6c693698dc7cd$export$6e3ac79f8c0a2892, getCoinType: $c3f6c693698dc7cd$export$23109f16a8a07245, getHDKey: $c3f6c693698dc7cd$export$6c78ccde21ad48f6, isMnemonicValid: $c3f6c693698dc7cd$export$2b99b9ff149202f3 }; export {$c3f6c693698dc7cd$export$23109f16a8a07245 as getCoinType, $c3f6c693698dc7cd$export$6e3ac79f8c0a2892 as getAddressPair, $c3f6c693698dc7cd$export$6c78ccde21ad48f6 as getHDKey, $c3f6c693698dc7cd$export$6fc951b76952b95e as getAddressByPath, $c3f6c693698dc7cd$export$9f993213e5806bf0 as generateMnemonic, $c3f6c693698dc7cd$export$2b99b9ff149202f3 as isMnemonicValid, $c3f6c693698dc7cd$export$f43d70cb4ddd5664 as getAddressByWIF, $c3f6c693698dc7cd$export$4becd65eb23312e6 as entropyToMnemonic, $c3f6c693698dc7cd$export$de190b37be25f71b as generateAddressObject, $c3f6c693698dc7cd$export$e2e336010351d8a8 as generateAddress, $c3f6c693698dc7cd$export$2e2bcd8739ae039 as default}; //# sourceMappingURL=module.js.map