Built for Monad · Hackathon 2026

Zero-Copy
Transaction
Compression.

LatticePress intercepts, compresses, and decompresses EVM transactions entirely in memory — shrinking Monad's state bloat by 75%.

Payload Reduction 0 %
Hourly Bloat Saved 0 GB/hr
Decompression Cost ~240 gas

Monad is fast. Its state is fat.

At 10,000 TPS with ~500-byte average transactions, Monad's network history grows at a staggering rate — making long-term node operation increasingly expensive.

10,000 TPS

Monad's parallel execution engine processes transactions at blazing speed.

×

~500 Bytes

Average transaction payload including selector, arguments, and padding.

=

0 GB/hr

Of raw state bloat accumulating every single hour on-chain.

Three steps. Zero copies.

LatticePress operates as an off-chain/on-chain compression pipeline that reconstructs calldata directly in EVM memory using hand-tuned Yul.

01

Intercept

The Rust sidecar daemon intercepts raw transaction payloads from the RPC mempool before they hit the network.

Rust · Tokio · Async
02

Compress

4-byte function selectors are replaced with 1-byte dictionary IDs. The remaining payload is Zstd-compressed off-chain.

Dict Substitution · Zstd
03

Decompress

The LatticeGateway contract expands the dictionary ID back into the full selector in-memory using pure Yul, then executes via delegatecall.

Yul · EVM Memory · delegatecall

Standard vs LatticePress

Real metrics from our Monad Testnet deployment. Every transaction saves bytes. At scale, it saves terabytes.

Payload Size (per transaction)
500 bytes
Standard
125 bytes
LatticePress
↓ 75% smaller
Hourly State Bloat (@ 10,000 TPS)
16.76 GB
Standard
4.19 GB
LatticePress
↓ 12.57 GB saved every hour
Daily Storage Growth
402.24 GB
Standard
100.56 GB
LatticePress
↓ ~301 GB saved per day
Function Selector (calldata overhead)
4 bytes
Standard
1 byte
LatticePress
↓ Dict ID replaces full selector
📦
0%
Compression Ratio
~240
Gas Overhead
🧠
0
Storage Reads
🔗
0 GB
Saved Daily

Savings in Real-Time

Watch the bytes pile up. At 10,000 TPS, LatticePress saves storage every millisecond.

Bytes Saved
0
since page load
Transactions Compressed
0
simulated @ 10k TPS
Storage Reclaimed
0 MB
GB → MB → KB accumulation

Test the Interceptor

Send a real transaction payload to the local LatticePress interceptor running on port 3000. It will ZSTD-compress the payload to prove exact sizes, then submit it to the live Monad test gateway.

Waiting...
Original Size
- B
ZSTD Packed Size
- B
Real Gas Used
-
Tx Hash
-
Compression Time
- ms
Theoretical TPS
- TPS

Pure Yul. Pure Speed.

The on-chain gateway uses hand-written Yul assembly to decompress payloads directly in EVM memory — zero storage reads, zero copies.

LatticeGateway.sol — fallback()
// Read Dictionary ID from first byte of calldata
let dictId := shr(248, calldataload(0))

// 0x01 → transfer(address,uint256) [0xa9059cbb]
if eq(dictId, 0x01) {
    mstore(mem, shl(224, 0xa9059cbb))
    calldatacopy(add(mem, 4), 1, sub(calldatasize(), 1))
}

// Execute via delegatecall — state lives on the gateway
let ok := delegatecall(gas(), target, mem, len, 0, 0)