From 1e72ce1dd4331c50d07ea0fa4fe1e1bbe60d2632 Mon Sep 17 00:00:00 2001 From: Teimur Gasanov Date: Fri, 21 Feb 2025 23:51:26 +0600 Subject: [PATCH 1/3] Add Form and Form Testnet chains --- .changeset/cold-teachers-sell.md | 5 ++ src/chains/definitions/form.ts | 66 ++++++++++++++++++++++++++ src/chains/definitions/formTestnet.ts | 67 +++++++++++++++++++++++++++ 3 files changed, 138 insertions(+) create mode 100644 .changeset/cold-teachers-sell.md create mode 100644 src/chains/definitions/form.ts create mode 100644 src/chains/definitions/formTestnet.ts diff --git a/.changeset/cold-teachers-sell.md b/.changeset/cold-teachers-sell.md new file mode 100644 index 0000000000..bd7b38cf04 --- /dev/null +++ b/.changeset/cold-teachers-sell.md @@ -0,0 +1,5 @@ +--- +"viem": patch +--- + +Added Form and Form Testnet chains. diff --git a/src/chains/definitions/form.ts b/src/chains/definitions/form.ts new file mode 100644 index 0000000000..6a7dab21cc --- /dev/null +++ b/src/chains/definitions/form.ts @@ -0,0 +1,66 @@ +import { chainConfig } from '../../op-stack/chainConfig.js' +import { defineChain } from '../../utils/chain/defineChain.js' + +const sourceId = 1 // mainnet + +export const form = /*#__PURE__*/ defineChain({ + id: 478, + name: 'Form Network', + nativeCurrency: { + decimals: 18, + name: 'Ethereum', + symbol: 'ETH', + }, + rpcUrls: { + public: { + http: ['https://rpc.form.network/http'], + webSocket: ['wss://rpc.form.network/ws'], + }, + default: { + http: ['https://rpc.form.network/http'], + webSocket: ['wss://rpc.form.network/ws'], + }, + }, + blockExplorers: { + etherscan: { + name: 'Form Explorer', + url: 'https://explorer.form.network/', + }, + default: { + name: 'Form Explorer', + url: 'https://explorer.form.network/', + }, + }, + contracts: { + ...chainConfig.contracts, + addressManager: { + [sourceId]: { + address: '0x15c249E46A2F924C2dB3A1560CF86729bAD1f07B', + }, + }, + l1CrossDomainMessenger: { + [sourceId]: { + address: '0xF333158DCCad1dF6C3F0a3aEe8BC31fA94d9eD5c', + }, + }, + l2OutputOracle: { + [sourceId]: { + address: '0x4ccAAF69F41c5810cA875183648B577CaCf1F67E', + }, + }, + portal: { + [sourceId]: { + address: '0x4E259Ee5F4136408908160dD32295A5031Fa426F', + }, + }, + l1StandardBridge: { + [sourceId]: { + address: '0xdc20aA63D3DE59574E065957190D8f24e0F7B8Ba', + }, + }, + multicall3: { + address: '0xcA11bde05977b3631167028862bE2a173976CA11', + }, + }, + sourceId, +}) diff --git a/src/chains/definitions/formTestnet.ts b/src/chains/definitions/formTestnet.ts new file mode 100644 index 0000000000..ebd1888f24 --- /dev/null +++ b/src/chains/definitions/formTestnet.ts @@ -0,0 +1,67 @@ +import { chainConfig } from '../../op-stack/chainConfig.js' +import { defineChain } from '../../utils/chain/defineChain.js' + +const sourceId = 11_155_111 // sepolia + +export const formTestnet = /*#__PURE__*/ defineChain({ + id: 132_902, + name: 'Form Testnet', + nativeCurrency: { + decimals: 18, + name: 'Ethereum', + symbol: 'ETH', + }, + rpcUrls: { + public: { + http: ['https://sepolia-rpc.form.network/http'], + webSocket: ['wss://sepolia-rpc.form.network/ws'], + }, + default: { + http: ['https://sepolia-rpc.form.network/http'], + webSocket: ['wss://sepolia-rpc.form.network/ws'], + }, + }, + blockExplorers: { + etherscan: { + name: 'Form Testnet Explorer', + url: 'https://sepolia-explorer.form.network/', + }, + default: { + name: 'Form Testnet Explorer', + url: 'https://sepolia-explorer.form.network/', + }, + }, + contracts: { + ...chainConfig.contracts, + addressManager: { + [sourceId]: { + address: '0xd5C38fa934f7fd7477D4800F4f38a1c5BFdF1373', + }, + }, + l1CrossDomainMessenger: { + [sourceId]: { + address: '0x37A68565c4BE9700b3E3Ec60cC4416cAC3052FAa', + }, + }, + l2OutputOracle: { + [sourceId]: { + address: '0x9eA2239E65a59EC9C7F1ED4C116dD58Da71Fc1e2', + }, + }, + portal: { + [sourceId]: { + address: '0x60377e3cE15dF4CCA24c4beF076b60314240b032', + }, + }, + l1StandardBridge: { + [sourceId]: { + address: '0xD4531f633942b2725896F47cD2aFd260b44Ab1F7', + }, + }, + multicall3: { + address: '0xcA11bde05977b3631167028862bE2a173976CA11', + }, + }, + testnet: true, + sourceId, +}) From c184b8688c98a4844cd890fa39f08279a2d07309 Mon Sep 17 00:00:00 2001 From: jxom <7336481+jxom@users.noreply.github.com> Date: Mon, 24 Feb 2025 06:36:44 +1100 Subject: [PATCH 2/3] Update form.ts --- src/chains/definitions/form.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/chains/definitions/form.ts b/src/chains/definitions/form.ts index 6a7dab21cc..114b9b2f3d 100644 --- a/src/chains/definitions/form.ts +++ b/src/chains/definitions/form.ts @@ -12,23 +12,15 @@ export const form = /*#__PURE__*/ defineChain({ symbol: 'ETH', }, rpcUrls: { - public: { - http: ['https://rpc.form.network/http'], - webSocket: ['wss://rpc.form.network/ws'], - }, default: { http: ['https://rpc.form.network/http'], webSocket: ['wss://rpc.form.network/ws'], }, }, blockExplorers: { - etherscan: { - name: 'Form Explorer', - url: 'https://explorer.form.network/', - }, default: { name: 'Form Explorer', - url: 'https://explorer.form.network/', + url: 'https://explorer.form.network', }, }, contracts: { From e47084c9f034664226135b3827638b6b4f70aa1c Mon Sep 17 00:00:00 2001 From: jxom <7336481+jxom@users.noreply.github.com> Date: Mon, 24 Feb 2025 06:37:03 +1100 Subject: [PATCH 3/3] Update formTestnet.ts --- src/chains/definitions/formTestnet.ts | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/chains/definitions/formTestnet.ts b/src/chains/definitions/formTestnet.ts index ebd1888f24..022a93418c 100644 --- a/src/chains/definitions/formTestnet.ts +++ b/src/chains/definitions/formTestnet.ts @@ -12,23 +12,15 @@ export const formTestnet = /*#__PURE__*/ defineChain({ symbol: 'ETH', }, rpcUrls: { - public: { - http: ['https://sepolia-rpc.form.network/http'], - webSocket: ['wss://sepolia-rpc.form.network/ws'], - }, default: { http: ['https://sepolia-rpc.form.network/http'], webSocket: ['wss://sepolia-rpc.form.network/ws'], }, }, blockExplorers: { - etherscan: { - name: 'Form Testnet Explorer', - url: 'https://sepolia-explorer.form.network/', - }, default: { name: 'Form Testnet Explorer', - url: 'https://sepolia-explorer.form.network/', + url: 'https://sepolia-explorer.form.network', }, }, contracts: {