> ## Documentation Index
> Fetch the complete documentation index at: https://voltaire.tevm.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# parseErc3448

> Extract implementation and metadata from ERC-3448 MetaProxy

## `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:**

```typescript theme={null}
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](https://github.com/evmts/voltaire/blob/main/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

* [generateErc3448](/primitives/proxy/generate-erc3448)
* [isErc3448](/primitives/proxy/is-erc3448)
* [ERC-3448 Specification](https://eips.ethereum.org/EIPS/eip-3448)
