PHP WebShell

Текущая директория: /opt/BitGoJS/modules/bitgo/test/unit

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

//
// Tests for Wallets
//
// Copyright 2014, BitGo, Inc.  All Rights Reserved.
//

import 'should';
import { bitcoin } from '@bitgo/sdk-core';
const { HDNode, hdPath } = bitcoin;

describe('HDNode', function () {
  describe('derive', function () {
    it('should derive these standard test vectors', function () {
      let hdnode = HDNode.fromSeedBuffer(Buffer.from('000102030405060708090a0b0c0d0e0f', 'hex'));
      let path = hdPath(hdnode);
      path
        .derive('m/0/0')
        .toBase58()
        .should.equal(
          'xprv9ww7sMFLzJMzur2oEQDB642fbsMS4q6JRraMVTrM9bTWBq7NDS8ZpmsKVB4YF3mZecqax1fjnsPF19xnsJNfRp4RSyexacULXMKowSACTRc'
        );
      path
        .derive("m/0'/1")
        .toBase58()
        .should.equal(
          'xprv9wTYmMFdV23N2TdNG573QoEsfRrWKQgWeibmLntzniatZvR9BmLnvSxqu53Kw1UmYPxLgboyZQaXwTCg8MSY3H2EU4pWcQDnRnrVA1xe8fs'
        );
      path
        .derive("m/0'/1/2'/2/1000000000")
        .toBase58()
        .should.equal(
          'xprvA41z7zogVVwxVSgdKUHDy1SKmdb533PjDz7J6N6mV6uS3ze1ai8FHa8kmHScGpWmj4WggLyQjgPie1rFSruoUihUZREPSL39UNdE3BBDu76'
        );
      path
        .derive("m/0'/1/2'/2/1000000000")
        .neutered()
        .toBase58()
        .should.equal(
          'xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy'
        );
      hdnode = path.derive("m/0'/1/2'").neutered();
      path = hdPath(hdnode);
      path
        .derive('m/2/1000000000')
        .toBase58()
        .should.equal(
          'xpub6H1LXWLaKsWFhvm6RVpEL9P4KfRZSW7abD2ttkWP3SSQvnyA8FSVqNTEcYFgJS2UaFcxupHiYkro49S8yGasTvXEYBVPamhGW6cFJodrTHy'
        );

      // make sure caching does not overcache
      let hdnode2 = HDNode.fromSeedBuffer(Buffer.from('000102030405060708090a0b0c0d0e0e', 'hex'));
      let path2 = hdPath(hdnode2);
      path2
        .derive('m/0/0')
        .toBase58()
        .should.equal(
          'xprv9wTW8JGaw3LLpqYG35f4WdWA7yF5UFNsp5QptdwhU2uy7XarRUrZx2AbPft7VocxAdVmYxviYvhJbV1EeY2yiDKu8gSipwUE6TZoQsjLALL'
        );
      hdnode2 = path2.derive("m/0'/1/2'").neutered();
      path2 = hdPath(hdnode2);
      path2
        .derive('m/2/1000000000')
        .toBase58()
        .should.equal(
          'xpub6FiKNEcQ25UZV3FU9qXu46i5nvoAA6zWRxa93zWAdZTT2JYa5fRDR6BJzyvbZNgNNVTesr3iEFnRrKcqkUNewig4aARKBH4AUxft5YXTG9X'
        );
    });

    it('uses caching for previously derived keys (hardened)', function () {
      const hdnode = HDNode.fromSeedBuffer(Buffer.from('000103030405060708090a0b0c0d0e0f', 'hex'));
      const path = hdPath(hdnode);
      path
        .derive("m/1/2'/3/4")
        .toBase58()
        .should.equal(
          'xprvA1PudVPRZQFcfftzuHtMGwhs3siwHTKz2YjoJcVchrz7eugyW8riiaxYRyg1oXdzGxgFQ1Nz4Smokj7pi8NsWYTQwNqWXiRde2Jv37XwnDX'
        );
      for (let i = 0; i < 1000; i++) {
        path
          .derive("m/1/2'/3/4")
          .toBase58()
          .should.equal(
            'xprvA1PudVPRZQFcfftzuHtMGwhs3siwHTKz2YjoJcVchrz7eugyW8riiaxYRyg1oXdzGxgFQ1Nz4Smokj7pi8NsWYTQwNqWXiRde2Jv37XwnDX'
          );
      }
    });

    it('uses caching for previously derived keys (public)', function () {
      const hdnode = HDNode.fromSeedBuffer(Buffer.from('000103030405060708090a0b0c0d0e0f', 'hex')).neutered();
      const path = hdPath(hdnode);
      path
        .derive('m/0/1/2/3')
        .toBase58()
        .should.equal(
          'xpub6F46ySPYeyfcJzEZVS2zWVnx4ai5eSRbFXkdm3DCezF8jT1zE35L4SJbsMPyCSbyWppi9tuSH6PzAMxe5vWHPR8Bpstt3tyw5GBqeSXQLB5'
        );
      for (let i = 0; i < 1000; i++) {
        path
          .derive('m/0/1/2/3')
          .toBase58()
          .should.equal(
            'xpub6F46ySPYeyfcJzEZVS2zWVnx4ai5eSRbFXkdm3DCezF8jT1zE35L4SJbsMPyCSbyWppi9tuSH6PzAMxe5vWHPR8Bpstt3tyw5GBqeSXQLB5'
          );
      }
    });
  });
});

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


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