message: add proper error wrapping
diff: @@ -381,22 +381,30 @@ impl property::Deserialize for Address {
  ADDR_KIND_SINGLE => {
  let mut bytes = [0u8; 32];
  codec.read_exact(&mut bytes)?;
  - let spending = PublicKey::from_bytes(&bytes[..])?;
  + let spending = PublicKey::from_bytes(&bytes[..]).map_err(|err| {
  + std::io::Error::new(std::io::ErrorKind::InvalidData, Box::new(err))
  + })?;
  Kind::Single(spending)
  }
  ADDR_KIND_GROUP => {
  let mut bytes = [0u8; 32];
  codec.read_exact(&mut bytes)?;
  - let spending = PublicKey::from_bytes(&bytes[..]);
  + let spending = PublicKey::from_bytes(&bytes[..]).map_err(|err| {
  + std::io::Error::new(std::io::ErrorKind::InvalidData, Box::new(err))
  + })?;
  let mut bytes = [0u8; 32];
  codec.read_exact(&mut bytes)?;
  - let group = PublicKey::from_bytes(bytes)?;
  + let group = PublicKey::from_bytes(&bytes[..]).map_err(|err| {
  + std::io::Error::new(std::io::ErrorKind::InvalidData, Box::new(err))
  + })?;
  Kind::Group(spending, group)
  }
  ADDR_KIND_ACCOUNT => {
  let mut bytes = [0u8; 32];
  codec.read_exact(&mut bytes)?;
  - let stake_key = PublicKey::from_bytes(bytes)?;
  + let stake_key = PublicKey::from_bytes(&bytes[..]).map_err(|err| {
  + std::io::Error::new(std::io::ErrorKind::InvalidData, Box::new(err))
  + })?;
  Kind::Account(stake_key)
  }
  _ => unreachable!(),
  