pub enum Address {
Substrate(String),
Evm(String),
}Expand description
Generic address type for different chains
Variants§
Substrate(String)
Substrate SS58 address
Evm(String)
EVM hex address (0x…) - validated with EIP-55 checksum
Implementations§
Source§impl Address
impl Address
Sourcepub fn substrate_checked(
addr: impl Into<String>,
) -> Result<Self, ValidationError>
pub fn substrate_checked( addr: impl Into<String>, ) -> Result<Self, ValidationError>
Create a Substrate address with validation
This function validates:
- SS58 base58 encoding
- Blake2b checksum
§Errors
Returns Err if the address format is invalid or checksum validation fails.
§Example
use apex_sdk_types::Address;
// Valid SS58 address (Polkadot)
let addr = Address::substrate_checked("15oF4uVJwmo4TdGW7VfQxNLavjCXviqxT9S1MgbjMNHr6Sp5").unwrap();
// Invalid address
let result = Address::substrate_checked("invalid");
assert!(result.is_err());Sourcepub fn substrate(addr: impl Into<String>) -> Self
pub fn substrate(addr: impl Into<String>) -> Self
Create a Substrate address without validation (legacy method)
Warning: This method does not perform SS58 checksum validation.
Use substrate_checked() instead for new code.
This method is provided for backward compatibility and cases where validation is not required (e.g., trusted input sources).
Sourcepub fn evm_checked(addr: impl Into<String>) -> Result<Self, ValidationError>
pub fn evm_checked(addr: impl Into<String>) -> Result<Self, ValidationError>
Create an EVM address with validation
This function validates:
- Address format (0x followed by 40 hex characters)
- EIP-55 checksum (if the address has mixed case)
§Errors
Returns Err if the address format is invalid or checksum validation fails.
§Example
use apex_sdk_types::Address;
// Valid checksummed address
let addr = Address::evm_checked("0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed").unwrap();
// Valid lowercase address (no checksum)
let addr = Address::evm_checked("0x5aaeb6053f3e94c9b9a09f33669435e7ef1beaed").unwrap();
// Invalid checksum
let result = Address::evm_checked("0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAeD");
assert!(result.is_err());Sourcepub fn evm(addr: impl Into<String>) -> Self
pub fn evm(addr: impl Into<String>) -> Self
Create an EVM address without validation (legacy method)
Warning: This method does not perform EIP-55 checksum validation.
Use evm_checked() instead for new code.
This method is provided for backward compatibility and cases where validation is not required (e.g., trusted input sources).
Sourcepub fn to_checksum(&self) -> String
pub fn to_checksum(&self) -> String
Convert EVM address to checksummed format
For EVM addresses, returns the EIP-55 checksummed version. For Substrate addresses, returns the address unchanged.
Sourcepub fn validate(&self) -> Result<(), ValidationError>
pub fn validate(&self) -> Result<(), ValidationError>
Validate the address format and checksum
For EVM addresses, validates EIP-55 checksum. For Substrate addresses, always returns Ok (validation not implemented).