Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 87 additions & 9 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ members = [
"ceno_emul",
"ceno_host",
"ceno_rt",
"ceno_syscall",
"ceno_zkvm",
"derive",
"examples-builder",
Expand Down Expand Up @@ -40,7 +41,7 @@ cfg-if = "1.0"
clap = { version = "4.5", features = ["derive"] }
criterion = { version = "0.5", features = ["html_reports"] }
either = { version = "1.15.*", features = ["serde"] }
generic-array = { version = "*", features = ["alloc", "serde"] }
generic-array = { version = "1.2", features = ["alloc", "serde"] }
itertools = "0.13"
ndarray = "*"
num-derive = "0.4"
Expand Down
1 change: 1 addition & 0 deletions ceno_emul/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ version.workspace = true
[dependencies]
anyhow.workspace = true
ceno_rt = { path = "../ceno_rt" }
ceno_syscall = { path = "../ceno_syscall" }
elf = "0.7"
ff_ext.workspace = true
itertools.workspace = true
Expand Down
2 changes: 1 addition & 1 deletion ceno_emul/src/syscalls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ pub mod sha256;
// Using the same function codes as sp1:
// https://github.com/succinctlabs/sp1/blob/013c24ea2fa15a0e7ed94f7d11a7ada4baa39ab9/crates/core/executor/src/syscalls/code.rs

pub use ceno_rt::syscalls::{
pub use ceno_syscall::{
BLS12381_ADD, BLS12381_DECOMPRESS, BLS12381_DOUBLE, BN254_ADD, BN254_DOUBLE, BN254_FP_ADD,
BN254_FP_MUL, BN254_FP2_ADD, BN254_FP2_MUL, KECCAK_PERMUTE, SECP256K1_ADD,
SECP256K1_DECOMPRESS, SECP256K1_DOUBLE, SECP256R1_ADD, SECP256R1_DECOMPRESS, SECP256R1_DOUBLE,
Expand Down
4 changes: 2 additions & 2 deletions ceno_emul/src/syscalls/bn254/bn254_curve.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ impl SyscallSpec for Bn254AddSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = 2 * BN254_POINT_WORDS;
const CODE: u32 = ceno_rt::syscalls::BN254_ADD;
const CODE: u32 = ceno_syscall::BN254_ADD;
}

pub struct Bn254DoubleSpec;
Expand All @@ -22,7 +22,7 @@ impl SyscallSpec for Bn254DoubleSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = BN254_POINT_WORDS;
const CODE: u32 = ceno_rt::syscalls::BN254_DOUBLE;
const CODE: u32 = ceno_syscall::BN254_DOUBLE;
}

pub fn bn254_add(vm: &VMState) -> SyscallEffects {
Expand Down
8 changes: 4 additions & 4 deletions ceno_emul/src/syscalls/bn254/bn254_fptower.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ impl SyscallSpec for Bn254FpAddSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = 2 * BN254_FP_WORDS;
const CODE: u32 = ceno_rt::syscalls::BN254_FP_ADD;
const CODE: u32 = ceno_syscall::BN254_FP_ADD;
}

pub struct Bn254Fp2AddSpec;
Expand All @@ -26,7 +26,7 @@ impl SyscallSpec for Bn254Fp2AddSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = 2 * BN254_FP2_WORDS;
const CODE: u32 = ceno_rt::syscalls::BN254_FP2_ADD;
const CODE: u32 = ceno_syscall::BN254_FP2_ADD;
}

pub struct Bn254FpMulSpec;
Expand All @@ -35,7 +35,7 @@ impl SyscallSpec for Bn254FpMulSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = 2 * BN254_FP_WORDS;
const CODE: u32 = ceno_rt::syscalls::BN254_FP_MUL;
const CODE: u32 = ceno_syscall::BN254_FP_MUL;
}

pub struct Bn254Fp2MulSpec;
Expand All @@ -44,7 +44,7 @@ impl SyscallSpec for Bn254Fp2MulSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = 2 * BN254_FP2_WORDS;
const CODE: u32 = ceno_rt::syscalls::BN254_FP2_MUL;
const CODE: u32 = ceno_syscall::BN254_FP2_MUL;
}

fn bn254_fptower_binary_op<
Expand Down
2 changes: 1 addition & 1 deletion ceno_emul/src/syscalls/keccak_permute.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ impl SyscallSpec for KeccakSpec {

const REG_OPS_COUNT: usize = 1;
const MEM_OPS_COUNT: usize = KECCAK_WORDS;
const CODE: u32 = ceno_rt::syscalls::KECCAK_PERMUTE;
const CODE: u32 = ceno_syscall::KECCAK_PERMUTE;
const HAS_LOOKUPS: bool = true;
}

Expand Down
6 changes: 3 additions & 3 deletions ceno_emul/src/syscalls/secp256k1.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,23 +14,23 @@ impl SyscallSpec for Secp256k1AddSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = 2 * SECP256K1_ARG_WORDS;
const CODE: u32 = ceno_rt::syscalls::SECP256K1_ADD;
const CODE: u32 = ceno_syscall::SECP256K1_ADD;
}

impl SyscallSpec for Secp256k1DoubleSpec {
const NAME: &'static str = "SECP256K1_DOUBLE";

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = SECP256K1_ARG_WORDS;
const CODE: u32 = ceno_rt::syscalls::SECP256K1_DOUBLE;
const CODE: u32 = ceno_syscall::SECP256K1_DOUBLE;
}

impl SyscallSpec for Secp256k1DecompressSpec {
const NAME: &'static str = "SECP256K1_DECOMPRESS";

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = 2 * COORDINATE_WORDS;
const CODE: u32 = ceno_rt::syscalls::SECP256K1_DECOMPRESS;
const CODE: u32 = ceno_syscall::SECP256K1_DECOMPRESS;
}

// A secp256k1 point in uncompressed form takes 64 bytes
Expand Down
2 changes: 1 addition & 1 deletion ceno_emul/src/syscalls/sha256.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ impl SyscallSpec for Sha256ExtendSpec {

const REG_OPS_COUNT: usize = 2;
const MEM_OPS_COUNT: usize = SHA_EXTEND_WORDS;
const CODE: u32 = ceno_rt::syscalls::SHA_EXTEND;
const CODE: u32 = ceno_syscall::SHA_EXTEND;
}

/// Wrapper type for the sha_extend argument that implements conversions
Expand Down
12 changes: 12 additions & 0 deletions ceno_host/tests/test_elf.rs
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,18 @@ fn test_secp256k1_decompress() -> Result<()> {
Ok(())
}

#[test]
fn test_secp256k1_ecrecover() -> Result<()> {
let _ = ceno_host::run(
CENO_PLATFORM,
ceno_examples::secp256k1_ecrecover,
&CenoStdin::default(),
None,
);

Ok(())
}

#[test]
fn test_sha256_extend() -> Result<()> {
let program_elf = ceno_examples::sha_extend_syscall;
Expand Down
1 change: 1 addition & 0 deletions ceno_rt/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,5 @@ version = "0.1.0"

[dependencies]
getrandom = { version = "0.2.15", features = ["custom"], default-features = false }
getrandom_v3 = { package = "getrandom", version = "0.3", default-features = false }
rkyv.workspace = true
Loading