mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-15 01:20:24 +00:00
[MOVEONLY] Move old CCoins class to txdb.cpp
It's only used for upgrading from the old database anymore.
This commit is contained in:
parent
8b25d2c0ce
commit
580b023092
51
src/coins.h
51
src/coins.h
@ -82,57 +82,6 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//! Legacy class to deserialize pre-pertxout database entries without reindex.
|
|
||||||
class CCoins
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
//! whether transaction is a coinbase
|
|
||||||
bool fCoinBase;
|
|
||||||
|
|
||||||
//! unspent transaction outputs; spent outputs are .IsNull(); spent outputs at the end of the array are dropped
|
|
||||||
std::vector<CTxOut> vout;
|
|
||||||
|
|
||||||
//! at which height this transaction was included in the active block chain
|
|
||||||
int nHeight;
|
|
||||||
|
|
||||||
//! empty constructor
|
|
||||||
CCoins() : fCoinBase(false), vout(0), nHeight(0) { }
|
|
||||||
|
|
||||||
template<typename Stream>
|
|
||||||
void Unserialize(Stream &s) {
|
|
||||||
unsigned int nCode = 0;
|
|
||||||
// version
|
|
||||||
int nVersionDummy;
|
|
||||||
::Unserialize(s, VARINT(nVersionDummy));
|
|
||||||
// header code
|
|
||||||
::Unserialize(s, VARINT(nCode));
|
|
||||||
fCoinBase = nCode & 1;
|
|
||||||
std::vector<bool> vAvail(2, false);
|
|
||||||
vAvail[0] = (nCode & 2) != 0;
|
|
||||||
vAvail[1] = (nCode & 4) != 0;
|
|
||||||
unsigned int nMaskCode = (nCode / 8) + ((nCode & 6) != 0 ? 0 : 1);
|
|
||||||
// spentness bitmask
|
|
||||||
while (nMaskCode > 0) {
|
|
||||||
unsigned char chAvail = 0;
|
|
||||||
::Unserialize(s, chAvail);
|
|
||||||
for (unsigned int p = 0; p < 8; p++) {
|
|
||||||
bool f = (chAvail & (1 << p)) != 0;
|
|
||||||
vAvail.push_back(f);
|
|
||||||
}
|
|
||||||
if (chAvail != 0)
|
|
||||||
nMaskCode--;
|
|
||||||
}
|
|
||||||
// txouts themself
|
|
||||||
vout.assign(vAvail.size(), CTxOut());
|
|
||||||
for (unsigned int i = 0; i < vAvail.size(); i++) {
|
|
||||||
if (vAvail[i])
|
|
||||||
::Unserialize(s, REF(CTxOutCompressor(vout[i])));
|
|
||||||
}
|
|
||||||
// coinbase height
|
|
||||||
::Unserialize(s, VARINT(nHeight));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class SaltedOutpointHasher
|
class SaltedOutpointHasher
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
55
src/txdb.cpp
55
src/txdb.cpp
@ -253,6 +253,61 @@ bool CBlockTreeDB::LoadBlockIndexGuts(std::function<CBlockIndex*(const uint256&)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
//! Legacy class to deserialize pre-pertxout database entries without reindex.
|
||||||
|
class CCoins
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//! whether transaction is a coinbase
|
||||||
|
bool fCoinBase;
|
||||||
|
|
||||||
|
//! unspent transaction outputs; spent outputs are .IsNull(); spent outputs at the end of the array are dropped
|
||||||
|
std::vector<CTxOut> vout;
|
||||||
|
|
||||||
|
//! at which height this transaction was included in the active block chain
|
||||||
|
int nHeight;
|
||||||
|
|
||||||
|
//! empty constructor
|
||||||
|
CCoins() : fCoinBase(false), vout(0), nHeight(0) { }
|
||||||
|
|
||||||
|
template<typename Stream>
|
||||||
|
void Unserialize(Stream &s) {
|
||||||
|
unsigned int nCode = 0;
|
||||||
|
// version
|
||||||
|
int nVersionDummy;
|
||||||
|
::Unserialize(s, VARINT(nVersionDummy));
|
||||||
|
// header code
|
||||||
|
::Unserialize(s, VARINT(nCode));
|
||||||
|
fCoinBase = nCode & 1;
|
||||||
|
std::vector<bool> vAvail(2, false);
|
||||||
|
vAvail[0] = (nCode & 2) != 0;
|
||||||
|
vAvail[1] = (nCode & 4) != 0;
|
||||||
|
unsigned int nMaskCode = (nCode / 8) + ((nCode & 6) != 0 ? 0 : 1);
|
||||||
|
// spentness bitmask
|
||||||
|
while (nMaskCode > 0) {
|
||||||
|
unsigned char chAvail = 0;
|
||||||
|
::Unserialize(s, chAvail);
|
||||||
|
for (unsigned int p = 0; p < 8; p++) {
|
||||||
|
bool f = (chAvail & (1 << p)) != 0;
|
||||||
|
vAvail.push_back(f);
|
||||||
|
}
|
||||||
|
if (chAvail != 0)
|
||||||
|
nMaskCode--;
|
||||||
|
}
|
||||||
|
// txouts themself
|
||||||
|
vout.assign(vAvail.size(), CTxOut());
|
||||||
|
for (unsigned int i = 0; i < vAvail.size(); i++) {
|
||||||
|
if (vAvail[i])
|
||||||
|
::Unserialize(s, REF(CTxOutCompressor(vout[i])));
|
||||||
|
}
|
||||||
|
// coinbase height
|
||||||
|
::Unserialize(s, VARINT(nHeight));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/** Upgrade the database from older formats.
|
/** Upgrade the database from older formats.
|
||||||
*
|
*
|
||||||
* Currently implemented: from the per-tx utxo model (0.8..0.14.x) to per-txout.
|
* Currently implemented: from the per-tx utxo model (0.8..0.14.x) to per-txout.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user