From 7691e6ce5ca4a4e95fab2567147bb8f0489f6573 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 4 Apr 2026 18:58:45 +0200 Subject: [PATCH 1/2] feat(console): emergency patch to create users with zero credits --- src/console/src/accounts/impls.rs | 4 ++-- src/console/src/constants.rs | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/console/src/accounts/impls.rs b/src/console/src/accounts/impls.rs index 9578f1566e..095ae96f9e 100644 --- a/src/console/src/accounts/impls.rs +++ b/src/console/src/accounts/impls.rs @@ -1,4 +1,4 @@ -use crate::constants::E8S_PER_ICP; +use crate::constants::{NO_CREDITS}; use crate::types::state::{Account, OpenIdData, Provider}; use ic_cdk::api::time; use junobuild_auth::openid::credentials::delegation::types::interface::OpenIdDelegationCredential; @@ -74,7 +74,7 @@ impl Account { mission_control_id: None, provider: provider.clone(), owner: *user, - credits: E8S_PER_ICP, + credits: NO_CREDITS, created_at: now, updated_at: now, } diff --git a/src/console/src/constants.rs b/src/console/src/constants.rs index 76b93a25b2..745b9c00b5 100644 --- a/src/console/src/constants.rs +++ b/src/console/src/constants.rs @@ -18,6 +18,8 @@ pub const MISSION_CONTROL_CREATION_FEE_CYCLES: CyclesTokens = // A credit which can be used to start one satellite or one orbiter. pub const E8S_PER_ICP: Tokens = Tokens::from_e8s(100_000_000); +pub const NO_CREDITS: Tokens = Tokens::from_e8s(0); + pub const RELEASES_METADATA_JSON: &str = "/releases/metadata.json"; // Default freezing threshold to create Satellites and Mission Controls From b68c99af9ebfe76fdababc59490576663c6d0543 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Sat, 4 Apr 2026 19:06:47 +0200 Subject: [PATCH 2/2] feat: comment --- src/console/src/constants.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/console/src/constants.rs b/src/console/src/constants.rs index 745b9c00b5..f0ac21d9f3 100644 --- a/src/console/src/constants.rs +++ b/src/console/src/constants.rs @@ -18,6 +18,11 @@ pub const MISSION_CONTROL_CREATION_FEE_CYCLES: CyclesTokens = // A credit which can be used to start one satellite or one orbiter. pub const E8S_PER_ICP: Tokens = Tokens::from_e8s(100_000_000); +// On Apr. 4, 2026, someone exploited the free tier to spin up free canisters. +// They created roughly 60-70 identities to spin up the same number of canisters. +// The rate limiter worked as expected — they had to wait a few minutes before creating more users. +// Unfortunately, until further notice, credits must be requested on demand to prevent this +// kind of abuse and protect the integrity of the Console. pub const NO_CREDITS: Tokens = Tokens::from_e8s(0); pub const RELEASES_METADATA_JSON: &str = "/releases/metadata.json";