Skip to content

Blackhole Canister

A blackhole canister is an Internet Computer canister with no controllers — making it completely immutable.

On the Internet Computer, every canister has one or more “controllers” — principals that can:

  • Upgrade the canister code
  • Change canister settings
  • Delete the canister
  • Manage cycles

A blackhole canister has zero controllers. Once deployed, the code cannot be changed by anyone — not even the original developers.

With a blackhole canister, users don’t need to trust Pybara:

  • Code cannot be upgraded to steal funds
  • Logic cannot be changed to favor certain parties
  • Behavior is guaranteed by immutable code

Anyone can verify the canister is a blackhole:

Terminal window
dfx canister info <canister-id> --network ic

If Controllers: [] (empty), it’s a blackhole.

  • Canister ID: [to be deployed]
  • Purpose: Verify payments on-chain
  • Status: Blackhole (immutable)
  • ✅ Maximum trust minimization
  • ✅ Guaranteed behavior
  • ✅ No upgrade risk
  • ❌ Cannot fix bugs
  • ❌ Cannot add features
  • ❌ Cannot optimize
  1. Extensive Testing — Thorough testing before blackhole deployment
  2. Formal Verification — Mathematical proofs of correctness
  3. Modular Design — Only critical logic is blackholed
  4. Versioning — New versions deployed as new canisters

Check if a canister is a blackhole:

Terminal window
# Install dfx
sh -ci "$(curl -fsSL https://internetcomputer.org/install.sh)"
# Check canister info
dfx canister info <canister-id> --network ic

Look for Controllers: [] in the output.