Răsfoiți Sursa

begin migration from example/halo2 to src/

narodnik 4 ani în urmă
părinte
comite
4cdbcc842f

+ 1 - 0
Cargo.lock

@@ -1282,6 +1282,7 @@ dependencies = [
  "bytes 1.1.0",
  "crypto_api_chachapoly",
  "dirs",
+ "ff",
  "futures",
  "group",
  "halo2",

+ 1 - 0
Cargo.toml

@@ -33,6 +33,7 @@ features = ["lz4"]
 
 [dependencies]
 # Crypto
+ff = "0.11.0"
 pasta_curves = "0.2.1"
 rand = "0.8.4"
 num-bigint = {version = "0.4.2", features = ["rand"]}

+ 0 - 18
example/halo2/src/crypto.rs

@@ -1,18 +0,0 @@
-use pasta_curves::{
-    arithmetic::{CurveExt, FieldExt},
-    pallas,
-};
-
-use crate::constants::fixed_bases::{
-    VALUE_COMMITMENT_PERSONALIZATION, VALUE_COMMITMENT_R_BYTES, VALUE_COMMITMENT_V_BYTES,
-};
-
-#[allow(non_snake_case)]
-pub fn pedersen_commitment(value: u64, blind: pallas::Scalar) -> pallas::Point {
-    let hasher = pallas::Point::hash_to_curve(VALUE_COMMITMENT_PERSONALIZATION);
-    let V = hasher(&VALUE_COMMITMENT_V_BYTES);
-    let R = hasher(&VALUE_COMMITMENT_R_BYTES);
-    let value = pallas::Scalar::from_u64(value);
-
-    V * value + R * blind
-}

+ 32 - 0
src/bin/tx2.rs

@@ -0,0 +1,32 @@
+use pasta_curves::{
+    arithmetic::{CurveAffine, Field},
+    group::{ff::{PrimeField, PrimeFieldBits}, Curve},
+    pallas,
+};
+use halo2_gadgets::{
+    ecc::{
+        chip::{EccChip, EccConfig},
+        FixedPoint, FixedPoints,
+    },
+};
+use rand::rngs::OsRng;
+
+use drk::{
+    constants::{
+        sinsemilla::{OrchardCommitDomains, OrchardHashDomains, MERKLE_CRH_PERSONALIZATION},
+        OrchardFixedBases,
+    },
+    crypto::pedersen_commitment,
+    proof::{Proof, ProvingKey, VerifyingKey},
+    spec::i2lebsp,
+};
+
+fn mod_r_p(x: pallas::Base) -> pallas::Scalar {
+    pallas::Scalar::from_repr(x.to_repr()).unwrap()
+}
+
+fn main() {
+    let secret = pallas::Base::random(&mut OsRng);
+    let public_key = OrchardFixedBases::SpendAuthG.generator() * mod_r_p(secret);
+}
+

+ 0 - 0
example/halo2/src/constants.rs → src/constants.rs


+ 0 - 0
example/halo2/src/constants/fixed_bases.rs → src/constants/fixed_bases.rs


+ 0 - 0
example/halo2/src/constants/fixed_bases/commit_ivk_r.rs → src/constants/fixed_bases/commit_ivk_r.rs


+ 0 - 0
example/halo2/src/constants/fixed_bases/note_commit_r.rs → src/constants/fixed_bases/note_commit_r.rs


+ 0 - 0
example/halo2/src/constants/fixed_bases/nullifier_k.rs → src/constants/fixed_bases/nullifier_k.rs


+ 0 - 0
example/halo2/src/constants/fixed_bases/spend_auth_g.rs → src/constants/fixed_bases/spend_auth_g.rs


+ 0 - 0
example/halo2/src/constants/fixed_bases/value_commit_r.rs → src/constants/fixed_bases/value_commit_r.rs


+ 0 - 0
example/halo2/src/constants/fixed_bases/value_commit_v.rs → src/constants/fixed_bases/value_commit_v.rs


+ 0 - 0
example/halo2/src/constants/sinsemilla.rs → src/constants/sinsemilla.rs


+ 0 - 0
example/halo2/src/constants/util.rs → src/constants/util.rs


+ 23 - 0
src/crypto/mod.rs → src/crypto.rs

@@ -1,3 +1,26 @@
+use pasta_curves::{
+    arithmetic::{CurveExt, FieldExt},
+    pallas,
+};
+
+use crate::constants::fixed_bases::{
+    VALUE_COMMITMENT_PERSONALIZATION, VALUE_COMMITMENT_R_BYTES, VALUE_COMMITMENT_V_BYTES,
+};
+
+#[allow(non_snake_case)]
+pub fn pedersen_commitment(value: u64, blind: pallas::Scalar) -> pallas::Point {
+    let hasher = pallas::Point::hash_to_curve(VALUE_COMMITMENT_PERSONALIZATION);
+    let V = hasher(&VALUE_COMMITMENT_V_BYTES);
+    let R = hasher(&VALUE_COMMITMENT_R_BYTES);
+    let value = pallas::Scalar::from_u64(value);
+
+    V * value + R * blind
+}
+
+//////////////////////////////////
+// copied from mod.rs
+// todo: go through this code
+
 pub mod coin;
 pub mod constants;
 pub mod diffie_hellman;

+ 3 - 0
src/lib.rs

@@ -3,13 +3,16 @@ pub mod blockchain;
 pub mod circuit;
 pub mod cli;
 pub mod client;
+pub mod constants;
 pub mod crypto;
 pub mod endian;
 pub mod error;
 pub mod net;
+pub mod proof;
 pub mod rpc;
 pub mod serial;
 pub mod service;
+pub mod spec;
 pub mod state;
 pub mod system;
 pub mod tx;

+ 0 - 0
example/halo2/src/proof.rs → src/proof.rs


+ 0 - 0
example/halo2/src/spec.rs → src/spec.rs