diff --git a/omnibus-base-mainnet-andromeda.toml b/omnibus-base-mainnet-andromeda.toml index bcacbc69..a483c43c 100644 --- a/omnibus-base-mainnet-andromeda.toml +++ b/omnibus-base-mainnet-andromeda.toml @@ -1,5 +1,5 @@ name = "synthetix-omnibus" -version = "79" +version = "80" description = "Andromeda deployment" preset = "andromeda" deployers = [ @@ -66,6 +66,7 @@ include = [ "tomls/omnibus-base-mainnet-andromeda/oracles/pyth-axs.toml", "tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bal.toml", "tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bch.toml", + "tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bera.toml", "tomls/omnibus-base-mainnet-andromeda/oracles/pyth-blur.toml", "tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bnb.toml", "tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bome.toml", @@ -191,6 +192,7 @@ include = [ "tomls/omnibus-base-mainnet-andromeda/perps/markets/axs.toml", "tomls/omnibus-base-mainnet-andromeda/perps/markets/bal.toml", "tomls/omnibus-base-mainnet-andromeda/perps/markets/bch.toml", + "tomls/omnibus-base-mainnet-andromeda/perps/markets/bera.toml", "tomls/omnibus-base-mainnet-andromeda/perps/markets/blur.toml", "tomls/omnibus-base-mainnet-andromeda/perps/markets/bnb.toml", "tomls/omnibus-base-mainnet-andromeda/perps/markets/bome.toml", @@ -398,6 +400,7 @@ pyth_feed_id_axl = "0x60144b1d5c9e9851732ad1d9760e3485ef80be39b984f6bf60f82b28a2 pyth_feed_id_axs = "0xb7e3904c08ddd9c0c10c6d207d390fd19e87eb6aab96304f571ed94caebdefa0" pyth_feed_id_bal = "0x07ad7b4a7662d19a6bc675f6b467172d2f3947fa653ca97555a9b20236406628" pyth_feed_id_bch = "0x3dd2b63686a450ec7290df3a1e0b583c0481f651351edfa7636f39aed55cf8a3" +pyth_feed_id_bera = "0x962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265" pyth_feed_id_blur = "0x856aac602516addee497edf6f50d39e8c95ae5fb0da1ed434a8c2ab9c3e877e9" pyth_feed_id_bnb = "0x2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f" pyth_feed_id_bome = "0x30e4780570973e438fdb3f1b7ad22618b2fc7333b65c7853a7ca144c39052f7a" diff --git a/omnibus-base-sepolia-andromeda.toml b/omnibus-base-sepolia-andromeda.toml index 8f55986c..b58849f5 100644 --- a/omnibus-base-sepolia-andromeda.toml +++ b/omnibus-base-sepolia-andromeda.toml @@ -1,5 +1,5 @@ name = "synthetix-omnibus" -version = "78" +version = "79" description = "Andromeda dev deployment" preset = "andromeda" deployers = ["0x48914229deDd5A9922f44441ffCCfC2Cb7856Ee9"] @@ -54,6 +54,7 @@ include = [ "tomls/omnibus-base-sepolia-andromeda/oracles/pyth-axs.toml", "tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bal.toml", "tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bch.toml", + "tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bera.toml", "tomls/omnibus-base-sepolia-andromeda/oracles/pyth-blur.toml", "tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bnb.toml", "tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bome.toml", @@ -175,6 +176,7 @@ include = [ "tomls/omnibus-base-sepolia-andromeda/perps/markets/axs.toml", "tomls/omnibus-base-sepolia-andromeda/perps/markets/bal.toml", "tomls/omnibus-base-sepolia-andromeda/perps/markets/bch.toml", + "tomls/omnibus-base-sepolia-andromeda/perps/markets/bera.toml", "tomls/omnibus-base-sepolia-andromeda/perps/markets/blur.toml", "tomls/omnibus-base-sepolia-andromeda/perps/markets/bnb.toml", "tomls/omnibus-base-sepolia-andromeda/perps/markets/bome.toml", @@ -435,6 +437,7 @@ pyth_feed_id_axl = "0x60144b1d5c9e9851732ad1d9760e3485ef80be39b984f6bf60f82b28a2 pyth_feed_id_axs = "0xb7e3904c08ddd9c0c10c6d207d390fd19e87eb6aab96304f571ed94caebdefa0" pyth_feed_id_bal = "0x07ad7b4a7662d19a6bc675f6b467172d2f3947fa653ca97555a9b20236406628" pyth_feed_id_bch = "0x3dd2b63686a450ec7290df3a1e0b583c0481f651351edfa7636f39aed55cf8a3" +pyth_feed_id_bera = "0x962088abcfdbdb6e30db2e340c8cf887d9efb311b1f2f17b155a63dbb6d40265" pyth_feed_id_blur = "0x856aac602516addee497edf6f50d39e8c95ae5fb0da1ed434a8c2ab9c3e877e9" pyth_feed_id_bnb = "0x2f95862b045670cd22bee3114c39763a4a08beeb663b145d283c31d7d1101c4f" pyth_feed_id_bome = "0x30e4780570973e438fdb3f1b7ad22618b2fc7333b65c7853a7ca144c39052f7a" diff --git a/tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bera.toml b/tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bera.toml new file mode 100644 index 00000000..b0da3051 --- /dev/null +++ b/tomls/omnibus-base-mainnet-andromeda/oracles/pyth-bera.toml @@ -0,0 +1,39 @@ +# This registers a staleness node that looks to Pyth for a fresh enough price, or otherwise reverts with an ERC-7412 compatible error +# Latest Pyth Price +[invoke.registerPythBeraOracleNode] +target = ["system.oracle_manager.Proxy"] +func = "registerNode" +args = [ + 5, # 5 = pyth aggregator type + "<%= defaultAbiCoder.encode(['address', 'bytes32', 'bool'], [settings.pyth_price_verification_address, settings.pyth_feed_id_bera, false]) %>", + [ + ], +] +extra.bera_pyth_oracle_id.event = "NodeRegistered" +extra.bera_pyth_oracle_id.arg = 0 +# Pyth Off-chain Lookup +[invoke.registerLookupBeraOracleNode] +target = ["system.oracle_manager.Proxy"] +func = "registerNode" +args = [ + 9, # 9 = PythOffchainLookupNode + "<%= defaultAbiCoder.encode(['address', 'bytes32', 'uint256'], [imports.pyth_erc7412_wrapper.contracts.PythERC7412Wrapper.address, settings.pyth_feed_id_bera, settings.default_staleness_tolerance]) %>", + [ + ], +] +extra.bera_lookup_oracle_id.event = "NodeRegistered" +extra.bera_lookup_oracle_id.arg = 0 +# Staleness Node +[invoke.registerBeraOracleNode] +target = ["system.oracle_manager.Proxy"] +func = "registerNode" +args = [ + 7, # 7 = staleness circuit breaker + "<%= defaultAbiCoder.encode(['uint256'], [settings.default_staleness_tolerance]) %>", + [ + "<%= extras.bera_pyth_oracle_id %>", + "<%= extras.bera_lookup_oracle_id %>", + ], +] +extra.bera_oracle_id.event = "NodeRegistered" +extra.bera_oracle_id.arg = 0 diff --git a/tomls/omnibus-base-mainnet-andromeda/perps/markets/bera.toml b/tomls/omnibus-base-mainnet-andromeda/perps/markets/bera.toml new file mode 100644 index 00000000..88509968 --- /dev/null +++ b/tomls/omnibus-base-mainnet-andromeda/perps/markets/bera.toml @@ -0,0 +1,119 @@ +[var.perps_bera_market_settings] +bera_perps_market_id = "10500" +bera_perps_market_skew_scale = "<%= parseEther(String(2_000_000)) %>" +bera_perps_market_max_funding_velocity = "<%= parseEther('36') %>" +bera_perps_maker_fee_ratio = "<%= parseEther('0.000200') %>" +bera_perps_taker_fee_ratio = "<%= parseEther('0.001000') %>" +bera_perps_max_market_size = "<%= parseEther(String(650_000)) %>" +bera_perps_max_market_value = "<%= parseEther(String(3_000_000)) %>" +bera_perps_initial_margin_ratio = "<%= parseEther('1.363') %>" +bera_perps_maintenance_margin_scalar = "<%= parseEther('0.6') %>" +bera_perps_minimum_initial_margin_ratio = "<%= parseEther('0.05') %>" +bera_perps_flag_reward_ratio_d18 = "<%= parseEther('0.0003') %>" +bera_perps_max_liquidation_limit_accumulation_multiplier = "<%= parseEther('1.5') %>" +bera_perps_max_seconds_in_liquidation_window = "30" +bera_perps_minimum_position_margin = "<%= parseEther('15') %>" +bera_perps_locked_oi_ratio = "<%= parseEther('0.1') %>" +bera_perps_max_liquidation_pd = "<%= parseEther('0.0005') %>" +bera_perps_endorsed_liquidator = "0x11233749514Ab8d00C0A5873DF7428b3db70030f" + +[invoke.createBeraPerpsMarket] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "createMarket" +args = ["<%= settings.bera_perps_market_id %>", "Berachain", "BERA"] + +[invoke.setPerpsPriceBera] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "updatePriceData" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= extras.bera_oracle_id %>", + "<%= settings.strict_staleness_tolerance %>", +] + +[invoke.addPerpsBeraSettlementStrategy] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "addSettlementStrategy" +args = [ + + "<%= settings.bera_perps_market_id %>", + + { strategyType = "0", settlementDelay = "0", settlementWindowDuration = "1", priceVerificationContract = "0x0000000000000000000000000000000000000000", feedId = "0x0000000000000000000000000000000000000000000000000000000000000000", settlementReward = "0", disabled = false, commitmentPriceDelay = "0" }, +] +extra.bera_pyth_settlement_strategy.event = "SettlementStrategyAdded" +extra.bera_pyth_settlement_strategy.arg = 2 +[invoke.setPerpsBeraSettlementStrategy] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setSettlementStrategy" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= extras.bera_pyth_settlement_strategy %>", + { strategyType = "0", settlementDelay = "<%= settings.settlement_delay %>", settlementWindowDuration = "<%= settings.settlement_window_duration %>", priceVerificationContract = "<%= imports.pyth_erc7412_wrapper.contracts.PythERC7412Wrapper.address %>", feedId = "<%= settings.pyth_feed_id_bera %>", settlementReward = "<%= settings.settlement_reward %>", disabled = false, commitmentPriceDelay = "<%= settings.commitment_price_delay %>" }, +] + +[invoke.setPerpsBeraFundingParameters] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setFundingParameters" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_market_skew_scale %>", + "<%= settings.bera_perps_market_max_funding_velocity %>", +] + +[invoke.setPerpsBeraOrderFees] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setOrderFees" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_maker_fee_ratio %>", + "<%= settings.bera_perps_taker_fee_ratio %>", +] + +[invoke.setPerpsBeraMaxMarketSize] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setMaxMarketSize" +args = ["<%= settings.bera_perps_market_id %>", "<%= settings.bera_perps_max_market_size %>"] + +[invoke.setPerpsBeraMaxMarketValue] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setMaxMarketValue" +args = ["<%= settings.bera_perps_market_id %>", "<%= settings.bera_perps_max_market_value %>"] + +[invoke.setPerpsBeraMaxLiquidationParameters] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setMaxLiquidationParameters" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_max_liquidation_limit_accumulation_multiplier %>", + "<%= settings.bera_perps_max_seconds_in_liquidation_window %>", + "<%= settings.bera_perps_max_liquidation_pd %>", + "<%= settings.bera_perps_endorsed_liquidator %>", +] + +[invoke.setPerpsBeraLiquidationParameters] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setLiquidationParameters" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_initial_margin_ratio %>", + "<%= settings.bera_perps_minimum_initial_margin_ratio %>", + "<%= settings.bera_perps_maintenance_margin_scalar %>", + "<%= settings.bera_perps_flag_reward_ratio_d18 %>", + "<%= settings.bera_perps_minimum_position_margin %>", +] + +[invoke.setPerpsBeraLockedOiRatio] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setLockedOiRatio" +args = ["<%= settings.bera_perps_market_id %>", "<%= settings.bera_perps_locked_oi_ratio %>"] diff --git a/tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bera.toml b/tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bera.toml new file mode 100644 index 00000000..b0da3051 --- /dev/null +++ b/tomls/omnibus-base-sepolia-andromeda/oracles/pyth-bera.toml @@ -0,0 +1,39 @@ +# This registers a staleness node that looks to Pyth for a fresh enough price, or otherwise reverts with an ERC-7412 compatible error +# Latest Pyth Price +[invoke.registerPythBeraOracleNode] +target = ["system.oracle_manager.Proxy"] +func = "registerNode" +args = [ + 5, # 5 = pyth aggregator type + "<%= defaultAbiCoder.encode(['address', 'bytes32', 'bool'], [settings.pyth_price_verification_address, settings.pyth_feed_id_bera, false]) %>", + [ + ], +] +extra.bera_pyth_oracle_id.event = "NodeRegistered" +extra.bera_pyth_oracle_id.arg = 0 +# Pyth Off-chain Lookup +[invoke.registerLookupBeraOracleNode] +target = ["system.oracle_manager.Proxy"] +func = "registerNode" +args = [ + 9, # 9 = PythOffchainLookupNode + "<%= defaultAbiCoder.encode(['address', 'bytes32', 'uint256'], [imports.pyth_erc7412_wrapper.contracts.PythERC7412Wrapper.address, settings.pyth_feed_id_bera, settings.default_staleness_tolerance]) %>", + [ + ], +] +extra.bera_lookup_oracle_id.event = "NodeRegistered" +extra.bera_lookup_oracle_id.arg = 0 +# Staleness Node +[invoke.registerBeraOracleNode] +target = ["system.oracle_manager.Proxy"] +func = "registerNode" +args = [ + 7, # 7 = staleness circuit breaker + "<%= defaultAbiCoder.encode(['uint256'], [settings.default_staleness_tolerance]) %>", + [ + "<%= extras.bera_pyth_oracle_id %>", + "<%= extras.bera_lookup_oracle_id %>", + ], +] +extra.bera_oracle_id.event = "NodeRegistered" +extra.bera_oracle_id.arg = 0 diff --git a/tomls/omnibus-base-sepolia-andromeda/perps/markets/bera.toml b/tomls/omnibus-base-sepolia-andromeda/perps/markets/bera.toml new file mode 100644 index 00000000..88509968 --- /dev/null +++ b/tomls/omnibus-base-sepolia-andromeda/perps/markets/bera.toml @@ -0,0 +1,119 @@ +[var.perps_bera_market_settings] +bera_perps_market_id = "10500" +bera_perps_market_skew_scale = "<%= parseEther(String(2_000_000)) %>" +bera_perps_market_max_funding_velocity = "<%= parseEther('36') %>" +bera_perps_maker_fee_ratio = "<%= parseEther('0.000200') %>" +bera_perps_taker_fee_ratio = "<%= parseEther('0.001000') %>" +bera_perps_max_market_size = "<%= parseEther(String(650_000)) %>" +bera_perps_max_market_value = "<%= parseEther(String(3_000_000)) %>" +bera_perps_initial_margin_ratio = "<%= parseEther('1.363') %>" +bera_perps_maintenance_margin_scalar = "<%= parseEther('0.6') %>" +bera_perps_minimum_initial_margin_ratio = "<%= parseEther('0.05') %>" +bera_perps_flag_reward_ratio_d18 = "<%= parseEther('0.0003') %>" +bera_perps_max_liquidation_limit_accumulation_multiplier = "<%= parseEther('1.5') %>" +bera_perps_max_seconds_in_liquidation_window = "30" +bera_perps_minimum_position_margin = "<%= parseEther('15') %>" +bera_perps_locked_oi_ratio = "<%= parseEther('0.1') %>" +bera_perps_max_liquidation_pd = "<%= parseEther('0.0005') %>" +bera_perps_endorsed_liquidator = "0x11233749514Ab8d00C0A5873DF7428b3db70030f" + +[invoke.createBeraPerpsMarket] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "createMarket" +args = ["<%= settings.bera_perps_market_id %>", "Berachain", "BERA"] + +[invoke.setPerpsPriceBera] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "updatePriceData" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= extras.bera_oracle_id %>", + "<%= settings.strict_staleness_tolerance %>", +] + +[invoke.addPerpsBeraSettlementStrategy] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "addSettlementStrategy" +args = [ + + "<%= settings.bera_perps_market_id %>", + + { strategyType = "0", settlementDelay = "0", settlementWindowDuration = "1", priceVerificationContract = "0x0000000000000000000000000000000000000000", feedId = "0x0000000000000000000000000000000000000000000000000000000000000000", settlementReward = "0", disabled = false, commitmentPriceDelay = "0" }, +] +extra.bera_pyth_settlement_strategy.event = "SettlementStrategyAdded" +extra.bera_pyth_settlement_strategy.arg = 2 +[invoke.setPerpsBeraSettlementStrategy] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setSettlementStrategy" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= extras.bera_pyth_settlement_strategy %>", + { strategyType = "0", settlementDelay = "<%= settings.settlement_delay %>", settlementWindowDuration = "<%= settings.settlement_window_duration %>", priceVerificationContract = "<%= imports.pyth_erc7412_wrapper.contracts.PythERC7412Wrapper.address %>", feedId = "<%= settings.pyth_feed_id_bera %>", settlementReward = "<%= settings.settlement_reward %>", disabled = false, commitmentPriceDelay = "<%= settings.commitment_price_delay %>" }, +] + +[invoke.setPerpsBeraFundingParameters] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setFundingParameters" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_market_skew_scale %>", + "<%= settings.bera_perps_market_max_funding_velocity %>", +] + +[invoke.setPerpsBeraOrderFees] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setOrderFees" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_maker_fee_ratio %>", + "<%= settings.bera_perps_taker_fee_ratio %>", +] + +[invoke.setPerpsBeraMaxMarketSize] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setMaxMarketSize" +args = ["<%= settings.bera_perps_market_id %>", "<%= settings.bera_perps_max_market_size %>"] + +[invoke.setPerpsBeraMaxMarketValue] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setMaxMarketValue" +args = ["<%= settings.bera_perps_market_id %>", "<%= settings.bera_perps_max_market_value %>"] + +[invoke.setPerpsBeraMaxLiquidationParameters] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setMaxLiquidationParameters" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_max_liquidation_limit_accumulation_multiplier %>", + "<%= settings.bera_perps_max_seconds_in_liquidation_window %>", + "<%= settings.bera_perps_max_liquidation_pd %>", + "<%= settings.bera_perps_endorsed_liquidator %>", +] + +[invoke.setPerpsBeraLiquidationParameters] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setLiquidationParameters" +args = [ + "<%= settings.bera_perps_market_id %>", + "<%= settings.bera_perps_initial_margin_ratio %>", + "<%= settings.bera_perps_minimum_initial_margin_ratio %>", + "<%= settings.bera_perps_maintenance_margin_scalar %>", + "<%= settings.bera_perps_flag_reward_ratio_d18 %>", + "<%= settings.bera_perps_minimum_position_margin %>", +] + +[invoke.setPerpsBeraLockedOiRatio] +target = ["perpsFactory.PerpsMarketProxy"] +fromCall.func = "owner" +func = "setLockedOiRatio" +args = ["<%= settings.bera_perps_market_id %>", "<%= settings.bera_perps_locked_oi_ratio %>"]