Skip to content

Commit

Permalink
feat: added mainnet chain configs (backport #689) (#690)
Browse files Browse the repository at this point in the history
Co-authored-by: Connor Barr <[email protected]>
  • Loading branch information
mergify[bot] and crnbarr93 authored Dec 4, 2024
1 parent cc3e923 commit 6efa89d
Show file tree
Hide file tree
Showing 7 changed files with 282 additions and 9 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
cd andromeda-core
make schemas
```
draft: false
prerelease: false
draft: true
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
12 changes: 12 additions & 0 deletions contracts/os/andromeda-kernel/src/interface.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use andromeda_std::{
ado_base::MigrateMsg,
deploy::ADOMetadata,
os::kernel::{ExecuteMsg, InstantiateMsg, QueryMsg},
};
use cw_orch::{interface, prelude::*};
Expand Down Expand Up @@ -36,3 +37,14 @@ impl<Chain> Uploadable for KernelContract<Chain> {
.unwrap()
}
}

impl<Chain> ADOMetadata for KernelContract<Chain> {
fn name() -> String {
CONTRACT_ID.to_string()
}

fn version() -> String {
let version = env!("CARGO_PKG_VERSION");
version.to_string()
}
}
205 changes: 205 additions & 0 deletions packages/deploy/src/chains/mainnets.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
use cw_orch::{
environment::{ChainKind, NetworkInfo},
prelude::ChainInfo,
};

pub const ANDROMEDA_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "andromeda",
pub_address_prefix: "andr",
coin_type: 118u32,
};

pub const ANDROMEDA_MAINNET: ChainInfo = ChainInfo {
chain_id: "andromeda-1",
gas_denom: "uandr",
fcd_url: None,
gas_price: 0.025,
grpc_urls: &["https://andromeda-grpc.polkachu.com:21290"],
lcd_url: Some("https://andromeda-api.polkachu.com"),
network_info: ANDROMEDA_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const STARGAZE_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "stargaze",
pub_address_prefix: "stars",
coin_type: 118u32,
};

pub const STARGAZE_MAINNET: ChainInfo = ChainInfo {
chain_id: "stargaze-1",
gas_denom: "ustars",
fcd_url: None,
gas_price: 0.025,
grpc_urls: &["https://stargaze-grpc.polkachu.com:21290"],
lcd_url: Some("https://stargaze-api.polkachu.com"),
network_info: STARGAZE_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const NEUTRON_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "neutron",
pub_address_prefix: "neutron",
coin_type: 118u32,
};

pub const NEUTRON_MAINNET: ChainInfo = ChainInfo {
chain_id: "neutron-1",
gas_denom: "untrn",
fcd_url: None,
gas_price: 0.0053,
grpc_urls: &["https://neutron-grpc.publicnode.com:443"],
lcd_url: Some("https://neutron-api.polkachu.com"),
network_info: NEUTRON_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const MIGALOO_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "migaloo",
pub_address_prefix: "migaloo",
coin_type: 118u32,
};

pub const MIGALOO_MAINNET: ChainInfo = ChainInfo {
chain_id: "migaloo-1",
gas_denom: "uwhale",
fcd_url: None,
gas_price: 1.0,
grpc_urls: &["https://migaloo-grpc.polkachu.com:443"],
lcd_url: Some("https://migaloo-api.polkachu.com"),
network_info: MIGALOO_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const JUNO_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "juno",
pub_address_prefix: "juno",
coin_type: 118u32,
};

pub const JUNO_MAINNET: ChainInfo = ChainInfo {
chain_id: "juno-1",
gas_denom: "ujuno",
fcd_url: None,
gas_price: 0.075,
grpc_urls: &["https://juno-grpc.polkachu.com:443"],
lcd_url: Some("https://juno-api.polkachu.com"),
network_info: JUNO_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const DESMOS_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "desmos",
pub_address_prefix: "desmos",
coin_type: 118u32,
};

pub const DESMOS_MAINNET: ChainInfo = ChainInfo {
chain_id: "desmos",
gas_denom: "udsm",
fcd_url: None,
gas_price: 0.001,
grpc_urls: &["https://desmos-grpc.lavenderfive.com:443/"],
lcd_url: Some("https://api.mainnet.desmos.network"),
network_info: DESMOS_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const CHIHUAHUA_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "chihuahua",
pub_address_prefix: "chihuahua",
coin_type: 118u32,
};

pub const CHIHUAHUA_MAINNET: ChainInfo = ChainInfo {
chain_id: "chihuahua-1",
gas_denom: "uhuahua",
fcd_url: None,
gas_price: 1.0,
grpc_urls: &["https://chiahuahua-grpc.polkachu.com:21290"],
lcd_url: Some("https://chihuahua-api.polkachu.com"),
network_info: CHIHUAHUA_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const UMEE_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "umee",
pub_address_prefix: "umee",
coin_type: 118u32,
};

pub const UMEE_MAINNET: ChainInfo = ChainInfo {
chain_id: "umee-1",
gas_denom: "uumee",
fcd_url: None,
gas_price: 0.1,
grpc_urls: &["https://umee-grpc.polkachu.com:21290"],
lcd_url: Some("https://umee-api.polkachu.com"),
network_info: UMEE_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const NIBIRU_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "nibiru",
pub_address_prefix: "nibi",
coin_type: 118u32,
};

pub const NIBIRU_MAINNET: ChainInfo = ChainInfo {
chain_id: "cataclysm-1",
gas_denom: "unibi",
fcd_url: None,
gas_price: 0.025,
grpc_urls: &["https://nibiru-grpc.polkachu.com:21290"],
lcd_url: Some("https://nibiru-api.polkachu.com"),
network_info: NIBIRU_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const COREUM_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "coreum",
pub_address_prefix: "core",
coin_type: 118u32,
};

pub const COREUM_MAINNET: ChainInfo = ChainInfo {
chain_id: "coreum-1",
gas_denom: "ucore",
fcd_url: None,
gas_price: 0.0625,
grpc_urls: &["https://coreum-grpc.polkachu.com:21290"],
lcd_url: Some("https://coreum-api.polkachu.com"),
network_info: COREUM_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const ARCHWAY_MAINNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "archway",
pub_address_prefix: "archway",
coin_type: 118u32,
};

pub const ARCHWAY_MAINNET: ChainInfo = ChainInfo {
chain_id: "archway-1",
gas_denom: "aarch",
fcd_url: None,
gas_price: 140000000000.0,
grpc_urls: &["https://archway-grpc.polkachu.com:21290"],
lcd_url: Some("https://archway-api.polkachu.com"),
network_info: ARCHWAY_MAINNET_NETWORK,
kind: ChainKind::Mainnet,
};

pub const MAINNET_CHAINS: &[ChainInfo] = &[
ANDROMEDA_MAINNET,
STARGAZE_MAINNET,
NEUTRON_MAINNET,
MIGALOO_MAINNET,
JUNO_MAINNET,
DESMOS_MAINNET,
CHIHUAHUA_MAINNET,
UMEE_MAINNET,
NIBIRU_MAINNET,
COREUM_MAINNET,
ARCHWAY_MAINNET,
];
14 changes: 12 additions & 2 deletions packages/deploy/src/chains/mod.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,23 @@
pub mod devnets;
pub mod mainnets;
pub mod testnets;

use cw_orch::prelude::ChainInfo;
use devnets::DEVNET_CHAINS;
use mainnets::MAINNET_CHAINS;
use testnets::TESTNET_CHAINS;

pub fn get_chain(chain: String) -> ChainInfo {
[TESTNET_CHAINS, DEVNET_CHAINS]
.concat()
let all_chains: Vec<ChainInfo> = [MAINNET_CHAINS, TESTNET_CHAINS, DEVNET_CHAINS].concat();
let unique_chain_names: std::collections::HashSet<&str> = all_chains
.iter()
.map(|c| c.network_info.chain_name)
.collect();
if unique_chain_names.len() != all_chains.len() {
panic!("Duplicate chain names found in ChainInfo");
}

all_chains
.iter()
.find(|c| c.chain_id == chain || c.network_info.chain_name == chain)
.unwrap()
Expand Down
4 changes: 2 additions & 2 deletions packages/deploy/src/chains/testnets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use cw_orch::{
};

pub const ANDROMEDA_TESTNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "andromeda",
chain_name: "andromeda-testnet",
pub_address_prefix: "andr",
coin_type: 118u32,
};
Expand All @@ -21,7 +21,7 @@ pub const ANDROMEDA_TESTNET: ChainInfo = ChainInfo {
};

pub const STARGAZE_TESTNET_NETWORK: NetworkInfo = NetworkInfo {
chain_name: "stargaze",
chain_name: "stargaze-testnet",
pub_address_prefix: "stars",
coin_type: 118u32,
};
Expand Down
15 changes: 15 additions & 0 deletions packages/deploy/src/contracts.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use andromeda_address_list::AddressListContract;
use andromeda_adodb::ADODBContract;
use andromeda_app_contract::AppContract;
use andromeda_auction::AuctionContract;
use andromeda_boolean::BooleanContract;
Expand All @@ -10,6 +11,9 @@ use andromeda_cw20::CW20Contract;
use andromeda_cw20_exchange::Cw20ExchangeContract;
use andromeda_cw20_staking::CW20StakingContract;
use andromeda_cw721::CW721Contract;
use andromeda_economics::EconomicsContract;
use andromeda_ibc_registry::IBCRegistryContract;
use andromeda_kernel::KernelContract;
use andromeda_lockdrop::LockdropContract;
use andromeda_marketplace::MarketplaceContract;
use andromeda_merkle_airdrop::MerkleAirdropContract;
Expand All @@ -24,6 +28,7 @@ use andromeda_string_storage::StringStorageContract;
use andromeda_timelock::TimelockContract;
use andromeda_validator_staking::ValidatorStakingContract;
use andromeda_vesting::VestingContract;
use andromeda_vfs::VFSContract;
use andromeda_weighted_distribution_splitter::WeightedDistributionSplitterContract;

use cw_orch::prelude::*;
Expand Down Expand Up @@ -79,3 +84,13 @@ pub fn all_contracts() -> Vec<DeployableContract> {
deployable!(MarketplaceContract),
]
}

pub fn os_contracts() -> Vec<DeployableContract> {
vec![
deployable!(ADODBContract),
deployable!(KernelContract),
deployable!(VFSContract),
deployable!(EconomicsContract),
deployable!(IBCRegistryContract),
]
}
37 changes: 34 additions & 3 deletions packages/deploy/src/os.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::error::DeployError;
use crate::{contracts::os_contracts, error::DeployError};
use adodb::{ExecuteMsgFns as ADODBExecuteMsgFns, QueryMsgFns as ADODBQueryMsgFns};
use andromeda_std::ado_base::MigrateMsg;
use andromeda_std::amp::AndrAddr;
use andromeda_std::os::*;
Expand Down Expand Up @@ -107,7 +108,6 @@ impl OperatingSystemDeployment {
// For each module we check if it's been instantiated already.
// If it has, we migrate it to the new code id.
// If it hasn't, we instantiate it.

let modules: [(&str, &Contract<DaemonBase<Wallet>>); 4] = [
("adodb", self.adodb.as_instance()),
("vfs", self.vfs.as_instance()),
Expand All @@ -127,7 +127,7 @@ impl OperatingSystemDeployment {
("adodb", self.adodb.as_instance()),
("vfs", self.vfs.as_instance()),
("economics", self.economics.as_instance()),
("ibc_registry", self.ibc_registry.as_instance()),
("ibc-registry", self.ibc_registry.as_instance()),
];

for (module_name, contract) in modules {
Expand All @@ -137,6 +137,34 @@ impl OperatingSystemDeployment {

Ok(())
}

/// Publishes all OS ADOs with the created ADODB.
/// Skips publishing if the ADO version is already published.
fn publish(&self) -> Result<(), DeployError> {
let uploaded_contracts: [(&str, &Contract<DaemonBase<Wallet>>); 5] = [
("kernel", self.kernel.as_instance()),
("adodb", self.adodb.as_instance()),
("vfs", self.vfs.as_instance()),
("economics", self.economics.as_instance()),
("ibc-registry", self.ibc_registry.as_instance()),
];
let deployable = os_contracts();
for (name, contract) in uploaded_contracts {
let (_, version, _) = deployable.iter().find(|(n, _, _)| n == name).unwrap();
let versions = self.adodb.ado_versions(&name.to_string(), None, None)?;
if versions.contains(&format!("{}@{}", name, version)) {
log::info!(
"Skipping publishing {} {} - already published",
name,
version
);
continue;
}
let code_id = contract.code_id().unwrap();
self.adodb.publish(name, code_id, version, None, None)?;
}
Ok(())
}
}

pub fn deploy(chain: String, kernel_address: Option<String>) -> Result<String, DeployError> {
Expand All @@ -153,6 +181,9 @@ pub fn deploy(chain: String, kernel_address: Option<String>) -> Result<String, D
log::info!("Registering modules");
os_deployment.register_modules()?;

log::info!("Publishing contracts");
os_deployment.publish()?;

log::info!("OS deployment process completed");
Ok(os_deployment.kernel.address().unwrap().to_string())
}

0 comments on commit 6efa89d

Please sign in to comment.