}
fn deserialize(data: &[u8]) -> Result<Self, CompactFiltersError> {
- Ok(deserialize(data).map_err(|_| CompactFiltersError::DataCorruption)?)
+ deserialize(data).map_err(|_| CompactFiltersError::DataCorruption)
}
}
let key = StoreEntry::BlockHeaderIndex(Some(*block_hash)).get_key();
let data = read_store.get_pinned_cf(cf_handle, key)?;
- Ok(data
- .map(|data| {
- Ok::<_, CompactFiltersError>(usize::from_be_bytes(
- data.as_ref()
- .try_into()
- .map_err(|_| CompactFiltersError::DataCorruption)?,
- ))
- })
- .transpose()?)
+ data.map(|data| {
+ Ok::<_, CompactFiltersError>(usize::from_be_bytes(
+ data.as_ref()
+ .try_into()
+ .map_err(|_| CompactFiltersError::DataCorruption)?,
+ ))
+ })
+ .transpose()
}
pub fn get_block_hash(&self, height: usize) -> Result<Option<BlockHash>, CompactFiltersError> {
let key = StoreEntry::BlockHeader(Some(height)).get_key();
let data = read_store.get_pinned_cf(cf_handle, key)?;
- Ok(data
- .map(|data| {
- let (header, _): (BlockHeader, Uint256) =
- deserialize(&data).map_err(|_| CompactFiltersError::DataCorruption)?;
- Ok::<_, CompactFiltersError>(header.block_hash())
- })
- .transpose()?)
+ data.map(|data| {
+ let (header, _): (BlockHeader, Uint256) =
+ deserialize(&data).map_err(|_| CompactFiltersError::DataCorruption)?;
+ Ok::<_, CompactFiltersError>(header.block_hash())
+ })
+ .transpose()
}
pub fn save_full_block(&self, block: &Block, height: usize) -> Result<(), CompactFiltersError> {
let key = StoreEntry::Block(Some(height)).get_key();
let opt_block = read_store.get_pinned(key)?;
- Ok(opt_block
+ opt_block
.map(|data| deserialize(&data))
.transpose()
- .map_err(|_| CompactFiltersError::DataCorruption)?)
+ .map_err(|_| CompactFiltersError::DataCorruption)
}
pub fn delete_blocks_until(&self, height: usize) -> Result<(), CompactFiltersError> {
let prefix = StoreEntry::BlockHeader(None).get_key();
let iterator = read_store.prefix_iterator_cf(cf_handle, prefix);
- Ok(iterator
+ iterator
.last()
.map(|(_, v)| -> Result<_, CompactFiltersError> {
let (header, _): (BlockHeader, Uint256) = SerializeDb::deserialize(&v)?;
Ok(header.block_hash())
})
- .transpose()?)
+ .transpose()
}
pub fn apply(
// FIXME: we have to filter manually because rocksdb sometimes returns stuff that doesn't
// have the right prefix
- Ok(iterator
+ iterator
.filter(|(k, _)| k.starts_with(&prefix))
.skip(1)
.map(|(_, data)| Ok::<_, CompactFiltersError>(BundleEntry::deserialize(&data)?.1))
- .collect::<Result<_, _>>()?)
+ .collect::<Result<_, _>>()
}
pub fn replace_checkpoints(
secp: &SecpCtx,
network: Network,
) -> Result<(ExtendedDescriptor, KeyMap), DescriptorError> {
- Ok(self.build()?.into_wallet_descriptor(secp, network)?)
+ self.build()?.into_wallet_descriptor(secp, network)
}
}
impl<K: IntoDescriptorKey<Legacy>> DescriptorTemplate for P2PKH<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(descriptor!(pkh(self.0))?)
+ descriptor!(pkh(self.0))
}
}
impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2WPKH_P2SH<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(descriptor!(sh(wpkh(self.0)))?)
+ descriptor!(sh(wpkh(self.0)))
}
}
impl<K: IntoDescriptorKey<Segwitv0>> DescriptorTemplate for P2WPKH<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(descriptor!(wpkh(self.0))?)
+ descriptor!(wpkh(self.0))
}
}
impl<K: DerivableKey<Legacy>> DescriptorTemplate for BIP44<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(P2PKH(legacy::make_bipxx_private(44, self.0, self.1)?).build()?)
+ P2PKH(legacy::make_bipxx_private(44, self.0, self.1)?).build()
}
}
impl<K: DerivableKey<Legacy>> DescriptorTemplate for BIP44Public<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(P2PKH(legacy::make_bipxx_public(44, self.0, self.1, self.2)?).build()?)
+ P2PKH(legacy::make_bipxx_public(44, self.0, self.1, self.2)?).build()
}
}
impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for BIP49<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(P2WPKH_P2SH(segwit_v0::make_bipxx_private(49, self.0, self.1)?).build()?)
+ P2WPKH_P2SH(segwit_v0::make_bipxx_private(49, self.0, self.1)?).build()
}
}
impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for BIP49Public<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(P2WPKH_P2SH(segwit_v0::make_bipxx_public(49, self.0, self.1, self.2)?).build()?)
+ P2WPKH_P2SH(segwit_v0::make_bipxx_public(49, self.0, self.1, self.2)?).build()
}
}
impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for BIP84<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(P2WPKH(segwit_v0::make_bipxx_private(84, self.0, self.1)?).build()?)
+ P2WPKH(segwit_v0::make_bipxx_private(84, self.0, self.1)?).build()
}
}
impl<K: DerivableKey<Segwitv0>> DescriptorTemplate for BIP84Public<K> {
fn build(self) -> Result<DescriptorTemplateOut, DescriptorError> {
- Ok(P2WPKH(segwit_v0::make_bipxx_public(84, self.0, self.1, self.2)?).build()?)
+ P2WPKH(segwit_v0::make_bipxx_public(84, self.0, self.1, self.2)?).build()
}
}