mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-08-25 03:11:21 +00:00
instruction_data is word-serialized (risc0_zkvm::serde) for guest consumption, which encodes Vec<u8> at 4 bytes/word since it doesn't route through serialize_bytes — a Deploy transaction's wire size ran ~4x its raw bytecode. Add Message/ChainedCall::raw_payload, a plain borsh-encoded Vec<u8> alongside instruction_data, and move Deploy's bytecode there instead; Instruction::Deploy now only carries update_auth. Also stop transmitting and storing the ~32KB RISC0 platform kernel on every single deployment: it's byte-identical across every guest artifact in this repo, so Deploy now carries only the program-specific user_elf and execute_deploy reconstructs the full two-ELF binary from an embedded kernel constant to compute image_id. Segment accounts store user_elf only, roughly halving their footprint for a typical program. Measured on real Deploy dispatch (claimer, ~366KB): encoded transaction size dropped from 1,464,777 bytes to 334,094 bytes.