PHP WebShell

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

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

import should from 'should';
import { TransferBuilder as AvaxCTransferBuilder, TransactionBuilder, KeyPair } from '../../src';
import { getBuilder } from './getBuilder';
import * as testData from '../resources/avaxc';
import { TransactionType } from '@bitgo/sdk-core';
import { decodeTokenTransferData } from '@bitgo/sdk-coin-eth';
import { coins, EthereumNetwork as EthLikeNetwork } from '@bitgo/statics';

const amount = '20000';
const toAddress = '0x7325A3F7d4f9E86AE62Cf742426078C3755730d5';
const keyPair = new KeyPair();
const key = keyPair.getKeys().prv as string;
const tokensNames = [
  'avaxc:png',
  'avaxc:xava',
  'avaxc:klo',
  'avaxc:joe',
  'avaxc:qi',
  'avaxc:usdt',
  'avaxc:usdc',
  'avaxc:link',
  'tavaxc:link',
];
const coin = coins.get('avaxc') as unknown as EthLikeNetwork;
let txBuilder: TransactionBuilder;
const contractAddress = testData.TEST_ACCOUNT.ethAddress;
const initTxBuilder = (): void => {
  txBuilder = getBuilder('tavaxc') as TransactionBuilder;
  txBuilder.fee({
    fee: '280000000000',
    gasLimit: '7000000',
  });
  txBuilder.counter(1);
  txBuilder.type(TransactionType.Send);
  txBuilder.contract(contractAddress);
};

describe('AVAXERC20 Tokens', () => {
  tokensNames.forEach((tokenName) => {
    it(tokenName + ' token transfer should succeed', async () => {
      const builder = new AvaxCTransferBuilder()
        .coin(tokenName)
        .expirationTime(1590078260)
        .amount(amount)
        .to(toAddress)
        .contractSequenceId(2)
        .key(key);
      const result = builder.signAndBuild(`${coin.chainId}`);
      const decode = decodeTokenTransferData(result);
      should.equal(decode.amount, '20000');
      should.equal(decode.expireTime, 1590078260);
      should.equal(decode.sequenceId, 2);
      should.equal(decode.to.toLowerCase(), toAddress.toLowerCase());
    });
  });

  it('a send token transaction', async () => {
    const amount = '100';

    initTxBuilder();
    txBuilder.contract(contractAddress);
    txBuilder
      .transfer()
      .coin('tavaxc:link')
      .amount(amount)
      .to(testData.TEST_ACCOUNT_2.ethAddress)
      .expirationTime(1590066728)
      .contractSequenceId(5)
      .key(testData.OWNER_2.ethKey);
    txBuilder.sign({
      key: testData.OWNER_1.ethKey,
    });
    const tx = await txBuilder.build();
    should.equal(tx.signature.length, 2);
    should.equal(tx.inputs.length, 1);
    should.equal(tx.inputs[0].address.toLowerCase(), contractAddress.toLowerCase());
    should.equal(tx.inputs[0].value, amount);
    should.equal(tx.inputs[0].coin, 'tavaxc:link');

    should.equal(tx.outputs.length, 1);
    should.equal(tx.outputs[0].address.toLowerCase(), testData.TEST_ACCOUNT_2.ethAddress.toLowerCase());
    should.equal(tx.outputs[0].value, amount);
    should.equal(tx.outputs[0].coin, 'tavaxc:link');
  });
});

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


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