PHP WebShell
Текущая директория: /opt/bitgo-express-backup-20251206-1327/node_modules/bitgo/test/eth
Просмотр файла: bitgoEth.js
//
// Tests for Wallet
//
// Copyright 2014, BitGo, Inc. All Rights Reserved.
//
var assert = require('assert');
var should = require('should');
var BitGoJS = require('../../src/index');
var TestBitGo = require('../lib/test_bitgo');
var BN = require('ethereumjs-util').BN;
var Util = require('../../src/util');
var _ = require('lodash');
// TODO: WORK IN PROGRESS
describe('Ethereum BitGo.eth:', function() {
var bitgo;
before(function() {
BitGoJS.setNetwork('testnet');
bitgo = new TestBitGo();
bitgo.initializeTestVars();
});
describe('Ether to Wei conversion', function() {
it('convert ethereum to wei', function() {
// 0 ether
var number = new BN('0');
bitgo.eth().weiToEtherString(number).should.equal('0');
// 12345 ether
number = new BN('12345000000000000000000');
bitgo.eth().weiToEtherString(number).should.equal('12345');
// 1234.5 ether
number = new BN('1234500000000000000000');
bitgo.eth().weiToEtherString(number).should.equal('1234.5');
// 1234.505 ether
number = new BN('1234505000000000000000');
bitgo.eth().weiToEtherString(number).should.equal('1234.505');
assert.throws(function() {
// this number should overflow
bitgo.eth().weiToEtherString(1234505000000000000000).should.equal('1234.505');
});
// 123450 ether
number = new BN('123450000000000000000000');
bitgo.eth().weiToEtherString(number).should.equal('123450');
// a lot of ether with wei
number = new BN('15234212341234123412341321341234134132423443345');
bitgo.eth().weiToEtherString(number).should.equal('15234212341234123412341321341.234134132423443345');
number = new BN('12345');
bitgo.eth().weiToEtherString(number).should.equal('0.000000000000012345');
});
});
describe('Bitcoin-Ethereum Conversion', function() {
it('verify padding', function() {
var incorrectlyPaddedXprv1 = 'xprv9s21ZrQH143K3EsVzrBYfWNonEcQ67i4VS6AodNVijvQnukHpAXpST2LwqoRY5rTJ7sFPJh8qUxGx9MmyfK54dZTvH8ERWZY37x6yL9j5dB';
var incorrectlyPaddedXprv2 = 'xprv9s21ZrQH143K3QNgDCkvSx3koPxxwckY5vyafntKWCk9jZ7yHcGt4ZV3kHRpi8tsjpRuQY7YGWj9dsSVqckaKvmsx3xKrcj2RMSuuopmAYK';
var incorrectlyPaddedXprv3 = 'xprv9s21ZrQH143K3tksgZT9ttq5GC2TnSe284TfMDsutsacu4CWvtSw2UdQDNUN28fXs9mhTc6ResUmc3o2enpKiFekB2JP8Kb6N6iBGoJMUBf';
var incorrectlyPaddedXprv4 = 'xprv9s21ZrQH143K3gxrUzNDWx2NF7WFgjUqmjEFTK7wh46JS72sC1ugYUG7G3KwJNNTa44q3jkUh4yU8g19TGqtQ21DNZ3JzeM2MjwF6vF9MdK';
var correctlyPaddedXprv005 = 'xprv9s21ZrQH143K2PLs4Qu4C8vogXrVi9sH3gZtkSNnkyte4AZYnjPCTvERYwYGAJoeyEYkxffNjUyUHcMaGu2viZiqauAusDkvQ6ii9rN88Sn';
Util.xprvToEthPrivateKey(correctlyPaddedXprv005).should.equal('433efe74dc0a841c1e398238d3512e5ae8cbfde26a67667ef03a98a3e9291d80');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv1).should.not.equal('cf63a5439fafb8e89c85952df485f0c14403a706a1ddecdef791941abcfbc0');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv1).should.equal('00cf63a5439fafb8e89c85952df485f0c14403a706a1ddecdef791941abcfbc0');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv2).should.not.equal('521e3129c5b9b2ce7496ad2d66aee274ec668f8731199a973ecb455e1dead1');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv2).should.equal('00521e3129c5b9b2ce7496ad2d66aee274ec668f8731199a973ecb455e1dead1');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv3).should.not.equal('c578cfe7f0e90575bb1e3cff8e4860c63fcbc3d8afe1a8465fe80078110bcb');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv3).should.equal('00c578cfe7f0e90575bb1e3cff8e4860c63fcbc3d8afe1a8465fe80078110bcb');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv4).should.not.equal('24e4f2fee6b3badccacf1bccde5fd937ecf6f8fda1ecca6d2061a6b62aede4');
Util.xprvToEthPrivateKey(incorrectlyPaddedXprv4).should.equal('0024e4f2fee6b3badccacf1bccde5fd937ecf6f8fda1ecca6d2061a6b62aede4');
});
it('verify addresses', function() {
// a random xpub
var xpub = 'xpub661MyMwAqRbcF73ayX674hFz5Wr26tgRQKR3SexMeySATH1a7Ui7ZnL2re1Vwg6t2vj2xXui4xNmZH7ToTQFNVbBsFSpSGF3sMtjCAeT6H2';
Util.xpubToEthAddress(xpub).should.equal('0x8383257c2beb7af0a660a79ccac76120151f7348');
});
});
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!