#include "alert.h"
#include "checkpoints.h"
#include "db.h"
-#include "txdb.h"
+#include "txdb-leveldb.h"
#include "init.h"
-#include "ui_interface.h"
+#include "interface.h"
#include "checkqueue.h"
#include "kernel.h"
#include <boost/algorithm/string/replace.hpp>
{
CBlock blockTmp;
+ if (pblock == NULL)
+ {
+ // Load the block this tx is in
+ CTxIndex txindex;
+ if (!CTxDB("r").ReadTxIndex(GetHash(), txindex))
+ return 0;
+ if (!blockTmp.ReadFromDisk(txindex.pos.nFile, txindex.pos.nBlockPos))
+ return 0;
+ pblock = &blockTmp;
+ }
+
// Update the tx's hashBlock
hashBlock = pblock->GetHash();
if (tx.nTime >= CHECKLOCKTIMEVERIFY_SWITCH_TIME) {
nFlags |= SCRIPT_VERIFY_CHECKLOCKTIMEVERIFY;
- // OP_CHECKSEQUENCEVERIFY is senseless without BIP68, so we're going disable it for now.
- // nFlags |= SCRIPT_VERIFY_CHECKSEQUENCEVERIFY;
+ }
+
+ if (tx.nTime >= CHECKSEQUENCEVERIFY_SWITCH_TIME) {
+ nFlags |= SCRIPT_VERIFY_CHECKSEQUENCEVERIFY;
}
std::vector<CScriptCheck> vChecks;
}
// Connect further blocks
- BOOST_REVERSE_FOREACH(CBlockIndex *pindex, vpindexSecondary)
+ for (std::vector<CBlockIndex*>::reverse_iterator rit = vpindexSecondary.rbegin(); rit != vpindexSecondary.rend(); ++rit)
{
CBlock block;
- if (!block.ReadFromDisk(pindex))
+ if (!block.ReadFromDisk(*rit))
{
printf("SetBestChain() : ReadFromDisk failed\n");
break;
break;
}
// errors now are not fatal, we still did a reorganisation to a new chain in a valid way
- if (!block.SetBestChainInner(txdb, pindex))
+ if (!block.SetBestChainInner(txdb, *rit))
break;
}
}
bool CheckDiskSpace(uint64_t nAdditionalBytes)
{
- uint64_t nFreeBytesAvailable = filesystem::space(GetDataDir()).available;
+ uint64_t nFreeBytesAvailable = boost::filesystem::space(GetDataDir()).available;
// Check for nMinDiskSpace bytes (currently 50MB)
if (nFreeBytesAvailable < nMinDiskSpace + nAdditionalBytes)
return true;
}
-static filesystem::path BlockFilePath(unsigned int nFile)
+static boost::filesystem::path BlockFilePath(unsigned int nFile)
{
string strBlockFn = strprintf("blk%04u.dat", nFile);
return GetDataDir() / strBlockFn;
// CTxOut(empty)
// vMerkleTree: 4cb33b3b6a
- const char* pszTimestamp = "https://bitcointalk.org/index.php?topic=134179.msg1502196#msg1502196";
+ const string strTimestamp = "https://bitcointalk.org/index.php?topic=134179.msg1502196#msg1502196";
CTransaction txNew;
txNew.nTime = 1360105017;
txNew.vin.resize(1);
txNew.vout.resize(1);
- txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(9999) << vector<unsigned char>((const unsigned char*)pszTimestamp, (const unsigned char*)pszTimestamp + strlen(pszTimestamp));
+ txNew.vin[0].scriptSig = CScript() << 486604799 << CBigNum(9999) << vector<unsigned char>(strTimestamp.begin(), strTimestamp.end());
txNew.vout[0].SetEmpty();
CBlock block;
block.vtx.push_back(txNew);
if (!txdb.WriteModifierUpgradeTime(nModifierUpgradeTime))
return error("LoadBlockIndex() : failed to write upgrade info");
}
-
-#ifndef USE_LEVELDB
- txdb.Close();
-#endif
}
return true;