From 012eb9e7b277f5febb4f3002b980a3a086ad3acb Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Sun, 14 Jul 2019 20:41:07 +0200 Subject: [PATCH] vanity cli updates (#1400) * vanity cli updates * Cleanup assertion * any[] --- .../app-accounts/src/vanitygen/calculate.ts | 23 +++++++++++++++++-- packages/app-accounts/src/vanitygen/cli.ts | 13 +++++++---- .../app-accounts/src/vanitygen/generate.ts | 2 +- packages/app-accounts/src/vanitygen/index.ts | 4 +--- packages/app-contracts/src/Params.tsx | 2 +- 5 files changed, 32 insertions(+), 12 deletions(-) diff --git a/packages/app-accounts/src/vanitygen/calculate.ts b/packages/app-accounts/src/vanitygen/calculate.ts index ec1ad553eb..e7fe1faeef 100644 --- a/packages/app-accounts/src/vanitygen/calculate.ts +++ b/packages/app-accounts/src/vanitygen/calculate.ts @@ -4,7 +4,7 @@ import { Generator$Calculation, Generator$Options } from './types'; -function calculateAt (atOffset: number, test: Array, address: string): Generator$Calculation { +function calculateAtOne (atOffset: number, test: string[], address: string): Generator$Calculation { return { count: test.reduce((count, c, index) => { if (index === count) { @@ -17,7 +17,26 @@ function calculateAt (atOffset: number, test: Array, address: string): G }; } -export default function calculate (test: Array, _address: string, { atOffset = -1, withCase = false }: Generator$Options): Generator$Calculation { +function calculateAt (atOffset: number, test: string[][], address: string): Generator$Calculation { + let bestCount = 0; + let bestOffset = 1; + + for (let i = 0; i < test.length; i++) { + const { count, offset } = calculateAtOne(atOffset, test[i], address); + + if (count > bestCount) { + bestCount = count; + bestOffset = offset; + } + } + + return { + count: bestCount, + offset: bestOffset + }; +} + +export default function calculate (test: string[][], _address: string, { atOffset = -1, withCase = false }: Generator$Options): Generator$Calculation { const address = withCase ? _address : _address.toLowerCase(); diff --git a/packages/app-accounts/src/vanitygen/cli.ts b/packages/app-accounts/src/vanitygen/cli.ts index a097de825e..a58782e812 100644 --- a/packages/app-accounts/src/vanitygen/cli.ts +++ b/packages/app-accounts/src/vanitygen/cli.ts @@ -24,7 +24,7 @@ interface Best { const { match, mnemonic, type } = yargs .option('match', { - default: 'EEEEE' + default: 'Test' }) .option('type', { choices: ['ed25519', 'sr25519'], @@ -53,11 +53,14 @@ let best: Best = { }; let total: number = 0; let indicator = -1; +const tests = match.split(','); -if (!matchRegex.test(match)) { - console.error("Invalid character found in match string, allowed is '1-9' (no '0'), 'A-H, J-N & P-Z' (no 'I' or 'O'), 'a-k & m-z' (no 'l') and '?' (wildcard)"); - process.exit(-1); -} +tests.forEach((test): void => { + if (!matchRegex.test(test)) { + console.error("Invalid character found in match string, allowed is '1-9' (no '0'), 'A-H, J-N & P-Z' (no 'I' or 'O'), 'a-k & m-z' (no 'l') and '?' (wildcard)"); + process.exit(-1); + } +}); console.log(options); diff --git a/packages/app-accounts/src/vanitygen/generate.ts b/packages/app-accounts/src/vanitygen/generate.ts index 792c5b70ec..9199aa7ede 100644 --- a/packages/app-accounts/src/vanitygen/generate.ts +++ b/packages/app-accounts/src/vanitygen/generate.ts @@ -8,7 +8,7 @@ import { encodeAddress, mnemonicGenerate, naclKeypairFromSeed, randomAsU8a, schn import calculate from './calculate'; -export default function generator (test: Array, options: Generator$Options): Generator$Match { +export default function generator (test: string[][], options: Generator$Options): Generator$Match { const mnemonic = options.withHex ? undefined : mnemonicGenerate(12); diff --git a/packages/app-accounts/src/vanitygen/index.ts b/packages/app-accounts/src/vanitygen/index.ts index 222f961004..ce6cf30c5e 100644 --- a/packages/app-accounts/src/vanitygen/index.ts +++ b/packages/app-accounts/src/vanitygen/index.ts @@ -8,9 +8,7 @@ import generate from './generate'; export default function generator (options: Generator$Options): Generator$Result { const { match, runs = 10, withCase = false } = options; - const test = withCase - ? match.split('') - : match.toLowerCase().split(''); + const test = (withCase ? match : match.toLowerCase()).split(',').map((c) => c.split('')); const startAt = Date.now(); const found: Generator$Matches = []; diff --git a/packages/app-contracts/src/Params.tsx b/packages/app-contracts/src/Params.tsx index d8ef33d8d5..b298b96443 100644 --- a/packages/app-contracts/src/Params.tsx +++ b/packages/app-contracts/src/Params.tsx @@ -12,7 +12,7 @@ import { getTypeDef, TypeDef } from '@polkadot/types'; interface Props { isDisabled?: boolean; params?: ContractABIFnArg[]; - onChange: (values: Array) => void; + onChange: (values: any[]) => void; onEnter?: () => void; }