diff --git a/.env.sample b/.env.sample index 2c7e59ee..e7ac0585 100644 --- a/.env.sample +++ b/.env.sample @@ -15,6 +15,7 @@ NX_GNOSISCHAIN_RPC= NX_OPTIMISM_RPC= NX_POLYGONPOS_RPC= NX_ARBITRUM_RPC= +NX_BASESCAN_KEY= # alternatively you can use one of the defaults below # Rivet or Alchemy required @@ -24,4 +25,4 @@ NX_ETHEREUM_ALCHEMY_KEY= NX_OPTIMISM_ALCHEMY_KEY= NX_ARBITRUM_ALCHEMY_KEY= NX_POLYGONPOS_ALCHEMY_KEY= - +NX_BASE_ALCHEMY_KEY= diff --git a/.github/workflows/ci_develop.yaml b/.github/workflows/ci_develop.yaml index bea2c121..6932df49 100644 --- a/.github/workflows/ci_develop.yaml +++ b/.github/workflows/ci_develop.yaml @@ -38,6 +38,8 @@ jobs: echo NX_OPTIMISMSCAN_KEY=${{ secrets.NX_OPTIMISMSCAN_KEY }} >> .env echo NX_GRAPH_API_KEY_MAINNET=${{ secrets.NX_GRAPH_API_KEY_MAINNET }} >> .env echo NX_WALLET_CONNECT_ID=${{ secrets.NX_WALLET_CONNECT_ID }} >> .env + echo NX_BASESCAN_KEY=${{ secrets.NX_BASESCAN_KEY }} >> .env + echo NX_BASE_ALCHEMY_KEY=${{ secrets.NX_BASE_ALCHEMY_KEY }} >> .env - name: Install dependencies run: yarn install diff --git a/.github/workflows/ci_main.yaml b/.github/workflows/ci_main.yaml index c4c02db2..0dd83ba1 100644 --- a/.github/workflows/ci_main.yaml +++ b/.github/workflows/ci_main.yaml @@ -39,6 +39,8 @@ jobs: echo NX_OPTIMISMSCAN_KEY=${{ secrets.NX_OPTIMISMSCAN_KEY }} >> .env echo NX_GRAPH_API_KEY_MAINNET=${{ secrets.NX_GRAPH_API_KEY_MAINNET }} >> .env echo NX_WALLET_CONNECT_ID=${{ secrets.NX_WALLET_CONNECT_ID }} >> .env + echo NX_BASESCAN_KEY=${{ secrets.NX_BASESCAN_KEY }} >> .env + echo NX_BASE_ALCHEMY_KEY=${{ secrets.NX_BASE_ALCHEMY_KEY }} >> .env - name: Install dependencies run: yarn install diff --git a/apps/summon-safe/src/utils/modules.ts b/apps/summon-safe/src/utils/modules.ts index 687d7a6d..8193c98a 100644 --- a/apps/summon-safe/src/utils/modules.ts +++ b/apps/summon-safe/src/utils/modules.ts @@ -50,7 +50,7 @@ export const MODULES: Record = { singletonAddress: '0x7c1Db931F804271E39b04E68221b71Ca94E9AFa5', }, }, - // '0x2105': {}, + '0x2105': {}, }, params: [ { @@ -191,7 +191,7 @@ export const MODULES: Record = { singletonAddress: '0x85C60D0674e161B7f9d1d40A2A46e4b788E7F057', }, }, - // '0x2105': {}, + '0x2105': {}, }, params: [ { @@ -283,7 +283,7 @@ export const MODULES: Record = { singletonAddress: '0x15f06a6dB8eC8D79Eaa49659210C1c58975a4056', }, }, - // '0x2105': {}, + '0x2105': {}, }, params: [ { @@ -368,7 +368,7 @@ export const MODULES: Record = { singletonAddress: '0x226E0601aa8b8CC34519c76Be00A7a6a8a4d97d2', }, }, - // '0x2105': {}, + '0x2105': {}, }, params: [ { @@ -449,7 +449,7 @@ export const MODULES: Record = { singletonAddress: '0x0C7F0fC0ddb95d7099ED97c10A2DE549c03E39F9', }, }, - // '0x2105': {}, + '0x2105': {}, }, params: [ { diff --git a/libs/keychain-utils/src/contractKeychains.ts b/libs/keychain-utils/src/contractKeychains.ts index 287e99fe..8811045c 100644 --- a/libs/keychain-utils/src/contractKeychains.ts +++ b/libs/keychain-utils/src/contractKeychains.ts @@ -9,7 +9,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x8a4A9E36106Ee290811B89e06e2faFE913507965', '0xa': '0x84561C97156a128662B62952890469214FDC87bf', '0xa4b1': '0x8a4A9E36106Ee290811B89e06e2faFE913507965', - // '0x2105': '0x97Aaa5be8B38795245f1c38A883B44cccdfB3E11', + '0x2105': '0x97Aaa5be8B38795245f1c38A883B44cccdfB3E11', }, V3_FACTORY_ORIGINAL: { '0x1': '0x7e988A9db2F8597735fc68D21060Daed948a3e8C', @@ -19,7 +19,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x7e988A9db2F8597735fc68D21060Daed948a3e8C', '0xa': '0x3E0eAdE343Ddc556a6Cf0f858e4f685ba303ce71', '0xa4b1': '0xb08Cc8C343cF6dC20d8cf51Fb2D6C436c6390dAa', - // '0x2105': '0x22e0382194AC1e9929E023bBC2fD2BA6b778E098', + '0x2105': '0x22e0382194AC1e9929E023bBC2fD2BA6b778E098', }, LOOT_SINGLETON: { '0x1': '0x0444AE984b9563C8480244693ED65F25B3C64a4E', @@ -29,7 +29,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x0444AE984b9563C8480244693ED65F25B3C64a4E', '0xa': '0x0444AE984b9563C8480244693ED65F25B3C64a4E', '0xa4b1': '0x0444AE984b9563C8480244693ED65F25B3C64a4E', - // '0x2105': '0x52acf023d38A31f7e7bC92cCe5E68d36cC9752d6', + '0x2105': '0x52acf023d38A31f7e7bC92cCe5E68d36cC9752d6', }, SHARES_SINGLETON: { '0x1': '0x8124Cbb807A7b64123F3dEc3EF64995d8B10d3Eb', @@ -39,7 +39,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x8124Cbb807A7b64123F3dEc3EF64995d8B10d3Eb', '0xa': '0x8124Cbb807A7b64123F3dEc3EF64995d8B10d3Eb', '0xa4b1': '0x8124Cbb807A7b64123F3dEc3EF64995d8B10d3Eb', - // '0x2105': '0xc650B598b095613cCddF0f49570FfA475175A5D5', + '0x2105': '0xc650B598b095613cCddF0f49570FfA475175A5D5', }, BAAL_SINGLETON: { '0x1': '0x5DcE1044A7E2E35D6524001796cee47252f18411', @@ -49,7 +49,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x5DcE1044A7E2E35D6524001796cee47252f18411', '0xa': '0x69f4D1788e39c87893C980c06EdF4b7f686e2938', '0xa4b1': '0x17234C0Ae25AF09fAf57B9D5ea2B93C1f220E800', - // '0x2105': '0xE0F33E95aF46EAd1Fe181d2A74919bff903cD5d4', + '0x2105': '0xE0F33E95aF46EAd1Fe181d2A74919bff903cD5d4', }, GNOSIS_MULTISEND: { '0x1': '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761', @@ -59,7 +59,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761', '0xa': '0x998739BFdAAdde7C933B942a68053933098f9EDa', '0xa4b1': '0xA238CBeb142c10Ef7Ad8442C6D1f9E89e07e7761', - // '0x2105': '0x998739BFdAAdde7C933B942a68053933098f9EDa', + '0x2105': '0x998739BFdAAdde7C933B942a68053933098f9EDa', }, GNOSIS_SIGNLIB: { '0x1': '0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2', @@ -69,7 +69,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2', '0xa': '0x98FFBBF51bb33A056B08ddf711f289936AafF717', '0xa4b1': '0xA65387F16B013cf2Af4605Ad8aA5ec25a2cbA3a2', - // '0x2105': '0x98FFBBF51bb33A056B08ddf711f289936AafF717', + '0x2105': '0x98FFBBF51bb33A056B08ddf711f289936AafF717', }, TRIBUTE_MINION: { '0x1': '0x5c17BFBaB751C5ddF1Ff267acF8fF919537F39Cf', @@ -79,7 +79,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x51498dDdd2A8cdeC82932E08A37eBaF346C38EFd', '0xa': '0x7707964B4C24A6b8b7B747F7507F56818857A7C2', '0xa4b1': '0x7707964B4C24A6b8b7B747F7507F56818857A7C2', - // '0x2105': '0x00768B047f73D88b6e9c14bcA97221d6E179d468', + '0x2105': '0x00768B047f73D88b6e9c14bcA97221d6E179d468', }, POSTER: { '0x1': '0x000000000000cd17345801aa8147b8d3950260ff', @@ -89,7 +89,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x000000000000cd17345801aa8147b8d3950260ff', '0xa': '0x000000000000cd17345801aa8147b8d3950260ff', '0xa4b1': '0x000000000000cd17345801aa8147b8d3950260ff', - // '0x2105': '0x000000000000cd17345801aa8147b8D3950260FF', + '0x2105': '0x000000000000cd17345801aa8147b8D3950260FF', }, VAULT_SUMMONER: { '0x1': '0x594E630efbe8dbd810c168e3878817a4094bB312', @@ -99,7 +99,7 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x594E630efbe8dbd810c168e3878817a4094bB312', '0xa': '0xb04111e7b4576164145EF97EB81fd43DA0F2D675', '0xa4b1': '0xC39E8D4DE75c6aC025a0C07dCd8Aeb0728C5DBF1', - // '0x2105': '0x2eF2fC8a18A914818169eFa183db480d31a90c5D', + '0x2105': '0x2eF2fC8a18A914818169eFa183db480d31a90c5D', }, ZODIAC_FACTORY: { '0x1': '0x00000000000DC7F163742Eb4aBEf650037b1f588', @@ -109,6 +109,6 @@ export const CONTRACT_KEYCHAINS: Record = { '0x89': '0x00000000000DC7F163742Eb4aBEf650037b1f588', '0xa': '0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC', '0xa4b1': '0x00000000000DC7F163742Eb4aBEf650037b1f588', - // '0x2105': '0x000000000000aDdB49795b0f9bA5BC298cDda236', + '0x2105': '0x000000000000aDdB49795b0f9bA5BC298cDda236', }, }; diff --git a/libs/keychain-utils/src/endpoints.ts b/libs/keychain-utils/src/endpoints.ts index cc7ae526..da5365e4 100644 --- a/libs/keychain-utils/src/endpoints.ts +++ b/libs/keychain-utils/src/endpoints.ts @@ -15,7 +15,8 @@ export const ENDPOINTS: KeychainList = { 'https://api.thegraph.com/subgraphs/name/hausdao/daohaus-v3-arbitrum', '0xaa36a7': 'https://api.thegraph.com/subgraphs/name/hausdao/daohaus-v3-sepolia', - // '0x2105': 'https://api.thegraph.com/subgraphs/name/hausdao/daohaus-v3-base', + '0x2105': + 'https://api.studio.thegraph.com/query/36740/daohaus-v3-base/version/latest', }, EXPLORER: { '0x1': 'https://etherscan.io', @@ -25,7 +26,7 @@ export const ENDPOINTS: KeychainList = { '0xa': 'https://optimistic.etherscan.io', '0xa4b1': 'https://arbiscan.io', '0xaa36a7': 'https://sepolia.etherscan.io', - // '0x2105': 'https://basescan.org', + '0x2105': 'https://basescan.org', }, GNOSIS_API: { '0x1': 'https://safe-transaction-mainnet.safe.global/api/v1', @@ -35,7 +36,7 @@ export const ENDPOINTS: KeychainList = { '0xa': 'https://safe-transaction-optimism.safe.global/api/v1', '0xa4b1': 'https://safe-transaction-arbitrum.safe.global/api/v1', '0xaa36a7': 'https://safe-transaction-sepolia.safe.global/api/v1', - // '0x2105': 'https://safe-transaction-base.safe.global/api/v1', + '0x2105': 'https://safe-transaction-base.safe.global/api/v1', }, GNOSIS_SAFE_UI: { '0x1': 'https://app.safe.global/eth', @@ -45,7 +46,7 @@ export const ENDPOINTS: KeychainList = { '0xa': 'https://app.safe.global/oeth', '0xa4b1': 'https://app.safe.global/arb', '0xaa36a7': 'https://app.safe.global/sep', - // '0x2105': 'https://app.safe.global/base', + '0x2105': 'https://app.safe.global/base', }, TABULA_GRAPH: { '0x5': @@ -101,7 +102,9 @@ export const HAUS_RPC_DEFAULTS = { '0xaa36a7': process.env['NX_RIVET_KEY'] ? `https://${process.env['NX_RIVET_KEY']}.sepolia.rpc.rivet.cloud/` : 'https://eth-sepolia.g.alchemy.com/v2/demo', - // '0x2105': '**TODO', + '0x2105': process.env['NX_BASE_ALCHEMY_KEY'] + ? `https://base.g.alchemy.com/v2/${process.env['NX_BASE_ALCHEMY_KEY']}` + : `https://base.llamarpc.com`, }; export const HAUS_RPC = { '0x1': process.env['NX_MAINNET_RPC'] @@ -125,7 +128,9 @@ export const HAUS_RPC = { '0xaa36a7': process.env['NX_SEPOLIA_RPC'] ? process.env['NX_SEPOLIA_RPC'] : HAUS_RPC_DEFAULTS['0xaa36a7'], - // '0x2105': '**TODO', + '0x2105': process.env['NX_BASE_RPC'] + ? process.env['NX_BASE_RPC'] + : HAUS_RPC_DEFAULTS['0x2105'], }; export const GRAPH_API_KEYS = { '0x1': process.env['NX_GRAPH_API_KEY_MAINNET'], @@ -148,5 +153,5 @@ export const ABI_EXPLORER_KEYS: Keychain = { '0xa': process.env['NX_OPTIMISMSCAN_KEY'], '0xa4b1': process.env['NX_ARBISCAN_KEY'], '0xaa36a7': process.env['NX_ETHERSCAN_KEY'], - // '0x2105': '**TODO', + '0x2105': process.env['NX_BASESCAN_KEY'], }; diff --git a/libs/keychain-utils/src/networkData.ts b/libs/keychain-utils/src/networkData.ts index 2217d0de..37509f39 100644 --- a/libs/keychain-utils/src/networkData.ts +++ b/libs/keychain-utils/src/networkData.ts @@ -65,13 +65,13 @@ export const HAUS_NETWORK_DATA: Keychain = { explorer: ENDPOINTS.EXPLORER['0xaa36a7'] as string, rpc: HAUS_RPC['0xaa36a7'] as string, }, - // '0x2105': { - // chainId: '0x2105', - // networkId: 8453, - // name: 'Base', - // symbol: 'ETH', - // tokenDecimals: 18, - // explorer: ENDPOINTS.EXPLORER['0x2105'] as string, - // rpc: '**TODO', - // }, + '0x2105': { + chainId: '0x2105', + networkId: 8453, + name: 'Base', + symbol: 'ETH', + tokenDecimals: 18, + explorer: ENDPOINTS.EXPLORER['0x2105'] as string, + rpc: HAUS_RPC['0x2105'] as string, + }, }; diff --git a/libs/keychain-utils/src/validNetworks.ts b/libs/keychain-utils/src/validNetworks.ts index 3dbd7a38..1d281068 100644 --- a/libs/keychain-utils/src/validNetworks.ts +++ b/libs/keychain-utils/src/validNetworks.ts @@ -6,5 +6,5 @@ export const VALID_NETWORKS = { '0x89': true, '0xa4b1': true, '0xaa36a7': true, - // '0x2105': false, + '0x2105': true, }; diff --git a/libs/keychain-utils/src/viemUtils.ts b/libs/keychain-utils/src/viemUtils.ts index 7dfd7274..4bb72cb8 100644 --- a/libs/keychain-utils/src/viemUtils.ts +++ b/libs/keychain-utils/src/viemUtils.ts @@ -5,7 +5,7 @@ import { gnosis, goerli, optimism, - // base, + base, sepolia, Chain, } from 'wagmi/chains'; @@ -19,5 +19,5 @@ export const VIEM_CHAINS: Keychain = { '0xa': optimism, '0xa4b1': arbitrum, '0xaa36a7': sepolia, - // '0x2105': base, + '0x2105': base, }; diff --git a/libs/tx-builder/src/utils/abi.ts b/libs/tx-builder/src/utils/abi.ts index 2d2407c3..82582816 100644 --- a/libs/tx-builder/src/utils/abi.ts +++ b/libs/tx-builder/src/utils/abi.ts @@ -53,7 +53,7 @@ const getABIUrl = ({ '0xa': `https://api-optimistic.etherscan.io/api?module=contract&action=getabi&address=${ABI_ADDRESS}&apikey=${explorerKeys[chainId]}`, '0xa4b1': `https://api.arbiscan.io/api?module=contract&action=getabi&address=${ABI_ADDRESS}&apiKey=${explorerKeys[chainId]}`, '0xaa36a7': `https://api-sepolia.etherscan.io/api?module=contract&action=getabi&address=${ABI_ADDRESS}&apikey=${explorerKeys[chainId]}`, - // '0x2105': '**TODO', + '0x2105': `https://api.basescan.org/api?module=contract&action=getabi&address=${ABI_ADDRESS}&apiKey=${explorerKeys[chainId]}`, }; return TEMPORARY_ABI_EXPLORER[chainId]?.replace(ABI_ADDRESS, contractAddress);