PHP WebShell

Текущая директория: /opt/BitGoJS/modules/utxo-lib/test/bitgo/wallet

Просмотр файла: WalletKeys.ts

import * as assert from 'assert';

import { DerivedWalletKeys, RootWalletKeys, WalletKeys } from '../../../src/bitgo';
import { getDefaultWalletKeys } from '../../../src/testutil';

describe('WalletKeys', function () {
  let defaultWalletKeys: RootWalletKeys;
  let exoticWalletKeys: RootWalletKeys;
  let defaultWalletKeysDerived: DerivedWalletKeys;
  let exoticWalletKeysDerived: DerivedWalletKeys;

  function mapBase58(k: WalletKeys): string[] {
    return k.triple.map((k) => k.toBase58());
  }

  before('setup derivations', function () {
    defaultWalletKeys = getDefaultWalletKeys();
    defaultWalletKeysDerived = defaultWalletKeys.deriveForChainAndIndex(1, 2);

    exoticWalletKeys = new RootWalletKeys(defaultWalletKeys.triple, [
      '99/99',
      RootWalletKeys.defaultPrefix,
      RootWalletKeys.defaultPrefix,
    ]);
    exoticWalletKeysDerived = exoticWalletKeys.deriveForChainAndIndex(1, 2);
  });

  it('does not accept duplicate keys', function () {
    const [a, b, c] = defaultWalletKeys.triple;
    assert.throws(() => {
      new WalletKeys([a, b, b]);
    });
    assert.throws(() => {
      new WalletKeys([a, a, c]);
    });
  });

  function assertEqlDerivedPaths(
    root: RootWalletKeys,
    derived: DerivedWalletKeys,
    chain: number,
    index: number,
    expectedPaths: string[]
  ) {
    const paths = root.triple.map((k) => root.getDerivationPath(k, chain, index));
    assert.deepStrictEqual(paths, expectedPaths);
    assert.deepStrictEqual(paths, derived.paths);
  }

  it('derives to expected values for default wallet keys', function () {
    assertEqlDerivedPaths(defaultWalletKeys, defaultWalletKeysDerived, 1, 2, ['0/0/1/2', '0/0/1/2', '0/0/1/2']);
    assert.deepStrictEqual(mapBase58(defaultWalletKeysDerived), [
      'xprv9zz8umnxxQR63smXBW8YkywRjpchgxuuUH1iJg5ViS8QwZmNuBCbkx69Bzyijwcvsthd3zF8FCy74FU3DC1gYKtzPinfPF5iWJwarkhHinS',
      'xprvA1gzohJxuwdy7UtoYwTA8pbskksjiywygp6LUJXW133TJn6ad2KX6XRGsV33nVYKqzsVZGq5h56u5NNkVFKmfMkn7Xqjen3MpZs8XdxABKQ',
      'xprv9zuZc2cWHuBL7PJyppMtjCtsRz5QKaGfrPKBgA1SsHMZHxNzC3ZaJYDSYzcuSwwf6duVWQvBs4CcwMknC9mQieFKqKpwc3Yo2hpusjMsZJi',
    ]);
  });

  it('derives to expected values for exotic wallet keys', function () {
    assertEqlDerivedPaths(exoticWalletKeys, exoticWalletKeysDerived, 1, 2, ['99/99/1/2', '0/0/1/2', '0/0/1/2']);
    assert.deepStrictEqual(mapBase58(exoticWalletKeysDerived), [
      'xprvA22MDSEU9wGJWzCGXQVFdYfcoTmhsXqQpMzGpLCG1Ad7txFp4bbbu1rckowNRVL96kH5rSWgmkaoJMgrgUuds7sQax5jdjqsXKauWAcvp3V',
      mapBase58(defaultWalletKeysDerived)[1],
      mapBase58(defaultWalletKeysDerived)[2],
    ]);
  });
});

Выполнить команду


Для локальной разработки. Не используйте в интернете!