Просмотр исходного кода

[crypsinous] missing reward value, set up reward=1, sigma=#slot*reward

mohab metwally 3 лет назад
Родитель
Сommit
ff60218574
7 измененных файлов с 16 добавлено и 6 удалено
  1. 4 0
      db/conf
  2. BIN
      db/db
  3. 3 1
      example/lead.rs
  4. 2 1
      src/blockchain/epoch.rs
  5. 0 1
      src/crypto/leadcoin.rs
  6. 6 2
      src/stakeholder/stakeholder.rs
  7. 1 1
      src/zk/circuit/lead_contract.rs

+ 4 - 0
db/conf

@@ -0,0 +1,4 @@
+segment_size: 524288
+use_compression: false
+version: 0.34
+vQÁ


+ 3 - 1
example/lead.rs

@@ -67,7 +67,9 @@ fn main() {
         eta: eta,
         coins: vec![],
     };
-    let coins: Vec<LeadCoin> = epoch.create_coins();
+    // sigma is nubmer of slots * reward (assuming reward is 1 for simplicity)
+    let sigma = pallas::Base::from(10);
+    let coins: Vec<LeadCoin> = epoch.create_coins(sigma);
     let coin_idx = 0;
     let coin = coins[coin_idx];
     let contract = coin.create_contract();

+ 2 - 1
src/blockchain/epoch.rs

@@ -158,7 +158,7 @@ impl Epoch {
         (root_sks, path_sks)
     }
     //note! the strategy here is single competing coin per slot.
-    pub fn create_coins(& mut self) -> Vec<LeadCoin> {
+    pub fn create_coins(& mut self, sigma : pallas::Base) -> Vec<LeadCoin> {
         let mut rng = thread_rng();
         let mut seeds: Vec<u64> = vec![];
         for _i in 0..self.len.unwrap() {
@@ -255,6 +255,7 @@ impl Epoch {
                 c2_blind: Some(c_cm2_blind),
                 y_mu: Some(y_mu),
                 rho_mu: Some(rho_mu),
+                sigma_scalar: Some(sigma),
             };
             coins.push(coin);
         }

+ 0 - 1
src/crypto/leadcoin.rs

@@ -55,7 +55,6 @@ impl LeadCoin {
 
         let po_cm = self.cm.unwrap().to_affine().coordinates().unwrap();
         let po_cm2 = self.cm2.unwrap().to_affine().coordinates().unwrap();
-
         let po_pk = self.pk.unwrap();
         let po_sn = self.sn.unwrap();
 

+ 6 - 2
src/stakeholder/stakeholder.rs

@@ -335,8 +335,12 @@ impl Stakeholder
         // create coin with absolute slot/epoch.
         let num_slots = self.workspace.sl;
         // total stake;
-        let sigma = num_slots*reward;
-        epoch.create_coins(); // set epoch interal fields working space with competing coins
+        // TODO sigma scalar for tunning target function
+        // it's value is dependent on the tekonomics,
+        // set to one untill then.
+        let reward = pallas::Base::one();
+        let sigma : pallas::Base = pallas::Base::from(num_slots)*reward;
+        epoch.create_coins(sigma); // set epoch interal fields working space with competing coins
         self.epoch = epoch.clone();
     }
 

+ 1 - 1
src/zk/circuit/lead_contract.rs

@@ -565,7 +565,7 @@ impl Circuit<pallas::Base> for LeadContract {
         let rho_commit = com.add(layouter.namespace(|| "nonce commit"), &blind)?;
         let rho_commit_base = rho_commit.inner().x();
         // stakeholder absolute stake + 1 (epsilon)
-        let stake_plus = ar_chip.add(layouter.namespace(|| ""), &one, coin_value.clone())?;
+        let stake_plus = ar_chip.add(layouter.namespace(|| ""), &one, &coin_value.clone())?;
         let target = ar_chip.mul(layouter.namespace(|| "calculate target"), &sigma_scalar, &stake_plus)?;
 
         let y : Value<pallas::Base> = y_commit_base.value().cloned();