<p>You're absolutely right in noticing a mismatch between what Subkey generates and what Moonbeam's Unified Accounts architecture expects.</p>
<p>🔹 Why Subkey Doesn't Generate Moonbeam Unified Accounts
When you run:</p>
<p>subkey generate --network moonbeam --scheme ecdsa</p>
<p>Subkey generates a Substrate-style ECDSA keypair, with:
A 64-character hex public key (H256)</p>
<p>A Substrate-compatible SS58 address</p>
<p>A mnemonic or raw seed based on Substrate's crypto expectations</p>
<p>This is not an Ethereum-style H160 address, which is what Moonbeam's Unified Accounts system uses for EVM compatibility and account abstraction across Substrate and Ethereum layers.
Subkey, as of today, does not support generating Ethereum-compatible private keys (like Metamask or web3 wallets do), nor does it expose the H160 derivation used in Moonbeam's unified account format. That’s why when you import Subkey’s mnemonic or secret seed into Metamask or Polkadot.js, you get unexpected or mismatched public addresses — you're using completely different key derivation schemes.</p>
<p>🔹 Unified Accounts vs Subkey-Generated Accounts
Moonbeam’s Unified Accounts design intentionally uses Ethereum-style (H160) addresses across both the EVM and Substrate layers. This simplifies UX and makes tooling compatible with Metamask and Solidity tooling. A single Ethereum private key can now:
Deploy and interact with smart contracts</p>
<p>Send GLMR (native token)</p>
<p>Participate in governance or staking</p>
<p>Query balance and submit extrinsics via Substrate RPC</p>
<p>When you generate an account using Metamask, Hardhat, or other Ethereum-native tooling, Moonbeam maps the H160 address to Substrate storage using an internal abstraction layer. These accounts are fully usable across both EVM and Substrate.
In contrast, when you generate a Substrate-style account with Subkey (even using --network moonbeam), you end up with a legacy account format — valid on Moonbeam, but not connected to the Unified Account system.</p>
<p>🔹 Why Subkey Still Supports --network moonbeam
This option exists mainly for:
Low-level development use cases</p>
<p>Legacy Substrate-style tools or test accounts</p>
<p>Compatibility with on-chain scripts or tools that still expect an SS58 address</p>
<p>But for regular users, or for seamless Substrate-EVM interaction, it’s no longer the recommended path.
So yes — your intuition is correct:
Subkey doesn’t produce Unified Accounts</p>
<p>Subkey-generated accounts are technically valid but limited</p>
<p>They won't provide access to EVM-side features or Substrate unified actions unless linked manually</p>
<p>🔹 What Happens If GLMR Is Sent to a Subkey Address?
If someone sends GLMR tokens to a Subkey-generated account (a valid Substrate H256/SS58 address), the funds will exist on-chain under that account. But since Moonbeam’s tooling is now designed for H160 unified accounts:
The user won’t be able to access those funds via EVM tools (like Metamask)</p>
<p>There’s no automatic mapping or binding between the H256 address and an H160 address</p>
<p>It’s not like Acala, which uses automatic binding between Substrate and EVM accounts</p>
<p>To recover or use funds in that case, the user would need to:
Use the Substrate keypair to sign Substrate-side extrinsics (e.g., via Polkadot.js)</p>
<p>Or manually create a transaction to send the tokens to their unified H160 account</p>
<p>But again, this isn't the typical user path and can lead to confusion — which is why Moonbeam doesn't recommend using Subkey for end users or most developers.</p>
<p>🔹 Suggestion for Tooling
You're absolutely right that:
Moonbeam’s docs should clarify that Subkey is not supported for Unified Accounts</p>
<p>The --network moonbeam option in Subkey should include a warning or be deprecated to avoid confusion</p>
<p>Polkadot.js should better label Ethereum-seed imports and make key-type conversions more transparent</p>
<p>Final Summary
Subkey creates Substrate-native ECDSA keypairs, not Moonbeam Unified Accounts.</p>
<p>Unified Accounts use Ethereum-style H160 keys (Metamask-compatible) and are now the standard for Moonbeam.</p>
<p>Subkey-generated addresses are technically valid, but can’t access the unified Substrate-EVM experience.</p>
<p>No automatic mapping exists between H256 (Substrate) and H160 (Ethereum) addresses on Moonbeam.</p>
<p>Funds sent to a Subkey address are not lost — but require Substrate-level access to move or recover them.</p>
You're absolutely right in noticing a mismatch between what Subkey generates and what Moonbeam's Unified Accounts architecture expects.
🔹 Why Subkey Doesn't Generate Moonbeam Unified Accounts
When you run:
subkey generate --network moonbeam --scheme ecdsa
Subkey generates a Substrate-style ECDSA keypair, with:
A 64-character hex public key (H256)
A Substrate-compatible SS58 address
A mnemonic or raw seed based on Substrate's crypto expectations
This is not an Ethereum-style H160 address, which is what Moonbeam's Unified Accounts system uses for EVM compatibility and account abstraction across Substrate and Ethereum layers.
Subkey, as of today, does not support generating Ethereum-compatible private keys (like Metamask or web3 wallets do), nor does it expose the H160 derivation used in Moonbeam's unified account format. That’s why when you import Subkey’s mnemonic or secret seed into Metamask or Polkadot.js, you get unexpected or mismatched public addresses — you're using completely different key derivation schemes.
🔹 Unified Accounts vs Subkey-Generated Accounts
Moonbeam’s Unified Accounts design intentionally uses Ethereum-style (H160) addresses across both the EVM and Substrate layers. This simplifies UX and makes tooling compatible with Metamask and Solidity tooling. A single Ethereum private key can now:
Deploy and interact with smart contracts
Send GLMR (native token)
Participate in governance or staking
Query balance and submit extrinsics via Substrate RPC
When you generate an account using Metamask, Hardhat, or other Ethereum-native tooling, Moonbeam maps the H160 address to Substrate storage using an internal abstraction layer. These accounts are fully usable across both EVM and Substrate.
In contrast, when you generate a Substrate-style account with Subkey (even using --network moonbeam), you end up with a legacy account format — valid on Moonbeam, but not connected to the Unified Account system.
🔹 Why Subkey Still Supports --network moonbeam
This option exists mainly for:
Low-level development use cases
Legacy Substrate-style tools or test accounts
Compatibility with on-chain scripts or tools that still expect an SS58 address
But for regular users, or for seamless Substrate-EVM interaction, it’s no longer the recommended path.
So yes — your intuition is correct:
Subkey doesn’t produce Unified Accounts
Subkey-generated accounts are technically valid but limited
They won't provide access to EVM-side features or Substrate unified actions unless linked manually
🔹 What Happens If GLMR Is Sent to a Subkey Address?
If someone sends GLMR tokens to a Subkey-generated account (a valid Substrate H256/SS58 address), the funds will exist on-chain under that account. But since Moonbeam’s tooling is now designed for H160 unified accounts:
The user won’t be able to access those funds via EVM tools (like Metamask)
There’s no automatic mapping or binding between the H256 address and an H160 address
It’s not like Acala, which uses automatic binding between Substrate and EVM accounts
To recover or use funds in that case, the user would need to:
Use the Substrate keypair to sign Substrate-side extrinsics (e.g., via Polkadot.js)
Or manually create a transaction to send the tokens to their unified H160 account
But again, this isn't the typical user path and can lead to confusion — which is why Moonbeam doesn't recommend using Subkey for end users or most developers.
🔹 Suggestion for Tooling
You're absolutely right that:
Moonbeam’s docs should clarify that Subkey is not supported for Unified Accounts
The --network moonbeam option in Subkey should include a warning or be deprecated to avoid confusion
Polkadot.js should better label Ethereum-seed imports and make key-type conversions more transparent
Final Summary
Subkey creates Substrate-native ECDSA keypairs, not Moonbeam Unified Accounts.
Unified Accounts use Ethereum-style H160 keys (Metamask-compatible) and are now the standard for Moonbeam.
Subkey-generated addresses are technically valid, but can’t access the unified Substrate-EVM experience.
No automatic mapping exists between H256 (Substrate) and H160 (Ethereum) addresses on Moonbeam.
Funds sent to a Subkey address are not lost — but require Substrate-level access to move or recover them.