void WalletSerializerV1::loadTransfers(Common::IInputStream& source, CryptoContext& cryptoContext, uint32_t version) { uint64_t count = 0; deserializeEncrypted(count, "transfers_count", cryptoContext, source); cryptoContext.incIv(); m_transfers.reserve(count); for (uint64_t i = 0; i < count; ++i) { uint64_t txId = 0; deserializeEncrypted(txId, "transaction_id", cryptoContext, source); cryptoContext.incIv(); WalletTransferDto dto(version); deserializeEncrypted(dto, "transfer", cryptoContext, source); cryptoContext.incIv(); WalletTransfer tr; tr.address = dto.address; tr.amount = dto.amount; if (version > 2) { tr.type = static_cast<WalletTransferType>(dto.type); } else { tr.type = WalletTransferType::USUAL; } m_transfers.push_back(std::make_pair(txId, tr)); } }
void WalletSerializerV2::saveTransactions(CryptoNote::ISerializer& serializer) { uint64_t count = m_transactions.size(); serializer(count, "transactionCount"); for (const auto& tx : m_transactions) { WalletTransactionDtoV2 dto(tx); serializer(dto, "transaction"); } }
void WalletSerializer::saveTransactions(Common::IOutputStream& destination, CryptoContext& cryptoContext) { uint64_t count = m_transactions.size(); serializeEncrypted(count, "transactions_count", cryptoContext, destination); cryptoContext.incIv(); for (const auto& tx: m_transactions) { WalletTransactionDto dto(tx); serializeEncrypted(dto, "", cryptoContext, destination); cryptoContext.incIv(); } }