crypto-wallet-core
Version:
A multi-currency support library for address derivation, private key creation, and transaction creation
620 lines • 89.3 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || (function () {
var ownKeys = function(o) {
ownKeys = Object.getOwnPropertyNames || function (o) {
var ar = [];
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
return ar;
};
return ownKeys(o);
};
return function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
__setModuleDefault(result, mod);
return result;
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
const chai_1 = require("chai");
const ethers_1 = require("ethers");
const bitcoreLib = __importStar(require("bitcore-lib"));
const src_1 = require("../src");
describe('Transaction Creation', () => {
it('should create a BTC tx', () => {
const recipients = [{ address: 'mpNpzMoprLnSBu8CWDunNCYeJq3Mzdk59V', amount: 1e8 }];
const change = 'msnAsQcCdtzDyiSWb4ZnNxFwUy3P9ogQvY';
const utxos = [
{
mintTxid: '643ec66d6c4cad4cbdb8ed2166b8078975e0af9bb7ff7e30d394f43b0d9f18ab',
mintIndex: 1,
value: 0.02503422 * 1e8,
script: '76a91457884dcfe2ab46d3354a42d97333c95e5b80cf0188ac',
address: 'moVnNJpHHfssYJEnMTS5xXyGV8RhRQNRz5',
sequenceNumber: 4294967294
},
{
mintTxid: '643ec66d6c4cad4cbdb8ed2166b8078975e0af9bb7ff7e30d394f43b0d9f18ab',
mintIndex: 0,
value: 1e8,
script: '76a9144e744a19a009a9dd43a23a7c12045c83e82ac9d288ac',
address: 'mnfnJx2xWWptYmBzck3rdE851Dtu9GaZ3F',
sequenceNumber: 4294967294
}
];
const fee = 7440;
const tx = src_1.Transactions.create({ chain: 'BTC', recipients, change, utxos, fee, rbf: true });
const keys = [
{
address: 'mnfnJx2xWWptYmBzck3rdE851Dtu9GaZ3F',
privKey: 'cSFjiifSbZ2hU4jTFwE993LCe2rkZGULCTGWTDWXzHvuXRKxpnc1'
},
{ address: 'moVnNJpHHfssYJEnMTS5xXyGV8RhRQNRz5', privKey: 'cUWVirwp5vh1D6WWbYci3tuGniyf28ERpgU4uL5VSiFDfvNEhJqy' }
];
const signed = src_1.Transactions.sign({ chain: 'BTC', tx, keys, utxos });
const expected = '0200000002ab189f0d3bf494d3307effb79bafe0758907b86621edb8bd4cad4c6c6dc63e64010000006a47304402202eeb967801c0aad4f8241d8f90e2a9e2236f95c189165ba6b2ba4dc6b17bacbe02201b5d4dc0c32f6aa134d93698f85bf4c098d15fcbaada0b6ca2b8076fd8aa2741012102c8f8fa438666cbd287e28fb384b99555e4acce610e8141e887c9c458bba5db5cffffffffab189f0d3bf494d3307effb79bafe0758907b86621edb8bd4cad4c6c6dc63e64000000006a473044022072bdde2c0b413fc42d15d93e768a26f818dc5b225b9359235c09fd0452d6121a022007c00afa396d60d5b7919f2ba31e638817561cab4e2afed7a86dd636ee293c1001210321f2f13aed42db7257b64f77d574071a6e81e460ab3693eefb7482c12d1ff697ffffffff0200e1f505000000001976a914612fb4d5e27a28f5c54018d8948ca3a650741c4188acee152600000000001976a91486823ef7c8e210184cc8675189d37c4c9d8e1e0288ac00000000';
(0, chai_1.expect)(signed).to.eq(expected);
});
it('should sign a BTC opreturn tx', () => {
const tx = '0200000001ab189f0d3bf494d3307effb79bafe0758907b86621edb8bd4cad4c6c6dc63e640100000000ffffffff0200000000000000000b6a096a07696f6e3a61626340420f00000000001976a91457884dcfe2ab46d3354a42d97333c95e5b80cf0188ac00000000';
const utxos = [
{
mintTxid: '643ec66d6c4cad4cbdb8ed2166b8078975e0af9bb7ff7e30d394f43b0d9f18ab',
mintIndex: 1,
value: 0.02503422 * 1e8,
script: '76a91457884dcfe2ab46d3354a42d97333c95e5b80cf0188ac',
address: 'moVnNJpHHfssYJEnMTS5xXyGV8RhRQNRz5',
sequenceNumber: 4294967294
}
];
const keys = [
{
address: 'mnfnJx2xWWptYmBzck3rdE851Dtu9GaZ3F',
privKey: 'cSFjiifSbZ2hU4jTFwE993LCe2rkZGULCTGWTDWXzHvuXRKxpnc1'
},
{ address: 'moVnNJpHHfssYJEnMTS5xXyGV8RhRQNRz5', privKey: 'cUWVirwp5vh1D6WWbYci3tuGniyf28ERpgU4uL5VSiFDfvNEhJqy' }
];
const signed = src_1.Transactions.sign({ chain: 'BTC', tx, keys, utxos });
const expected = '0200000001ab189f0d3bf494d3307effb79bafe0758907b86621edb8bd4cad4c6c6dc63e64010000006b483045022100a3e6e04d311930ec19b11033e77d973ae37181ead6b2db582ec1c21028c469350220602faacf6f6753b271571452e4597205971ab1d790e60080d50c206c8c327f86012102c8f8fa438666cbd287e28fb384b99555e4acce610e8141e887c9c458bba5db5cffffffff0200000000000000000b6a096a07696f6e3a61626340420f00000000001976a91457884dcfe2ab46d3354a42d97333c95e5b80cf0188ac00000000';
(0, chai_1.expect)(signed).to.eq(expected);
});
it('should sign a BTC tx with uncompressed pubkey inputs', () => {
const uncompPk = new bitcoreLib.PrivateKey({ bn: '86d32c754853c7d5788d101f0aa5c3ea4da69c0f42ffc3f7403aafba23112b0c', network: 'mainnet', compressed: false });
const uncompAddy = uncompPk.publicKey.toAddress();
const compPk = new bitcoreLib.PrivateKey('86d32c754853c7d5788d101f0aa5c3ea4da69c0f42ffc3f7403aafba23112b0c');
const compAddy = compPk.publicKey.toAddress();
const tx = new bitcoreLib.Transaction();
const utxos = [{
mintTxid: '643ec66d6c4cad4cbdb8ed2166b8078975e0af9bb7ff7e30d394f43b0d9f18ab',
mintIndex: 0,
value: 1e8,
address: uncompAddy,
script: bitcoreLib.Script.fromAddress(uncompAddy)
}, {
mintTxid: '643ec66d6c4cad4cbdb8ed2166b8078975e0af9bb7ff7e30d394f43b0d9f18ab',
mintIndex: 1,
value: 1e8,
address: compAddy,
script: bitcoreLib.Script.fromAddress(compAddy)
}];
const bitcoreUtxos = utxos.map(utxo => new bitcoreLib.Transaction.UnspentOutput({ txid: utxo.mintTxid, vout: utxo.mintIndex, satoshis: utxo.value, ...utxo }));
tx.from(bitcoreUtxos);
tx.change('mpNpzMoprLnSBu8CWDunNCYeJq3Mzdk59V');
(0, chai_1.expect)(tx.inputs.every(input => input._scriptBuffer?.length === 0)).to.be.true;
const keys = [{ privKey: uncompPk, address: uncompAddy.toString() }, { privKey: compPk, address: compAddy.toString() }];
const signed = src_1.Transactions.sign({ chain: 'BTC', tx: tx.uncheckedSerialize(), utxos, keys });
const signedTx = new bitcoreLib.Transaction(signed);
(0, chai_1.expect)(signedTx.inputs.every(input => input._scriptBuffer?.length > 0)).to.be.true;
});
it.skip('should fail to get signatures on a BTC txs', () => {
});
it('should be able to create a livenet ETH tx', () => {
const rawEthTx = {
network: 'livenet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETH',
recipients,
nonce: 0
});
const expectedTx = '0xf9014f808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000018080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a livenet ETH type 1 tx', () => {
const rawEthTx = {
network: 'livenet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETH',
recipients,
nonce: 0,
txType: 1
});
const expectedTx = '0x01f9014e01808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000c0';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a livenet ETH type 2 tx', () => {
const rawEthTx = {
network: 'livenet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
maxGasFee: 20000000000
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETH',
recipients,
nonce: 0
});
const expectedTx = '0x02f9014f0180018504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000c0';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a testnet ETH tx', () => {
const rawEthTx = {
network: 'testnet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETH',
recipients,
nonce: 0
});
const expectedTx = '0xf90152808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead14680563000000000000000000000000000000000000000000000000000000000000000083aa36a78080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a testnet ETH type 2 tx', () => {
const rawEthTx = {
network: 'sepolia',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xf9014f808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000058080',
maxGasFee: 20000000000
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETH',
recipients,
nonce: 0
});
const expectedTx = '0x02f9018083aa36a780018504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90152f9014f808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000058080c0';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a sepolia ETH tx', () => {
const rawEthTx = {
network: 'sepolia',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETH',
recipients,
nonce: 0
});
const expectedTx = '0xf90152808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead14680563000000000000000000000000000000000000000000000000000000000000000083aa36a78080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a holesky ETH tx', () => {
const rawEthTx = {
network: 'holesky',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETH',
recipients,
nonce: 0
});
const expectedTx = '0xf90151808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead1468056300000000000000000000000000000000000000000000000000000000000000008242688080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a livenet ERC20 tx', () => {
const rawEthTx = {
network: 'livenet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
gasPrice: 20000000000,
tokenAddress: '0x692a70d2e424a56d2c6c27aa97d1a86395877b3a'
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETHERC20',
recipients,
nonce: 0
});
const expectedTx = '0xf867808504a817c8008094692a70d2e424a56d2c6c27aa97d1a86395877b3a80b844a9059cbb00000000000000000000000037d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a000000000000000000000000000000000000000000000000000dd764300b8000018080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a livenet ERC20 type 2 tx', () => {
const rawEthTx = {
network: 'livenet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
maxGasFee: 20000000000,
tokenAddress: '0x692a70d2e424a56d2c6c27aa97d1a86395877b3a'
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETHERC20',
recipients,
nonce: 0
});
const expectedTx = '0x02f8670180018504a817c8008094692a70d2e424a56d2c6c27aa97d1a86395877b3a80b844a9059cbb00000000000000000000000037d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a000000000000000000000000000000000000000000000000000dd764300b8000c0';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a testnet ERC20 tx', () => {
const rawEthTx = {
network: 'testnet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
gasPrice: 20000000000,
tokenAddress: '0x692a70d2e424a56d2c6c27aa97d1a86395877b3a'
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETHERC20',
recipients,
nonce: 0
});
const expectedTx = '0xf86a808504a817c8008094692a70d2e424a56d2c6c27aa97d1a86395877b3a80b844a9059cbb00000000000000000000000037d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a000000000000000000000000000000000000000000000000000dd764300b800083aa36a78080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a testnet ERC20 type 2 tx', () => {
const rawEthTx = {
network: 'sepolia',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
maxGasFee: 20000000000,
tokenAddress: '0x692a70d2e424a56d2c6c27aa97d1a86395877b3a'
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETHERC20',
recipients,
nonce: 0
});
const expectedTx = '0x02f86a83aa36a780018504a817c8008094692a70d2e424a56d2c6c27aa97d1a86395877b3a80b844a9059cbb00000000000000000000000037d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a000000000000000000000000000000000000000000000000000dd764300b8000c0';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a sepolia ERC20 tx', () => {
const rawEthTx = {
network: 'sepolia',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
gasPrice: 20000000000,
tokenAddress: '0x692a70d2e424a56d2c6c27aa97d1a86395877b3a'
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETHERC20',
recipients,
nonce: 0
});
const expectedTx = '0xf86a808504a817c8008094692a70d2e424a56d2c6c27aa97d1a86395877b3a80b844a9059cbb00000000000000000000000037d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a000000000000000000000000000000000000000000000000000dd764300b800083aa36a78080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a holesky ERC20 tx', () => {
const rawEthTx = {
network: 'holesky',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
gasPrice: 20000000000,
tokenAddress: '0x692a70d2e424a56d2c6c27aa97d1a86395877b3a'
};
const { value, to } = rawEthTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawEthTx,
chain: 'ETHERC20',
recipients,
nonce: 0
});
const expectedTx = '0xf869808504a817c8008094692a70d2e424a56d2c6c27aa97d1a86395877b3a80b844a9059cbb00000000000000000000000037d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a000000000000000000000000000000000000000000000000000dd764300b80008242688080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a livenet MATIC tx', () => {
const rawMaticTx = {
network: 'livenet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawMaticTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawMaticTx,
chain: 'MATIC',
recipients,
nonce: 0
});
const expectedTx = '0xf90150808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead14680563000000000000000000000000000000000000000000000000000000000000000081898080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a livenet MATIC tx an amount in scientific notation', () => {
const rawMaticTx = {
network: 'livenet',
value: 4.279756e+21,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawMaticTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawMaticTx,
chain: 'MATIC',
recipients,
nonce: 0
});
const expectedTx = '0xf90152808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a89e8018baee182ae0000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead14680563000000000000000000000000000000000000000000000000000000000000000081898080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a livenet MATIC type 2 tx', () => {
const rawMaticTx = {
network: 'livenet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
maxGasFee: 30000000000
};
const { value, to } = rawMaticTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawMaticTx,
chain: 'MATIC',
recipients,
nonce: 0
});
const expectedTx = '0x02f901558189808506fc23ac008506fc23ac00809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000c0';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a testnet MATIC tx', () => {
const rawMaticTx = {
network: 'testnet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawMaticTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawMaticTx,
chain: 'MATIC',
recipients,
nonce: 0
});
const expectedTx = '0xf90152808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000830138828080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a testnet MATIC type 2 tx', () => {
const rawMaticTx = {
network: 'testnet',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
maxGasPrice: 20000000000
};
const { value, to } = rawMaticTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawMaticTx,
chain: 'MATIC',
recipients,
nonce: 0
});
const expectedTx = '0xf9014d8080809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000830138828080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a mumbai MATIC tx', () => {
const rawMaticTx = {
network: 'mumbai',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
gasPrice: 20000000000
};
const { value, to } = rawMaticTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawMaticTx,
chain: 'MATIC',
recipients,
nonce: 0
});
const expectedTx = '0xf90152808504a817c800809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000830138818080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to create a mumbai MATIC type 2 tx', () => {
const rawMaticTx = {
network: 'mumbai',
value: 3896000000000000,
to: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A',
data: '0xb6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000',
maxGasFee: 30000000000
};
const { value, to } = rawMaticTx;
const recipients = [{ address: to, amount: value }];
const cryptoTx = src_1.Transactions.create({
...rawMaticTx,
chain: 'MATIC',
recipients,
nonce: 0
});
const expectedTx = '0x02f9015783013881808506fc23ac008506fc23ac00809437d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a870dd764300b8000b90124b6b4af05000000000000000000000000000000000000000000000000000dd764300b800000000000000000000000000000000000000000000000000000000004a817c8000000000000000000000000000000000000000000000000000000016ada606a26050bb49a5a8228599e0dd48c1368abd36f4f14d2b74a015b2d168dbcab0773ce399393220df874bb22ca961f351e038acd2ba5cc8c764385c9f23707622cc435000000000000000000000000000000000000000000000000000000000000001c7e247d684a635813267b10a63f7f3ba88b28ca2790c909110b28236cf1b9bba03451e83d5834189f28d4c77802fc76b7c760a42bc8bebf8dd15e6ead146805630000000000000000000000000000000000000000000000000000000000000000c0';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
});
it('should be able to encode Data in ERC20 tx', () => {
const recipients = [{ address: '0x37d7B3bBD88EFdE6a93cF74D2F5b0385D3E3B08A', amount: 3896000000000000 }];
const tokenAddress = '0x692a70d2e424a56d2c6c27aa97d1a86395877b3a';
const data = src_1.Transactions.get({ chain: 'ETHERC20' }).encodeData({ recipients, tokenAddress });
const expectedData = '0xa9059cbb00000000000000000000000037d7b3bbd88efde6a93cf74d2f5b0385d3e3b08a000000000000000000000000000000000000000000000000000dd764300b8000';
(0, chai_1.expect)(data).to.equal(expectedData);
});
it('should be able to send ETH to multiple using multisend contract', () => {
const wallet = {
address: '0xb4b9be3062b6dB6eDa78fa4b5EA80595Cfa7E655',
privateKey: '0x733d4cddb30d33f324def2bb80c6a844f7ba342a60bed06d838afb6b37ab1972',
index: 0
};
const rawEthTx = {
value: '3896000000000000',
to: '0xf514e00E20373f6366C9AF966fF5F8be587595E9',
};
const rawEthTx2 = {
value: 20407919369583210,
to: '0x3428F3Eb7df7D4a16f9e4A5098574Cea2CFBbdc6',
};
const recipients = [{ address: rawEthTx.to, amount: rawEthTx.value }, { address: rawEthTx2.to, amount: rawEthTx2.value }];
const cryptoTx = src_1.Transactions.create({
network: 'testnet',
chain: 'ETH',
recipients,
nonce: 3,
contractAddress: '0x44dfceb88f24c738d8ae9b7d4bb898cbca06db0e',
gasPrice: 1000000008,
gasLimit: 71994
});
const expectedTx = '0xf9013403843b9aca088301193a9444dfceb88f24c738d8ae9b7d4bb898cbca06db0e8756584930ac7a6ab9010425245b26000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f514e00e20373f6366c9af966ff5f8be587595e90000000000000000000000003428f3eb7df7d4a16f9e4a5098574cea2cfbbdc60000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000dd764300b8000000000000000000000000000000000000000000000000000004880e500a0fa6a83aa36a78080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
const signedTx = src_1.Transactions.sign({ chain: 'ETH', tx: cryptoTx, key: { address: wallet.address, privKey: wallet.privateKey } });
const expectedSignedTx = '0xf9017503843b9aca088301193a9444dfceb88f24c738d8ae9b7d4bb898cbca06db0e8756584930ac7a6ab9010425245b26000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f514e00e20373f6366c9af966ff5f8be587595e90000000000000000000000003428f3eb7df7d4a16f9e4a5098574cea2cfbbdc60000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000dd764300b8000000000000000000000000000000000000000000000000000004880e500a0fa6a8401546d71a0f9e7f0a170d7f145899042c938e7f0eb4ecdbdc0a5453b6524fcc2b9aea427b2a01477ff7e9379952b26237bead1e7835eef0e5768673c9da4ca7410cd7b57e8c4';
(0, chai_1.expect)(expectedSignedTx).to.equal(signedTx);
});
it('should be able to send ERC20 to multiple using multisend contract', () => {
const wallet = {
address: '0xb4b9be3062b6dB6eDa78fa4b5EA80595Cfa7E655',
privateKey: '0x733d4cddb30d33f324def2bb80c6a844f7ba342a60bed06d838afb6b37ab1972',
index: 0
};
const rawEthTx = {
value: '3823',
to: '0xf514e00E20373f6366C9AF966fF5F8be587595E9'
};
const rawEthTx2 = {
value: '900',
to: '0x3428F3Eb7df7D4a16f9e4A5098574Cea2CFBbdc6'
};
const recipients = [{ address: rawEthTx.to, amount: rawEthTx.value }, { address: rawEthTx2.to, amount: rawEthTx2.value }];
const cryptoTx = src_1.Transactions.create({
network: 'sepolia',
chain: 'ETHERC20',
recipients,
nonce: 48,
gasPrice: 1806667388,
gasLimit: 56209,
contractAddress: '0x328cab2bd398a6e577d8ab1d0ae0b969fd70969c',
tokenAddress: '0x75c87615ffc0bb34a24ed4ac62c26a1d8ea75336'
});
const expectedTx = '0xf9014c30846baf8e7c82db9194328cab2bd398a6e577d8ab1d0ae0b969fd70969c80b90124aee2561300000000000000000000000075c87615ffc0bb34a24ed4ac62c26a1d8ea75336000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f514e00e20373f6366c9af966ff5f8be587595e90000000000000000000000003428f3eb7df7d4a16f9e4a5098574cea2cfbbdc600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000eef000000000000000000000000000000000000000000000000000000000000038483aa36a78080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
const signedTx = src_1.Transactions.sign({ chain: 'ETHERC20', tx: cryptoTx, key: { address: wallet.address, privKey: wallet.privateKey } });
const expectedSignedTx = '0xf9018d30846baf8e7c82db9194328cab2bd398a6e577d8ab1d0ae0b969fd70969c80b90124aee2561300000000000000000000000075c87615ffc0bb34a24ed4ac62c26a1d8ea75336000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f514e00e20373f6366c9af966ff5f8be587595e90000000000000000000000003428f3eb7df7d4a16f9e4a5098574cea2cfbbdc600000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000eef00000000000000000000000000000000000000000000000000000000000003848401546d71a0fb3b5eb6c629245291d729b2f9150ad4a61fe5f040b4eac84510cb1da7bccf0ca068af98a86fcb1184851bbf51667b37777a4d6049d1ca5cc9521691cda42cc75f';
(0, chai_1.expect)(expectedSignedTx).to.equal(signedTx);
});
it('should be able to send MATIC to multiple using multisend contract', () => {
const wallet = {
address: '0xb4b9be3062b6dB6eDa78fa4b5EA80595Cfa7E655',
privateKey: '0x733d4cddb30d33f324def2bb80c6a844f7ba342a60bed06d838afb6b37ab1972',
index: 0
};
const rawMaticTx = {
value: BigInt(3896000000000000),
to: '0xf514e00E20373f6366C9AF966fF5F8be587595E9',
};
const rawMaticTx2 = {
value: 20407919369583210,
to: '0x3428F3Eb7df7D4a16f9e4A5098574Cea2CFBbdc6',
};
const recipients = [{ address: rawMaticTx.to, amount: rawMaticTx.value }, { address: rawMaticTx2.to, amount: rawMaticTx2.value }];
const cryptoTx = src_1.Transactions.create({
network: 'testnet',
chain: 'MATIC',
recipients,
nonce: 3,
contractAddress: '0x44dfceb88f24c738d8ae9b7d4bb898cbca06db0e',
gasPrice: 1000000008,
gasLimit: 71994
});
const expectedTx = '0xf9013403843b9aca088301193a9444dfceb88f24c738d8ae9b7d4bb898cbca06db0e8756584930ac7a6ab9010425245b26000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f514e00e20373f6366c9af966ff5f8be587595e90000000000000000000000003428f3eb7df7d4a16f9e4a5098574cea2cfbbdc60000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000dd764300b8000000000000000000000000000000000000000000000000000004880e500a0fa6a830138828080';
(0, chai_1.expect)(cryptoTx).to.equal(expectedTx);
const signedTx = src_1.Transactions.sign({ chain: 'MATIC', tx: cryptoTx, key: { address: wallet.address, privKey: wallet.privateKey } });
const expectedSignedTx = '0xf9017403843b9aca088301193a9444dfceb88f24c738d8ae9b7d4bb898cbca06db0e8756584930ac7a6ab9010425245b26000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000002000000000000000000000000f514e00e20373f6366c9af966ff5f8be587595e90000000000000000000000003428f3eb7df7d4a16f9e4a5098574cea2cfbbdc60000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000dd764300b8000000000000000000000000000000000000000000000000000004880e500a0fa6a83027127a007e38abe47de10fc653ed198900e219f3d2e1b8ecad05c442fbd4d37ce2dad4fa027506463182caadd2728cba17ffcd3adb67b9043397480d39f1d3a2740692c8f';
(0, chai_1.expect)(expectedSignedTx).to.equal(signedTx);
});
it('should be able to create a XRP tx', () => {
const recipients = [{ address: 'rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF', amount: '123456' }];
const xrpParams = {
chain: 'XRP',
recipients,
from: 'rEqj9WKSH7wEkPvWf6b4gCi26Y3F7HbKUF',
tag: 123456,
fee: 12,
nonce: 1,
invoiceID: '1012345678901234567890123456710123456789012345678901567890123456'
};
const cryptoTx = src_1.Transactions.create(xrpParams);
const expectedTx = '120000228000000024000000012E0001E2405011101234567890123456789012345671012345678901234567890156789012345661400000000001E24068400000000000000C8114A2C8E8CD9A9133CAD90F2668159AAF572612A5028314A2C8E8CD9A9133CAD90F2668159AAF572612A502';
(0, chai_1.expect)(xrpPa