void WalletSerializerV1::load(const Crypto::chacha8_key& key, Common::IInputStream& source) {
  CryptoNote::BinaryInputStreamSerializer s(source);
  s.beginObject("wallet");

  uint32_t version = loadVersion(source);

  if (version > SERIALIZATION_VERSION) {
    throw std::system_error(make_error_code(error::WRONG_VERSION));
  } else if (version != 1) {
    loadWallet(source, key, version);
  } else {
    loadWalletV1(source, key);
  }

  s.endObject();
}
void WalletSerializer::load(const std::string& password, Common::IInputStream& source) {
  CryptoNote::BinaryInputStreamSerializer s(source);
  s.beginObject("wallet");

  uint32_t version = loadVersion(source);

  if (version == SERIALIZATION_VERSION) {
    loadCurrentVersion(source, password);
  } else if (version == 1) {
    loadWalletV1(source, password);
  } else {
    throw std::system_error(make_error_code(error::WRONG_VERSION));
  }

  s.endObject();
}