Skip to content

Commit 5f5bed4

Browse files
committed
feat: support new chain, scroll
1 parent 80e2a59 commit 5f5bed4

File tree

3 files changed

+63
-5
lines changed

3 files changed

+63
-5
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99
## Blockchain Support
1010

11-
| <img alt="arbitrum" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/arbitrum/info/logo.png" width="23"/> | <img alt="avalanche" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/avalanchec/info/logo.png" width="20"/> | <img alt="base" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/base/info/logo.png" width="20"/> | <img alt="bnb chain" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/binance/info/logo.png" width="21"/> | <img alt="ethereum" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/ethereum/info/logo.png" width="21"/> | <img alt="optimism" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/optimism/info/logo.png" width="22"/> | <img alt="polygon" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/polygon/info/logo.png" width="22"/> |
12-
| :----------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: |
13-
| Arbitrum | Avalanche | Base | BNB Chain | Ethereum | Optimism | Polygon |
11+
| <img alt="arbitrum" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/arbitrum/info/logo.png" width="23"/> | <img alt="avalanche" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/avalanchec/info/logo.png" width="20"/> | <img alt="base" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/base/info/logo.png" width="20"/> | <img alt="bnb chain" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/binance/info/logo.png" width="21"/> | <img alt="ethereum" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/ethereum/info/logo.png" width="21"/> | <img alt="optimism" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/optimism/info/logo.png" width="22"/> | <img alt="polygon" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/polygon/info/logo.png" width="22"/> | <img alt="scroll" src="https://raw.githubusercontent.com/rainbow-me/assets/master/blockchains/scroll/info/logo.png" width="22"/> |
12+
| :----------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------: |
13+
| Arbitrum | Avalanche | Base | BNB Chain | Ethereum | Optimism | Polygon | Scroll |
1414

1515
## Overview
1616

src/tests/index.test.ts

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,14 @@ import {
55
type Transport,
66
type Chain,
77
} from "viem";
8-
import { arbitrum, base, mainnet, optimism, polygon } from "viem/chains";
8+
import {
9+
base,
10+
scroll,
11+
polygon,
12+
mainnet,
13+
arbitrum,
14+
optimism,
15+
} from "viem/chains";
916
import { test, expect } from "vitest";
1017
import { parseSwap } from "../index";
1118
import { NATIVE_TOKEN_ADDRESS } from "../constants";
@@ -951,3 +958,34 @@ test("gracefully handles a revert in a erc-4337 transaction", async () => {
951958

952959
expect(result).toEqual(null);
953960
});
961+
962+
// https://scrollscan.com/tx/0x84b07445a1a868b4338df8aed67c9ea330e771596bf603dbef8c12b3cb9970e5
963+
test("parse a swap on Scroll(USDC for USDT) with execute", async () => {
964+
const publicClient = createPublicClient({
965+
chain: scroll,
966+
transport: http(
967+
`https://scroll-mainnet.g.alchemy.com/v2/${process.env.ALCHEMY_API_KEY}`
968+
),
969+
}) as PublicClient<Transport, Chain>;
970+
971+
const transactionHash = `0x84b07445a1a868b4338df8aed67c9ea330e771596bf603dbef8c12b3cb9970e5`;
972+
973+
const result = await parseSwap({
974+
publicClient,
975+
transactionHash,
976+
smartContractWallet: "0x3F6dAB60Cc16377Df9684959e20962f44De20988",
977+
});
978+
979+
expect(result).toEqual({
980+
tokenIn: {
981+
symbol: "USDC",
982+
amount: "1",
983+
address: "0x06eFdBFf2a14a7c8E15944D1F4A48F9F95F663A4",
984+
},
985+
tokenOut: {
986+
symbol: "USDT",
987+
amount: "0.998168",
988+
address: "0xf55BEC9cafDbE8730f096Aa55dad6D22d44099Df",
989+
},
990+
});
991+
});

src/utils/index.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,14 @@
11
import { fromHex, erc20Abi, getAddress, formatUnits, formatEther } from "viem";
2+
import {
3+
bsc,
4+
base,
5+
scroll,
6+
mainnet,
7+
polygon,
8+
arbitrum,
9+
optimism,
10+
avalanche,
11+
} from "viem/chains";
212
import { NATIVE_SYMBOL_BY_CHAIN_ID, NATIVE_TOKEN_ADDRESS } from "../constants";
313
import type { Address } from "viem";
414
import type {
@@ -11,7 +21,17 @@ import type {
1121
export function isChainIdSupported(
1222
chainId: number
1323
): chainId is SupportedChainId {
14-
return [1, 10, 56, 137, 8453, 42161, 43114].includes(chainId);
24+
const supportedChainIds: number[] = [
25+
bsc.id,
26+
base.id,
27+
scroll.id,
28+
polygon.id,
29+
mainnet.id,
30+
arbitrum.id,
31+
optimism.id,
32+
avalanche.id,
33+
];
34+
return supportedChainIds.includes(chainId);
1535
}
1636

1737
export function calculateNativeTransfer(

0 commit comments

Comments
 (0)