Skip to main content

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.

Try it Live

Run Blob examples in the interactive playground

    How It Works

    Extracts data from each blob and concatenates:
    Blob 1: [length_1][chunk_1][padding] → Extract chunk_1
    Blob 2: [length_2][chunk_2][padding] → Extract chunk_2
    Blob 3: [length_3][chunk_3][padding] → Extract chunk_3
    
    Result: chunk_1 + chunk_2 + chunk_3
    

    Manual Join

    import { Blob } from 'tevm';
    
    const blobs = Blob.splitData(data);
    
    // Manual join (equivalent to joinData)
    const chunks = blobs.map(blob => Blob.toData(blob));
    const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
    
    const result = new Uint8Array(totalLength);
    let offset = 0;
    for (const chunk of chunks) {
      result.set(chunk, offset);
      offset += chunk.length;
    }
    
    // Verify equivalence
    const auto = Blob.joinData(blobs);
    console.log(Blob.equals(result, auto)); // true
    

    Round-Trip Verification

    import { Blob } from 'tevm';
    
    function verifyRoundTrip(data: Uint8Array) {
      // Split
      const blobs = Blob.splitData(data);
    
      // Join
      const reconstructed = Blob.joinData(blobs);
    
      // Verify
      if (reconstructed.length !== data.length) {
        throw new Error('Length mismatch');
      }
    
      if (!Blob.equals(reconstructed, data)) {
        throw new Error('Data mismatch');
      }
    
      console.log('Round-trip verified');
    }
    
    // Test with various sizes
    verifyRoundTrip(new Uint8Array(1000));
    verifyRoundTrip(new Uint8Array(100_000));
    verifyRoundTrip(new Uint8Array(300_000));
    

    Error Handling

    import { Blob } from 'tevm';
    
    // Invalid blob size
    try {
      const invalid = new Uint8Array(1000);
      Blob.joinData([invalid as any]);
    } catch (e) {
      console.error(e); // "Invalid blob size: 1000"
    }
    
    // Corrupted length prefix
    const blobs = Blob.splitData(data);
    blobs[0][0] = 0xff; // Corrupt length prefix
    try {
      Blob.joinData(blobs);
    } catch (e) {
      console.error(e); // "Invalid length prefix"
    }
    

    Empty Array

    import { Blob } from 'tevm';
    
    // Empty array returns empty data
    const result = Blob.joinData([]);
    console.log(result.length); // 0
    console.log(result instanceof Uint8Array); // true
    

    See Also