diff --git a/.gitleaksignore b/.gitleaksignore index 1894428c..50a5ccad 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -374,3 +374,45 @@ f47ff3a0f41adec19b37c7541dfd5a9abf2afad3:scripts/deployment/l2/globals_polygon_a f47ff3a0f41adec19b37c7541dfd5a9abf2afad3:scripts/deployment/l2/globals_polygon_mainnet.json:generic-api-key:2 905aaeef69534fd72e5094fcbcae62f3d66c7703:scripts/deployment/l2/globals_arbitrum_sepolia.json:generic-api-key:1 905aaeef69534fd72e5094fcbcae62f3d66c7703:scripts/deployment/l2/globals_arbitrum_sepolia.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_arbitrum_sepolia.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_base_mainnet.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_celo_alfajores.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_celo_mainnet.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_gnosis_chiado.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_optimistic_mainnet.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_optimistic_sepolia.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_polygon_amoy.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_polygon_mainnet.json:generic-api-key:1 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_arbitrum_sepolia.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_base_mainnet.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_celo_alfajores.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_celo_mainnet.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_gnosis_chiado.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_optimistic_mainnet.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_optimistic_sepolia.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_polygon_amoy.json:generic-api-key:2 +cffda3f4d86c865aad177a47d35bee8847bda8de:scripts/deployment/l2/globals_polygon_mainnet.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_arbitrum_sepolia.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_base_mainnet.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_celo_alfajores.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_celo_mainnet.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_gnosis_chiado.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_optimistic_mainnet.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_optimistic_sepolia.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_polygon_amoy.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_polygon_mainnet.json:generic-api-key:1 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_arbitrum_sepolia.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_base_mainnet.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_celo_alfajores.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_celo_mainnet.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_gnosis_chiado.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_optimistic_mainnet.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_optimistic_sepolia.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_polygon_amoy.json:generic-api-key:2 +ef62598164a80b6f475cdd52a7b541eed19b9cf4:scripts/deployment/l2/globals_polygon_mainnet.json:generic-api-key:2 +eff9ec09651b73fcbd7270f070b2747e6f408157:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:1 +eff9ec09651b73fcbd7270f070b2747e6f408157:scripts/deployment/l2/globals_arbitrum_one.json:generic-api-key:2 diff --git a/scripts/deployment/l2/globals_arbitrum_one.json b/scripts/deployment/l2/globals_arbitrum_one.json index a95b7f51..a4715c1f 100644 --- a/scripts/deployment/l2/globals_arbitrum_one.json +++ b/scripts/deployment/l2/globals_arbitrum_one.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"arbitrumOne","networkURL":"https://arb1.arbitrum.io/rpc","gasPriceInGwei":"2","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"0x4d30F68F5AA342d296d4deE4bB1Cacca912dA70F","serviceRegistryAddress":"0xE3607b00E75f6405248323A9417ff6b39B244b50","gnosisSafeMultisigImplementationAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","gnosisSafeSameAddressMultisigImplementationAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","operatorWhitelistAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","serviceRegistryTokenUtilityAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","serviceManagerTokenAddress":"0x34C895f302D0b5cf52ec0Edd3945321EB0f83dd5","olasAddress":"0x064F8B858C2A603e1b106a2039f5446D32dc81c1","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","stakingTokenAddress":"0x04b0007b2aFb398015B76e5f22993a1fddF83644","stakingNativeTokenAddress":"","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x7Fd1F4b764fA41d19fe3f63C85d12bf64d2bbf68","stakingFactoryAddress":"0xEB5638eefE289691EcE01943f768EDBF96258a80"} \ No newline at end of file +{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"arbitrumOne","networkURL":"https://arb1.arbitrum.io/rpc","gasPriceInGwei":"2","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","timelockAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","bridgeMediatorAddress":"0x4d30F68F5AA342d296d4deE4bB1Cacca912dA70F","serviceRegistryAddress":"0xE3607b00E75f6405248323A9417ff6b39B244b50","gnosisSafeMultisigImplementationAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","gnosisSafeSameAddressMultisigImplementationAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","operatorWhitelistAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","serviceRegistryTokenUtilityAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","serviceManagerTokenAddress":"0x34C895f302D0b5cf52ec0Edd3945321EB0f83dd5","olasAddress":"0x064F8B858C2A603e1b106a2039f5446D32dc81c1","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","stakingTokenAddress":"0x04b0007b2aFb398015B76e5f22993a1fddF83644","stakingNativeTokenAddress":"","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x7Fd1F4b764fA41d19fe3f63C85d12bf64d2bbf68","stakingFactoryAddress":"0xEB5638eefE289691EcE01943f768EDBF96258a80"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_arbitrum_sepolia.json b/scripts/deployment/l2/globals_arbitrum_sepolia.json index 51cf1945..884a55e8 100644 --- a/scripts/deployment/l2/globals_arbitrum_sepolia.json +++ b/scripts/deployment/l2/globals_arbitrum_sepolia.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"arbitrumSepolia","networkURL":"https://sepolia-rollup.arbitrum.io/rpc","gasPriceInGwei":"1","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","olasAddress":"0x2AeD71638128A3811F5e5971a397fFe6A8587caa","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","stakingTokenAddress":"0xea930a028793FeBE9F6A2CFb62c95620dB91da71","stakingNativeTokenAddress":"0xA9D794548486D15BfbCe2b8b5F5518b739fa8A4b","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0x661E609d03bb63819f2F47b9202E15e1826f5B5f","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x9385d4E53c72a858C451D41f58Fcb8C070bDd18A","stakingFactoryAddress":"0xd64Cf67500b7d15A41E02DDeb40F3A73CB533eB5"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"arbitrumSepolia","networkURL":"https://sepolia-rollup.arbitrum.io/rpc","gasPriceInGwei":"1","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","olasAddress":"0x2AeD71638128A3811F5e5971a397fFe6A8587caa","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","stakingTokenAddress":"0xea930a028793FeBE9F6A2CFb62c95620dB91da71","stakingNativeTokenAddress":"0xA9D794548486D15BfbCe2b8b5F5518b739fa8A4b","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0x661E609d03bb63819f2F47b9202E15e1826f5B5f","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x9385d4E53c72a858C451D41f58Fcb8C070bDd18A","stakingFactoryAddress":"0xd64Cf67500b7d15A41E02DDeb40F3A73CB533eB5"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_base_mainnet.json b/scripts/deployment/l2/globals_base_mainnet.json index b364ab53..485c2b9b 100644 --- a/scripts/deployment/l2/globals_base_mainnet.json +++ b/scripts/deployment/l2/globals_base_mainnet.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"2","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","olasAddress":"0x54330d28ca3357F294334BDC454a032e7f353416","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","operatorWhitelistAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","serviceRegistryTokenUtilityAddress":"0x34C895f302D0b5cf52ec0Edd3945321EB0f83dd5","serviceManagerTokenAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","gnosisSafeMultisigImplementationAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","gnosisSafeSameAddressMultisigImplementationAddress":"0xFbBEc0C8b13B38a9aC0499694A69a10204c5E2aB","stakingTokenAddress":"0xEB5638eefE289691EcE01943f768EDBF96258a80","stakingNativeTokenAddress":"","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x10c5525F77F13b28f42c5626240c001c2D57CAd4","stakingFactoryAddress":"0x1cEe30D08943EB58EFF84DD1AB44a6ee6FEff63a"} \ No newline at end of file +{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"base","networkURL":"https://mainnet.base.org","gasPriceInGwei":"2","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA","olasAddress":"0x54330d28ca3357F294334BDC454a032e7f353416","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","operatorWhitelistAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","serviceRegistryTokenUtilityAddress":"0x34C895f302D0b5cf52ec0Edd3945321EB0f83dd5","serviceManagerTokenAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","gnosisSafeMultisigImplementationAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","gnosisSafeSameAddressMultisigImplementationAddress":"0xFbBEc0C8b13B38a9aC0499694A69a10204c5E2aB","stakingTokenAddress":"0xEB5638eefE289691EcE01943f768EDBF96258a80","stakingNativeTokenAddress":"","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x10c5525F77F13b28f42c5626240c001c2D57CAd4","stakingFactoryAddress":"0x1cEe30D08943EB58EFF84DD1AB44a6ee6FEff63a","L1CrossDomainMessengerProxyAddress":"0xE49CB081e8d96920C38aA7AB90cb0294ab4Bc8EA"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_celo_alfajores.json b/scripts/deployment/l2/globals_celo_alfajores.json index 30e2817a..de764e16 100644 --- a/scripts/deployment/l2/globals_celo_alfajores.json +++ b/scripts/deployment/l2/globals_celo_alfajores.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"celoAlfajores","networkURL":"https://alfajores-forno.celo-testnet.org","gasPriceInGwei":"10","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"","olasAddress":"","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","stakingParams":{"maxNumServices":"100","rewardsPerSecond":"1000000000000000","minStakingDeposit":"50000000000000000000","minNumStakingPeriods":"3","maxNumInactivityPeriods":"3","livenessPeriod":"86400","livenessRatio":"700000000000000","numAgentInstances":"1","agentIds":["12"],"threshold":"0","configHash":"0x0000000000000000000000000000000000000000000000000000000000000000"},"stakingTokenAddress":"0x4cEB52802ef86edF8796632546d89e55c87a0901","stakingFactoryAddress":"0xaC26774616bbeD41b0CB69EA2ae7de366F430b23"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"celoAlfajores","networkURL":"https://alfajores-forno.celo-testnet.org","gasPriceInGwei":"10","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"","olasAddress":"","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_celo_mainnet.json b/scripts/deployment/l2/globals_celo_mainnet.json index 8000a699..a45ce789 100644 --- a/scripts/deployment/l2/globals_celo_mainnet.json +++ b/scripts/deployment/l2/globals_celo_mainnet.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"celo","networkURL":"https://forno.celo.org","gasPriceInGwei":"10","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"0x397125902ED2cA2d42104F621f448A2cE1bC8Fb7","olasAddress":"0xaCFfAe8e57Ec6E394Eb1b41939A8CF7892DbDc51","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0xE3607b00E75f6405248323A9417ff6b39B244b50","operatorWhitelistAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","serviceRegistryTokenUtilityAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","serviceManagerTokenAddress":"0x34C895f302D0b5cf52ec0Edd3945321EB0f83dd5","gnosisSafeMultisigImplementationAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","gnosisSafeSameAddressMultisigImplementationAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","stakingTokenAddress":"0xe1E1B286EbE95b39F785d8069f2248ae9C41b7a9","stakingNativeTokenAddress":"","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0xc40C79C275F3fA1F3f4c723755C81ED2D53A8D81","stakingFactoryAddress":"0x1c2cD884127b080F940b7546c1e9aaf525b1FA55"} \ No newline at end of file +{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"celo","networkURL":"https://forno.celo.org","gasPriceInGwei":"10","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"0x397125902ED2cA2d42104F621f448A2cE1bC8Fb7","olasAddress":"0xaCFfAe8e57Ec6E394Eb1b41939A8CF7892DbDc51","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0xE3607b00E75f6405248323A9417ff6b39B244b50","operatorWhitelistAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","serviceRegistryTokenUtilityAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","serviceManagerTokenAddress":"0x34C895f302D0b5cf52ec0Edd3945321EB0f83dd5","gnosisSafeMultisigImplementationAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","gnosisSafeSameAddressMultisigImplementationAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","stakingTokenAddress":"0xe1E1B286EbE95b39F785d8069f2248ae9C41b7a9","stakingNativeTokenAddress":"","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0xc40C79C275F3fA1F3f4c723755C81ED2D53A8D81","stakingFactoryAddress":"0x1c2cD884127b080F940b7546c1e9aaf525b1FA55","wormholeL1MessageRelayerAddress":"0x27428DD2d3DD32A4D7f7C497eAaa23130d894911","wormholeMessengerAddress":"0x397125902ED2cA2d42104F621f448A2cE1bC8Fb7"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_ethereum_mainnet.json b/scripts/deployment/l2/globals_ethereum_mainnet.json index e8715239..48dc1d4a 100644 --- a/scripts/deployment/l2/globals_ethereum_mainnet.json +++ b/scripts/deployment/l2/globals_ethereum_mainnet.json @@ -12,7 +12,7 @@ "multisigProxyHash130": "0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000", "stakingNativeTokenAddress":"", "stakingTokenAddress":"0x0Dc23eEf3bC64CF3cbd8f9329B57AE4C4f28d5d2", - "minStakingDepositLimit":"1000000000000000000000", + "minStakingDepositLimit":"10000000000000000000000", "timeForEmissionsLimit":"2592000", "numServicesLimit":"100", "apyLimit":"3000000000000000000", diff --git a/scripts/deployment/l2/globals_gnosis_chiado.json b/scripts/deployment/l2/globals_gnosis_chiado.json index 4638e2df..3fa63b04 100644 --- a/scripts/deployment/l2/globals_gnosis_chiado.json +++ b/scripts/deployment/l2/globals_gnosis_chiado.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"chiado","networkURL":"https://rpc.chiadochain.net","gasPriceInGwei":"3","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","AMBContractProxyForeignAddress":"0x87A19d769D875964E9Cd41dDBfc397B2543764E6","bridgeMediatorOriginalAddress":"0x670Ac235EE13C0B2a5065282bBB0c61cfB354592","bridgeMediatorAddress":"0x0a50009D55Ed5700ac8FF713709d5Ad5fa843896","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","serviceManagerAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","gnosisSafeMultisigImplementationAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","gnosisSafeSameAddressMultisigImplementationAddress":"0xE16adc7777B7C2a0d35033bd3504C028AB28EE8b","operatorWhitelistAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","serviceRegistryTokenUtilityAddress":"0xc2c7E40674f1C7Bb99eFe5680Efd79842502bED4","serviceManagerTokenAddress":"0xc965a32185590Eb5a5fffDba29E96126b7650eDe","olasAddress":"0x9b03e7D8B3c3ea3B56431baD5f9aA16070E10cE2","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","stakingNativeTokenAddress":"0xEC029Ed450FB91A88420f80B8940C7691841Bf2f","stakingTokenAddress":"0x00c3B912FF54B2a7E37D495a496f025D51fb8058","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0xa2AA89938805836077aB0724f335142da7A27085","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x63b0f322837a7160B7E3d95C60aAaeB4EF1aECcb","stakingFactoryAddress":"0x164192772C363DD391d1fb3D396cd1d9FB10def1"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"chiado","networkURL":"https://rpc.chiadochain.net","gasPriceInGwei":"3","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","AMBContractProxyForeignAddress":"0x87A19d769D875964E9Cd41dDBfc397B2543764E6","bridgeMediatorOriginalAddress":"0x670Ac235EE13C0B2a5065282bBB0c61cfB354592","bridgeMediatorAddress":"0x0a50009D55Ed5700ac8FF713709d5Ad5fa843896","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","serviceManagerAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","gnosisSafeMultisigImplementationAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","gnosisSafeSameAddressMultisigImplementationAddress":"0xE16adc7777B7C2a0d35033bd3504C028AB28EE8b","operatorWhitelistAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","serviceRegistryTokenUtilityAddress":"0xc2c7E40674f1C7Bb99eFe5680Efd79842502bED4","serviceManagerTokenAddress":"0xc965a32185590Eb5a5fffDba29E96126b7650eDe","olasAddress":"0x9b03e7D8B3c3ea3B56431baD5f9aA16070E10cE2","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","stakingNativeTokenAddress":"0xEC029Ed450FB91A88420f80B8940C7691841Bf2f","stakingTokenAddress":"0x00c3B912FF54B2a7E37D495a496f025D51fb8058","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0xa2AA89938805836077aB0724f335142da7A27085","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x63b0f322837a7160B7E3d95C60aAaeB4EF1aECcb","stakingFactoryAddress":"0x164192772C363DD391d1fb3D396cd1d9FB10def1"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_optimistic_mainnet.json b/scripts/deployment/l2/globals_optimistic_mainnet.json index 770dea88..5229c893 100644 --- a/scripts/deployment/l2/globals_optimistic_mainnet.json +++ b/scripts/deployment/l2/globals_optimistic_mainnet.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"optimistic","networkURL":"https://mainnet.optimism.io","gasPriceInGwei":"2","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"0x87c511c8aE3fAF0063b3F3CF9C6ab96c4AA5C60c","olasAddress":"0xFC2E6e6BCbd49ccf3A5f029c79984372DcBFE527","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","operatorWhitelistAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","serviceRegistryTokenUtilityAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","serviceManagerTokenAddress":"0xFbBEc0C8b13B38a9aC0499694A69a10204c5E2aB","gnosisSafeMultisigImplementationAddress":"0xE43d4F4103b623B61E095E8bEA34e1bc8979e168","gnosisSafeSameAddressMultisigImplementationAddress":"0xb09CcF0Dbf0C178806Aaee28956c74bd66d21f73","stakingTokenAddress":"0x63C2c53c09dE534Dd3bc0b7771bf976070936bAC","stakingNativeTokenAddress":"","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x526E064cB694E8f5B7DB299158e17F33055B3943","stakingFactoryAddress":"0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8"} \ No newline at end of file +{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"optimistic","networkURL":"https://mainnet.optimism.io","gasPriceInGwei":"2","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","bridgeMediatorAddress":"0x87c511c8aE3fAF0063b3F3CF9C6ab96c4AA5C60c","olasAddress":"0xFC2E6e6BCbd49ccf3A5f029c79984372DcBFE527","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","operatorWhitelistAddress":"0x63e66d7ad413C01A7b49C7FF4e3Bb765C4E4bd1b","serviceRegistryTokenUtilityAddress":"0xBb7e1D6Cb6F243D6bdE81CE92a9f2aFF7Fbe7eac","serviceManagerTokenAddress":"0xFbBEc0C8b13B38a9aC0499694A69a10204c5E2aB","gnosisSafeMultisigImplementationAddress":"0xE43d4F4103b623B61E095E8bEA34e1bc8979e168","gnosisSafeSameAddressMultisigImplementationAddress":"0xb09CcF0Dbf0C178806Aaee28956c74bd66d21f73","stakingTokenAddress":"0x63C2c53c09dE534Dd3bc0b7771bf976070936bAC","stakingNativeTokenAddress":"","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x526E064cB694E8f5B7DB299158e17F33055B3943","stakingFactoryAddress":"0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8","L1CrossDomainMessengerProxyAddress":"0x25ace71c97B33Cc4729CF772ae268934F7ab5fA1"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_optimistic_sepolia.json b/scripts/deployment/l2/globals_optimistic_sepolia.json index 0f2d1fff..bf5eab59 100644 --- a/scripts/deployment/l2/globals_optimistic_sepolia.json +++ b/scripts/deployment/l2/globals_optimistic_sepolia.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"optimisticSepolia","networkURL":"https://sepolia.optimism.io","gasPriceInGwei":"2","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"0x670Ac235EE13C0B2a5065282bBB0c61cfB354592","olasAddress":"0x01B8b6384298D4848E3BE63D4C9D17830EeE488A","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","stakingTokenAddress":"0x57f3703D281Fd7b3896969086Cf14Aa6Ace99d92","stakingNativeTokenAddress":"0x87ecEccEDA41A6dF29FFC780c028510b3198DC74","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0xf91962bEEF99cc53adD71Aa035CBEFF9Ec062728","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x357da3967BaB7aed076cC9eE150ef2980A6ccD44","stakingFactoryAddress":"0x3ac32cE492d2bDaf11C8f43Edc16FCa9b4b65675"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"optimisticSepolia","networkURL":"https://sepolia.optimism.io","gasPriceInGwei":"2","gnosisSafeAddress":"0x69f4D1788e39c87893C980c06EdF4b7f686e2938","gnosisSafeProxyFactoryAddress":"0xC22834581EbC8527d974F8a1c97E1bEA4EF910BC","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry","serviceRegistrySymbol":"AUTONOLAS-SERVICE-V1","bridgeMediatorAddress":"0x670Ac235EE13C0B2a5065282bBB0c61cfB354592","olasAddress":"0x01B8b6384298D4848E3BE63D4C9D17830EeE488A","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","stakingTokenAddress":"0x57f3703D281Fd7b3896969086Cf14Aa6Ace99d92","stakingNativeTokenAddress":"0x87ecEccEDA41A6dF29FFC780c028510b3198DC74","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0xf91962bEEF99cc53adD71Aa035CBEFF9Ec062728","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x357da3967BaB7aed076cC9eE150ef2980A6ccD44","stakingFactoryAddress":"0x3ac32cE492d2bDaf11C8f43Edc16FCa9b4b65675"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_polygon_amoy.json b/scripts/deployment/l2/globals_polygon_amoy.json index 8f8523ee..b2f685e3 100644 --- a/scripts/deployment/l2/globals_polygon_amoy.json +++ b/scripts/deployment/l2/globals_polygon_amoy.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"polygonAmoy","networkURL":"https://polygon-amoy.g.alchemy.com/v2/","gasPriceInGwei":"40","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","fxRootAddress":"","bridgeMediatorAddress":"","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","serviceManagerAddress":"","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","olasAddress":"0xeCD870085AA3bab4aE12F675811122da4173C6a9","stakingTokenAddress":"0x945550dECe7E40ae70C6ebf5699637927eAF13E9","stakingNativeTokenAddress":"0x34235f9D447f9F54167e2Ac7A0F4283cB3fAD669","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","stakingFactoryAddress":"0xc2c7E40674f1C7Bb99eFe5680Efd79842502bED4"} \ No newline at end of file +{"contractVerification":true,"useLedger":false,"derivationPath":"m/44'/60'/2'/0/0","providerName":"polygonAmoy","networkURL":"https://polygon-amoy.g.alchemy.com/v2/","gasPriceInGwei":"40","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","fxRootAddress":"","bridgeMediatorAddress":"","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","serviceRegistryAddress":"0x31D3202d8744B16A120117A053459DDFAE93c855","serviceManagerAddress":"","gnosisSafeMultisigImplementationAddress":"0x19936159B528C66750992C3cBcEd2e71cF4E4824","gnosisSafeSameAddressMultisigImplementationAddress":"0x10100e74b7F706222F8A7C0be9FC7Ae1717Ad8B2","operatorWhitelistAddress":"0x29086141ecdc310058fc23273F8ef7881d20C2f7","serviceRegistryTokenUtilityAddress":"0xeB49bE5DF00F74bd240DE4535DDe6Bc89CEfb994","serviceManagerTokenAddress":"0x5BA58970c2Ae16Cf6218783018100aF2dCcFc915","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","olasAddress":"0xeCD870085AA3bab4aE12F675811122da4173C6a9","stakingTokenAddress":"0x945550dECe7E40ae70C6ebf5699637927eAF13E9","stakingNativeTokenAddress":"0x34235f9D447f9F54167e2Ac7A0F4283cB3fAD669","livenessRatio":"700000000000000","stakingActivityCheckerAddress":"0x94676070018ff7D09BC32DAc6bb01Ae67282b8E8","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x6f7661F52fE1919996d0A4F68D09B344093a349d","stakingFactoryAddress":"0xc2c7E40674f1C7Bb99eFe5680Efd79842502bED4"} \ No newline at end of file diff --git a/scripts/deployment/l2/globals_polygon_mainnet.json b/scripts/deployment/l2/globals_polygon_mainnet.json index e0e86999..c1d27f91 100644 --- a/scripts/deployment/l2/globals_polygon_mainnet.json +++ b/scripts/deployment/l2/globals_polygon_mainnet.json @@ -1 +1 @@ -{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"polygon","networkURL":"https://polygon-mainnet.g.alchemy.com/v2/","gasPriceInGwei":"100","timelockAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","fxRootAddress":"0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2","bridgeMediatorAddress":"0x9338b5153AE39BB89f50468E608eD9d764B755fD","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","serviceRegistryAddress":"0xE3607b00E75f6405248323A9417ff6b39B244b50","serviceManagerAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","gnosisSafeMultisigImplementationAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","gnosisSafeSameAddressMultisigImplementationAddress":"0xd8BCC126ff31d2582018715d5291A508530587b0","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","olasAddress":"0xFEF5d947472e72Efbb2E388c730B7428406F2F95","operatorWhitelistAddress":"0x526E064cB694E8f5B7DB299158e17F33055B3943","serviceRegistryTokenUtilityAddress":"0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8","serviceManagerTokenAddress":"0x04b0007b2aFb398015B76e5f22993a1fddF83644","stakingTokenAddress":"0x4aba1Cf7a39a51D75cBa789f5f21cf4882162519","stakingNativeTokenAddress":"","minStakingDepositLimit":"1000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x8Bc0a5c5B1612A16983B01ecd7ae130E728390CB","stakingFactoryAddress":"0x46C0D07F55d4F9B5Eed2Fc9680B5953e5fd7b461"} \ No newline at end of file +{"contractVerification":true,"useLedger":true,"derivationPath":"m/44'/60'/2'/0/0","providerName":"polygon","networkURL":"https://polygon-mainnet.g.alchemy.com/v2/","gasPriceInGwei":"100","timelockAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","gnosisSafeAddress":"0xd9Db270c1B5E3Bd161E8c8503c55cEABeE709552","gnosisSafeProxyFactoryAddress":"0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2","fxRootAddress":"0xfe5e5D361b2ad62c541bAb87C45a0B9B018389a2","bridgeMediatorAddress":"0x9338b5153AE39BB89f50468E608eD9d764B755fD","baseURI":"https://gateway.autonolas.tech/ipfs/","serviceRegistryName":"Service Registry L2","serviceRegistrySymbol":"AUTONOLAS-SERVICE-L2-V1","serviceRegistryAddress":"0xE3607b00E75f6405248323A9417ff6b39B244b50","serviceManagerAddress":"0x3C1fF68f5aa342D296d4DEe4Bb1cACCA912D95fE","gnosisSafeMultisigImplementationAddress":"0x3d77596beb0f130a4415df3D2D8232B3d3D31e44","gnosisSafeSameAddressMultisigImplementationAddress":"0xd8BCC126ff31d2582018715d5291A508530587b0","multisigProxyHash130":"0xb89c1b3bdf2cf8827818646bce9a8f6e372885f8c55e5c07acbd307cb133b000","olasAddress":"0xFEF5d947472e72Efbb2E388c730B7428406F2F95","operatorWhitelistAddress":"0x526E064cB694E8f5B7DB299158e17F33055B3943","serviceRegistryTokenUtilityAddress":"0xa45E64d13A30a51b91ae0eb182e88a40e9b18eD8","serviceManagerTokenAddress":"0x04b0007b2aFb398015B76e5f22993a1fddF83644","stakingTokenAddress":"0x4aba1Cf7a39a51D75cBa789f5f21cf4882162519","stakingNativeTokenAddress":"","minStakingDepositLimit":"10000000000000000000000","timeForEmissionsLimit":"2592000","numServicesLimit":"100","apyLimit":"3000000000000000000","stakingVerifierAddress":"0x8Bc0a5c5B1612A16983B01ecd7ae130E728390CB","stakingFactoryAddress":"0x46C0D07F55d4F9B5Eed2Fc9680B5953e5fd7b461"} \ No newline at end of file diff --git a/scripts/proposals/proposal_01_service_registry_l2_change_drainer_polygon.js b/scripts/proposals/proposal_01_service_registry_l2_change_drainer_polygon.js index e9e91ead..01c57bd3 100644 --- a/scripts/proposals/proposal_01_service_registry_l2_change_drainer_polygon.js +++ b/scripts/proposals/proposal_01_service_registry_l2_change_drainer_polygon.js @@ -4,7 +4,7 @@ const { ethers } = require("ethers"); async function main() { const fs = require("fs"); - // Polygon mainnet globals file + // Mainnet globals file const globalsFile = "globals.json"; const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); const parsedData = JSON.parse(dataFromJSON); diff --git a/scripts/proposals/proposal_02_service_registry_l2_change_drainer_gnosis.js b/scripts/proposals/proposal_02_service_registry_l2_change_drainer_gnosis.js index 85de7cf8..33a3ec12 100644 --- a/scripts/proposals/proposal_02_service_registry_l2_change_drainer_gnosis.js +++ b/scripts/proposals/proposal_02_service_registry_l2_change_drainer_gnosis.js @@ -4,7 +4,7 @@ const { ethers } = require("ethers"); async function main() { const fs = require("fs"); - // Polygon mainnet globals file + // Mainnet globals file const globalsFile = "globals.json"; const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); const parsedData = JSON.parse(dataFromJSON); diff --git a/scripts/proposals/proposal_04_service_registry_l2_change_manager_gnosis.js b/scripts/proposals/proposal_04_service_registry_l2_change_manager_gnosis.js index 426b86f1..d0833643 100644 --- a/scripts/proposals/proposal_04_service_registry_l2_change_manager_gnosis.js +++ b/scripts/proposals/proposal_04_service_registry_l2_change_manager_gnosis.js @@ -4,7 +4,7 @@ const { ethers } = require("ethers"); async function main() { const fs = require("fs"); - // Polygon mainnet globals file + // Mainnet globals file const globalsFile = "globals.json"; const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); const parsedData = JSON.parse(dataFromJSON); diff --git a/scripts/proposals/proposal_05_service_registry_l2_change_multisig_permission_gnosis.js b/scripts/proposals/proposal_05_service_registry_l2_change_multisig_permission_gnosis.js index ca129f69..9d051310 100644 --- a/scripts/proposals/proposal_05_service_registry_l2_change_multisig_permission_gnosis.js +++ b/scripts/proposals/proposal_05_service_registry_l2_change_multisig_permission_gnosis.js @@ -4,7 +4,7 @@ const { ethers } = require("ethers"); async function main() { const fs = require("fs"); - // Polygon mainnet globals file + // Mainnet globals file const globalsFile = "globals.json"; const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); const parsedData = JSON.parse(dataFromJSON); diff --git a/scripts/proposals/proposal_06_service_registry_l2_change_multisig_permission_polygon.js b/scripts/proposals/proposal_06_service_registry_l2_change_multisig_permission_polygon.js index 382884c7..eb798871 100644 --- a/scripts/proposals/proposal_06_service_registry_l2_change_multisig_permission_polygon.js +++ b/scripts/proposals/proposal_06_service_registry_l2_change_multisig_permission_polygon.js @@ -4,7 +4,7 @@ const { ethers } = require("ethers"); async function main() { const fs = require("fs"); - // Polygon mainnet globals file + // Mainnet globals file const globalsFile = "globals.json"; const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); const parsedData = JSON.parse(dataFromJSON); diff --git a/scripts/proposals/proposal_08_service_registry_l2_change_manager_polygon.js b/scripts/proposals/proposal_08_service_registry_l2_change_manager_polygon.js index bb492ccb..8b3a996b 100644 --- a/scripts/proposals/proposal_08_service_registry_l2_change_manager_polygon.js +++ b/scripts/proposals/proposal_08_service_registry_l2_change_manager_polygon.js @@ -4,7 +4,7 @@ const { ethers } = require("ethers"); async function main() { const fs = require("fs"); - // Polygon mainnet globals file + // Mainnet globals file const globalsFile = "globals.json"; const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); const parsedData = JSON.parse(dataFromJSON); diff --git a/scripts/proposals/proposal_10_staking_verifier_change_limits_gnosis.js b/scripts/proposals/proposal_10_staking_verifier_change_limits_gnosis.js index b3337637..2ce62b2d 100644 --- a/scripts/proposals/proposal_10_staking_verifier_change_limits_gnosis.js +++ b/scripts/proposals/proposal_10_staking_verifier_change_limits_gnosis.js @@ -4,7 +4,7 @@ const { ethers } = require("ethers"); async function main() { const fs = require("fs"); - // Polygon mainnet globals file + // Mainnet globals file const globalsFile = "globals.json"; const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); const parsedData = JSON.parse(dataFromJSON); @@ -46,7 +46,7 @@ async function main() { const stakingVerifierABI = parsedFile["abi"]; const stakingVerifier = new ethers.Contract(stakingVerifierAddress, stakingVerifierABI, gnosisProvider); - // Timelock contract across the bridge must change the manager address + // Timelock contract across the bridge must change staking limits const rawPayload = stakingVerifier.interface.encodeFunctionData("changeStakingLimits", [parsedData.minStakingDepositLimit, parsedData.timeForEmissionsLimit, parsedData.numServicesLimit, parsedData.apyLimit]); diff --git a/scripts/proposals/proposal_11_staking_verifier_change_limits_polygon.js b/scripts/proposals/proposal_11_staking_verifier_change_limits_polygon.js new file mode 100644 index 00000000..bc30c1ce --- /dev/null +++ b/scripts/proposals/proposal_11_staking_verifier_change_limits_polygon.js @@ -0,0 +1,84 @@ +/*global process*/ + +const { ethers } = require("ethers"); + +async function main() { + const fs = require("fs"); + // Mainnet globals file + const globalsFile = "globals.json"; + const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); + const parsedData = JSON.parse(dataFromJSON); + + const ALCHEMY_API_KEY_MAINNET = process.env.ALCHEMY_API_KEY_MAINNET; + const mainnetURL = "https://eth-mainnet.g.alchemy.com/v2/" + ALCHEMY_API_KEY_MAINNET; + const mainnetProvider = new ethers.providers.JsonRpcProvider(mainnetURL); + await mainnetProvider.getBlockNumber().then((result) => { + console.log("Current block number mainnet: " + result); + }); + + const ALCHEMY_API_KEY_MATIC = process.env.ALCHEMY_API_KEY_MATIC; + const polygonURL = "https://polygon-mainnet.g.alchemy.com/v2/" + ALCHEMY_API_KEY_MATIC; + const polygonProvider = new ethers.providers.JsonRpcProvider(polygonURL); + await polygonProvider.getBlockNumber().then((result) => { + console.log("Current block number polygon: " + result); + }); + + // FxRoot address on mainnet + const fxRootAddress = parsedData.fxRootAddress; + const fxRootJSON = "abis/bridges/polygon/FxRoot.json"; + let contractFromJSON = fs.readFileSync(fxRootJSON, "utf8"); + let parsedFile = JSON.parse(contractFromJSON); + const fxRootABI = parsedFile["abi"]; + const fxRoot = new ethers.Contract(fxRootAddress, fxRootABI, mainnetProvider); + + // StakingVerifier address on polygon + const stakingVerifierAddress = parsedData.stakingVerifierAddress; + const stakingVerifierJSON = "artifacts/contracts/staking/StakingVerifier.sol/StakingVerifier.json"; + contractFromJSON = fs.readFileSync(stakingVerifierJSON, "utf8"); + parsedFile = JSON.parse(contractFromJSON); + const stakingVerifierABI = parsedFile["abi"]; + const stakingVerifier = new ethers.Contract(stakingVerifierAddress, stakingVerifierABI, polygonProvider); + + // FxGovernorTunnel address on polygon + const fxGovernorTunnelAddress = parsedData.bridgeMediatorAddress; + + // Proposal preparation + console.log("Proposal 11. Change staking limits for polygon StakingVerifier\n"); + const rawPayload = stakingVerifier.interface.encodeFunctionData("changeStakingLimits", + [parsedData.minStakingDepositLimit, parsedData.timeForEmissionsLimit, parsedData.numServicesLimit, + parsedData.apyLimit]); + // Pack the second part of data + const target = stakingVerifierAddress; + const value = 0; + const payload = ethers.utils.arrayify(rawPayload); + const data = ethers.utils.solidityPack( + ["address", "uint96", "uint32", "bytes"], + [target, value, payload.length, payload] + ); + + // fxChild address polygon mainnet: 0x8397259c983751DAf40400790063935a11afa28a + // Function to call by fxGovernorTunnelAddress: processMessageFromRoot + // state Id: any; rootMessageSender = timelockAddress + console.log("Polygon side payload from the fxChild to check on the fxGovernorTunnelAddress in processMessageFromRoot function:", data); + + // Send the message to mumbai receiver from the timelock + const timelockPayload = await fxRoot.interface.encodeFunctionData("sendMessageToChild", [fxGovernorTunnelAddress, data]); + + const targets = [fxRootAddress]; + const values = [0]; + const callDatas = [timelockPayload]; + const description = "Change Drainer in ServiceRegistryL2 on polygon"; + + // Proposal details + console.log("targets:", targets); + console.log("values:", values); + console.log("call datas:", callDatas); + console.log("description:", description); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/proposals/proposal_12_staking_verifier_change_limits_optimistic.js b/scripts/proposals/proposal_12_staking_verifier_change_limits_optimistic.js new file mode 100644 index 00000000..3576bfc4 --- /dev/null +++ b/scripts/proposals/proposal_12_staking_verifier_change_limits_optimistic.js @@ -0,0 +1,87 @@ +/*global process*/ + +const { ethers } = require("ethers"); + +async function main() { + const fs = require("fs"); + // Mainnet globals file + const globalsFile = "globals.json"; + const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); + const parsedData = JSON.parse(dataFromJSON); + + const ALCHEMY_API_KEY_MAINNET = process.env.ALCHEMY_API_KEY_MAINNET; + const mainnetURL = "https://eth-mainnet.g.alchemy.com/v2/" + ALCHEMY_API_KEY_MAINNET; + const mainnetProvider = new ethers.providers.JsonRpcProvider(mainnetURL); + await mainnetProvider.getBlockNumber().then((result) => { + console.log("Current block number mainnet: " + result); + }); + + const optimisticURL = "https://optimism.drpc.org"; + const optimisticProvider = new ethers.providers.JsonRpcProvider(optimisticURL); + await optimisticProvider.getBlockNumber().then((result) => { + console.log("Current block number optimistic: " + result); + }); + + // CDMProxy address on mainnet + const CDMProxyAddress = parsedData.L1CrossDomainMessengerProxyAddress; + const CDMProxyJSON = "abis/bridges/optimism/L1CrossDomainMessenger.json"; + let contractFromJSON = fs.readFileSync(CDMProxyJSON, "utf8"); + const CDMProxyABI = JSON.parse(contractFromJSON); + const CDMProxy = new ethers.Contract(CDMProxyAddress, CDMProxyABI, optimisticProvider); + + // OptimismMessenger address on optimism + const optimismMessengerAddress = parsedData.bridgeMediatorAddress; + const optimismMessengerJSON = "abis/bridges/optimism/OptimismMessenger.json"; + contractFromJSON = fs.readFileSync(optimismMessengerJSON, "utf8"); + let parsedFile = JSON.parse(contractFromJSON); + const optimismMessengerABI = parsedFile["abi"]; + const optimismMessenger = new ethers.Contract(optimismMessengerAddress, optimismMessengerABI, optimisticProvider); + + // StakingVerifier address on optimism + const stakingVerifierAddress = parsedData.stakingVerifierAddress; + const stakingVerifierJSON = "artifacts/contracts/staking/StakingVerifier.sol/StakingVerifier.json"; + contractFromJSON = fs.readFileSync(stakingVerifierJSON, "utf8"); + parsedFile = JSON.parse(contractFromJSON); + const stakingVerifierABI = parsedFile["abi"]; + const stakingVerifier = new ethers.Contract(stakingVerifierAddress, stakingVerifierABI, optimisticProvider); + + // Timelock contract across the bridge must change staking limits + const rawPayload = stakingVerifier.interface.encodeFunctionData("changeStakingLimits", + [parsedData.minStakingDepositLimit, parsedData.timeForEmissionsLimit, parsedData.numServicesLimit, + parsedData.apyLimit]); + // Pack the second part of data + const target = stakingVerifierAddress; + const value = 0; + const payload = ethers.utils.arrayify(rawPayload); + const data = ethers.utils.solidityPack( + ["address", "uint96", "uint32", "bytes"], + [target, value, payload.length, payload] + ); + + // Proposal preparation + console.log("Proposal 12. Change staking limits for optimism StakingVerifier\n"); + // Build the bridge payload + const messengerPayload = await optimismMessenger.interface.encodeFunctionData("processMessageFromSource", [data]); + const minGasLimit = "2000000"; + // Build the final payload for the Timelock + const timelockPayload = await CDMProxy.interface.encodeFunctionData("sendMessage", [optimismMessengerAddress, + messengerPayload, minGasLimit]); + + const targets = [CDMProxyAddress]; + const values = [0]; + const callDatas = [timelockPayload]; + const description = "Change Manager in StakingVerifier on optimism"; + + // Proposal details + console.log("targets:", targets); + console.log("values:", values); + console.log("call datas:", callDatas); + console.log("description:", description); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/proposals/proposal_13_staking_verifier_change_limits_celo.js b/scripts/proposals/proposal_13_staking_verifier_change_limits_celo.js new file mode 100644 index 00000000..597a60f9 --- /dev/null +++ b/scripts/proposals/proposal_13_staking_verifier_change_limits_celo.js @@ -0,0 +1,83 @@ +/*global process*/ + +const { ethers } = require("ethers"); + +async function main() { + const fs = require("fs"); + // Mainnet globals file + const globalsFile = "globals.json"; + const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); + const parsedData = JSON.parse(dataFromJSON); + + const ALCHEMY_API_KEY_MAINNET = process.env.ALCHEMY_API_KEY_MAINNET; + const mainnetURL = "https://eth-mainnet.g.alchemy.com/v2/" + ALCHEMY_API_KEY_MAINNET; + const mainnetProvider = new ethers.providers.JsonRpcProvider(mainnetURL); + await mainnetProvider.getBlockNumber().then((result) => { + console.log("Current block number mainnet: " + result); + }); + + const celoURL = "https://forno.celo.org"; + const celoProvider = new ethers.providers.JsonRpcProvider(celoURL); + await celoProvider.getBlockNumber().then((result) => { + console.log("Current block number celo: " + result); + }); + + const wormholeMessengerAddress = parsedData.wormholeMessengerAddress; + + // WormholeRelayer address on mainnet + const wormholeRelayerAddress = parsedData.wormholeL1MessageRelayerAddress; + const wormholeRelayerJSON = "abis/bridges/wormhole/WormholeRelayer.json"; + let contractFromJSON = fs.readFileSync(wormholeRelayerJSON, "utf8"); + const wormholeRelayerABI = JSON.parse(contractFromJSON); + const wormholeRelayer = new ethers.Contract(wormholeRelayerAddress, wormholeRelayerABI, mainnetProvider); + + // StakingVerifier address on celo + const stakingVerifierAddress = parsedData.stakingVerifierAddress; + const stakingVerifierJSON = "artifacts/contracts/staking/StakingVerifier.sol/StakingVerifier.json"; + contractFromJSON = fs.readFileSync(stakingVerifierJSON, "utf8"); + const parsedFile = JSON.parse(contractFromJSON); + const stakingVerifierABI = parsedFile["abi"]; + const stakingVerifier = new ethers.Contract(stakingVerifierAddress, stakingVerifierABI, celoProvider); + + // Timelock contract across the bridge must change staking limits + const rawPayload = stakingVerifier.interface.encodeFunctionData("changeStakingLimits", + [parsedData.minStakingDepositLimit, parsedData.timeForEmissionsLimit, parsedData.numServicesLimit, + parsedData.apyLimit]); + // Pack the second part of data + const target = stakingVerifierAddress; + const value = 0; + const payload = ethers.utils.arrayify(rawPayload); + const data = ethers.utils.solidityPack( + ["address", "uint96", "uint32", "bytes"], + [target, value, payload.length, payload] + ); + + const targetChain = 14; // celo + const minGasLimit = "2000000"; + const transferCost = await wormholeRelayer["quoteEVMDeliveryPrice(uint16,uint256,uint256)"](targetChain, 0, minGasLimit); + + // Proposal preparation + console.log("Proposal 13. Change staking limits for celo StakingVerifier\n"); + // Build the final payload for the Timelock + const sendPayloadSelector = "0x4b5ca6f4"; + const timelockPayload = await wormholeRelayer.interface.encodeFunctionData(sendPayloadSelector, [targetChain, + wormholeMessengerAddress, data, 0, minGasLimit, targetChain, wormholeMessengerAddress]); + + const targets = [wormholeRelayerAddress]; + const values = [transferCost.nativePriceQuote.toString()]; + const callDatas = [timelockPayload]; + const description = "Change Manager in StakingVerifier on celo"; + + // Proposal details + console.log("targets:", targets); + console.log("values:", values); + console.log("call datas:", callDatas); + console.log("description:", description); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/proposals/proposal_14_staking_verifier_change_limits_ethereum.js b/scripts/proposals/proposal_14_staking_verifier_change_limits_ethereum.js new file mode 100644 index 00000000..4dfcf5c7 --- /dev/null +++ b/scripts/proposals/proposal_14_staking_verifier_change_limits_ethereum.js @@ -0,0 +1,51 @@ +/*global process*/ + +const { ethers } = require("ethers"); + +async function main() { + const fs = require("fs"); + // Mainnet globals file + const globalsFile = "globals.json"; + const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); + const parsedData = JSON.parse(dataFromJSON); + + const ALCHEMY_API_KEY_MAINNET = process.env.ALCHEMY_API_KEY_MAINNET; + const mainnetURL = "https://eth-mainnet.g.alchemy.com/v2/" + ALCHEMY_API_KEY_MAINNET; + const mainnetProvider = new ethers.providers.JsonRpcProvider(mainnetURL); + await mainnetProvider.getBlockNumber().then((result) => { + console.log("Current block number mainnet: " + result); + }); + + // StakingVerifier address on celo + const stakingVerifierAddress = parsedData.stakingVerifierAddress; + const stakingVerifierJSON = "artifacts/contracts/staking/StakingVerifier.sol/StakingVerifier.json"; + let contractFromJSON = fs.readFileSync(stakingVerifierJSON, "utf8"); + const parsedFile = JSON.parse(contractFromJSON); + const stakingVerifierABI = parsedFile["abi"]; + const stakingVerifier = new ethers.Contract(stakingVerifierAddress, stakingVerifierABI, mainnetProvider); + + // Proposal preparation + console.log("Proposal 14. Change staking limits for ethereum StakingVerifier\n"); + // Timelock to change staking limits + const timelockPayload = stakingVerifier.interface.encodeFunctionData("changeStakingLimits", + [parsedData.minStakingDepositLimit, parsedData.timeForEmissionsLimit, parsedData.numServicesLimit, + parsedData.apyLimit]); + + const targets = [stakingVerifierAddress]; + const values = [0]; + const callDatas = [timelockPayload]; + const description = "Change Manager in StakingVerifier on mainnet"; + + // Proposal details + console.log("targets:", targets); + console.log("values:", values); + console.log("call datas:", callDatas); + console.log("description:", description); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/proposals/proposal_15_staking_verifier_change_limits_arbitrum.js b/scripts/proposals/proposal_15_staking_verifier_change_limits_arbitrum.js new file mode 100644 index 00000000..c7e90971 --- /dev/null +++ b/scripts/proposals/proposal_15_staking_verifier_change_limits_arbitrum.js @@ -0,0 +1,126 @@ +/*global process*/ + +const { ethers } = require("hardhat"); +const { L1ToL2MessageGasEstimator } = require("@arbitrum/sdk/dist/lib/message/L1ToL2MessageGasEstimator"); +const { EthBridger, getL2Network } = require("@arbitrum/sdk"); +const { getBaseFee } = require("@arbitrum/sdk/dist/lib/utils/lib"); + +async function main() { + const AddressZero = ethers.constants.AddressZero; + const fs = require("fs"); + // Mainnet globals file + const globalsFile = "globals.json"; + const dataFromJSON = fs.readFileSync(globalsFile, "utf8"); + const parsedData = JSON.parse(dataFromJSON); + + const ALCHEMY_API_KEY_MAINNET = process.env.ALCHEMY_API_KEY_MAINNET; + const mainnetURL = "https://eth-mainnet.g.alchemy.com/v2/" + ALCHEMY_API_KEY_MAINNET; + const mainnetProvider = new ethers.providers.JsonRpcProvider(mainnetURL); + await mainnetProvider.getBlockNumber().then((result) => { + console.log("Current block number mainnet: " + result); + }); + + const arbitrumURL = "https://arb1.arbitrum.io/rpc"; + const arbitrumProvider = new ethers.providers.JsonRpcProvider(arbitrumURL); + await arbitrumProvider.getBlockNumber().then((result) => { + console.log("Current block number arbitrum: " + result); + }); + + const timelockAddress = parsedData.timelockAddress; + const arbitrumTimelockAddress = parsedData.bridgeMediatorAddress; + + // StakingVerifier address on celo + const stakingVerifierAddress = parsedData.stakingVerifierAddress; + const stakingVerifierJSON = "artifacts/contracts/staking/StakingVerifier.sol/StakingVerifier.json"; + const contractFromJSON = fs.readFileSync(stakingVerifierJSON, "utf8"); + const parsedFile = JSON.parse(contractFromJSON); + const stakingVerifierABI = parsedFile["abi"]; + const stakingVerifier = new ethers.Contract(stakingVerifierAddress, stakingVerifierABI, arbitrumProvider); + + // Use l2Network to create an Arbitrum SDK EthBridger instance + // We'll use EthBridger to retrieve the Inbox address + const l2Network = await getL2Network(arbitrumProvider); + const ethBridger = new EthBridger(l2Network); + const inboxAddress = ethBridger.l2Network.ethBridge.inbox; + //console.log(inboxAddress); + + // Query the required gas params using the estimateAll method in Arbitrum SDK + const l1ToL2MessageGasEstimate = new L1ToL2MessageGasEstimator(arbitrumProvider); + //console.log(l1ToL2MessageGasEstimate); + + // Proposal preparation + console.log("Proposal 15. Change staking limits for arbitrum StakingVerifier\n"); + // To be able to estimate the gas related params to our L1-L2 message, we need to know how many bytes of calldata out + // retryable ticket will require + const calldata = stakingVerifier.interface.encodeFunctionData("changeStakingLimits", + [parsedData.minStakingDepositLimit, parsedData.timeForEmissionsLimit, parsedData.numServicesLimit, + parsedData.apyLimit]); + + // Users can override the estimated gas params when sending an L1-L2 message + // Note that this is totally optional + // Here we include and example for how to provide these overriding values + const RetryablesGasOverrides = { + gasLimit: { + base: undefined, // when undefined, the value will be estimated from rpc + min: ethers.BigNumber.from(2000000), // set a minimum gas limit, using 2M as an example + percentIncrease: ethers.BigNumber.from(30), // how much to increase the base for buffer + }, + maxSubmissionFee: { + base: undefined, + percentIncrease: ethers.BigNumber.from(30), + }, + maxFeePerGas: { + base: undefined, + percentIncrease: ethers.BigNumber.from(30), + }, + }; + + // The estimateAll method gives us the following values for sending an L1->L2 message + // (1) maxSubmissionCost: The maximum cost to be paid for submitting the transaction + // (2) gasLimit: The L2 gas limit + // (3) deposit: The total amount to deposit on L1 to cover L2 gas and L2 call value + const l2CallValue = 0; + const L1ToL2MessageGasParams = await l1ToL2MessageGasEstimate.estimateAll( + { + from: timelockAddress, + to: stakingVerifierAddress, + l2CallValue, + excessFeeRefundAddress: arbitrumTimelockAddress, + callValueRefundAddress: AddressZero, + data: calldata, + }, + await getBaseFee(mainnetProvider), + mainnetProvider, + RetryablesGasOverrides + ); + //console.log("Current retryable base submission price is:", L1ToL2MessageGasParams.maxSubmissionCost.toString()); + + // For the L2 gas price, we simply query it from the L2 provider, as we would when using L1 + const gasPriceBid = await arbitrumProvider.getGasPrice(); + console.log("L2 gas price:", gasPriceBid.toString()); + + // ABI to send message to inbox + const inboxABI = ["function createRetryableTicket(address to, uint256 l2CallValue, uint256 maxSubmissionCost, address excessFeeRefundAddress, address callValueRefundAddress, uint256 gasLimit, uint256 maxFeePerGas, bytes calldata data)"]; + const iface = new ethers.utils.Interface(inboxABI); + const timelockCalldata = iface.encodeFunctionData("createRetryableTicket", [stakingVerifierAddress, l2CallValue, + L1ToL2MessageGasParams.maxSubmissionCost, arbitrumTimelockAddress, AddressZero, + L1ToL2MessageGasParams.gasLimit, gasPriceBid, calldata]); + + const targets = [inboxAddress]; + const values = [L1ToL2MessageGasParams.deposit]; + const callDatas = [timelockCalldata]; + const description = "Change Manager in StakingVerifier on arbitrum"; + + // Proposal details + console.log("targets:", targets); + console.log("values:", values); + console.log("call datas:", callDatas); + console.log("description:", description); +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + });