PHP WebShell

Текущая директория: /opt/BitGoJS/modules/sdk-coin-etc/test/unit/transactionBuilder

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

import should from 'should';
import { TransactionType } from '@bitgo/sdk-core';
import { TransactionBuilder } from '../../../src';
import { getBuilder } from '../../../src/lib/builder';
import * as testData from '../../resources';
import { decodeTransferData } from '@bitgo/sdk-coin-eth';

describe('Etc send transaction', function () {
  let txBuilder: TransactionBuilder;
  const contractAddress = '0x7073b82be1d932c70afe505e1fe211916e978c34';
  const initTxBuilder = (): void => {
    txBuilder = getBuilder('tetc') as TransactionBuilder;
    txBuilder.fee({
      fee: '1000000000',
      gasLimit: '12100000',
    });
    txBuilder.counter(2);
    txBuilder.type(TransactionType.Send);
    txBuilder.contract(contractAddress);
  };
  const key = testData.KEYPAIR_PRV.getKeys().prv as string;

  it('a send funds transaction', async () => {
    initTxBuilder();
    const recipient = testData.ACCOUNT_2;
    const amount = '1000000000';
    const expireTime = 1590066728;
    const sequenceId = 5;
    txBuilder
      .transfer()
      .amount(amount)
      .to(recipient)
      .expirationTime(1590066728)
      .contractSequenceId(sequenceId)
      .key(key);
    txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
    const tx = await txBuilder.build();
    should.equal(tx.toJson().chainId, 63);

    should.equal(tx.toBroadcastFormat(), testData.SEND_TX_BROADCAST);
    should.equal(tx.signature.length, 2);
    should.equal(tx.inputs.length, 1);
    should.equal(tx.inputs[0].address, contractAddress);
    should.equal(tx.inputs[0].value, amount);
    should.equal(tx.outputs.length, 1);
    should.equal(tx.outputs[0].address, recipient);
    should.equal(tx.outputs[0].value, amount);

    const data = tx.toJson().data;
    const {
      to,
      amount: parsedAmount,
      expireTime: parsedExpireTime,
      sequenceId: parsedSequenceId,
    } = decodeTransferData(data);
    should.equal(to, recipient);
    should.equal(parsedAmount, amount);
    should.equal(parsedExpireTime, expireTime);
    should.equal(parsedSequenceId, sequenceId);
  });

  it('a send funds with amount 0 transaction', async () => {
    initTxBuilder();
    txBuilder.transfer().amount('0').to(testData.ACCOUNT_2).expirationTime(1590066728).contractSequenceId(5).key(key);
    txBuilder.sign({ key: testData.PRIVATE_KEY_1 });
    const tx = await txBuilder.build();
    should.equal(tx.toBroadcastFormat(), testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
  });
  it('unsigned transaction with final v check', async () => {
    initTxBuilder();
    txBuilder.transfer().amount('0').to(testData.ACCOUNT_2).expirationTime(1590066728).contractSequenceId(5).key(key);
    const tx = await txBuilder.build();
    should.equal(tx.toJson().v, '0xa1');
  });
});

describe('should sign and build from serialized', () => {
  it('a send funds transaction from serialized', async () => {
    const txBuilder = getBuilder('tetc') as TransactionBuilder;
    txBuilder.from(testData.SEND_TX_BROADCAST);
    const signedTx = await txBuilder.build();
    should.equal(signedTx.toBroadcastFormat(), testData.SEND_TX_BROADCAST);
  });

  it('a send funds transaction with amount 0 from serialized', async () => {
    const txBuilder = getBuilder('tetc') as TransactionBuilder;
    txBuilder.from(testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
    const signedTx = await txBuilder.build();
    should.equal(signedTx.toBroadcastFormat(), testData.SEND_TX_AMOUNT_ZERO_BROADCAST);
  });
});

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


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