1 | import { ethers } from "ethers";
|
2 | import ERC20Abi from "./ABI/ERC20.json";
|
3 | import ERC721Abi from "./ABI/ERC721.json";
|
4 | import ERC1155Abi from "./ABI/ERC1155.json";
|
5 | import PARASWAPAbi from "./ABI/PARASWAP.json";
|
6 |
|
7 | const ERC20Interface = new ethers.utils.Interface(ERC20Abi);
|
8 | const ERC721Interface = new ethers.utils.Interface(ERC721Abi);
|
9 | const ERC1155Interface = new ethers.utils.Interface(ERC1155Abi);
|
10 | const PARASWAPInterface = new ethers.utils.Interface(PARASWAPAbi);
|
11 |
|
12 | export const transactionContracts = {
|
13 | erc20: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
14 | erc20Swap: "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",
|
15 | erc721: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D",
|
16 | erc1155: "0x348fc118bcc65a92dc033a951af153d14d945312",
|
17 | paraswap: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
|
18 | random: "0xc3f95102D5c8F2c83e49Ce3Acfb905eDfb7f37dE",
|
19 | random2: "0xc3f95102D5c8F2c83e49Ce3Acfb905eDfb7f37dE",
|
20 | };
|
21 |
|
22 | export const transactionData = {
|
23 | erc20: {
|
24 | approve: ERC20Interface.encodeFunctionData("approve", [transactionContracts.random, 1]),
|
25 | transfer: ERC20Interface.encodeFunctionData("transfer", [transactionContracts.random, 1]),
|
26 | },
|
27 | erc721: {
|
28 | approve: ERC721Interface.encodeFunctionData("approve", [transactionContracts.random, 1]),
|
29 | setApprovalForAll: ERC721Interface.encodeFunctionData("setApprovalForAll", [
|
30 | transactionContracts.random,
|
31 | true,
|
32 | ]),
|
33 | transferFrom: ERC721Interface.encodeFunctionData("transferFrom", [
|
34 | transactionContracts.random,
|
35 | transactionContracts.random2,
|
36 | 1,
|
37 | ]),
|
38 | safeTransferFrom: ERC721Interface.encodeFunctionData(
|
39 | "safeTransferFrom(address, address, uint256)",
|
40 | [transactionContracts.random, transactionContracts.random2, 1],
|
41 | ),
|
42 | safeTransferFromWithData: ERC721Interface.encodeFunctionData(
|
43 | "safeTransferFrom(address, address, uint256, bytes)",
|
44 | [transactionContracts.random, transactionContracts.random2, 1, "0x00"],
|
45 | ),
|
46 | },
|
47 | erc1155: {
|
48 | setApprovalForAll: ERC1155Interface.encodeFunctionData("setApprovalForAll", [
|
49 | transactionContracts.random,
|
50 | true,
|
51 | ]),
|
52 | safeTransferFrom: ERC1155Interface.encodeFunctionData("safeTransferFrom", [
|
53 | transactionContracts.random,
|
54 | transactionContracts.random2,
|
55 | 1,
|
56 | 1,
|
57 | "0x00",
|
58 | ]),
|
59 | safeBatchTransferFrom: ERC1155Interface.encodeFunctionData("safeBatchTransferFrom", [
|
60 | transactionContracts.random,
|
61 | transactionContracts.random2,
|
62 | [1],
|
63 | [1],
|
64 | "0x00",
|
65 | ]),
|
66 | },
|
67 | paraswap: {
|
68 | simpleSwap: PARASWAPInterface.encodeFunctionData("simpleSwap", [
|
69 | [
|
70 | "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",
|
71 | "0x6B175474E89094C44Da98b954EedeAC495271d0F",
|
72 | "0x0de0b6b3a7640000",
|
73 | "0x0cd58f8b6f6a3bd1",
|
74 | "0x0ce6123215ecb279",
|
75 | ["0xE592427A0AEce92De3Edee1F18E0157C05861564"],
|
76 | "0xc04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000000000000000000636ceabd0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002b7d1afa7b718fb893db30a3abc0cfc608aacfebb0000bb86b175474e89094c44da98b954eedeac495271d0f000000000000000000000000000000000000000000",
|
77 | ["0x00", "0x0124"],
|
78 | ["0x00"],
|
79 | "0x0000000000000000000000000000000000000000",
|
80 | "0x558247e365be655f9144e1a0140D793984372Ef3",
|
81 | "0x010000000000000000000000000000000000000000000000000000000000405f",
|
82 | "0x",
|
83 | "0x636d310d",
|
84 | "0xda03875dad634e49b94b93aff3d28c4a",
|
85 | ],
|
86 | ]),
|
87 | swapOnUniswapV2Fork: PARASWAPInterface.encodeFunctionData("swapOnUniswapV2Fork", [
|
88 | "7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",
|
89 | "0x0de0b6b3a7640000",
|
90 | "0x12ba8fbb209c3a65",
|
91 | "0000000000000000000000000000000000000000",
|
92 | ["0x4de55ce50407b614daff085522d476c5ec5e93a00afb"],
|
93 | ]),
|
94 | },
|
95 | };
|
96 |
|
97 | export const getTransactionHash = (to: string, data: string): string =>
|
98 | ethers.utils
|
99 | .serializeTransaction({
|
100 | to,
|
101 | nonce: 0,
|
102 | gasLimit: 21000,
|
103 | data,
|
104 | value: 1,
|
105 | chainId: 1,
|
106 | maxPriorityFeePerGas: 10000,
|
107 | maxFeePerGas: 1000000,
|
108 | type: 2,
|
109 | })
|
110 | .substring(2);
|