Try it Live
Run Blob examples in the interactive playground
How It Works
Extracts data from each blob and concatenates:Copy
Ask AI
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
Copy
Ask AI
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
Copy
Ask AI
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
Copy
Ask AI
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
Copy
Ask AI
import { Blob } from 'tevm';
// Empty array returns empty data
const result = Blob.joinData([]);
console.log(result.length); // 0
console.log(result instanceof Uint8Array); // true

