Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update layouts to cairo-lang 0.11 release #874

Merged
merged 43 commits into from
Mar 10, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
aba5676
update layouts to cairo-lang 0.11 release
Jrigada Mar 3, 2023
72eed98
update layout all
Jrigada Mar 3, 2023
cee5613
update benches and makefile
Jrigada Mar 3, 2023
f4bdd25
Add instance def
fmoletta Mar 3, 2023
d8c1158
Add file
fmoletta Mar 3, 2023
f481b3d
Add poseidon instance def to builtin instance def
fmoletta Mar 3, 2023
835d35c
Add Poseidon to BuiltinRunners
fmoletta Mar 3, 2023
b601a91
Add simple tests program
fmoletta Mar 6, 2023
2a9d2dd
Prevent poseidon from being rejected by deserialize
fmoletta Mar 6, 2023
8dbfac7
Use modified version of starknet-crypto poseidon hash (need permute f…
fmoletta Mar 6, 2023
07f8cc6
Add poseidon builtin impl + remove unreleased AddAssign usage
fmoletta Mar 6, 2023
376ba70
Fix EOF
fmoletta Mar 6, 2023
559e5aa
Save a step
fmoletta Mar 6, 2023
4c82b4e
Add comment before unwrap
fmoletta Mar 6, 2023
1ff1870
Clippy
fmoletta Mar 6, 2023
8f89d74
Reorder files
fmoletta Mar 6, 2023
95f5111
reset run_benchmark script
Jrigada Mar 6, 2023
df4b53c
Add comment
fmoletta Mar 6, 2023
28a8ea7
Use constants for cells
fmoletta Mar 6, 2023
25e3d17
Add more test program
fmoletta Mar 6, 2023
c7500fe
Add integration tests
fmoletta Mar 6, 2023
152d5e4
test constant creation doesnt panic
fmoletta Mar 6, 2023
feee06c
Add tests
fmoletta Mar 6, 2023
92c4c58
Fix failling tests
fmoletta Mar 7, 2023
691d5d1
Use final values for POSEIDON_COMP_CONSTANTS and move calculation to …
fmoletta Mar 7, 2023
60c493d
typo
fmoletta Mar 7, 2023
cef4153
Merge branch 'main' of github.com:lambdaclass/cairo-rs into poseidon-…
fmoletta Mar 7, 2023
a9e0051
Solve post-merge conflicts
fmoletta Mar 7, 2023
240c6cc
Implement poseidon hints
fmoletta Mar 7, 2023
38c1241
Add file
fmoletta Mar 7, 2023
daa97dc
Add tests for new hint
fmoletta Mar 8, 2023
ba970bf
Clippy
fmoletta Mar 8, 2023
0cb6783
merge with poseidon
Jrigada Mar 8, 2023
b4e1ccc
allow dead code in default poseidon
Jrigada Mar 8, 2023
510e772
remove wrong text
Jrigada Mar 8, 2023
8fc78d7
Update .github/workflows/rust.yml
Jrigada Mar 10, 2023
4211b22
Update src/types/instance_definitions/poseidon_instance_def.rs
Jrigada Mar 10, 2023
54fe3c3
Update src/types/instance_definitions/poseidon_instance_def.rs
Jrigada Mar 10, 2023
5f7bd93
Update src/types/instance_definitions/builtins_instance_def.rs
Jrigada Mar 10, 2023
88df858
Update src/types/instance_definitions/builtins_instance_def.rs
Jrigada Mar 10, 2023
4c4131f
Update src/types/instance_definitions/builtins_instance_def.rs
Jrigada Mar 10, 2023
4c88101
merge witn 0.11
Jrigada Mar 10, 2023
4a486fe
Merge branch '0.11' into changes-layout-cairo-lang-0.11
Jrigada Mar 10, 2023
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
2 changes: 1 addition & 1 deletion custom_hint_example/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ fn main() {
"main",
false,
false,
"all",
"all_cairo",
false,
&mut hint_processor,
)
Expand Down
17 changes: 13 additions & 4 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,14 @@ struct Args {

fn validate_layout(value: &str) -> Result<(), String> {
match value {
"plain" | "small" | "dex" | "bitwise" | "perpetual_with_bitwise" | "all" => Ok(()),
"plain"
| "small"
| "dex"
| "starknet"
| "starknet_with_keccak"
| "recursive_large_output"
| "all_cairo"
| "all_solidity" => Ok(()),
_ => Err(format!("{value} is not a valid layout")),
}
}
Expand Down Expand Up @@ -95,9 +102,11 @@ mod tests {
"plain",
"small",
"dex",
"bitwise",
"perpetual_with_bitwise",
"all",
"starknet",
"starknet_with_keccak",
"recursive_large_output",
"all_cairo",
"all_solidity",
];

for layout in valid_layouts {
Expand Down
88 changes: 71 additions & 17 deletions src/types/instance_definitions/builtins_instance_def.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,19 @@ impl BuiltinsInstanceDef {
}
}

pub(crate) fn perpetual_with_bitwise() -> BuiltinsInstanceDef {
pub(crate) fn recursive() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
pedersen: Some(PedersenInstanceDef::new(128, 1)),
range_check: Some(RangeCheckInstanceDef::default()),
ecdsa: None,
bitwise: Some(BitwiseInstanceDef::new(8)),
ec_op: None,
keccak: None,
}
}

pub(crate) fn starknet() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
pedersen: Some(PedersenInstanceDef::new(32, 1)),
Expand All @@ -61,34 +73,50 @@ impl BuiltinsInstanceDef {
bitwise: Some(BitwiseInstanceDef::new(64)),
ec_op: Some(EcOpInstanceDef::new(1024)),
keccak: None,
// poseidon: todo!(),
}
}

pub(crate) fn bitwise() -> BuiltinsInstanceDef {
pub(crate) fn starknet_with_keccak() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
pedersen: Some(PedersenInstanceDef::new(256, 1)),
pedersen: Some(PedersenInstanceDef::new(32, 1)),
range_check: Some(RangeCheckInstanceDef::new(16, 8)),
ecdsa: Some(EcdsaInstanceDef::new(2048)),
bitwise: Some(BitwiseInstanceDef::new(64)),
ec_op: Some(EcOpInstanceDef::new(1024)),
keccak: Some(KeccakInstanceDef::new(2048, vec![200; 8])),
// poseidon: todo!(),
}
}

pub(crate) fn recursive_large_output() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
pedersen: Some(PedersenInstanceDef::new(32, 1)),
range_check: Some(RangeCheckInstanceDef::default()),
ecdsa: Some(EcdsaInstanceDef::new(1024)),
ecdsa: None,
bitwise: Some(BitwiseInstanceDef::new(8)),
ec_op: None,
keccak: None,
// poseidon: None,
}
}

pub(crate) fn recursive() -> BuiltinsInstanceDef {
pub(crate) fn all_cairo() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
pedersen: Some(PedersenInstanceDef::new(256, 1)),
range_check: Some(RangeCheckInstanceDef::default()),
ecdsa: None,
ecdsa: Some(EcdsaInstanceDef::new(2048)),
bitwise: Some(BitwiseInstanceDef::new(16)),
ec_op: None,
ec_op: Some(EcOpInstanceDef::new(1024)),
keccak: Some(KeccakInstanceDef::new(2048, vec![200; 8])),
// poseidon: todo()!,
}
}

pub(crate) fn all() -> BuiltinsInstanceDef {
pub(crate) fn all_solidity() -> BuiltinsInstanceDef {
BuiltinsInstanceDef {
output: true,
pedersen: Some(PedersenInstanceDef::default()),
Expand All @@ -97,6 +125,7 @@ impl BuiltinsInstanceDef {
bitwise: Some(BitwiseInstanceDef::default()),
ec_op: Some(EcOpInstanceDef::default()),
keccak: None,
// poseidon: None,
}
}
}
Expand Down Expand Up @@ -139,8 +168,19 @@ mod tests {
}

#[test]
fn get_builtins_perpetual_with_bitwise() {
let builtins = BuiltinsInstanceDef::perpetual_with_bitwise();
fn get_builtins_recursive() {
let builtins = BuiltinsInstanceDef::recursive();
assert!(builtins.output);
assert!(builtins.pedersen.is_some());
assert!(builtins.range_check.is_some());
assert!(builtins.ecdsa.is_none());
assert!(builtins.bitwise.is_some());
assert!(builtins.ec_op.is_none());
}

#[test]
fn get_builtins_starknet() {
let builtins = BuiltinsInstanceDef::starknet();
assert!(builtins.output);
assert!(builtins.pedersen.is_some());
assert!(builtins.range_check.is_some());
Expand All @@ -150,19 +190,20 @@ mod tests {
}

#[test]
fn get_builtins_bitwise() {
let builtins = BuiltinsInstanceDef::bitwise();
fn get_builtins_starknet_with_keccak() {
let builtins = BuiltinsInstanceDef::starknet_with_keccak();
assert!(builtins.output);
assert!(builtins.pedersen.is_some());
assert!(builtins.range_check.is_some());
assert!(builtins.ecdsa.is_some());
assert!(builtins.bitwise.is_some());
assert!(builtins.ec_op.is_none());
assert!(builtins.ec_op.is_some());
assert!(builtins.keccak.is_some());
}

#[test]
fn get_builtins_recursive() {
let builtins = BuiltinsInstanceDef::recursive();
fn get_builtins_recursive_large_output() {
let builtins = BuiltinsInstanceDef::recursive_large_output();
assert!(builtins.output);
assert!(builtins.pedersen.is_some());
assert!(builtins.range_check.is_some());
Expand All @@ -172,13 +213,26 @@ mod tests {
}

#[test]
fn get_builtins_all() {
let builtins = BuiltinsInstanceDef::all();
fn get_builtins_all_cairo() {
let builtins = BuiltinsInstanceDef::all_cairo();
assert!(builtins.output);
assert!(builtins.pedersen.is_some());
assert!(builtins.range_check.is_some());
assert!(builtins.ecdsa.is_some());
assert!(builtins.bitwise.is_some());
assert!(builtins.ec_op.is_some());
assert!(builtins.keccak.is_some());
}

#[test]
fn get_builtins_all_solidity() {
let builtins = BuiltinsInstanceDef::all_solidity();
assert!(builtins.output);
assert!(builtins.pedersen.is_some());
assert!(builtins.range_check.is_some());
assert!(builtins.ecdsa.is_some());
assert!(builtins.bitwise.is_some());
assert!(builtins.ec_op.is_some());
assert!(builtins.keccak.is_none());
}
}
Loading