Skip to content

Use read/write_slice to avoide serde at zkVM boundary & optimize zlVM ELF build #83

@nuke-web3

Description

@nuke-web3

We should not do serde operations in/out of the ZK program, as we operate on large data and the cycles spent to do it are pretty huuuuge:

#82 (comment)

# 0.125 MB blob
INFO execute: clk = 0 pc = 0x20aa78
INFO execute: ┌╴deserialize input
INFO execute: └╴63,881 cycles
INFO execute: ┌╴create blob
WARNING: Using insecure random number generator.
INFO execute: └╴67,162 cycles
INFO execute: ┌╴compute keccak hash
INFO execute: └╴5,264 cycles
INFO execute: ┌╴convert blob to shares
INFO execute: └╴17,315 cycles
INFO execute: ┌╴verify proof
INFO execute: └╴50,456 cycles
INFO execute: ┌╴check keccak hash
INFO execute: └╴619 cycles
INFO execute: ┌╴commit output
INFO execute: └╴1,416 cycles
INFO execute: gas: 1676576


# 1.5 MB blob
INFO execute: clk = 0 pc = 0x20aa78
INFO execute: ┌╴deserialize input
INFO execute: clk = 10000000 pc = 0x202d28
INFO execute: clk = 20000000 pc = 0x202d14
INFO execute: └╴27,746,571 cycles
INFO execute: ┌╴create blob
INFO execute: clk = 30000000 pc = 0x20a7a8
INFO execute: clk = 40000000 pc = 0x20a8c4
WARNING: Using insecure random number generator.
INFO execute: clk = 50000000 pc = 0x219ec4
INFO execute: clk = 60000000 pc = 0x213d08
INFO execute: clk = 70000000 pc = 0x20a9cc
INFO execute: clk = 80000000 pc = 0x20aa48
INFO execute: clk = 90000000 pc = 0x2120d4
INFO execute: clk = 100000000 pc = 0x20a5b8
INFO execute: clk = 110000000 pc = 0x212030
INFO execute: clk = 120000000 pc = 0x20a69c
INFO execute: └╴97,020,929 cycles
INFO execute: ┌╴compute keccak hash
INFO execute: └╴5,142,260 cycles
INFO execute: ┌╴convert blob to shares
INFO execute: clk = 130000000 pc = 0x20a8bc
INFO execute: clk = 140000000 pc = 0x20a8a0
INFO execute: └╴16,996,745 cycles
INFO execute: ┌╴verify proof
INFO execute: clk = 150000000 pc = 0x219ec4
INFO execute: clk = 160000000 pc = 0x20a65c
INFO execute: clk = 170000000 pc = 0x20a65c
INFO execute: clk = 180000000 pc = 0x20d3e8
INFO execute: └╴36,835,395 cycles
INFO execute: ┌╴check keccak hash
INFO execute: └╴619 cycles
INFO execute: ┌╴commit output
INFO execute: └╴1,280 cycles
INFO execute: gas: 315341119
INFO execute: close time.busy=95.5s time.idle=15.2µs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions