UNPKG

bbqpool-stratum

Version:

High performance Stratum poolserver in Node.js. Optimized to build with GCC 10 and O3 / bugfixes

181 lines (150 loc) 9.03 kB
/* * * Utils (Updated) * */ const utils = require('../main/utils'); const network = { 'bech32': 'bc', 'bip32': { 'public': 0x0488b21e, 'private': 0x0488ade4, }, 'pubKeyHash': 0x00, 'scriptHash': 0x05, 'wif': 0x80, 'coin': 'btc', }; //////////////////////////////////////////////////////////////////////////////// describe('Test utility functionality', () => { test('Test implemented addressToScript [1]', () => { const script1 = utils.addressToScript('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2', network); const script2 = utils.addressToScript('3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy', network); const script3 = utils.addressToScript('bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq', network); const script4 = utils.addressToScript('1BvBMSEYstWetqTFn5Au4m4GFg7xJaNVN2'); expect(script1).toStrictEqual(Buffer.from('76a91477bff20c60e522dfaa3350c39b030a5d004e839a88ac', 'hex')); expect(script2).toStrictEqual(Buffer.from('a914b472a266d0bd89c13706a4132ccfb16f7c3b9fcb87', 'hex')); expect(script3).toStrictEqual(Buffer.from('0014e8df018c7e326cc253faac7e46cdc51e68542c42', 'hex')); expect(script4).toStrictEqual(Buffer.from('76a91477bff20c60e522dfaa3350c39b030a5d004e839a88ac', 'hex')); }); test('Test implemented addressToScript [2]', () => { const networkCopy = JSON.parse(JSON.stringify(network)); networkCopy.coin = 'bch'; networkCopy.forkId = 0x00; const script1 = utils.addressToScript('35qL43qYwLdKtnR7yMfGNDvzv6WyZ8yT2n', networkCopy); const script2 = utils.addressToScript('bitcoincash:pqkh9ahfj069qv8l6eysyufazpe4fdjq3u4hna323j', networkCopy); expect(script1).toStrictEqual(Buffer.from('a9142d72f6e993f45030ffd64902713d107354b6408f87', 'hex')); expect(script2).toStrictEqual(Buffer.from('a9142d72f6e993f45030ffd64902713d107354b6408f87', 'hex')); }); test('Test implemented bignumFromBitsBuffer', () => { expect(utils.bignumFromBitsBuffer(Buffer.from('1e0ffff0', 'hex')).toNumber().toFixed(9)).toBe('1.1042625655198232e+71'); }); test('Test implemented bignumFromBitsHex', () => { expect(utils.bignumFromBitsHex('1e0ffff0').toNumber().toFixed(9)).toBe('1.1042625655198232e+71'); }); test('Test implemented getAuxMerklePosition', () => { expect(utils.getAuxMerklePosition(1, 5)).toBe(0); expect(utils.getAuxMerklePosition(5, 9)).toBe(6); expect(utils.getAuxMerklePosition(5, 5)).toBe(0); expect(utils.getAuxMerklePosition(3, 10)).toBe(5); }); test('Test implemented isHexString', () => { expect(utils.isHexString('test')).toBe(false); expect(utils.isHexString('67f526e8e91affcd72621d4c4fa00312dc44ea559fa5f5d240528276bc4ab73d')).toBe(true); expect(utils.isHexString('r7f526e8e91affcd72621d4c4fa00312dc44ea559fa5f5d240528276bc4ab73d')).toBe(false); expect(utils.isHexString('a67f526e8e91affcd72621d4c4fa00312dc44ea559fa5f5d240528276bc4ab73d')).toBe(false); }); test('Test implemented packUInt16LE', () => { expect(utils.packUInt16LE(21243)).toStrictEqual(Buffer.from('fb52', 'hex')); expect(utils.packUInt16LE(13815)).toStrictEqual(Buffer.from('f735', 'hex')); }); test('Test implemented packUInt16BE', () => { expect(utils.packUInt16BE(21243)).toStrictEqual(Buffer.from('52fb', 'hex')); expect(utils.packUInt16BE(13815)).toStrictEqual(Buffer.from('35f7', 'hex')); }); test('Test implemented packUInt32LE', () => { expect(utils.packUInt32LE(21243)).toStrictEqual(Buffer.from('fb520000', 'hex')); expect(utils.packUInt32LE(13815)).toStrictEqual(Buffer.from('f7350000', 'hex')); }); test('Test implemented packUInt32BE', () => { expect(utils.packUInt32BE(21243)).toStrictEqual(Buffer.from('000052fb', 'hex')); expect(utils.packUInt32BE(13815)).toStrictEqual(Buffer.from('000035f7', 'hex')); }); test('Test implemented packUInt64LE', () => { expect(utils.packUInt64LE(134318333134318333)).toStrictEqual(Buffer.from('002b4bf5cf31dd01', 'hex')); expect(utils.packUInt64LE(783175331783175331)).toStrictEqual(Buffer.from('80ecc897d065de0a', 'hex')); expect(utils.packUInt64LE(581395135581395135)).toStrictEqual(Buffer.from('801878a2cb871108', 'hex')); expect(utils.packUInt64LE(317531313317531313)).toStrictEqual(Buffer.from('c0ce5a0f0c196804', 'hex')); }); test('Test implemented packUInt64LE', () => { expect(utils.packUInt64BE(134318333134318333)).toStrictEqual(Buffer.from('01dd31cff54b2b00', 'hex')); expect(utils.packUInt64BE(783175331783175331)).toStrictEqual(Buffer.from('0ade65d097c8ec80', 'hex')); expect(utils.packUInt64BE(581395135581395135)).toStrictEqual(Buffer.from('081187cba2781880', 'hex')); expect(utils.packUInt64BE(317531313317531313)).toStrictEqual(Buffer.from('0468190c0f5acec0', 'hex')); }); test('Test implemented packInt32LE', () => { expect(utils.packInt32LE(21243)).toStrictEqual(Buffer.from('fb520000', 'hex')); expect(utils.packInt32LE(13815)).toStrictEqual(Buffer.from('f7350000', 'hex')); }); test('Test implemented packInt32BE', () => { expect(utils.packInt32BE(21243)).toStrictEqual(Buffer.from('000052fb', 'hex')); expect(utils.packInt32BE(13815)).toStrictEqual(Buffer.from('000035f7', 'hex')); }); test('Test implemented pubkeyToScript [1]', () => { const pubkey = '020ba3ebc2f55152df5653bb7aba6548f0615d67b072379bdd19e72bc63c052c50'; const output = Buffer.from('21020ba3ebc2f55152df5653bb7aba6548f0615d67b072379bdd19e72bc63c052c50ac', 'hex'); expect(() => utils.pubkeyToScript('0123456789')).toThrow('Invalid pubkey: 0123456789'); expect(utils.pubkeyToScript(pubkey)).toStrictEqual(output); }); test('Test implemented range', () => { expect(utils.range(0, 10, 1)).toStrictEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); expect(utils.range(10)).toStrictEqual([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]); expect(utils.range(0, 5)).toStrictEqual([0, 1, 2, 3, 4]); expect(utils.range(3, 15, 3)).toStrictEqual([3, 6, 9, 12]); expect(utils.range(10, 8, 1)).toStrictEqual([]); expect(utils.range(8, 10, -1)).toStrictEqual([]); expect(utils.range(10, 8, -1)).toStrictEqual([10, 9]); }); test('Test implemented reverseBuffer', () => { const buffer = utils.reverseBuffer(Buffer.from('9719aefb83ef6583bd4c808bbe7d49b629a60b375fc6e36bee039530bc7727e2', 'hex')); expect(buffer).toStrictEqual(Buffer.from('e22777bc309503ee6be3c65f370ba629b6497dbe8b804cbd8365ef83fbae1997', 'hex')); }); test('Test implemented reverseByteOrder', () => { const buffer = utils.reverseByteOrder(Buffer.from('9719aefb83ef6583bd4c808bbe7d49b629a60b375fc6e36bee039530bc7727e2', 'hex')); expect(buffer).toStrictEqual(Buffer.from('bc7727e2ee0395305fc6e36b29a60b37be7d49b6bd4c808b83ef65839719aefb', 'hex')); }); test('Test implemented reverseHex', () => { const buffer = utils.reverseHex('9719aefb83ef6583bd4c808bbe7d49b629a60b375fc6e36bee039530bc7727e2', 'hex'); expect(buffer).toStrictEqual('e22777bc309503ee6be3c65f370ba629b6497dbe8b804cbd8365ef83fbae1997'); }); test('Test implemented serializeNumber', () => { expect(utils.serializeNumber(16)).toStrictEqual(Buffer.from('60', 'hex')); expect(utils.serializeNumber(53)).toStrictEqual(Buffer.from('0135', 'hex')); }); test('Test implemented serializeString', () => { expect(utils.serializeString('test')).toStrictEqual(Buffer.from('0474657374', 'hex')); expect(utils.serializeString('testtest')).toStrictEqual(Buffer.from('087465737474657374', 'hex')); }); test('Test implemented sha256', () => { const buffer = Buffer.from('9719aefb83ef6583bd4c808bbe7d49b629a60b375fc6e36bee039530bc7727e2', 'hex'); expect(utils.sha256(buffer)).toStrictEqual(Buffer.from('e7f3a916fd573c459e0aedb2429ba7fa6c46eee2adc3769d6ed043c87798e8e7', 'hex')); }); test('Test implemented sha256d', () => { const buffer = Buffer.from('9719aefb83ef6583bd4c808bbe7d49b629a60b375fc6e36bee039530bc7727e2', 'hex'); expect(utils.sha256d(buffer)).toStrictEqual(Buffer.from('0822da4833efcf7ea1d780c670eb47e255ed60ce42ab609eadb39f02effb580d', 'hex')); }); test('Test implemented uint256BufferFromHash', () => { const buffer = Buffer.from('9719aefb83ef6583bd4c808bbe7d49b629a60b375fc6e36bee039530bc7727e2', 'hex'); expect(utils.uint256BufferFromHash(buffer)).toStrictEqual(Buffer.from('e22777bc309503ee6be3c65f370ba629b6497dbe8b804cbd8365ef83fbae1997', 'hex')); }); test('Test implemented varIntBuffer', () => { expect(utils.varIntBuffer(100)).toStrictEqual(Buffer.from('64', 'hex')); expect(utils.varIntBuffer(1000)).toStrictEqual(Buffer.from('fde803', 'hex')); expect(utils.varIntBuffer(10000)).toStrictEqual(Buffer.from('fd1027', 'hex')); expect(utils.varIntBuffer(100000)).toStrictEqual(Buffer.from('fea0860100', 'hex')); expect(utils.varIntBuffer(10000000000)).toStrictEqual(Buffer.from('ff00e40b5402000000', 'hex')); }); test('Test implemented varStringBuffer', () => { expect(utils.varStringBuffer('testtesttest')).toStrictEqual(Buffer.from('0c746573747465737474657374', 'hex')); }); });