UNPKG

4.47 kBPlain TextView Raw
1import { ethers } from "ethers";
2import ERC20Abi from "./ABI/ERC20.json";
3import ERC721Abi from "./ABI/ERC721.json";
4import ERC1155Abi from "./ABI/ERC1155.json";
5import PARASWAPAbi from "./ABI/PARASWAP.json";
6
7const ERC20Interface = new ethers.utils.Interface(ERC20Abi);
8const ERC721Interface = new ethers.utils.Interface(ERC721Abi);
9const ERC1155Interface = new ethers.utils.Interface(ERC1155Abi);
10const PARASWAPInterface = new ethers.utils.Interface(PARASWAPAbi);
11
12export const transactionContracts = {
13 erc20: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
14 erc20Swap: "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0", // MATIC
15 erc721: "0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D", // Bored Ape
16 erc1155: "0x348fc118bcc65a92dc033a951af153d14d945312", // Clone X
17 paraswap: "0xdef171fe48cf0115b1d80b88dc8eab59176fee57",
18 random: "0xc3f95102D5c8F2c83e49Ce3Acfb905eDfb7f37dE", // jesus.eth
19 random2: "0xc3f95102D5c8F2c83e49Ce3Acfb905eDfb7f37dE", // satan.eth
20};
21
22export 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
97export 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);