diff --git a/src/bin/darkfid.rs b/src/bin/darkfid.rs index 0d9503a5c..c99392011 100644 --- a/src/bin/darkfid.rs +++ b/src/bin/darkfid.rs @@ -12,7 +12,7 @@ use drk::crypto::{ nullifier::Nullifier, save_params, setup_mint_prover, setup_spend_prover, }; -use drk::serial::{deserialize, Decodable}; +use drk::serial::Decodable; use drk::service::{ClientProgramOptions, GatewayClient, Subscriber}; use drk::state::{state_transition, ProgramState, StateUpdate}; use drk::{tx, Result}; @@ -131,16 +131,14 @@ pub async fn subscribe( mut state: State, ) -> Result<()> { loop { - let slab_data: Vec; - slab_data = subscriber.fetch().await?; - let slab: Slab = deserialize(&slab_data)?; + let slab = subscriber.fetch::().await?; let tx = tx::Transaction::decode(&slab.get_payload()[..])?; let update = state_transition(&state, tx)?; state.apply(update)?; - slabstore.put(slab_data)?; + slabstore.put(slab)?; } } diff --git a/src/blockchain/slabstore.rs b/src/blockchain/slabstore.rs index 34fd8c7ec..4a6589531 100644 --- a/src/blockchain/slabstore.rs +++ b/src/blockchain/slabstore.rs @@ -20,13 +20,12 @@ impl SlabStore { Ok(value) } - pub fn put(&self, value: Vec) -> Result> { - let slab: Slab = deserialize(&value)?; + pub fn put(&self, slab: Slab) -> Result> { let last_index = self.get_last_index()?; let key = last_index + 1; if slab.get_index() == key { - self.rocks.put(key.clone(), value)?; + self.rocks.put(key.clone(), slab)?; Ok(Some(key)) } else { Ok(None) diff --git a/src/service/gateway.rs b/src/service/gateway.rs index f849c9f9a..35d5f5d72 100644 --- a/src/service/gateway.rs +++ b/src/service/gateway.rs @@ -126,7 +126,7 @@ impl GatewayService { let slab = request.get_payload(); // add to slabstore - let error = slabstore.put(slab.clone())?; + let error = slabstore.put(deserialize(&slab)?)?; let mut reply = Reply::from(&request, GatewayError::NoError as u32, vec![]); @@ -228,7 +228,7 @@ impl GatewayClient { .await?; if let Some(slab) = rep { - self.slabstore.put(slab.clone())?; + self.slabstore.put(deserialize(&slab)?)?; return Ok(Some(slab)); } Ok(None) diff --git a/src/service/reqrep.rs b/src/service/reqrep.rs index a507b21fb..09f774ea7 100644 --- a/src/service/reqrep.rs +++ b/src/service/reqrep.rs @@ -249,11 +249,12 @@ impl Subscriber { Ok(()) } - pub async fn fetch(&mut self) -> Result> { + pub async fn fetch(&mut self) -> Result { let data = self.socket.recv().await?; match data.get(0) { Some(d) => { let data = d.to_vec(); + let data: T = deserialize(&data)?; Ok(data) } None => Err(crate::Error::ZMQError(