From f86c9d8076fa0cd13ced5023468589c6cd484165 Mon Sep 17 00:00:00 2001 From: howardwu Date: Sat, 2 May 2020 17:28:20 -0700 Subject: [PATCH] Adds proving key file --- .gitignore | 5 + Cargo.lock | 733 +-------------------- compiler/src/compiler.rs | 2 +- compiler/src/constraints/resolved_value.rs | 2 +- leo/commands/build.rs | 6 +- leo/commands/run.rs | 4 +- leo/commands/setup.rs | 25 +- leo/errors/files/mod.rs | 3 + leo/errors/files/proving_key.rs | 19 + leo/files/mod.rs | 3 + leo/files/proving_key.rs | 52 ++ 11 files changed, 125 insertions(+), 729 deletions(-) create mode 100644 leo/errors/files/proving_key.rs create mode 100644 leo/files/proving_key.rs diff --git a/.gitignore b/.gitignore index 697aa0ddb6..76411a2767 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,7 @@ /target **.idea/ +Leo.toml +src/ +inputs/ +outputs/ +*.DS_Store diff --git a/Cargo.lock b/Cargo.lock index a5d1206508..a0b53ff572 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -18,33 +18,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "arrayvec" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" - -[[package]] -name = "async-stream" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22068c0c19514942eefcfd4daf8976ef1aad84e61539f95cd200c35202f80af5" -dependencies = [ - "async-stream-impl", - "futures-core", -] - -[[package]] -name = "async-stream-impl" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f9db3b38af870bf7e5cc649167533b493928e50744e2c30ae350230b414670" -dependencies = [ - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", -] - [[package]] name = "atty" version = "0.2.14" @@ -56,12 +29,6 @@ dependencies = [ "winapi", ] -[[package]] -name = "autocfg" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" - [[package]] name = "autocfg" version = "1.0.0" @@ -90,80 +57,12 @@ dependencies = [ "libc", ] -[[package]] -name = "base58" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5024ee8015f02155eee35c711107ddd9a9bf3cb689cf2a9089c97e79b6e1ae83" - -[[package]] -name = "base58-monero" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06753f02479480272d4ffc2c850174e2c2e84c887ffa357bc0d8f61ff38791fc" -dependencies = [ - "async-stream", - "futures-util", - "tiny-keccak", - "tokio", -] - -[[package]] -name = "bech32" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58946044516aa9dc922182e0d6e9d124a31aafe6b421614654eb27cf90cec09c" - -[[package]] -name = "bincode" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5753e2a71534719bf3f4e57006c3a4f0d2c672a4b676eec84161f763eca87dbf" -dependencies = [ - "byteorder", - "serde", -] - -[[package]] -name = "bindgen" -version = "0.53.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb26d6a69a335b8cb0e7c7e9775cd5666611dc50a37177c3f2cedcfc040e8c8" -dependencies = [ - "bitflags", - "cexpr", - "cfg-if", - "clang-sys", - "clap", - "env_logger", - "lazy_static", - "lazycell", - "log", - "peeking_take_while", - "proc-macro2 1.0.9", - "quote 1.0.3", - "regex", - "rustc-hash", - "shlex", - "which", -] - [[package]] name = "bitflags" version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" -[[package]] -name = "bitvec" -version = "0.17.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41262f11d771fd4a61aa3ce019fca363b4b6c282fca9da2a31186d3965a47a5c" -dependencies = [ - "either", - "radium", -] - [[package]] name = "blake2" version = "0.7.1" @@ -171,7 +70,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73b77e29dbd0115e43938be2d5128ecf81c0353e00acaa65339a1242586951d9" dependencies = [ "byte-tools 0.2.0", - "crypto-mac 0.5.2", + "crypto-mac", "digest 0.7.6", ] @@ -196,12 +95,6 @@ dependencies = [ "byte-tools 0.3.1", ] -[[package]] -name = "byte-slice-cast" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0a5e3906bcbf133e33c1d4d95afc664ad37fbdb9f6568d8043e7ea8c27d93d3" - [[package]] name = "byte-tools" version = "0.2.0" @@ -220,29 +113,11 @@ version = "1.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" -[[package]] -name = "bytes" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "130aac562c0dd69c56b3b1cc8ffd2e17be31d0b6c25b61c96b76231aa23e39e1" - [[package]] name = "cc" version = "1.0.41" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8dae9c4b8fedcae85592ba623c4fd08cfdab3e3b72d6df780c6ead964a69bfff" -dependencies = [ - "rayon", -] - -[[package]] -name = "cexpr" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4aedb84272dbe89af497cf81375129abda4fc0a9e7c5d317498c15cc30c0d27" -dependencies = [ - "nom", -] [[package]] name = "cfg-if" @@ -250,17 +125,6 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" -[[package]] -name = "clang-sys" -version = "0.29.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe6837df1d5cba2397b835c8530f51723267e16abbf83892e9e5af4f0e5dd10a" -dependencies = [ - "glob", - "libc", - "libloading", -] - [[package]] name = "clap" version = "2.33.0" @@ -276,15 +140,6 @@ dependencies = [ "vec_map", ] -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - [[package]] name = "colored" version = "1.9.3" @@ -319,7 +174,7 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" dependencies = [ - "autocfg 1.0.0", + "autocfg", "cfg-if", "crossbeam-utils", "lazy_static", @@ -344,17 +199,11 @@ version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" dependencies = [ - "autocfg 1.0.0", + "autocfg", "cfg-if", "lazy_static", ] -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - [[package]] name = "crypto-mac" version = "0.5.2" @@ -365,16 +214,6 @@ dependencies = [ "generic-array 0.9.0", ] -[[package]] -name = "crypto-mac" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" -dependencies = [ - "generic-array 0.12.3", - "subtle", -] - [[package]] name = "derivative" version = "1.0.4" @@ -423,33 +262,6 @@ dependencies = [ "termcolor", ] -[[package]] -name = "ethbloom" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "befe713756981dbbda28e23f5c65c85de512915db695284342cc2ee36b7a184f" -dependencies = [ - "crunchy", - "fixed-hash", - "impl-rlp", - "impl-serde", - "tiny-keccak", -] - -[[package]] -name = "ethereum-types" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8616dc6a7bc7d81ab8a6425635299ee3582975d4ddeb9312b8b0b8ea54dfecf8" -dependencies = [ - "ethbloom", - "fixed-hash", - "impl-rlp", - "impl-serde", - "primitive-types", - "uint", -] - [[package]] name = "failure" version = "0.1.7" @@ -478,28 +290,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" -[[package]] -name = "ff" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4b967a3ee6ae993f0094174257d404a5818f58be79d67a1aea1ec8996d28906" -dependencies = [ - "byteorder", - "rand_core 0.5.1", -] - -[[package]] -name = "fixed-hash" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11498d382790b7a8f2fd211780bec78619bba81cdad3a283997c0c41f836759c" -dependencies = [ - "byteorder", - "rand 0.7.3", - "rustc-hex", - "static_assertions", -] - [[package]] name = "from-pest" version = "0.3.1" @@ -510,57 +300,6 @@ dependencies = [ "void", ] -[[package]] -name = "fuchsia-cprng" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] -name = "futures" -version = "0.1.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" - -[[package]] -name = "futures-core" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25592f769825e89b92358db00d26f965761e094951ac44d3663ef25b7ac464a" - -[[package]] -name = "futures-macro" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a5081aa3de1f7542a794a397cde100ed903b0630152d0973479018fd85423a7" -dependencies = [ - "proc-macro-hack", - "proc-macro2 1.0.9", - "quote 1.0.3", - "syn 1.0.16", -] - -[[package]] -name = "futures-task" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0a34e53cf6cdcd0178aa573aed466b646eb3db769570841fda0c7ede375a27" - -[[package]] -name = "futures-util" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22766cf25d64306bedf0384da004d05c9974ab104fcc4528f1236181c18004c5" -dependencies = [ - "futures-core", - "futures-macro", - "futures-task", - "pin-utils", - "proc-macro-hack", - "proc-macro-nested", - "slab", -] - [[package]] name = "generic-array" version = "0.9.0" @@ -590,12 +329,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "glob" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" - [[package]] name = "heck" version = "0.3.1" @@ -614,12 +347,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hex" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644f9158b2f133fd50f5fb3242878846d9eb792e445c893805ff0e3824006e35" - [[package]] name = "humantime" version = "1.3.0" @@ -629,33 +356,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "impl-codec" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1be51a921b067b0eaca2fad532d9400041561aa922221cc65f95a85641c6bf53" -dependencies = [ - "parity-scale-codec", -] - -[[package]] -name = "impl-rlp" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f7a72f11830b52333f36e3b09a288333888bf54380fd0ac0790a3c31ab0f3c5" -dependencies = [ - "rlp", -] - -[[package]] -name = "impl-serde" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bbe9ea9b182f0fb1cabbd61f4ff9b7b7b9197955e95a7e4c27de5055eb29ff8" -dependencies = [ - "serde", -] - [[package]] name = "itertools" version = "0.7.11" @@ -671,31 +371,12 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8b7a7c0c47db5545ed3fef7468ee7bb5b74691498139e4b3f6a20685dc6dd8e" -[[package]] -name = "jsonrpc-core" -version = "14.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25525f6002338fb4debb5167a89a0b47f727a5a48418417545ad3429758b7fec" -dependencies = [ - "futures", - "log", - "serde", - "serde_derive", - "serde_json", -] - [[package]] name = "lazy_static" version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" -[[package]] -name = "lazycell" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" - [[package]] name = "leo" version = "0.1.0" @@ -707,8 +388,8 @@ dependencies = [ "from-pest", "leo-compiler", "log", - "rand 0.7.3", - "rand_core 0.5.1", + "rand", + "rand_core", "serde", "serde_json", "snarkos-algorithms", @@ -726,7 +407,7 @@ version = "0.1.0" dependencies = [ "from-pest", "leo-compiler", - "rand 0.7.3", + "rand", "snarkos-algorithms", "snarkos-curves", "snarkos-errors", @@ -745,7 +426,7 @@ dependencies = [ "pest", "pest-ast", "pest_derive", - "rand 0.7.3", + "rand", "snarkos-algorithms", "snarkos-curves", "snarkos-errors", @@ -759,28 +440,6 @@ version = "0.2.67" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018" -[[package]] -name = "libloading" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b111a074963af1d37a139918ac6d49ad1d0d5e47f72fd55388619691a7d753" -dependencies = [ - "cc", - "winapi", -] - -[[package]] -name = "librocksdb-sys" -version = "6.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "883213ae3d09bfc3d104aefe94b25ebb183b6f4d3a515b23b14817e1f4854005" -dependencies = [ - "bindgen", - "cc", - "glob", - "libc", -] - [[package]] name = "log" version = "0.4.8" @@ -814,17 +473,7 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8" dependencies = [ - "autocfg 1.0.0", -] - -[[package]] -name = "nom" -version = "5.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6" -dependencies = [ - "memchr", - "version_check", + "autocfg", ] [[package]] @@ -843,24 +492,6 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" -[[package]] -name = "parity-scale-codec" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "329c8f7f4244ddb5c37c103641027a76c530e65e8e4b8240b29f81ea40508b17" -dependencies = [ - "arrayvec", - "bitvec", - "byte-slice-cast", - "serde", -] - -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "pest" version = "2.1.3" @@ -917,37 +548,12 @@ dependencies = [ "sha-1", ] -[[package]] -name = "pin-project-lite" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237844750cfbb86f67afe27eee600dfbbcb6188d734139b534cbfbf4f96792ae" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - [[package]] name = "ppv-lite86" version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b" -[[package]] -name = "primitive-types" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3dedac218327b6b55fff5ef05f63ce5127024e1a36342836da7e92cbfac4531" -dependencies = [ - "fixed-hash", - "impl-codec", - "impl-rlp", - "impl-serde", - "uint", -] - [[package]] name = "proc-macro-error" version = "1.0.2" @@ -974,18 +580,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "proc-macro-hack" -version = "0.5.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d659fe7c6d27f25e9d80a1a094c223f5246f6a6596453e09d7229bf42750b63" - -[[package]] -name = "proc-macro-nested" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e946095f9d3ed29ec38de908c22f95d9ac008e424c7bcae54c75a79c527c694" - [[package]] name = "proc-macro2" version = "0.4.30" @@ -1028,31 +622,6 @@ dependencies = [ "proc-macro2 1.0.9", ] -[[package]] -name = "radium" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "def50a86306165861203e7f84ecffbbdfdea79f0e51039b33de1e952358c47ac" - -[[package]] -name = "rand" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" -dependencies = [ - "autocfg 0.1.7", - "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift 0.1.1", - "winapi", -] - [[package]] name = "rand" version = "0.7.3" @@ -1061,19 +630,9 @@ checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" dependencies = [ "getrandom", "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", -] - -[[package]] -name = "rand_chacha" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.3.1", + "rand_chacha", + "rand_core", + "rand_hc", ] [[package]] @@ -1083,24 +642,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" dependencies = [ "ppv-lite86", - "rand_core 0.5.1", + "rand_core", ] -[[package]] -name = "rand_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" -dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - [[package]] name = "rand_core" version = "0.5.1" @@ -1110,75 +654,13 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rand_hc" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "rand_hc" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "winapi", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.4.2", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", + "rand_core", ] [[package]] @@ -1187,7 +669,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77d416b86801d23dde1aa643023b775c3a462efc0ed96443add11546cdf1dca8" dependencies = [ - "rand_core 0.5.1", + "rand_core", ] [[package]] @@ -1214,15 +696,6 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "regex" version = "1.3.4" @@ -1241,54 +714,12 @@ version = "0.6.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1132f845907680735a84409c3bebc64d1364a5683ffbce899550cd09d5eaefc1" -[[package]] -name = "ripemd160" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad5112e0dbbb87577bfbc56c42450235e3012ce336e29c5befd7807bd626da4a" -dependencies = [ - "block-buffer", - "digest 0.8.1", - "opaque-debug", -] - -[[package]] -name = "rlp" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a7d3f9bed94764eac15b8f14af59fac420c236adaff743b7bcc88e265cb4345" -dependencies = [ - "rustc-hex", -] - -[[package]] -name = "rocksdb" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12069b106981c6103d3eab7dd1c86751482d0779a520b7c14954c8b586c1e643" -dependencies = [ - "libc", - "librocksdb-sys", -] - [[package]] name = "rustc-demangle" version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" -[[package]] -name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustc-hex" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e75f6a532d0fd9f7f13144f392b6ad56a32696bfcd9c78f797f16bbb6f072d6" - [[package]] name = "ryu" version = "1.0.2" @@ -1301,34 +732,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" -[[package]] -name = "secp256k1" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d311229f403d64002e9eed9964dfa5a0a0c1ac443344f7546bf48e916c6053a" -dependencies = [ - "cc", - "rand 0.6.5", -] - -[[package]] -name = "secp256k1" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2932dc07acd2066ff2e3921a4419606b220ba6cd03a9935123856cc534877056" -dependencies = [ - "secp256k1-sys", -] - -[[package]] -name = "secp256k1-sys" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab2c26f0d3552a0f12e639ae8a64afc2e3db9c52fe32f5fc6c289d38519f220" -dependencies = [ - "cc", -] - [[package]] name = "serde" version = "1.0.104" @@ -1384,12 +787,6 @@ dependencies = [ "opaque-debug", ] -[[package]] -name = "shlex" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fdf1b9db47230893d76faad238fd6097fd6d6a9245cd7a4d90dbd639536bbd2" - [[package]] name = "single" version = "1.0.0" @@ -1399,12 +796,6 @@ dependencies = [ "failure", ] -[[package]] -name = "slab" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" - [[package]] name = "smallvec" version = "1.4.0" @@ -1418,7 +809,7 @@ dependencies = [ "blake2", "derivative", "digest 0.7.6", - "rand 0.7.3", + "rand", "rayon", "sha2", "smallvec", @@ -1433,7 +824,7 @@ name = "snarkos-curves" version = "0.8.0" dependencies = [ "derivative", - "rand 0.7.3", + "rand", "snarkos-errors", "snarkos-models", "snarkos-utilities", @@ -1443,14 +834,7 @@ dependencies = [ name = "snarkos-errors" version = "0.8.0" dependencies = [ - "base58", - "bincode", "failure", - "hex", - "jsonrpc-core", - "rocksdb", - "secp256k1 0.15.5", - "wagyu-model", ] [[package]] @@ -1472,8 +856,8 @@ version = "0.8.0" dependencies = [ "derivative", "failure", - "rand 0.7.3", - "rand_xorshift 0.2.0", + "rand", + "rand_xorshift", "smallvec", "snarkos-errors", "snarkos-utilities", @@ -1487,15 +871,9 @@ version = "0.8.0" name = "snarkos-utilities" version = "0.8.0" dependencies = [ - "rand 0.7.3", + "rand", ] -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "strsim" version = "0.8.0" @@ -1526,12 +904,6 @@ dependencies = [ "syn 1.0.16", ] -[[package]] -name = "subtle" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" - [[package]] name = "syn" version = "0.15.44" @@ -1604,27 +976,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "tiny-keccak" -version = "2.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" -dependencies = [ - "crunchy", -] - -[[package]] -name = "tokio" -version = "0.2.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05c1d570eb1a36f0345a5ce9c6c6e665b70b73d11236912c0b477616aeec47b1" -dependencies = [ - "bytes", - "futures-core", - "memchr", - "pin-project-lite", -] - [[package]] name = "toml" version = "0.5.6" @@ -1646,18 +997,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f00ed7be0c1ff1e24f46c3d2af4859f7e863672ba3a6e92e7cff702bf9f06c2" -[[package]] -name = "uint" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "173cd16430c206dc1a430af8a89a0e9c076cf15cb42b4aedb10e8cc8fee73681" -dependencies = [ - "byteorder", - "crunchy", - "rustc-hex", - "static_assertions", -] - [[package]] name = "unicode-segmentation" version = "1.6.0" @@ -1700,46 +1039,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" -[[package]] -name = "wagyu-model" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98dcfd8275fadf569c386e111968827cb3ca49937dbe816e2f2d43723272635f" -dependencies = [ - "base58", - "base58-monero", - "bech32", - "byteorder", - "crypto-mac 0.7.0", - "ethereum-types", - "failure", - "ff", - "hex", - "rand 0.7.3", - "rand_core 0.5.1", - "ripemd160", - "rlp", - "secp256k1 0.17.2", - "serde_json", - "sha2", - "uint", -] - [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "which" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d011071ae14a2f6671d0b74080ae0cd8ebf3a6f8c9589a2cd45f23126fe29724" -dependencies = [ - "libc", -] - [[package]] name = "winapi" version = "0.3.8" diff --git a/compiler/src/compiler.rs b/compiler/src/compiler.rs index fb8424eea8..9e26090eac 100644 --- a/compiler/src/compiler.rs +++ b/compiler/src/compiler.rs @@ -42,7 +42,7 @@ impl Compiler { // Build program from abstract syntax tree let package_name = self.package_name.clone(); let program = Program::<'_, F>::from(syntax_tree).name(package_name); - log::info!("Compiled -\n{:#?}", program); + log::info!("Compilation complete:\n{:#?}", program); Ok(ResolvedProgram::generate_constraints(cs, program)) } diff --git a/compiler/src/constraints/resolved_value.rs b/compiler/src/constraints/resolved_value.rs index df9fa2ff9b..c356bdd48e 100644 --- a/compiler/src/constraints/resolved_value.rs +++ b/compiler/src/constraints/resolved_value.rs @@ -79,7 +79,7 @@ impl fmt::Display for ResolvedValue { write!(f, "}}") } ResolvedValue::Return(ref values) => { - write!(f, "Return values : [")?; + write!(f, "Program output: [")?; for (i, value) in values.iter().enumerate() { write!(f, "{}", value)?; if i < values.len() - 1 { diff --git a/leo/commands/build.rs b/leo/commands/build.rs index e7be4a093a..7a304d6d54 100644 --- a/leo/commands/build.rs +++ b/leo/commands/build.rs @@ -1,8 +1,8 @@ +use crate::{cli::*, cli_types::*}; use crate::directories::{source::SOURCE_DIRECTORY_NAME, OutputsDirectory}; use crate::errors::{BuildError, CLIError}; use crate::files::{MainFile, MAIN_FILE_NAME}; use crate::manifest::Manifest; -use crate::{cli::*, cli_types::*}; use leo_compiler::compiler::Compiler; use snarkos_curves::bls12_377::Fr; @@ -62,8 +62,8 @@ impl CLI for BuildCommand { log::info!("Compiling program located in {:?}", main_file_path); // Compile from the main file path - let circuit = Compiler::::init(package_name, main_file_path); + let program = Compiler::::init(package_name, main_file_path); - Ok(circuit) + Ok(program) } } diff --git a/leo/commands/run.rs b/leo/commands/run.rs index 7b03e0ad39..720f134ff3 100644 --- a/leo/commands/run.rs +++ b/leo/commands/run.rs @@ -29,7 +29,7 @@ impl CLI for RunCommand { #[cfg_attr(tarpaulin, skip)] fn output(options: Self::Options) -> Result<(), CLIError> { - let (circuit, parameters, prepared_verifying_key) = SetupCommand::output(options)?; + let (program, parameters, prepared_verifying_key) = SetupCommand::output(options)?; let rng = &mut thread_rng(); @@ -37,7 +37,7 @@ impl CLI for RunCommand { let mut verifying = Duration::new(0, 0); let start = Instant::now(); - let proof = create_random_proof(circuit, ¶meters, rng).unwrap(); + let proof = create_random_proof(program, ¶meters, rng).unwrap(); proving += start.elapsed(); diff --git a/leo/commands/setup.rs b/leo/commands/setup.rs index abaf79ca93..6eec13c5bc 100644 --- a/leo/commands/setup.rs +++ b/leo/commands/setup.rs @@ -1,6 +1,8 @@ +use crate::{cli::*, cli_types::*}; use crate::commands::BuildCommand; use crate::errors::CLIError; -use crate::{cli::*, cli_types::*}; +use crate::files::ProvingKeyFile; +use crate::manifest::Manifest; use leo_compiler::compiler::Compiler; use snarkos_algorithms::snark::{ @@ -10,6 +12,8 @@ use snarkos_curves::bls12_377::{Bls12_377, Fr}; use clap::ArgMatches; use rand::thread_rng; +use std::convert::TryFrom; +use std::env::current_dir; use std::time::Instant; #[derive(Debug)] @@ -37,21 +41,26 @@ impl CLI for SetupCommand { #[cfg_attr(tarpaulin, skip)] fn output(options: Self::Options) -> Result { - let circuit = BuildCommand::output(options)?; + let program = BuildCommand::output(options)?; + + // Get the package name + let path = current_dir()?; + let package_name = Manifest::try_from(&path)?.get_package_name(); let start = Instant::now(); let rng = &mut thread_rng(); let parameters = - generate_random_parameters::(circuit.clone(), rng).unwrap(); + generate_random_parameters::(program.clone(), rng).unwrap(); let prepared_verifying_key = prepare_verifying_key::(¶meters.vk); - let finish = start.elapsed(); + log::info!("Setup completed in {:?} milliseconds", start.elapsed().as_millis()); - println!(" "); - println!(" Setup time : {:?} milliseconds", finish.as_millis()); - println!(" "); + // Write the proving key file to the inputs directory + let mut proving_key = vec![]; + parameters.write(&mut proving_key); + ProvingKeyFile::new(&package_name).write_to(&path, &proving_key)?; - Ok((circuit, parameters, prepared_verifying_key)) + Ok((program, parameters, prepared_verifying_key)) } } diff --git a/leo/errors/files/mod.rs b/leo/errors/files/mod.rs index 959a903935..6f343272b9 100644 --- a/leo/errors/files/mod.rs +++ b/leo/errors/files/mod.rs @@ -1,2 +1,5 @@ pub mod main; pub use self::main::*; + +pub mod proving_key; +pub use self::proving_key::*; diff --git a/leo/errors/files/proving_key.rs b/leo/errors/files/proving_key.rs new file mode 100644 index 0000000000..a883a1f48e --- /dev/null +++ b/leo/errors/files/proving_key.rs @@ -0,0 +1,19 @@ +use std::io; + +#[derive(Debug, Fail)] +pub enum ProvingKeyFileError { + #[fail(display = "{}: {}", _0, _1)] + Crate(&'static str, String), + + #[fail(display = "creating: {}", _0)] + Creating(io::Error), + + #[fail(display = "writing: {}", _0)] + Writing(io::Error), +} + +impl From for ProvingKeyFileError { + fn from(error: std::io::Error) -> Self { + ProvingKeyFileError::Crate("std::io", format!("{}", error)) + } +} diff --git a/leo/files/mod.rs b/leo/files/mod.rs index 959a903935..6f343272b9 100644 --- a/leo/files/mod.rs +++ b/leo/files/mod.rs @@ -1,2 +1,5 @@ pub mod main; pub use self::main::*; + +pub mod proving_key; +pub use self::proving_key::*; diff --git a/leo/files/proving_key.rs b/leo/files/proving_key.rs new file mode 100644 index 0000000000..89d6f187e8 --- /dev/null +++ b/leo/files/proving_key.rs @@ -0,0 +1,52 @@ +//! The `main.leo` file. + +use crate::directories::inputs::INPUTS_DIRECTORY_NAME; +use crate::errors::MainFileError; + +use serde::Deserialize; +use std::fs::File; +use std::io::Write; +use std::path::PathBuf; + +pub static PROVING_FILE_EXTENSION: &str = ".leo.pk"; + +#[derive(Deserialize)] +pub struct ProvingKeyFile { + pub package_name: String, +} + +impl ProvingKeyFile { + pub fn new(package_name: &str) -> Self { + Self { + package_name: package_name.to_string(), + } + } + + pub fn exists_at(self, path: &PathBuf) -> bool { + let mut path = path.to_owned(); + if path.is_dir() { + if !path.ends_with(INPUTS_DIRECTORY_NAME) { + path.push(PathBuf::from(INPUTS_DIRECTORY_NAME)); + } + path.push(PathBuf::from(format!("{}{}", self.package_name, PROVING_FILE_EXTENSION))); + } + path.exists() + } + + pub fn write_to(self, path: &PathBuf, proving_key: &[u8]) -> Result<(), MainFileError> { + let mut path = path.to_owned(); + if path.is_dir() { + if !path.ends_with(INPUTS_DIRECTORY_NAME) { + path.push(PathBuf::from(INPUTS_DIRECTORY_NAME)); + } + path.push(PathBuf::from(format!("{}{}", self.package_name, PROVING_FILE_EXTENSION))); + } + + let mut file = File::create(&path)?; + file.write_all(proving_key)?; + + log::info!("Proving key stored in {:?}", path); + + Ok(()) + } +}