| 
					
				 | 
			
			
				@@ -90,6 +90,16 @@ impl MintRedbDatabase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 ); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 return Err(Error::UnknownDatabaseVersion); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            let write_txn = db.begin_write()?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                let mut table = write_txn.open_table(CONFIG_TABLE)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                    .insert("db_version", DATABASE_VERSION.to_string().as_str())?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            write_txn.commit()?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         Ordering::Equal => { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             tracing::info!("Database is at current version {}", DATABASE_VERSION); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -507,12 +517,14 @@ impl MintDatabase for MintRedbDatabase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             let mut table = write_txn.open_table(PROOFS_TABLE).map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             for proof in proofs { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 let y: PublicKey = hash_to_curve(&proof.secret.to_bytes()).map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        y.to_bytes(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        serde_json::to_string(&proof).map_err(Error::from)?.as_str(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    .map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if table.get(y.to_bytes()).map_err(Error::from)?.is_none() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .insert( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            y.to_bytes(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            serde_json::to_string(&proof).map_err(Error::from)?.as_str(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        .map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         write_txn.commit().map_err(Error::from)?; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -567,26 +579,31 @@ impl MintDatabase for MintRedbDatabase { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) -> Result<Vec<Option<State>>, Self::Err> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let db = self.db.lock().await; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let write_txn = db.begin_write().map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        let mut table = write_txn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .open_table(PROOFS_STATE_TABLE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            .map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let mut states = Vec::with_capacity(ys.len()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         let state_str = serde_json::to_string(&proofs_state).map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for y in ys { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            match table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .insert(y.to_bytes(), state_str.as_str()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                .map_err(Error::from)? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Some(state) => states.push(Some( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    serde_json::from_str(state.value()).map_err(Error::from)?, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                )), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                None => states.push(None), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            let mut table = write_txn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .open_table(PROOFS_STATE_TABLE) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                .map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            for y in ys { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                match table 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .insert(y.to_bytes(), state_str.as_str()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    .map_err(Error::from)? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Some(state) => states.push(Some( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        serde_json::from_str(state.value()).map_err(Error::from)?, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    )), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    None => states.push(None), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        write_txn.commit().map_err(Error::from)?; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Ok(states) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |