Skip to main content

Type Definition

Branded Uint8Array representing full deployed contract bytecode including Solidity compiler metadata.
import type { brand } from '@tevm/voltaire/brand';

export type ContractCodeType = Uint8Array & {
  readonly [brand]: "ContractCode";
};

Quick Reference

import * as ContractCode from '@tevm/voltaire/ContractCode';

// From hex string
const code = ContractCode.from("0x6001600155a26469706673...");

// From Uint8Array
const code = ContractCode.from(new Uint8Array([0x60, 0x01, ...]));

API Methods

Constructors

Metadata

Utilities

Usage Patterns

Verifying Contract Code

import * as ContractCode from '@tevm/voltaire/ContractCode';

// Get deployed code from blockchain
const deployed = ContractCode.from(await provider.getCode(address));

// Check for metadata
if (ContractCode.hasMetadata(deployed)) {
  console.log("Contract includes Solidity metadata");
}

// Extract runtime code for comparison
const runtime = ContractCode.stripMetadata(deployed);
const expected = ContractCode.from(compiledRuntimeCode);

if (ContractCode.equals(runtime, expected)) {
  console.log("Contract verified");
}

Analyzing Contract Structure

import * as ContractCode from '@tevm/voltaire/ContractCode';
import * as Metadata from '@tevm/voltaire/Metadata';

const code = ContractCode.from(deployedBytecode);

// Extract metadata
const meta = Metadata.fromBytecode(code);
if (meta) {
  console.log(`Compiler: Solidity ${meta.solc}`);
  console.log(`IPFS: ${meta.ipfs}`);
}

// Get clean runtime code
const runtime = ContractCode.extractRuntime(code);

Specification