message: remove the need to clone the address
diff: @@ -111,26 +111,12 @@ impl RandomIndexLookup {
  pub fn new(root_pk: &hdwallet::XPub) -> Result<Self> {
  Ok(RandomIndexLookup { key: hdpayload::HDKey::new(root_pk) })
  }
  -}
  -
  -impl AddrLookup for RandomIndexLookup {
  - fn lookup(&mut self, outs: &[&TxOut]) -> Result<Vec<TxOut>> {
  - let mut found = Vec::new();
  - for o in outs {
  - if is_our_ri_address(&self.key, &o.address.clone()) {
  - found.push(o.clone().clone())
  - }
  - }
  - Ok(found)
  - }
  -}
  -// check if an address is an old style random index address
  -fn is_our_ri_address(key: &hdpayload::HDKey, addr: &ExtendedAddr) -> bool {
  + fn one_of_mine(&self, addr: &ExtendedAddr) -> bool {
  match addr.attributes.derivation_path {
  None => false,
  Some(ref epath) => {
  - match key.decrypt_path(epath) {
  + match self.key.decrypt_path(epath) {
  None => false,
  Some(ref _path) => {
  // TODO verify that the address really belongs to us
  @@ -141,6 +127,19 @@ fn is_our_ri_address(key: &hdpayload::HDKey, addr: &ExtendedAddr) -> bool {
  },
  }
  }
  +}
  +
  +impl AddrLookup for RandomIndexLookup {
  + fn lookup(&mut self, outs: &[&TxOut]) -> Result<Vec<TxOut>> {
  + let mut found = Vec::new();
  + for o in outs {
  + if self.one_of_mine(&o.address) {
  + found.push(o.clone().clone())
  + }
  + }
  + Ok(found)
  + }
  +}
  #[derive(Clone,Debug)]
  pub struct Utxo {
  