bool CzTNXTracker::UpdateZerocoinMint(const CZerocoinMint& mint) { if (!HasSerial(mint.GetSerialNumber())) return error("%s: mint %s is not known", __func__, mint.GetValue().GetHex()); uint256 hashSerial = GetSerialHash(mint.GetSerialNumber()); //Update the meta object CMintMeta meta = Get(hashSerial); meta.isUsed = mint.IsUsed(); meta.denom = mint.GetDenomination(); meta.nHeight = mint.GetHeight(); mapSerialHashes.at(hashSerial) = meta; //Write to db return CWalletDB(strWalletFile).WriteZerocoinMint(mint); }
void CzTNXTracker::Add(const CZerocoinMint& mint, bool isNew, bool isArchived) { CMintMeta meta; meta.hashPubcoin = GetPubCoinHash(mint.GetValue()); meta.nHeight = mint.GetHeight(); meta.nVersion = libzerocoin::ExtractVersionFromSerial(mint.GetSerialNumber()); meta.txid = mint.GetTxHash(); meta.isUsed = mint.IsUsed(); meta.hashSerial = GetSerialHash(mint.GetSerialNumber()); uint256 nSerial = mint.GetSerialNumber().getuint256(); meta.hashStake = Hash(nSerial.begin(), nSerial.end()); meta.denom = mint.GetDenomination(); meta.isArchived = isArchived; meta.isDeterministic = false; mapSerialHashes[meta.hashSerial] = meta; if (isNew) CWalletDB(strWalletFile).WriteZerocoinMint(mint); }