Skip to main content

parseErc3448(bytecode: Uint8Array): { implementation: Uint8Array, metadata: Uint8Array } | null

Extracts implementation address and metadata from ERC-3448 MetaProxy bytecode. Parameters:
  • bytecode: Uint8Array - MetaProxy bytecode (minimum 87 bytes)
Returns: { implementation: Uint8Array, metadata: Uint8Array } | null - Parsed components or null if invalid Example:
import { parseErc3448 } from '@tevm/voltaire/Proxy';
import { Address } from '@tevm/voltaire/Address';

// Get deployed MetaProxy code
const code = await eth_getCode('0xMetaProxyAddress...');
const codeBytes = Buffer.from(code.slice(2), 'hex');

// Parse implementation and metadata
const result = parseErc3448(codeBytes);

if (result) {
  console.log('Implementation:', result.implementation.toHex());

  // Decode metadata (example: JSON)
  const metadata = JSON.parse(
    new TextDecoder().decode(result.metadata)
  );
  console.log('Metadata:', metadata);
} else {
  console.log('Not a valid ERC-3448 MetaProxy');
}
Defined in: src/primitives/Proxy/parseErc3448.js

Metadata Structure

MetaProxy embeds arbitrary metadata after the 55-byte ERC-1167 code:
[55 bytes: ERC-1167 code][N bytes: metadata][32 bytes: metadata length]
The last 32 bytes encode metadata length as big-endian uint256.

See Also