A collection of useful crypto utilities for Polkadot ecosystem projects
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Ethereum address handling and compatibility utilities for cross-chain functionality and EVM integration.
Convert public keys and addresses to Ethereum format.
/**
* Encode address or public key to Ethereum format
* @param addressOrPublic - SS58 address or public key bytes
* @returns Ethereum address (0x prefixed, 40 hex chars)
*/
function ethereumEncode(addressOrPublic: string | Uint8Array): string;
/**
* Check if string is valid Ethereum address
* @param address - Address string to check
* @returns true if valid Ethereum address format
*/
function isEthereumAddress(address: string): boolean;
/**
* Check Ethereum address checksum validity
* @param address - Ethereum address to validate
* @returns true if checksum is valid
*/
function isEthereumChecksum(address: string): boolean;Convert between SS58 and EVM address formats.
/**
* Convert SS58 address to EVM format
* @param address - SS58 address string
* @returns 20-byte EVM address
*/
function addressToEvm(address: string): Uint8Array;
/**
* Convert EVM address to SS58 format
* @param evmAddress - 20-byte EVM address
* @param prefix - SS58 network prefix
* @param hashType - Hash algorithm ('blake2' or 'keccak')
* @returns SS58 address string
*/
function evmToAddress(evmAddress: Uint8Array, prefix?: number, hashType?: 'blake2' | 'keccak'): string;Usage Examples:
import {
ethereumEncode,
isEthereumAddress,
addressToEvm,
evmToAddress,
sr25519PairFromSeed
} from "@polkadot/util-crypto";
// Generate Ethereum address from public key
const seed = new Uint8Array(32);
const pair = sr25519PairFromSeed(seed);
const ethAddress = ethereumEncode(pair.publicKey);
console.log(ethAddress); // "0x..."
// Validate Ethereum address
const isValid = isEthereumAddress("0x742d35Cc...49F8A26aE2");
console.log(isValid); // true
// Convert between formats
const ss58Address = "5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY";
const evmBytes = addressToEvm(ss58Address);
const backToSS58 = evmToAddress(evmBytes, 0, 'blake2');Install with Tessl CLI
npx tessl i tessl/npm-polkadot--util-crypto