Răsfoiți Sursa

contract/dao: integrate new validator

aggstam 3 ani în urmă
părinte
comite
80acf6baed
2 a modificat fișierele cu 30 adăugiri și 48 ștergeri
  1. 14 24
      src/contract/dao/tests/harness.rs
  2. 16 24
      src/contract/dao/tests/integration.rs

+ 14 - 24
src/contract/dao/tests/harness.rs

@@ -18,12 +18,10 @@
 use std::collections::HashMap;
 
 use darkfi::{
-    consensus::{
-        ValidatorState, ValidatorStatePtr, TESTNET_BOOTSTRAP_TIMESTAMP, TESTNET_GENESIS_HASH_BYTES,
-        TESTNET_GENESIS_TIMESTAMP, TESTNET_INITIAL_DISTRIBUTION,
-    },
+    consensus::{TESTNET_GENESIS_HASH_BYTES, TESTNET_GENESIS_TIMESTAMP},
     runtime::vm_runtime::SMART_CONTRACT_ZKAS_DB_NAME,
-    wallet::WalletDb,
+    util::time::TimeKeeper,
+    validator::{Validator, ValidatorConfig, ValidatorPtr},
     zk::{empty_witnesses, ProvingKey, ZkCircuit},
     zkas::ZkBinary,
     Result,
@@ -74,7 +72,7 @@ pub struct DaoTestHarness {
     /// DAO keypair
     pub dao_kp: Keypair,
 
-    pub alice_state: ValidatorStatePtr,
+    pub alice_validator: ValidatorPtr,
     pub money_contract_id: ContractId,
     pub dao_contract_id: ContractId,
     pub proving_keys: HashMap<[u8; 32], Vec<(&'static str, ProvingKey)>>,
@@ -115,33 +113,25 @@ impl DaoTestHarness {
 
         let faucet_pubkeys = vec![faucet_kp.public];
 
-        let alice_wallet = WalletDb::new("sqlite::memory:", "foo").await?;
-
         let alice_sled_db = sled::Config::new().temporary(true).open()?;
 
-        let alice_state = ValidatorState::new(
-            &alice_sled_db,
-            *TESTNET_BOOTSTRAP_TIMESTAMP,
-            *TESTNET_GENESIS_TIMESTAMP,
-            *TESTNET_GENESIS_HASH_BYTES,
-            *TESTNET_INITIAL_DISTRIBUTION,
-            alice_wallet,
-            faucet_pubkeys,
-            false,
-            false,
-        )
-        .await?;
+        // NOTE: we are not using consensus constants here so we
+        // don't get circular dependencies.
+        let time_keeper = TimeKeeper::new(*TESTNET_GENESIS_TIMESTAMP, 10, 90, 0);
+        let config =
+            ValidatorConfig::new(time_keeper, *TESTNET_GENESIS_HASH_BYTES, faucet_pubkeys.to_vec());
+        let alice_validator = Validator::new(&alice_sled_db, config).await?;
 
         let money_contract_id = *MONEY_CONTRACT_ID;
         let dao_contract_id = *DAO_CONTRACT_ID;
 
-        let alice_sled = alice_state.read().await.blockchain.sled_db.clone();
-        let money_db_handle = alice_state.read().await.blockchain.contracts.lookup(
+        let alice_sled = alice_validator.read().await.blockchain.sled_db.clone();
+        let money_db_handle = alice_validator.read().await.blockchain.contracts.lookup(
             &alice_sled,
             &money_contract_id,
             SMART_CONTRACT_ZKAS_DB_NAME,
         )?;
-        let dao_db_handle = alice_state.read().await.blockchain.contracts.lookup(
+        let dao_db_handle = alice_validator.read().await.blockchain.contracts.lookup(
             &alice_sled,
             &dao_contract_id,
             SMART_CONTRACT_ZKAS_DB_NAME,
@@ -203,7 +193,7 @@ impl DaoTestHarness {
             charlie_kp,
             rachel_kp,
             dao_kp,
-            alice_state,
+            alice_validator,
             money_contract_id,
             dao_contract_id,
             proving_keys,

+ 16 - 24
src/contract/dao/tests/integration.rs

@@ -115,13 +115,12 @@ async fn integration_test() -> Result<()> {
     tx.signatures = vec![sigs];
 
     let timer = Instant::now();
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
     mint_verify_times.push(timer.elapsed());
     // TODO: Witness and add to wallet merkle tree?
 
@@ -192,13 +191,12 @@ async fn integration_test() -> Result<()> {
     let sigs = tx.create_sigs(&mut OsRng, &vec![dao_th.faucet_kp.secret])?;
     tx.signatures = vec![sigs];
 
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
 
     // Wallet stuff
 
@@ -308,13 +306,12 @@ async fn integration_test() -> Result<()> {
     let sigs = tx3.create_sigs(&mut OsRng, &[gdrk_mint_auth.secret])?;
     tx3.signatures = vec![sigs];
 
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx1.clone(), tx2.clone(), tx3.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
 
     // Wallet
     {
@@ -443,13 +440,12 @@ async fn integration_test() -> Result<()> {
     tx.signatures = vec![sigs];
 
     let timer = Instant::now();
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
     propose_verify_times.push(timer.elapsed());
 
     //// Wallet
@@ -554,13 +550,12 @@ async fn integration_test() -> Result<()> {
     tx.signatures = vec![sigs];
 
     let timer = Instant::now();
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
     vote_verify_times.push(timer.elapsed());
 
     // Secret vote info. Needs to be revealed at some point.
@@ -625,13 +620,12 @@ async fn integration_test() -> Result<()> {
     tx.signatures = vec![sigs];
 
     let timer = Instant::now();
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
     vote_verify_times.push(timer.elapsed());
 
     let vote_note_2 = {
@@ -693,13 +687,12 @@ async fn integration_test() -> Result<()> {
     tx.signatures = vec![sigs];
 
     let timer = Instant::now();
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
     vote_verify_times.push(timer.elapsed());
 
     // Secret vote info. Needs to be revealed at some point.
@@ -881,13 +874,12 @@ async fn integration_test() -> Result<()> {
     tx.signatures = vec![xfer_sigs, exec_sigs];
 
     let timer = Instant::now();
-    let erroneous_txs = dao_th
-        .alice_state
+    dao_th
+        .alice_validator
         .read()
         .await
         .verify_transactions(&[tx.clone()], current_slot, true)
         .await?;
-    assert!(erroneous_txs.is_empty());
     exec_verify_times.push(timer.elapsed());
 
     // Statistics