Make compiler generic over Network

This commit is contained in:
Pranav Gaddamadugu 2024-05-14 09:49:03 -07:00
parent f29b6b01ee
commit f29bd71185
32 changed files with 562 additions and 463 deletions

470
Cargo.lock generated
View File

@ -1879,7 +1879,7 @@ dependencies = [
"serde",
"serde_json",
"smallvec",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -1902,7 +1902,7 @@ dependencies = [
"serde",
"serde_yaml",
"sha2",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"tempfile",
]
@ -1913,7 +1913,7 @@ dependencies = [
"leo-ast",
"leo-errors",
"leo-span",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -1966,7 +1966,7 @@ dependencies = [
"serde_json",
"serial_test",
"snarkos-cli",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"sys-info",
"test_dir",
"toml 0.8.12",
@ -1989,7 +1989,7 @@ dependencies = [
"serde",
"serial_test",
"snarkos-cli",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"toml 0.8.12",
"tracing",
]
@ -2009,7 +2009,7 @@ dependencies = [
"serde_json",
"serde_yaml",
"smallvec",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"tracing",
]
@ -2026,7 +2026,7 @@ dependencies = [
"num-traits",
"serde",
"serde_json",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -2044,6 +2044,7 @@ dependencies = [
"serde_json",
"serial_test",
"sha2",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"tempfile",
"toml 0.8.12",
"ureq",
@ -2074,6 +2075,7 @@ dependencies = [
"serde",
"serde_json",
"serde_yaml",
"snarkvm 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"walkdir",
]
@ -3921,12 +3923,12 @@ dependencies = [
"rayon",
"self_update 0.38.0",
"serde_json",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-parameters 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-parameters 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"thiserror",
"ureq",
"walkdir",
@ -3985,10 +3987,10 @@ dependencies = [
"serde",
"sha2",
"smallvec",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-parameters 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-parameters 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"thiserror",
]
@ -4027,13 +4029,13 @@ name = "snarkvm-circuit"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4055,10 +4057,10 @@ name = "snarkvm-circuit-account"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4077,9 +4079,9 @@ name = "snarkvm-circuit-algorithms"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4097,9 +4099,9 @@ name = "snarkvm-circuit-collections"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4122,12 +4124,12 @@ dependencies = [
"nom",
"num-traits",
"once_cell",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment-witness 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-environment-witness 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4163,10 +4165,10 @@ name = "snarkvm-circuit-network"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4186,13 +4188,13 @@ version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"paste",
"snarkvm-circuit-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4215,14 +4217,14 @@ name = "snarkvm-circuit-types"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-address 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-string 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-address 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-string 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4245,12 +4247,12 @@ name = "snarkvm-circuit-types-address"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-address 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-address 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4271,8 +4273,8 @@ name = "snarkvm-circuit-types-boolean"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4289,9 +4291,9 @@ name = "snarkvm-circuit-types-field"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4309,11 +4311,11 @@ name = "snarkvm-circuit-types-group"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4333,11 +4335,11 @@ name = "snarkvm-circuit-types-integers"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4357,10 +4359,10 @@ name = "snarkvm-circuit-types-scalar"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4379,11 +4381,11 @@ name = "snarkvm-circuit-types-string"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-string 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-string 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4403,12 +4405,12 @@ name = "snarkvm-console"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4430,8 +4432,8 @@ version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"bs58",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"zeroize",
]
@ -4453,9 +4455,9 @@ source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581
dependencies = [
"blake2s_simd",
"smallvec",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"tiny-keccak",
]
@ -4479,8 +4481,8 @@ source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581
dependencies = [
"aleo-std",
"rayon",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4506,15 +4508,15 @@ dependencies = [
"once_cell",
"paste",
"serde",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-parameters 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-parameters 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4552,9 +4554,9 @@ dependencies = [
"num-traits",
"rand",
"serde",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"zeroize",
]
@ -4589,12 +4591,12 @@ dependencies = [
"once_cell",
"paste",
"serde_json",
"snarkvm-console-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-account 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-collections 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-network 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4623,14 +4625,14 @@ name = "snarkvm-console-types"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-address 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-string 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-address 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-string 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4653,10 +4655,10 @@ name = "snarkvm-console-types-address"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-group 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4675,7 +4677,7 @@ name = "snarkvm-console-types-boolean"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4691,8 +4693,8 @@ name = "snarkvm-console-types-field"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"zeroize",
]
@ -4711,10 +4713,10 @@ name = "snarkvm-console-types-group"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4733,10 +4735,10 @@ name = "snarkvm-console-types-integers"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-scalar 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4755,9 +4757,9 @@ name = "snarkvm-console-types-scalar"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"zeroize",
]
@ -4777,10 +4779,10 @@ name = "snarkvm-console-types-string"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console-network-environment 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-boolean 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-field 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console-types-integers 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4803,8 +4805,8 @@ dependencies = [
"rayon",
"rustc_version",
"serde",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-fields 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"thiserror",
]
@ -4834,7 +4836,7 @@ dependencies = [
"rand",
"rayon",
"serde",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"thiserror",
"zeroize",
]
@ -4867,15 +4869,15 @@ dependencies = [
"parking_lot",
"rand",
"rayon",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-authority 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-authority 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-puzzle",
"snarkvm-ledger-query 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-query 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"time",
"tracing",
]
@ -4912,8 +4914,8 @@ dependencies = [
"anyhow",
"rand",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-subdag 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-subdag 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4936,15 +4938,15 @@ dependencies = [
"indexmap 2.2.6",
"rayon",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-authority 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-subdag 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-authority 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-subdag 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-puzzle",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -4994,8 +4996,8 @@ dependencies = [
"indexmap 2.2.6",
"rayon",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5014,12 +5016,12 @@ name = "snarkvm-ledger-narwhal"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-ledger-narwhal-batch-certificate 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-data 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-subdag 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-transmission 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-certificate 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-data 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-subdag 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-transmission 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5043,9 +5045,9 @@ dependencies = [
"indexmap 2.2.6",
"rayon",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5069,8 +5071,8 @@ dependencies = [
"indexmap 2.2.6",
"rayon",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5091,7 +5093,7 @@ source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581
dependencies = [
"bytes",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"tokio",
]
@ -5114,11 +5116,11 @@ dependencies = [
"indexmap 2.2.6",
"rayon",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-certificate 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-batch-certificate 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-batch-header 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-transmission-id 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5142,9 +5144,9 @@ source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581
dependencies = [
"bytes",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-data 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-data 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-puzzle",
]
@ -5166,7 +5168,7 @@ name = "snarkvm-ledger-narwhal-transmission-id"
version = "0.16.19"
source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581203a9aaff3fe39fc3057"
dependencies = [
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-puzzle",
]
@ -5195,8 +5197,8 @@ dependencies = [
"rand_chacha",
"rayon",
"serde_json",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5210,7 +5212,7 @@ dependencies = [
"rand",
"rand_chacha",
"rayon",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-puzzle",
]
@ -5221,9 +5223,9 @@ source = "git+https://github.com/AleoHQ/snarkVM?rev=da3d78a#da3d78a5726ce5b07581
dependencies = [
"async-trait",
"reqwest 0.11.27",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"ureq",
]
@ -5253,14 +5255,14 @@ dependencies = [
"rayon",
"serde",
"serde_json",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-authority 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-narwhal-batch-certificate 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-authority 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-narwhal-batch-certificate 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-puzzle",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5317,8 +5319,8 @@ dependencies = [
"rand",
"serde_json",
"sha2",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-curves 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"thiserror",
]
@ -5360,19 +5362,19 @@ dependencies = [
"parking_lot",
"rand",
"rayon",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-committee 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-puzzle",
"snarkvm-ledger-puzzle-epoch",
"snarkvm-ledger-query 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-process 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-query 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-process 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"tracing",
]
@ -5415,14 +5417,14 @@ dependencies = [
"rand",
"rayon",
"serde_json",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-query 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-block 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-query 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-ledger-store 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-program 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-synthesizer-snark 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-utilities 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5458,8 +5460,8 @@ dependencies = [
"rand",
"rand_chacha",
"serde_json",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5484,9 +5486,9 @@ dependencies = [
"bincode",
"once_cell",
"serde_json",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-algorithms 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-circuit 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"snarkvm-console 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
]
[[package]]
@ -5518,7 +5520,7 @@ dependencies = [
"serde",
"serde_json",
"smol_str",
"snarkvm-utilities-derives 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=2cbf34a)",
"snarkvm-utilities-derives 0.16.19 (git+https://github.com/AleoHQ/snarkVM?rev=da3d78a)",
"thiserror",
"zeroize",
]

View File

@ -41,6 +41,9 @@ version = "=1.11.0"
[dependencies.sha2]
version = "0.10"
[dependencies.snarkvm]
workspace = true
[dependencies.indexmap]
version = "1.9"
features = [ ]

View File

@ -17,6 +17,9 @@
//! The compiler for Leo programs.
//!
//! The [`Compiler`] type compiles Leo programs into R1CS circuits.
use crate::CompilerOptions;
pub use leo_ast::Ast;
use leo_ast::{NodeBuilder, Program, Stub};
use leo_errors::{emitter::Handler, CompilerError, Result};
@ -24,15 +27,15 @@ pub use leo_passes::SymbolTable;
use leo_passes::*;
use leo_span::{source_map::FileName, symbol::with_session_globals, Symbol};
use snarkvm::prelude::Network;
use indexmap::{IndexMap, IndexSet};
use sha2::{Digest, Sha256};
use std::{fs, path::PathBuf};
use crate::CompilerOptions;
use indexmap::{IndexMap, IndexSet};
/// The primary entry point of the Leo compiler.
#[derive(Clone)]
pub struct Compiler<'a> {
pub struct Compiler<'a, N: Network> {
/// The handler is used for error and warning emissions.
handler: &'a Handler,
/// The path to the main leo file.
@ -55,9 +58,11 @@ pub struct Compiler<'a> {
type_table: TypeTable,
/// The stubs for imported programs. Produced by `Retriever` module.
import_stubs: IndexMap<Symbol, Stub>,
// Allows the compiler to be generic over the network.
phantom: std::marker::PhantomData<N>,
}
impl<'a> Compiler<'a> {
impl<'a, N: Network> Compiler<'a, N> {
/// Returns a new Leo compiler.
pub fn new(
program_name: String,
@ -83,6 +88,7 @@ impl<'a> Compiler<'a> {
assigner,
import_stubs,
type_table,
phantom: Default::default(),
}
}
@ -106,7 +112,7 @@ impl<'a> Compiler<'a> {
let prg_sf = with_session_globals(|s| s.source_map.new_source(program_string, name));
// Use the parser to construct the abstract syntax tree (ast).
self.ast = leo_parser::parse_ast(self.handler, &self.node_builder, &prg_sf.src, prg_sf.start_pos)?;
self.ast = leo_parser::parse_ast::<N>(self.handler, &self.node_builder, &prg_sf.src, prg_sf.start_pos)?;
// If the program is imported, then check that the name of its program scope matches the file name.
// Note that parsing enforces that there is exactly one program scope in a file.
@ -149,7 +155,7 @@ impl<'a> Compiler<'a> {
/// Runs the type checker pass.
pub fn type_checker_pass(&'a self, symbol_table: SymbolTable) -> Result<(SymbolTable, StructGraph, CallGraph)> {
let (symbol_table, struct_graph, call_graph) = TypeChecker::do_pass((
let (symbol_table, struct_graph, call_graph) = TypeChecker::<N>::do_pass((
&self.ast,
self.handler,
symbol_table,

View File

@ -140,7 +140,8 @@ fn run_test(test: Test, handler: &Handler, buf: &BufferEmitter) -> Result<Value,
handler.extend_if_error(process.add_program(&aleo_program).map_err(LeoError::Anyhow))?;
// Add the bytecode to the import stubs.
let stub = handler.extend_if_error(disassemble_from_str(&bytecode).map_err(|err| err.into()))?;
let stub =
handler.extend_if_error(disassemble_from_str::<CurrentNetwork>(&bytecode).map_err(|err| err.into()))?;
import_stubs.insert(Symbol::intern(&program_name), stub);
// Hash the ast files.

View File

@ -184,7 +184,8 @@ fn run_test(test: Test, handler: &Handler, buf: &BufferEmitter) -> Result<Value,
}
// Add the bytecode to the import stubs.
let stub = handler.extend_if_error(disassemble_from_str(&bytecode).map_err(|err| err.into()))?;
let stub =
handler.extend_if_error(disassemble_from_str::<CurrentNetwork>(&bytecode).map_err(|err| err.into()))?;
import_stubs.insert(Symbol::intern(&program_name), stub);
// Hash the ast files.

View File

@ -156,7 +156,7 @@ pub fn new_compiler(
main_file_path: PathBuf,
compiler_options: Option<CompilerOptions>,
import_stubs: IndexMap<Symbol, Stub>,
) -> Compiler<'_> {
) -> Compiler<'_, CurrentNetwork> {
let output_dir = PathBuf::from("/tmp/output/");
fs::create_dir_all(output_dir.clone()).unwrap();
@ -178,7 +178,7 @@ pub fn parse_program<'a>(
cwd: Option<PathBuf>,
compiler_options: Option<CompilerOptions>,
import_stubs: IndexMap<Symbol, Stub>,
) -> Result<Compiler<'a>, LeoError> {
) -> Result<Compiler<'a, CurrentNetwork>, LeoError> {
let mut compiler = new_compiler(
program_name,
handler,
@ -255,7 +255,7 @@ pub fn temp_dir() -> PathBuf {
tempfile::tempdir().expect("Failed to open temporary directory").into_path()
}
pub fn compile_and_process<'a>(parsed: &'a mut Compiler<'a>) -> Result<String, LeoError> {
pub fn compile_and_process<'a>(parsed: &'a mut Compiler<'a, CurrentNetwork>) -> Result<String, LeoError> {
parsed.add_import_stubs()?;
let st = parsed.symbol_table_pass()?;

View File

@ -20,12 +20,16 @@ use leo_ast::{Ast, NodeBuilder};
use leo_errors::emitter::Handler;
use leo_span::symbol::create_session_if_not_set_then;
use snarkvm::prelude::MainnetV0;
use clap::Parser;
use std::{
fs,
path::{Path, PathBuf},
};
type CurrentNetwork = MainnetV0;
#[derive(Debug, Parser)]
#[clap(name = "leo parser", about = "Parse Leo AST and store it as a JSON")]
struct Opt {
@ -48,7 +52,7 @@ fn main() -> Result<(), String> {
Handler::with(|h| {
let node_builder = NodeBuilder::default();
let ast = leo_parser::parse_ast(h, &node_builder, &code.src, code.start_pos)?;
let ast = leo_parser::parse_ast::<CurrentNetwork>(h, &node_builder, &code.src, code.start_pos)?;
let json = Ast::to_json_string(&ast)?;
println!("{json}");
Ok(json)

View File

@ -34,10 +34,17 @@ pub use parser::*;
use leo_ast::{Ast, NodeBuilder};
use leo_errors::{emitter::Handler, Result};
use snarkvm::prelude::Network;
#[cfg(test)]
mod test;
/// Creates a new AST from a given file path and source code text.
pub fn parse_ast(handler: &Handler, node_builder: &NodeBuilder, source: &str, start_pos: BytePos) -> Result<Ast> {
Ok(Ast::new(parser::parse(handler, node_builder, source, start_pos)?))
pub fn parse_ast<N: Network>(
handler: &Handler,
node_builder: &NodeBuilder,
source: &str,
start_pos: BytePos,
) -> Result<Ast> {
Ok(Ast::new(parse::<N>(handler, node_builder, source, start_pos)?))
}

View File

@ -20,11 +20,13 @@ use leo_ast::*;
use leo_errors::{emitter::Handler, ParserError, ParserWarning, Result};
use leo_span::{Span, Symbol};
use std::{fmt::Display, mem};
use snarkvm::prelude::Network;
use std::{fmt::Display, marker::PhantomData, mem};
/// Stores a program in tokenized format plus additional context.
/// May be converted into a [`Program`] AST by parsing all tokens.
pub(crate) struct ParserContext<'a> {
pub(crate) struct ParserContext<'a, N: Network> {
/// Handler used to side-channel emit errors from the parser.
pub(crate) handler: &'a Handler,
/// Counter used to generate unique node ids.
@ -41,12 +43,14 @@ pub(crate) struct ParserContext<'a> {
pub(crate) disallow_struct_construction: bool,
/// The name of the program being parsed.
pub(crate) program_name: Option<Symbol>,
// Allows the parser to be generic over the network.
phantom: PhantomData<N>,
}
/// Dummy span used to appease borrow checker.
const DUMMY_EOF: SpannedToken = SpannedToken { token: Token::Eof, span: Span::dummy() };
impl<'a> ParserContext<'a> {
impl<'a, N: Network> ParserContext<'a, N> {
/// Returns a new [`ParserContext`] type given a vector of tokens.
pub fn new(handler: &'a Handler, node_builder: &'a NodeBuilder, mut tokens: Vec<SpannedToken>) -> Self {
// Strip out comments.
@ -63,6 +67,7 @@ impl<'a> ParserContext<'a> {
token,
tokens,
program_name: None,
phantom: Default::default(),
};
p.bump();
p

View File

@ -18,7 +18,7 @@ use super::*;
use leo_errors::{ParserError, Result};
use leo_span::sym;
use snarkvm::console::{account::Address, network::MainnetV0};
use snarkvm::console::{account::Address, network::Network};
const INT_TYPES: &[Token] = &[
Token::I8,
@ -36,7 +36,7 @@ const INT_TYPES: &[Token] = &[
Token::Scalar,
];
impl ParserContext<'_> {
impl<N: Network> ParserContext<'_, N> {
/// Returns an [`Expression`] AST node if the next token is an expression.
/// Includes struct init expressions.
pub(crate) fn parse_expression(&mut self) -> Result<Expression> {
@ -769,7 +769,7 @@ impl ParserContext<'_> {
Token::True => Expression::Literal(Literal::Boolean(true, span, self.node_builder.next_id())),
Token::False => Expression::Literal(Literal::Boolean(false, span, self.node_builder.next_id())),
Token::AddressLit(address_string) => {
if address_string.parse::<Address<MainnetV0>>().is_err() {
if address_string.parse::<Address<N>>().is_err() {
self.emit_err(ParserError::invalid_address_lit(&address_string, span));
}
Expression::Literal(Literal::Address(address_string, span, self.node_builder.next_id()))

View File

@ -18,7 +18,7 @@ use super::*;
use leo_errors::{ParserError, Result};
impl ParserContext<'_> {
impl<N: Network> ParserContext<'_, N> {
/// Returns a [`Program`] AST if all tokens can be consumed and represent a valid Leo program.
pub fn parse_program(&mut self) -> Result<Program> {
let mut imports = IndexMap::new();

View File

@ -23,10 +23,11 @@ use crate::{tokenizer::*, Token};
use leo_ast::*;
use leo_errors::{emitter::Handler, Result};
use leo_span::Span;
use leo_span::{span::BytePos, Span};
use snarkvm::prelude::Network;
use indexmap::IndexMap;
use leo_span::span::BytePos;
use std::unreachable;
mod context;
@ -38,8 +39,13 @@ mod statement;
pub(super) mod type_;
/// Creates a new program from a given file path and source code text.
pub fn parse(handler: &Handler, node_builder: &NodeBuilder, source: &str, start_pos: BytePos) -> Result<Program> {
let mut tokens = ParserContext::new(handler, node_builder, crate::tokenize(source, start_pos)?);
pub fn parse<N: Network>(
handler: &Handler,
node_builder: &NodeBuilder,
source: &str,
start_pos: BytePos,
) -> Result<Program> {
let mut tokens = ParserContext::<N>::new(handler, node_builder, crate::tokenize(source, start_pos)?);
tokens.parse_program()
}

View File

@ -36,7 +36,7 @@ const ASSIGN_TOKENS: &[Token] = &[
Token::BitXorAssign,
];
impl ParserContext<'_> {
impl<N: Network> ParserContext<'_, N> {
/// Returns a [`Statement`] AST node if the next tokens represent a statement.
pub(crate) fn parse_statement(&mut self) -> Result<Statement> {
match &self.token.token {

View File

@ -39,7 +39,7 @@ pub(super) const TYPE_TOKENS: &[Token] = &[
Token::U128,
];
impl ParserContext<'_> {
impl<N: Network> ParserContext<'_, N> {
/// Returns a [`IntegerType`] AST node if the given token is a supported integer type, or [`None`].
pub(super) fn token_to_int_type(token: &Token) -> Option<IntegerType> {
Some(match token {

View File

@ -31,6 +31,8 @@ use serde::Serialize;
use serde_yaml::Value;
use tokenizer::Token;
type CurrentNetwork = snarkvm::prelude::MainnetV0;
// TODO: Enable parser warnings for passing tests
struct TokenNamespace;
@ -49,7 +51,7 @@ impl Namespace for TokenNamespace {
}
}
fn not_fully_consumed(tokens: &mut ParserContext) -> Result<(), String> {
fn not_fully_consumed(tokens: &mut ParserContext<CurrentNetwork>) -> Result<(), String> {
if !tokens.has_next() {
return Ok(());
}
@ -64,7 +66,7 @@ fn not_fully_consumed(tokens: &mut ParserContext) -> Result<(), String> {
fn with_handler<T>(
tokens: Vec<SpannedToken>,
logic: impl FnOnce(&mut ParserContext<'_>) -> Result<T, LeoError>,
logic: impl FnOnce(&mut ParserContext<'_, CurrentNetwork>) -> Result<T, LeoError>,
) -> Result<T, String> {
let (handler, buf) = Handler::new_with_buf();
let node_builder = NodeBuilder::default();

View File

@ -28,7 +28,7 @@ use leo_ast::{
CoreFunction::FutureAwait,
Type::{Future, Tuple},
};
use snarkvm::console::network::{MainnetV0, Network};
use snarkvm::console::network::Network;
use std::str::FromStr;
fn return_incorrect_type(t1: Option<Type>, t2: Option<Type>, expected: &Option<Type>) -> Option<Type> {
@ -45,7 +45,7 @@ fn return_incorrect_type(t1: Option<Type>, t2: Option<Type>, expected: &Option<T
}
}
impl<'a> ExpressionVisitor<'a> for TypeChecker<'a> {
impl<'a, N: Network> ExpressionVisitor<'a> for TypeChecker<'a, N> {
type AdditionalInput = Option<Type>;
type Output = Option<Type>;
@ -313,27 +313,24 @@ impl<'a> ExpressionVisitor<'a> for TypeChecker<'a> {
self.emit_err(TypeCheckerError::array_empty(input.span()));
None
}
// Check that the element types match.
1..=MainnetV0::MAX_ARRAY_ELEMENTS => {
let mut element_types = element_types.into_iter();
// Note that this unwrap is safe because we already checked that the array is not empty.
element_types.next().unwrap().map(|first_type| {
// Check that all elements have the same type.
for (element_type, element) in element_types.zip_eq(input.elements.iter().skip(1)) {
self.assert_type(&element_type, &first_type, element.span());
}
// Return the array type.
Type::Array(ArrayType::new(first_type, NonNegativeNumber::from(input.elements.len())))
})
}
// The array cannot have more than `MAX_ARRAY_ELEMENTS` elements.
num_elements => {
self.emit_err(TypeCheckerError::array_too_large(
num_elements,
MainnetV0::MAX_ARRAY_ELEMENTS,
input.span(),
));
None
if num_elements <= N::MAX_ARRAY_ELEMENTS {
// Check that the element types match.
let mut element_types = element_types.into_iter();
// Note that this unwrap is safe because we already checked that the array is not empty.
element_types.next().unwrap().map(|first_type| {
// Check that all elements have the same type.
for (element_type, element) in element_types.zip_eq(input.elements.iter().skip(1)) {
self.assert_type(&element_type, &first_type, element.span());
}
// Return the array type.
Type::Array(ArrayType::new(first_type, NonNegativeNumber::from(input.elements.len())))
})
} else {
// The array cannot have more than `MAX_ARRAY_ELEMENTS` elements.
self.emit_err(TypeCheckerError::array_too_large(num_elements, N::MAX_ARRAY_ELEMENTS, input.span()));
None
}
}
};

View File

@ -25,12 +25,12 @@ use leo_errors::{TypeCheckerError, TypeCheckerWarning};
use leo_span::sym;
use leo_ast::Variant::{AsyncFunction, AsyncTransition};
use snarkvm::console::network::{MainnetV0, Network};
use snarkvm::console::network::Network;
use std::collections::HashSet;
// TODO: Cleanup logic for tuples.
impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
impl<'a, N: Network> ProgramVisitor<'a> for TypeChecker<'a, N> {
fn visit_program(&mut self, input: &'a Program) {
// Typecheck the program's stubs.
input.stubs.iter().for_each(|(symbol, stub)| {
@ -50,85 +50,6 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
input.program_scopes.values().for_each(|scope| self.visit_program_scope(scope));
}
fn visit_stub(&mut self, input: &'a Stub) {
// Set the current program name.
self.scope_state.program_name = Some(input.stub_id.name.name);
// Cannot have constant declarations in stubs.
if !input.consts.is_empty() {
self.emit_err(TypeCheckerError::stubs_cannot_have_const_declarations(input.consts.first().unwrap().1.span));
}
// Typecheck the program's structs.
input.structs.iter().for_each(|(_, function)| self.visit_struct_stub(function));
// Typecheck the program's functions.
input.functions.iter().for_each(|(_, function)| self.visit_function_stub(function));
}
fn visit_function_stub(&mut self, input: &'a FunctionStub) {
// Must not be an inline function
if input.variant == Variant::Inline {
self.emit_err(TypeCheckerError::stub_functions_must_not_be_inlines(input.span));
}
// Lookup function metadata in the symbol table.
// Note that this unwrap is safe since function metadata is stored in a prior pass.
let function_index = self
.symbol_table
.borrow()
.lookup_fn_symbol(Location::new(self.scope_state.program_name, input.identifier.name))
.unwrap()
.id;
// Enter the function's scope.
self.enter_scope(function_index);
// Create a new child scope for the function's parameters and body.
let scope_index = self.create_child_scope();
// Create future stubs.
if input.variant == Variant::AsyncFunction {
let finalize_input_map = &mut self.finalize_input_types;
let resolved_inputs: Vec<Type> = input
.input
.iter()
.map(|input_mode| {
match input_mode {
Internal(function_input) => match &function_input.type_ {
Future(f) => {
// Since we traverse stubs in post-order, we can assume that the corresponding finalize stub has already been traversed.
Future(FutureType::new(
finalize_input_map.get(&f.location.clone().unwrap()).unwrap().clone(),
f.location.clone(),
true,
))
}
_ => function_input.clone().type_,
},
External(_) => unreachable!("External inputs are not allowed in finalize outputs of stubs."),
}
})
.collect();
finalize_input_map
.insert(Location::new(self.scope_state.program_name, input.identifier.name), resolved_inputs);
}
// Query helper function to type check function parameters and outputs.
self.check_function_signature(&Function::from(input.clone()));
// Exit the scope for the function's parameters and body.
self.exit_scope(scope_index);
// Exit the function's scope.
self.exit_scope(function_index);
}
fn visit_struct_stub(&mut self, input: &'a Composite) {
self.visit_struct(input);
}
fn visit_program_scope(&mut self, input: &'a ProgramScope) {
// Set the current program name.
self.scope_state.program_name = Some(input.program_id.name.name);
@ -152,9 +73,9 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
}
// Check that the number of mappings does not exceed the maximum.
if mapping_count > MainnetV0::MAX_MAPPINGS {
if mapping_count > N::MAX_MAPPINGS {
self.emit_err(TypeCheckerError::too_many_mappings(
MainnetV0::MAX_MAPPINGS,
N::MAX_MAPPINGS,
input.program_id.name.span + input.program_id.network.span,
));
}
@ -175,9 +96,9 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
// TODO: Need similar checks for structs (all in separate PR)
// Check that the number of transitions does not exceed the maximum.
if transition_count > MainnetV0::MAX_FUNCTIONS {
if transition_count > N::MAX_FUNCTIONS {
self.emit_err(TypeCheckerError::too_many_transitions(
MainnetV0::MAX_FUNCTIONS,
N::MAX_FUNCTIONS,
input.program_id.name.span + input.program_id.network.span,
));
}
@ -188,6 +109,22 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
}
}
fn visit_stub(&mut self, input: &'a Stub) {
// Set the current program name.
self.scope_state.program_name = Some(input.stub_id.name.name);
// Cannot have constant declarations in stubs.
if !input.consts.is_empty() {
self.emit_err(TypeCheckerError::stubs_cannot_have_const_declarations(input.consts.first().unwrap().1.span));
}
// Typecheck the program's structs.
input.structs.iter().for_each(|(_, function)| self.visit_struct_stub(function));
// Typecheck the program's functions.
input.functions.iter().for_each(|(_, function)| self.visit_function_stub(function));
}
fn visit_struct(&mut self, input: &'a Composite) {
// Check for conflicting struct/record member names.
let mut used = HashSet::new();
@ -424,4 +361,67 @@ impl<'a> ProgramVisitor<'a> for TypeChecker<'a> {
}
}
}
fn visit_function_stub(&mut self, input: &'a FunctionStub) {
// Must not be an inline function
if input.variant == Variant::Inline {
self.emit_err(TypeCheckerError::stub_functions_must_not_be_inlines(input.span));
}
// Lookup function metadata in the symbol table.
// Note that this unwrap is safe since function metadata is stored in a prior pass.
let function_index = self
.symbol_table
.borrow()
.lookup_fn_symbol(Location::new(self.scope_state.program_name, input.identifier.name))
.unwrap()
.id;
// Enter the function's scope.
self.enter_scope(function_index);
// Create a new child scope for the function's parameters and body.
let scope_index = self.create_child_scope();
// Create future stubs.
if input.variant == Variant::AsyncFunction {
let finalize_input_map = &mut self.finalize_input_types;
let resolved_inputs: Vec<Type> = input
.input
.iter()
.map(|input_mode| {
match input_mode {
Internal(function_input) => match &function_input.type_ {
Future(f) => {
// Since we traverse stubs in post-order, we can assume that the corresponding finalize stub has already been traversed.
Future(FutureType::new(
finalize_input_map.get(&f.location.clone().unwrap()).unwrap().clone(),
f.location.clone(),
true,
))
}
_ => function_input.clone().type_,
},
External(_) => unreachable!("External inputs are not allowed in finalize outputs of stubs."),
}
})
.collect();
finalize_input_map
.insert(Location::new(self.scope_state.program_name, input.identifier.name), resolved_inputs);
}
// Query helper function to type check function parameters and outputs.
self.check_function_signature(&Function::from(input.clone()));
// Exit the scope for the function's parameters and body.
self.exit_scope(scope_index);
// Exit the function's scope.
self.exit_scope(function_index);
}
fn visit_struct_stub(&mut self, input: &'a Composite) {
self.visit_struct(input);
}
}

View File

@ -14,8 +14,8 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use super::*;
use crate::{ConditionalTreeNode, TypeChecker, VariableSymbol, VariableType};
use itertools::Itertools;
use leo_ast::{
Type::{Future, Tuple},
@ -23,7 +23,9 @@ use leo_ast::{
};
use leo_errors::TypeCheckerError;
impl<'a> StatementVisitor<'a> for TypeChecker<'a> {
use itertools::Itertools;
impl<'a, N: Network> StatementVisitor<'a> for TypeChecker<'a, N> {
fn visit_statement(&mut self, input: &'a Statement) {
// No statements can follow a return statement.
if self.scope_state.has_return {

View File

@ -36,7 +36,7 @@ use leo_ast::{
use leo_errors::{emitter::Handler, TypeCheckerError, TypeCheckerWarning};
use leo_span::{Span, Symbol};
use snarkvm::console::network::{MainnetV0, Network};
use snarkvm::console::network::Network;
use crate::type_checking::{await_checker::AwaitChecker, scope_state::ScopeState};
use indexmap::IndexMap;
@ -47,9 +47,9 @@ use leo_ast::{
Type::{Future, Tuple},
Variant::AsyncTransition,
};
use std::cell::RefCell;
use std::{cell::RefCell, marker::PhantomData};
pub struct TypeChecker<'a> {
pub struct TypeChecker<'a, N: Network> {
/// The symbol table for the program.
pub(crate) symbol_table: RefCell<SymbolTable>,
/// A mapping from node IDs to their types.
@ -66,6 +66,8 @@ pub struct TypeChecker<'a> {
pub(crate) await_checker: AwaitChecker,
/// Mapping from async function name to the inferred input types.
pub(crate) finalize_input_types: IndexMap<Location, Vec<Type>>,
// Allows the type checker to be generic over the network.
phantom: PhantomData<N>,
}
const ADDRESS_TYPE: Type = Type::Address;
@ -112,7 +114,7 @@ const UNSIGNED_INT_TYPES: [Type; 5] = [
const MAGNITUDE_TYPES: [Type; 3] =
[Type::Integer(IntegerType::U8), Type::Integer(IntegerType::U16), Type::Integer(IntegerType::U32)];
impl<'a> TypeChecker<'a> {
impl<'a, N: Network> TypeChecker<'a, N> {
/// Returns a new type checker given a symbol table and error handler.
pub fn new(
symbol_table: SymbolTable,
@ -134,6 +136,7 @@ impl<'a> TypeChecker<'a> {
scope_state: ScopeState::new(),
await_checker: AwaitChecker::new(max_depth, !disabled),
finalize_input_types: IndexMap::new(),
phantom: Default::default(),
}
}
@ -1197,9 +1200,10 @@ impl<'a> TypeChecker<'a> {
// Check that the array length is valid.
match array_type.length() {
0 => self.emit_err(TypeCheckerError::array_empty(span)),
1..=MainnetV0::MAX_ARRAY_ELEMENTS => {}
length => {
self.emit_err(TypeCheckerError::array_too_large(length, MainnetV0::MAX_ARRAY_ELEMENTS, span))
if length > N::MAX_ARRAY_ELEMENTS {
self.emit_err(TypeCheckerError::array_too_large(length, N::MAX_ARRAY_ELEMENTS, span))
}
}
}
// Check that the array element type is valid.

View File

@ -14,14 +14,16 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
mod await_checker;
pub mod check_expressions;
pub mod check_program;
pub mod check_statements;
mod await_checker;
pub mod checker;
mod scope_state;
pub use checker::*;
@ -31,12 +33,14 @@ use crate::{CallGraph, Pass, StructGraph, SymbolTable, TypeTable};
use leo_ast::{Ast, ProgramVisitor};
use leo_errors::{emitter::Handler, Result};
impl<'a> Pass for TypeChecker<'a> {
use snarkvm::prelude::Network;
impl<'a, N: Network> Pass for TypeChecker<'a, N> {
type Input = (&'a Ast, &'a Handler, SymbolTable, &'a TypeTable, usize, bool);
type Output = Result<(SymbolTable, StructGraph, CallGraph)>;
fn do_pass((ast, handler, st, tt, max_depth, await_checking): Self::Input) -> Self::Output {
let mut visitor = TypeChecker::new(st, tt, handler, max_depth, await_checking);
let mut visitor = TypeChecker::<N>::new(st, tt, handler, max_depth, await_checking);
visitor.visit_program(ast.as_repr());
handler.last_err().map_err(|e| *e)?;

View File

@ -15,7 +15,7 @@
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use super::*;
use leo_retriever::{Dependency, Location, Manifest, Network};
use leo_retriever::{Dependency, Location, Manifest, NetworkName};
use std::path::PathBuf;
/// Clean outputs folder command
@ -78,7 +78,7 @@ impl Command for Add {
// Add new dependency to manifest
dependencies.push(match self.local {
Some(local_path) => Dependency::new(name, Location::Local, None, Some(local_path)),
None => Dependency::new(name, Location::Network, Some(Network::from(&self.network)), None),
None => Dependency::new(name, Location::Network, Some(NetworkName::from(&self.network)), None),
});
// Update manifest

View File

@ -109,8 +109,9 @@ impl Command for Build {
// Retrieve all local dependencies in post order
let main_sym = Symbol::intern(&program_id.name().to_string());
let mut retriever = Retriever::new(main_sym, &package_path, &home_path, self.options.endpoint.clone())
.map_err(|err| UtilError::failed_to_retrieve_dependencies(err, Default::default()))?;
let mut retriever =
Retriever::<CurrentNetwork>::new(main_sym, &package_path, &home_path, self.options.endpoint.clone())
.map_err(|err| UtilError::failed_to_retrieve_dependencies(err, Default::default()))?;
let mut local_dependencies =
retriever.retrieve().map_err(|err| UtilError::failed_to_retrieve_dependencies(err, Default::default()))?;
@ -186,7 +187,7 @@ impl Command for Build {
#[allow(clippy::too_many_arguments)]
fn compile_leo_file(
file_path: PathBuf,
program_id: &ProgramID<MainnetV0>,
program_id: &ProgramID<CurrentNetwork>,
outputs: &Path,
build: &Path,
handler: &Handler,
@ -205,7 +206,7 @@ fn compile_leo_file(
aleo_file_path.push(format!("main.{}", program_id.network()));
// Create a new instance of the Leo compiler.
let mut compiler = Compiler::new(
let mut compiler = Compiler::<CurrentNetwork>::new(
program_name,
program_id.network().to_string(),
handler,

View File

@ -61,3 +61,6 @@ path = "../../compiler/span"
[dev-dependencies.criterion]
version = "0.5"
[dev-dependencies.snarkvm]
workspace = true

View File

@ -28,6 +28,8 @@ use std::{
time::{Duration, Instant},
};
type CurrentNetwork = snarkvm::prelude::MainnetV0;
/// An enum to represent the stage of the Compiler we are benchmarking.
enum BenchMode {
/// Benchmarks parsing.
@ -81,7 +83,7 @@ struct Sample {
}
/// A helper function to help create a Leo Compiler struct.
fn new_compiler(handler: &Handler) -> Compiler<'_> {
fn new_compiler(handler: &Handler) -> Compiler<'_, CurrentNetwork> {
Compiler::new(
String::from("test"),
String::from("aleo"),
@ -142,7 +144,7 @@ impl Sample {
}
/// Benchmarks `logic(compiler)` where `compiler` is provided.
fn bencher(&self, c: &mut Criterion, mode: &str, mut logic: impl FnMut(Compiler) -> Duration) {
fn bencher(&self, c: &mut Criterion, mode: &str, mut logic: impl FnMut(Compiler<CurrentNetwork>) -> Duration) {
c.bench_function(&format!("{mode} {}", self.name), |b| {
// Iter custom is used so we can use custom timings around the compiler stages.
// This way we can only time the necessary stage.
@ -156,7 +158,12 @@ impl Sample {
/// Benchmarks `logic(compiler)` where `compiler` is provided.
/// Parsing has already been done.
fn bencher_after_parse(&self, c: &mut Criterion, mode: &str, mut logic: impl FnMut(Compiler) -> Duration) {
fn bencher_after_parse(
&self,
c: &mut Criterion,
mode: &str,
mut logic: impl FnMut(Compiler<CurrentNetwork>) -> Duration,
) {
self.bencher(c, mode, |mut compiler| {
let (input, name) = self.data();
compiler.parse_program_from_string(input, name).expect("Failed to parse program");

View File

@ -14,17 +14,17 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use snarkvm::{
prelude::{Itertools, MainnetV0, Network},
synthesizer::program::{CommandTrait, InstructionTrait, Program, ProgramCore},
};
use std::str::FromStr;
type CurrentNetwork = MainnetV0;
use leo_ast::{Composite, FunctionStub, Identifier, Mapping, ProgramId, Stub};
use leo_errors::UtilError;
use leo_span::Symbol;
use snarkvm::{
prelude::{Itertools, Network},
synthesizer::program::{CommandTrait, InstructionTrait, Program, ProgramCore},
};
use std::str::FromStr;
pub fn disassemble<N: Network, Instruction: InstructionTrait<N>, Command: CommandTrait<N>>(
program: ProgramCore<N, Instruction, Command>,
) -> Stub {
@ -86,8 +86,8 @@ pub fn disassemble<N: Network, Instruction: InstructionTrait<N>, Command: Comman
}
}
pub fn disassemble_from_str(program: &str) -> Result<Stub, UtilError> {
match Program::<CurrentNetwork>::from_str(program) {
pub fn disassemble_from_str<N: Network>(program: &str) -> Result<Stub, UtilError> {
match Program::<N>::from_str(program) {
Ok(p) => Ok(disassemble(p)),
Err(_) => Err(UtilError::snarkvm_parsing_error(Default::default())),
}
@ -124,7 +124,7 @@ mod tests {
create_session_if_not_set_then(|_| {
let program_from_file =
fs::read_to_string("../tmp/.aleo/registry/testnet3/zk_bitwise_stack_v0_0_2.aleo").unwrap();
let _program = disassemble_from_str(&program_from_file).unwrap();
let _program = disassemble_from_str::<CurrentNetwork>(&program_from_file).unwrap();
});
}
}

View File

@ -18,6 +18,9 @@ license = "GPL-3.0"
edition = "2021"
rust-version = "1.69"
[dependencies.snarkvm]
workspace = true
[dependencies.leo-ast]
version = "1.11.0"
path = "../../compiler/ast"

View File

@ -23,11 +23,16 @@ pub use program_context::*;
#[cfg(test)]
mod tests {
use super::*;
use aleo_std::aleo_dir;
use leo_span::{symbol::create_session_if_not_set_then, Symbol};
use aleo_std::aleo_dir;
use snarkvm::prelude::MainnetV0;
use serial_test::serial;
use std::path::PathBuf;
type CurrentNetwork = MainnetV0;
#[test]
#[ignore]
#[serial]
@ -38,9 +43,13 @@ mod tests {
create_session_if_not_set_then(|_| {
let build_dir = PathBuf::from(BUILD_DIRECTORY);
let home_dir = PathBuf::from(HOME_DIRECTORY);
let mut retriever =
Retriever::new(Symbol::intern("nested"), &build_dir, &home_dir, "http://0.0.0.0:3030".to_string())
.expect("Failed to build retriever");
let mut retriever = Retriever::<CurrentNetwork>::new(
Symbol::intern("nested"),
&build_dir,
&home_dir,
"http://0.0.0.0:3030".to_string(),
)
.expect("Failed to build retriever");
retriever.retrieve().expect("failed to retrieve");
retriever.prepare_local(Symbol::intern("nested")).expect("failed to prepare local");
retriever.process_local(Symbol::intern("nested"), true).expect("failed to process local");
@ -57,9 +66,13 @@ mod tests {
let build_dir = PathBuf::from(BUILD_DIRECTORY);
println!("aleo_dir: {:?}", aleo_dir());
let mut retriever =
Retriever::new(Symbol::intern("nested"), &build_dir, &aleo_dir(), "http://0.0.0.0:3030".to_string())
.expect("Failed to build retriever");
let mut retriever = Retriever::<CurrentNetwork>::new(
Symbol::intern("nested"),
&build_dir,
&aleo_dir(),
"http://0.0.0.0:3030".to_string(),
)
.expect("Failed to build retriever");
retriever.retrieve().expect("failed to retrieve");
retriever.prepare_local(Symbol::intern("nested")).expect("failed to prepare local");
retriever.process_local(Symbol::intern("nested"), true).expect("failed to process local");
@ -76,9 +89,13 @@ mod tests {
create_session_if_not_set_then(|_| {
let build_dir = PathBuf::from(BUILD_DIRECTORY);
let home_dir = PathBuf::from(HOME_DIRECTORY);
let mut retriever =
Retriever::new(Symbol::intern("simple"), &build_dir, &home_dir, "http://0.0.0.0:3030".to_string())
.expect("Failed to build retriever");
let mut retriever = Retriever::<CurrentNetwork>::new(
Symbol::intern("simple"),
&build_dir,
&home_dir,
"http://0.0.0.0:3030".to_string(),
)
.expect("Failed to build retriever");
retriever.retrieve().expect("failed to retrieve");
retriever.prepare_local(Symbol::intern("simple")).expect("failed to prepare local");
retriever.process_local(Symbol::intern("simple"), true).expect("failed to process local");
@ -95,9 +112,13 @@ mod tests {
create_session_if_not_set_then(|_| {
let build_dir = PathBuf::from(BUILD_DIRECTORY);
let home_dir = PathBuf::from(HOME_DIRECTORY);
let mut retriever =
Retriever::new(Symbol::intern("local_test"), &build_dir, &home_dir, "http://0.0.0.0:3030".to_string())
.expect("Failed to build retriever");
let mut retriever = Retriever::<CurrentNetwork>::new(
Symbol::intern("local_test"),
&build_dir,
&home_dir,
"http://0.0.0.0:3030".to_string(),
)
.expect("Failed to build retriever");
let _deps = retriever.retrieve().expect("failed to retrieve");
retriever.prepare_local(Symbol::intern("nested")).expect("failed to prepare local");
// retriever.process_local(Symbol::intern("nested")).expect("failed to process local");

View File

@ -14,22 +14,23 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use crate::{Location, Network};
use crate::{Location, NetworkName};
use leo_span::Symbol;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
// Information required to retrieve external program
#[derive(Debug, Clone, std::cmp::Eq, PartialEq, Hash, Serialize, Deserialize)]
#[derive(Debug, Clone, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub struct Dependency {
name: String,
location: Location,
network: Option<Network>,
network: Option<NetworkName>,
path: Option<PathBuf>,
}
impl Dependency {
pub fn new(name: String, location: Location, network: Option<Network>, path: Option<PathBuf>) -> Self {
pub fn new(name: String, location: Location, network: Option<NetworkName>, path: Option<PathBuf>) -> Self {
Self { name, location, network, path }
}
@ -41,7 +42,7 @@ impl Dependency {
&self.location
}
pub fn network(&self) -> &Option<Network> {
pub fn network(&self) -> &Option<NetworkName> {
&self.network
}

View File

@ -14,14 +14,14 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use crate::{Location, Network, ProgramContext};
use crate::{Location, NetworkName, ProgramContext};
use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct LockFileEntry {
name: String,
network: Option<Network>,
network: Option<NetworkName>,
location: Location,
path: Option<PathBuf>,
checksum: String,
@ -42,7 +42,7 @@ impl From<&ProgramContext> for LockFileEntry {
fn from(context: &ProgramContext) -> Self {
LockFileEntry {
name: context.full_name().to_string(),
network: context.network.clone(), // Direct access as per instruction
network: context.network, // Direct access as per instruction
location: context.location().clone(),
path: context.full_path.clone(), // Direct access as per instruction
checksum: context.checksum().to_string(),

View File

@ -14,23 +14,28 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
pub mod network;
use indexmap::IndexSet;
pub use network::*;
use sha2::{Digest, Sha256};
use std::path::{Path, PathBuf};
pub mod location;
pub use location::Location;
pub mod manifest;
pub use manifest::*;
pub mod dependency;
pub use dependency::*;
use leo_ast::Stub;
use leo_span::Symbol;
pub mod lock_file_entry;
pub use lock_file_entry::*;
pub mod manifest;
pub use manifest::*;
pub mod network_name;
pub use network_name::*;
use leo_ast::Stub;
use leo_span::Symbol;
use indexmap::IndexSet;
use sha2::{Digest, Sha256};
use std::path::{Path, PathBuf};
use std::fmt::Write;
#[derive(Clone, Debug)]
@ -38,7 +43,7 @@ pub struct ProgramContext {
name: Symbol,
full_name: String,
location: Location,
network: Option<Network>,
network: Option<NetworkName>,
path: Option<PathBuf>,
full_path: Option<PathBuf>,
compiled_file_path: Option<PathBuf>,
@ -76,7 +81,7 @@ impl ProgramContext {
}
// Method to extract 'network', panics if `None`. Only safe to access if location is 'Network'
pub fn network(&self) -> &Network {
pub fn network(&self) -> &NetworkName {
self.network.as_ref().expect("ProgramContext network is None")
}
@ -172,7 +177,7 @@ impl From<Dependency> for ProgramContext {
name: Symbol::from(&dependency),
full_name: dependency.name().clone(),
location: dependency.location().clone(),
network: dependency.network().clone(),
network: *dependency.network(),
path: dependency.path().clone(),
full_path: None,
compiled_file_path: None,

View File

@ -18,29 +18,29 @@ use serde::{Deserialize, Serialize};
use std::fmt;
// Retrievable networks for an external program
#[derive(Debug, Clone, std::cmp::Eq, PartialEq, Hash, Serialize, Deserialize)]
pub enum Network {
#[serde(rename = "testnet3")]
Testnet3,
#[derive(Debug, Clone, Copy, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub enum NetworkName {
#[serde(rename = "testnet")]
TestnetV0,
#[serde(rename = "mainnet")]
Mainnet,
MainnetV0,
}
impl From<&String> for Network {
impl From<&String> for NetworkName {
fn from(network: &String) -> Self {
match network.to_ascii_lowercase().as_str() {
"testnet3" => Network::Testnet3,
"mainnet" => Network::Mainnet,
"testnet" => NetworkName::TestnetV0,
"mainnet" => NetworkName::MainnetV0,
_ => panic!("Invalid network"),
}
}
}
impl fmt::Display for Network {
impl fmt::Display for NetworkName {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
Network::Testnet3 => write!(f, "testnet3"),
Network::Mainnet => write!(f, "mainnet"),
NetworkName::TestnetV0 => write!(f, "testnet"),
NetworkName::MainnetV0 => write!(f, "mainnet"),
}
}
}

View File

@ -14,31 +14,36 @@
// You should have received a copy of the GNU General Public License
// along with the Leo library. If not, see <https://www.gnu.org/licenses/>.
use indexmap::{IndexMap, IndexSet};
use crate::{Dependency, Location, LockFileEntry, Manifest, NetworkName, ProgramContext};
use leo_ast::Stub;
use leo_disassembler::disassemble_from_str;
use leo_errors::UtilError;
use leo_passes::{common::DiGraph, DiGraphError};
use leo_span::Symbol;
use crate::{Dependency, Location, LockFileEntry, Manifest, Network, ProgramContext};
use snarkvm::prelude::Network;
use indexmap::{IndexMap, IndexSet};
use std::{
fs,
fs::File,
io::Read,
marker::PhantomData,
path::{Path, PathBuf},
};
// Retriever is responsible for retrieving external programs
pub struct Retriever {
pub struct Retriever<N: Network> {
name: Symbol,
contexts: IndexMap<Symbol, ProgramContext>,
project_path: PathBuf,
registry_path: PathBuf,
endpoint: String,
phantom: PhantomData<N>,
}
impl Retriever {
impl<N: Network> Retriever<N> {
// Initialize a new Retriever.
pub fn new(name: Symbol, path: &PathBuf, home: &Path, endpoint: String) -> Result<Self, UtilError> {
// Starting point is all of the dependencies specified in the main `program.json` file
@ -54,6 +59,7 @@ impl Retriever {
project_path: path.clone(),
registry_path: home.join("registry"),
endpoint: endpoint.clone(),
phantom: Default::default(),
})
}
@ -83,11 +89,10 @@ impl Retriever {
// Split into cases based on network dependency or local dependency
let nested_dependencies = match cur_context.location() {
Location::Network => {
let (stub, nested_dependencies) = retrieve_from_network(
let (stub, nested_dependencies) = retrieve_from_network::<N>(
&self.project_path,
&self.registry_path,
cur_context.full_name(),
cur_context.network(),
&self.endpoint,
)?;
@ -304,7 +309,7 @@ impl Retriever {
})?;
// Cache the disassembled stub
let stub: Stub = disassemble_from_str(&content)?;
let stub: Stub = disassemble_from_str::<N>(&content)?;
if cur_context.add_stub(stub.clone()) {
Err(UtilError::duplicate_dependency_name_error(stub.stub_id.name.name, Default::default()))?;
}
@ -418,15 +423,21 @@ fn retrieve_local(name: &String, path: &PathBuf) -> Result<Vec<Dependency>, Util
}
// Retrieve from network
fn retrieve_from_network(
fn retrieve_from_network<N: Network>(
project_path: &Path,
home_path: &Path,
name: &String,
network: &Network,
endpoint: &String,
) -> Result<(Stub, Vec<Dependency>), UtilError> {
// Get the network being used.
let network = match N::ID {
snarkvm::console::network::MainnetV0::ID => NetworkName::MainnetV0,
snarkvm::console::network::TestnetV0::ID => NetworkName::TestnetV0,
_ => NetworkName::MainnetV0,
};
// Check if the file is already cached in `~/.aleo/registry/{network}/{program}`
let move_to_path = home_path.join(format!("{network}"));
let move_to_path = home_path.join(network.to_string());
let path = move_to_path.join(name.clone());
let mut file_str: String;
if !path.exists() {
@ -439,11 +450,14 @@ fn retrieve_from_network(
)
})?;
// Construct the endpoint for the network.
let endpoint = format!("{endpoint}/{network}");
// Fetch from network
println!("Retrieving {} from {:?}.", name, network.clone());
file_str = fetch_from_network(endpoint, name, network.clone())?;
println!("Retrieving {name} from {endpoint}.");
file_str = fetch_from_network(&endpoint, name)?;
file_str = file_str.replace("\\n", "\n").replace('\"', "");
println!("Successfully retrieved {} from {:?}!", name, network);
println!("Successfully retrieved {} from {:?}!", name, endpoint);
// Write file to cache
std::fs::write(path.clone(), file_str.clone().replace("\\n", "\n")).map_err(|err| {
@ -484,7 +498,7 @@ fn retrieve_from_network(
})?;
// Disassemble into Stub
let stub: Stub = disassemble_from_str(&file_str)?;
let stub: Stub = disassemble_from_str::<N>(&file_str)?;
// Create entry for leo.lock
Ok((
@ -496,7 +510,7 @@ fn retrieve_from_network(
Dependency::new(
id.name.name.to_string() + "." + id.network.name.to_string().as_str(),
Location::Network,
Some(network.clone()),
Some(network),
None,
)
})
@ -504,8 +518,8 @@ fn retrieve_from_network(
))
}
fn fetch_from_network(endpoint: &String, program: &String, network: Network) -> Result<String, UtilError> {
let url = format!("{}/{}/program/{}", endpoint, network.clone(), program);
fn fetch_from_network(endpoint: &String, program: &String) -> Result<String, UtilError> {
let url = format!("{}/program/{}", endpoint, program);
let response = ureq::get(&url.clone())
.call()
.map_err(|err| UtilError::failed_to_retrieve_from_endpoint(url.clone(), err, Default::default()))?;