mirror of
https://github.com/logos-blockchain/logos-execution-zone.git
synced 2026-08-26 03:41:13 +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.
18 lines
359 B
TOML
18 lines
359 B
TOML
[package]
|
|
name = "program_loader_core"
|
|
version = "0.1.0"
|
|
edition = "2024"
|
|
license = { workspace = true }
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
lee_core.workspace = true
|
|
serde = { workspace = true, default-features = false }
|
|
borsh.workspace = true
|
|
bytemuck.workspace = true
|
|
risc0-zkvm.workspace = true
|
|
risc0-binfmt.workspace = true
|
|
anyhow.workspace = true
|