diem/diem · error · Error
Unable to retrieve the account address: {0}, storage error:
Error message
Unable to retrieve the account address: {0}, storage error: {1} What it means
The key manager could not derive the validator's account address because the required account data was missing from storage. The payloads are a description of the missing address source and the underlying storage error string. It wraps the storage failure that prevented reading the account address.
Source
Thrown at secure/key-manager/src/lib.rs:83
WaitForReconfiguration,
/// Storage and the blockchain are inconsistent, wait for rotation transaction execution.
WaitForTransactionExecution,
}
#[allow(clippy::large_enum_variant)]
#[derive(Debug, Error, PartialEq, Eq)]
pub enum Error {
#[error("Key mismatch, config: {0}, info: {1}")]
ConfigInfoKeyMismatch(Ed25519PublicKey, Ed25519PublicKey),
#[error("Key mismatch, config: {0}, storage: {1}")]
ConfigStorageKeyMismatch(Ed25519PublicKey, Ed25519PublicKey),
#[error("Data does not exist: {0}")]
DataDoesNotExist(String),
#[error(
"The diem_timestamp value on-chain isn't increasing. Last value: {0}, Current value: {1}"
)]
LivenessError(u64, u64),
#[error("Unable to retrieve the account address: {0}, storage error: {1}")]
MissingAccountAddress(String, String),
#[error("Storage error: {0}")]
StorageError(String),
#[error("ValidatorInfo not found in ValidatorConfig: {0}")]
ValidatorInfoNotFound(AccountAddress),
#[error("Unknown error: {0}")]
UnknownError(String),
}
impl From<anyhow::Error> for Error {
fn from(error: anyhow::Error) -> Self {
Error::UnknownError(format!("{}", error))
}
}
impl From<diem_client::Error> for Error {
fn from(error: diem_client::Error) -> Self {
Error::UnknownError(format!("Client error: {}", error))View on GitHub (pinned to fc4714a8ea)
Solutions
- Fix the underlying storage error reported in the message (permissions, missing file, wrong backend URL)
- Initialize/restore storage so the account address data exists for this validator
- Verify the key manager config points at the correct storage backend and namespace
- Restart the key manager after remediation so it re-attempts address retrieval
Example fix
// before
storage: { backend: { type: "on-disk", path: "/wrong/path/db" } }
// after
storage: { backend: { type: "on-disk", path: "/opt/diem/data/<validator>/db" } } Defensive patterns
Strategy: validation
Validate before calling
// ensure storage is reachable and account address is resolvable before start
let addr_result = storage.get::<String>(&AccountAddressPath);
if let Err(e) = addr_result {
return Err(anyhow!("cannot start key manager; account address unavailable: {}", e));
} Type guard
fn address_recoverable(res: &Result<AccountAddress, Error>) -> bool {
!matches!(res, Err(Error::MissingAccountAddress(_, _)))
} Try / catch
match result {
Err(Error::MissingAccountAddress(ctx, storage_err)) => eprintln!("fix storage backend ({}): {}", storage_err, ctx),
Err(e) => return Err(e.into()),
Ok(v) => Ok(v),
} Prevention
- Verify storage backend connectivity and permissions at startup health checks
- Configure the correct per-validator storage path/namespace
- Restore storage from backup after host migrations before restarting the manager
- Alert on the wrapped storage error string to catch backend outages early
When it happens
Trigger: Key manager startup or transaction construction calls into storage to fetch the account address (e.g. via the config's account key chain or storage backend) and the underlying storage call returns an error, surfaced here as MissingAccountAddress.
Common situations: Uninitialized or misconfigured secure storage backend, wrong storage file/namespace for this validator, corrupted storage backend, or storage backend connection failures.
Related errors
- Key mismatch, config: {0}, storage: {1}
- Data does not exist: {0}
- Unable to read key at the specified path
- Failed (de)serializing validator_network_address_keys
- Failed reading validator_network_address_keys from storage
AI-assisted analysis of diem/diem@fc4714a8ea (2026-09-04).
Data as JSON: /api/errors/da387af175573f7a.
Report an issue: GitHub.