PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo-express/node_modules/prova-lib/test

Просмотр файла: transaction.js

const assert = require('assert');
const prova = require('../index');
const bitcoin = require('bitcoinjs-lib');

describe('Transaction', function() {
  describe('Transaction IDs', function() {
    it('should calculate Coinbase ID', function(){
      const txHex = '01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0d510b2f503253482f627463642fffffffff0200f2052a010000001d521435dbbf04bca061e49dace08f858d8775c0a57c8e030000015153ba0000000000000000026a5100000000';
      const transaction = prova.Transaction.fromHex(txHex);
      const transactionId = transaction.getId();
      assert.strictEqual(transactionId, 'a6f9dd1d715624d4eb782c51bed3c8537de03064f7fcb98faff5aa606a47f88f');
    });
    it('should calculate regular spend ID', function(){
      const txHex = '01000000018ff8476a60aaf5af8fb9fcf76430e07d53c8d3be512c78ebd42456711dddf9a600000000d521025ceeba2ab4a635df2c0301a3d773da06ac5a18a7c3e0d09a795d7e57d233edf14730440220419c3c5f24da5709f946de50844bc3209f1bb0c6e916b9217795d0602b2cfe82022047e94c4ebe2fdc199c947ec577603ea8885f654f8c07b2aeb224ed0e075e7c1a0121038ef4a121bcaf1b1f175557a12896f8bc93b095e84817f90e9a901cd2113a8202483045022100cf6591cec506de7293ee31e91f6dcc2836daff8b38730234b776dd2496708a980220047b14829e565656a69cbd6f7dadd4b6c7eda010a0dee1ec68c3c6ac93d6f52601ffffffff0100f2052a010000001d521435dbbf04bca061e49dace08f858d8775c0a57c8e030000015153ba00000000';
      const transaction = prova.Transaction.fromHex(txHex);
      const transactionId = transaction.getId();
      assert.strictEqual(transactionId, 'dae902f2224fce1d0c482b1d0c65b29d3e36c419d15e2a714d163edce7b10280');
    });
  });

  describe('Parse RMG Transactions', function() {
    it('should parse an unsigned transaction spending a coinbase output', function() {
      const txHex = '01000000018ff8476a60aaf5af8fb9fcf76430e07d53c8d3be512c78ebd42456711dddf9a60000000000ffffffff0100f2052a010000001d521435dbbf04bca061e49dace08f858d8775c0a57c8e030000015153ba00000000';
      const transaction = prova.Transaction.fromHex(txHex);
      assert.strictEqual(transaction.ins.length, 1);
      assert.strictEqual(transaction.outs.length, 1);
      const input = transaction.ins[0];
      const output = transaction.outs[0];
      assert.strictEqual(input.hash.toString('hex'), '8ff8476a60aaf5af8fb9fcf76430e07d53c8d3be512c78ebd42456711dddf9a6');
      assert.strictEqual(input.script.length, 0);
      assert.strictEqual(output.script.length, 29);
    });

    it('should parse a half-signed transaction spending a coinbase output', function() {
      const txHex = '01000000018ff8476a60aaf5af8fb9fcf76430e07d53c8d3be512c78ebd42456711dddf9a6000000006a21025ceeba2ab4a635df2c0301a3d773da06ac5a18a7c3e0d09a795d7e57d233edf14730440220419c3c5f24da5709f946de50844bc3209f1bb0c6e916b9217795d0602b2cfe82022047e94c4ebe2fdc199c947ec577603ea8885f654f8c07b2aeb224ed0e075e7c1a01ffffffff0100f2052a010000001d521435dbbf04bca061e49dace08f858d8775c0a57c8e030000015153ba00000000';
      const transaction = prova.Transaction.fromHex(txHex);
      assert.strictEqual(transaction.ins.length, 1);
      assert.strictEqual(transaction.outs.length, 1);
      const input = transaction.ins[0];
      const output = transaction.outs[0];
      assert.strictEqual(input.hash.toString('hex'), '8ff8476a60aaf5af8fb9fcf76430e07d53c8d3be512c78ebd42456711dddf9a6');
      assert.strictEqual(input.script.length, 106);
      assert.strictEqual(output.script.length, 29);
      // let's break down the input script
      const inputScript = bitcoin.script.decompile(input.script);
      // public key and signature
      assert.strictEqual(inputScript.length, 2);
      assert.strictEqual(inputScript[0].length, 33);
      assert.strictEqual(inputScript[1].length, 71);
    });

    it('should parse a fully signed transaction spending a coinbase output', function() {
      const txHex = '01000000018ff8476a60aaf5af8fb9fcf76430e07d53c8d3be512c78ebd42456711dddf9a600000000d521025ceeba2ab4a635df2c0301a3d773da06ac5a18a7c3e0d09a795d7e57d233edf14730440220419c3c5f24da5709f946de50844bc3209f1bb0c6e916b9217795d0602b2cfe82022047e94c4ebe2fdc199c947ec577603ea8885f654f8c07b2aeb224ed0e075e7c1a0121038ef4a121bcaf1b1f175557a12896f8bc93b095e84817f90e9a901cd2113a8202483045022100cf6591cec506de7293ee31e91f6dcc2836daff8b38730234b776dd2496708a980220047b14829e565656a69cbd6f7dadd4b6c7eda010a0dee1ec68c3c6ac93d6f52601ffffffff0100f2052a010000001d521435dbbf04bca061e49dace08f858d8775c0a57c8e030000015153ba00000000';
      const transaction = prova.Transaction.fromHex(txHex);
      assert.strictEqual(transaction.ins.length, 1);
      assert.strictEqual(transaction.outs.length, 1);
      const input = transaction.ins[0];
      const output = transaction.outs[0];
      assert.strictEqual(input.hash.toString('hex'), '8ff8476a60aaf5af8fb9fcf76430e07d53c8d3be512c78ebd42456711dddf9a6');
      assert.strictEqual(input.script.length, 213);
      assert.strictEqual(output.script.length, 29);
      // let's break down the input script
      const inputScript = bitcoin.script.decompile(input.script);
      // public key and signature and public key and signature
      assert.strictEqual(inputScript.length, 4);
      assert.strictEqual(inputScript[0].length, 33);
      assert.strictEqual(inputScript[1].length, 71);
      assert.strictEqual(inputScript[2].length, 33);
      assert.strictEqual(inputScript[3].length, 72);
    });
  });
});

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


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