Merge branch 'dev' into duke
This commit is contained in:
@@ -14,8 +14,6 @@ You can run a single test by calling `qa/pull-tester/rpc-tests.sh <testname>`.
|
|||||||
|
|
||||||
Run all possible tests with `qa/pull-tester/rpc-tests.sh -extended`.
|
Run all possible tests with `qa/pull-tester/rpc-tests.sh -extended`.
|
||||||
|
|
||||||
Also it's possible to run CryptoConditions tests only by `qa/pull-tester/cc-tests.sh --noshutdown --tracerpc`
|
|
||||||
|
|
||||||
Possible options:
|
Possible options:
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -3,9 +3,9 @@ CC = gcc
|
|||||||
CC_DARWIN = g++-8
|
CC_DARWIN = g++-8
|
||||||
CC_WIN = x86_64-w64-mingw32-gcc-posix
|
CC_WIN = x86_64-w64-mingw32-gcc-posix
|
||||||
CC_AARCH64 = aarch64-linux-gnu-g++
|
CC_AARCH64 = aarch64-linux-gnu-g++
|
||||||
CFLAGS_DARWIN = -DBUILD_CUSTOMCC -std=c++11 -arch x86_64 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I../leveldb/include -I.. -I. -fPIC -Wl,-undefined -Wl,dynamic_lookup -Wno-write-strings -shared -dynamiclib
|
CFLAGS_DARWIN = -DBUILD_CUSTOMCC -std=c++11 -arch x86_64 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../leveldb/include -I.. -I. -fPIC -Wl,-undefined -Wl,dynamic_lookup -Wno-write-strings -shared -dynamiclib
|
||||||
CFLAGS = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I../leveldb/include -I.. -I. -fPIC -shared
|
CFLAGS = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/$(shell echo `../..//depends/config.guess`/include) -I../univalue/include -I../leveldb/include -I.. -I. -fPIC -shared
|
||||||
CFLAGS_WIN = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/x86_64-w64-mingw32/include -I../univalue/include -I../cryptoconditions/include -I../cryptoconditions/src -I../cryptoconditions/src/asn -I../leveldb/include -I.. -I. -fPIC -shared
|
CFLAGS_WIN = -Wno-write-strings -DBUILD_CUSTOMCC -std=c++11 -I../secp256k1/include -I../../depends/x86_64-w64-mingw32/include -I../univalue/include -I../leveldb/include -I.. -I. -fPIC -shared
|
||||||
DEBUGFLAGS = -O0 -D _DEBUG
|
DEBUGFLAGS = -O0 -D _DEBUG
|
||||||
RELEASEFLAGS = -O2 -D NDEBUG -combine -fwhole-program
|
RELEASEFLAGS = -O2 -D NDEBUG -combine -fwhole-program
|
||||||
$(info $(OS))
|
$(info $(OS))
|
||||||
@@ -15,7 +15,6 @@ TARGET = customcc.so
|
|||||||
TARGET_DARWIN = customcc.dylib
|
TARGET_DARWIN = customcc.dylib
|
||||||
TARGET_WIN = customcc.dll
|
TARGET_WIN = customcc.dll
|
||||||
SOURCES = cclib.cpp
|
SOURCES = cclib.cpp
|
||||||
#HEADERS = $(shell echo ../cryptoconditions/include/*.h) -I/usr/local/Cellar/gcc\@8/8.3.0/include/c++/8.3.0/
|
|
||||||
|
|
||||||
all: $(TARGET)
|
all: $(TARGET)
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
## CCLIB
|
|
||||||
|
|
||||||
Please follow the below instructions to build the cryptoconditions library
|
|
||||||
|
|
||||||
```
|
|
||||||
make clean
|
|
||||||
make
|
|
||||||
```
|
|
||||||
@@ -195,12 +195,14 @@ CMutableTransaction CreateNewContextualCMutableTransaction(const Consensus::Para
|
|||||||
{
|
{
|
||||||
CMutableTransaction mtx;
|
CMutableTransaction mtx;
|
||||||
|
|
||||||
bool isOverwintered = NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_OVERWINTER);
|
const bool isOverwintered = nHeight>=1 ? true : false; //NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_OVERWINTER);
|
||||||
|
const bool isSapling = nHeight>=1 ? true : false;
|
||||||
if (isOverwintered) {
|
if (isOverwintered) {
|
||||||
mtx.fOverwintered = true;
|
mtx.fOverwintered = true;
|
||||||
mtx.nExpiryHeight = nHeight + 60;
|
mtx.nExpiryHeight = nHeight + 60;
|
||||||
|
|
||||||
if (NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_SAPLING)) {
|
//if (NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_SAPLING)) {
|
||||||
|
if(isSapling) {
|
||||||
mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID;
|
mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID;
|
||||||
mtx.nVersion = SAPLING_TX_VERSION;
|
mtx.nVersion = SAPLING_TX_VERSION;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -601,12 +601,8 @@ std::string HelpMessage(HelpMessageMode mode)
|
|||||||
strUsage += HelpMessageGroup(_("Hush Arrakis Chain options:"));
|
strUsage += HelpMessageGroup(_("Hush Arrakis Chain options:"));
|
||||||
strUsage += HelpMessageOpt("-ac_algo", _("Choose PoW mining algorithm, either 'equihash' or 'randomx'. default is Equihash (200,9)"));
|
strUsage += HelpMessageOpt("-ac_algo", _("Choose PoW mining algorithm, either 'equihash' or 'randomx'. default is Equihash (200,9)"));
|
||||||
strUsage += HelpMessageOpt("-ac_blocktime", _("Block time in seconds, default is 60"));
|
strUsage += HelpMessageOpt("-ac_blocktime", _("Block time in seconds, default is 60"));
|
||||||
strUsage += HelpMessageOpt("-ac_cc", _("Cryptoconditions, default 0"));
|
|
||||||
strUsage += HelpMessageOpt("-ac_beam", _("BEAM integration"));
|
strUsage += HelpMessageOpt("-ac_beam", _("BEAM integration"));
|
||||||
strUsage += HelpMessageOpt("-ac_coda", _("CODA integration"));
|
strUsage += HelpMessageOpt("-ac_coda", _("CODA integration"));
|
||||||
strUsage += HelpMessageOpt("-ac_cclib", _("Cryptoconditions dynamicly loadable library"));
|
|
||||||
strUsage += HelpMessageOpt("-ac_ccenable", _("Cryptoconditions to enable"));
|
|
||||||
strUsage += HelpMessageOpt("-ac_ccactivate", _("Block height to enable Cryptoconditions"));
|
|
||||||
strUsage += HelpMessageOpt("-ac_decay", _("Percentage of block reward decrease at each halving"));
|
strUsage += HelpMessageOpt("-ac_decay", _("Percentage of block reward decrease at each halving"));
|
||||||
strUsage += HelpMessageOpt("-ac_end", _("Block height at which block rewards will end"));
|
strUsage += HelpMessageOpt("-ac_end", _("Block height at which block rewards will end"));
|
||||||
strUsage += HelpMessageOpt("-ac_eras", _("Block reward eras"));
|
strUsage += HelpMessageOpt("-ac_eras", _("Block reward eras"));
|
||||||
|
|||||||
11
src/main.cpp
11
src/main.cpp
@@ -931,8 +931,8 @@ unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans) EXCLUSIVE_LOCKS_REQUIRE
|
|||||||
|
|
||||||
bool IsStandardTx(const CTransaction& tx, string& reason, const int nHeight)
|
bool IsStandardTx(const CTransaction& tx, string& reason, const int nHeight)
|
||||||
{
|
{
|
||||||
const bool overwinterActive = nHeight >=1 ? true : false; //NetworkUpgradeActive(nHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER);
|
const bool overwinterActive = nHeight>=1 ? true : false; //NetworkUpgradeActive(nHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER);
|
||||||
const bool saplingActive = nHeight >=1 ? true : false; //NetworkUpgradeActive(nHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING);
|
const bool saplingActive = nHeight>=1 ? true : false; //NetworkUpgradeActive(nHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING);
|
||||||
|
|
||||||
if (saplingActive) {
|
if (saplingActive) {
|
||||||
// Sapling standard rules apply
|
// Sapling standard rules apply
|
||||||
@@ -1224,6 +1224,7 @@ bool ContextualCheckTransaction(int32_t slowflag,const CBlock *block, CBlockInde
|
|||||||
const bool saplingActive = nHeight >=1 ? true : false; //NetworkUpgradeActive(nHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING);
|
const bool saplingActive = nHeight >=1 ? true : false; //NetworkUpgradeActive(nHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING);
|
||||||
const bool isSprout = false; //!overwinterActive;
|
const bool isSprout = false; //!overwinterActive;
|
||||||
|
|
||||||
|
/*
|
||||||
// If Sprout rules apply, reject transactions which are intended for Overwinter and beyond
|
// If Sprout rules apply, reject transactions which are intended for Overwinter and beyond
|
||||||
if (isSprout && tx.fOverwintered) {
|
if (isSprout && tx.fOverwintered) {
|
||||||
int32_t ht = Params().GetConsensus().vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight;
|
int32_t ht = Params().GetConsensus().vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight;
|
||||||
@@ -3074,7 +3075,7 @@ bool DisconnectBlock(CBlock& block, CValidationState& state, CBlockIndex* pindex
|
|||||||
// However, this is only reliable if the last block was on or after
|
// However, this is only reliable if the last block was on or after
|
||||||
// the Sapling activation height. Otherwise, the last anchor was the
|
// the Sapling activation height. Otherwise, the last anchor was the
|
||||||
// empty root.
|
// empty root.
|
||||||
const bool sapling = pindex->GetHeight() >= 2 ? true : false; // NetworkUpgradeActive(pindex->pprev->GetHeight(), Params().GetConsensus(), Consensus::UPGRADE_SAPLING);
|
const bool sapling = pindex->pprev->GetHeight() >= 1 ? true : false; // NetworkUpgradeActive(pindex->pprev->GetHeight(), Params().GetConsensus(), Consensus::UPGRADE_SAPLING);
|
||||||
if (sapling) {
|
if (sapling) {
|
||||||
view.PopAnchor(pindex->pprev->hashFinalSaplingRoot, SAPLING);
|
view.PopAnchor(pindex->pprev->hashFinalSaplingRoot, SAPLING);
|
||||||
} else {
|
} else {
|
||||||
@@ -3487,7 +3488,7 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
|
|||||||
|
|
||||||
// If Sapling is active, block.hashFinalSaplingRoot must be the
|
// If Sapling is active, block.hashFinalSaplingRoot must be the
|
||||||
// same as the root of the Sapling tree
|
// same as the root of the Sapling tree
|
||||||
const bool sapling = pindex->GetHeight() >= 1 ? true : false; //NetworkUpgradeActive(pindex->GetHeight(), chainparams.GetConsensus(), Consensus::UPGRADE_SAPLING);
|
const bool sapling = pindex->GetHeight()>=1 ? true : false; //NetworkUpgradeActive(pindex->GetHeight(), chainparams.GetConsensus(), Consensus::UPGRADE_SAPLING);
|
||||||
if (sapling) {
|
if (sapling) {
|
||||||
if (block.hashFinalSaplingRoot != sapling_tree.root()) {
|
if (block.hashFinalSaplingRoot != sapling_tree.root()) {
|
||||||
return state.DoS(100,
|
return state.DoS(100,
|
||||||
@@ -8209,7 +8210,7 @@ CMutableTransaction CreateNewContextualCMutableTransaction(const Consensus::Para
|
|||||||
mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID;
|
mtx.nVersionGroupId = SAPLING_VERSION_GROUP_ID;
|
||||||
mtx.nVersion = SAPLING_TX_VERSION;
|
mtx.nVersion = SAPLING_TX_VERSION;
|
||||||
} else {
|
} else {
|
||||||
const bool isOverwintered = nHeight >=1 ? true : false; //NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_OVERWINTER);
|
const bool isOverwintered = nHeight>=1 ? true : false; //NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_OVERWINTER);
|
||||||
if (isOverwintered)
|
if (isOverwintered)
|
||||||
{
|
{
|
||||||
mtx.fOverwintered = true;
|
mtx.fOverwintered = true;
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ CBlockTemplate* CreateNewBlock(CPubKey _pk,const CScript& _scriptPubKeyIn, int32
|
|||||||
const int nHeight = pindexPrev->GetHeight() + 1;
|
const int nHeight = pindexPrev->GetHeight() + 1;
|
||||||
const Consensus::Params &consensusParams = chainparams.GetConsensus();
|
const Consensus::Params &consensusParams = chainparams.GetConsensus();
|
||||||
uint32_t consensusBranchId = CurrentEpochBranchId(nHeight, consensusParams);
|
uint32_t consensusBranchId = CurrentEpochBranchId(nHeight, consensusParams);
|
||||||
// Sapling NU is always active when height>=1
|
// Sapling NU is always active for height>=1
|
||||||
const bool sapling = nHeight>=1 ? true : false; //NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_SAPLING);
|
const bool sapling = nHeight>=1 ? true : false; //NetworkUpgradeActive(nHeight, consensusParams, Consensus::UPGRADE_SAPLING);
|
||||||
|
|
||||||
const int64_t nMedianTimePast = pindexPrev->GetMedianTimePast();
|
const int64_t nMedianTimePast = pindexPrev->GetMedianTimePast();
|
||||||
|
|||||||
@@ -690,7 +690,7 @@ UniValue createrawtransaction(const UniValue& params, bool fHelp, const CPubKey&
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (params.size() > 3 && !params[3].isNull()) {
|
if (params.size() > 3 && !params[3].isNull()) {
|
||||||
const bool overwinter = true;
|
const bool overwinter = nextBlockHeight>=1 ? true : false;
|
||||||
if (overwinter) { // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) {
|
if (overwinter) { // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) {
|
||||||
int64_t nExpiryHeight = params[3].get_int64();
|
int64_t nExpiryHeight = params[3].get_int64();
|
||||||
if (nExpiryHeight < 0 || nExpiryHeight >= TX_EXPIRY_HEIGHT_THRESHOLD) {
|
if (nExpiryHeight < 0 || nExpiryHeight >= TX_EXPIRY_HEIGHT_THRESHOLD) {
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ void ThreadNotifyWallets(CBlockIndex *pindexLastTip)
|
|||||||
// the Sapling activation height. Otherwise, the last anchor was the
|
// the Sapling activation height. Otherwise, the last anchor was the
|
||||||
// empty root.
|
// empty root.
|
||||||
SaplingMerkleTree oldSaplingTree;
|
SaplingMerkleTree oldSaplingTree;
|
||||||
const bool sapling = pindex->GetHeight() >= 2 ? true : false;
|
const bool sapling = pindex->pprev->GetHeight() >= 1 ? true : false;
|
||||||
if (sapling) { // NetworkUpgradeActive(pindex->pprev->GetHeight(),Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
if (sapling) { // NetworkUpgradeActive(pindex->pprev->GetHeight(),Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
||||||
assert(pcoinsTip->GetSaplingAnchorAt(pindex->pprev->hashFinalSaplingRoot, oldSaplingTree));
|
assert(pcoinsTip->GetSaplingAnchorAt(pindex->pprev->hashFinalSaplingRoot, oldSaplingTree));
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -5467,7 +5467,7 @@ UniValue z_shieldcoinbase(const UniValue& params, bool fHelp, const CPubKey& myp
|
|||||||
}
|
}
|
||||||
|
|
||||||
int nextBlockHeight = chainActive.Height() + 1;
|
int nextBlockHeight = chainActive.Height() + 1;
|
||||||
bool overwinterActive = true; // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER);
|
bool overwinterActive = nextBlockHeight>=1 ? true : false; // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER);
|
||||||
unsigned int max_tx_size = MAX_TX_SIZE_AFTER_SAPLING;
|
unsigned int max_tx_size = MAX_TX_SIZE_AFTER_SAPLING;
|
||||||
|
|
||||||
// Prepare to get coinbase utxos
|
// Prepare to get coinbase utxos
|
||||||
@@ -5714,7 +5714,7 @@ UniValue z_mergetoaddress(const UniValue& params, bool fHelp, const CPubKey& myp
|
|||||||
}
|
}
|
||||||
|
|
||||||
const int nextBlockHeight = chainActive.Height() + 1;
|
const int nextBlockHeight = chainActive.Height() + 1;
|
||||||
const bool overwinterActive = true; // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER);
|
const bool overwinterActive = nextBlockHeight >=1 ? true : false; // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER);
|
||||||
|
|
||||||
// Validate the destination address
|
// Validate the destination address
|
||||||
auto destaddress = params[1].get_str();
|
auto destaddress = params[1].get_str();
|
||||||
|
|||||||
@@ -511,6 +511,9 @@ void CWallet::RunSaplingSweep(int blockHeight) {
|
|||||||
// if (!NetworkUpgradeActive(blockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
// if (!NetworkUpgradeActive(blockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
||||||
// return;
|
// return;
|
||||||
// }
|
// }
|
||||||
|
if (blockHeight == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
AssertLockHeld(cs_wallet);
|
AssertLockHeld(cs_wallet);
|
||||||
if (!fSweepEnabled) {
|
if (!fSweepEnabled) {
|
||||||
return;
|
return;
|
||||||
@@ -3688,7 +3691,7 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
|
|||||||
txNew.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast();
|
txNew.nLockTime = (uint32_t)chainActive.Tip()->GetMedianTimePast();
|
||||||
|
|
||||||
// Activates after Overwinter network upgrade
|
// Activates after Overwinter network upgrade
|
||||||
const bool overwinter = true;
|
const bool overwinter = nextBlockHeight >=1 ? true : false;
|
||||||
if (overwinter) { // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) {
|
if (overwinter) { // NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) {
|
||||||
if (txNew.nExpiryHeight >= TX_EXPIRY_HEIGHT_THRESHOLD){
|
if (txNew.nExpiryHeight >= TX_EXPIRY_HEIGHT_THRESHOLD){
|
||||||
strFailReason = _("nExpiryHeight must be less than TX_EXPIRY_HEIGHT_THRESHOLD.");
|
strFailReason = _("nExpiryHeight must be less than TX_EXPIRY_HEIGHT_THRESHOLD.");
|
||||||
@@ -3697,7 +3700,7 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
|
|||||||
}
|
}
|
||||||
|
|
||||||
unsigned int max_tx_size = MAX_TX_SIZE_AFTER_SAPLING;
|
unsigned int max_tx_size = MAX_TX_SIZE_AFTER_SAPLING;
|
||||||
/* Sapling is always active
|
/* Sapling is always active since height=1
|
||||||
if (!NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
if (!NetworkUpgradeActive(nextBlockHeight, Params().GetConsensus(), Consensus::UPGRADE_SAPLING)) {
|
||||||
max_tx_size = MAX_TX_SIZE_BEFORE_SAPLING;
|
max_tx_size = MAX_TX_SIZE_BEFORE_SAPLING;
|
||||||
}
|
}
|
||||||
@@ -3898,13 +3901,13 @@ bool CWallet::CreateTransaction(const vector<CRecipient>& vecSend, CWalletTx& wt
|
|||||||
// All Hush Arrakis Chains always have overwinter NU and so this option was never used
|
// All Hush Arrakis Chains always have overwinter NU and so this option was never used
|
||||||
// Check mempooltxinputlimit to avoid creating a transaction which the local mempool rejects
|
// Check mempooltxinputlimit to avoid creating a transaction which the local mempool rejects
|
||||||
// const size_t limit = 0; // (size_t)GetArg("-mempooltxinputlimit", 0);
|
// const size_t limit = 0; // (size_t)GetArg("-mempooltxinputlimit", 0);
|
||||||
{
|
//{
|
||||||
LOCK(cs_main);
|
// LOCK(cs_main);
|
||||||
const bool overwinter = true;
|
//const bool overwinter = true;
|
||||||
//if (NetworkUpgradeActive(chainActive.Height() + 1, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) {
|
//if (NetworkUpgradeActive(chainActive.Height() + 1, Params().GetConsensus(), Consensus::UPGRADE_OVERWINTER)) {
|
||||||
// limit = 0;
|
// limit = 0;
|
||||||
//}
|
//}
|
||||||
}
|
//}
|
||||||
/*
|
/*
|
||||||
if (limit > 0) {
|
if (limit > 0) {
|
||||||
size_t n = txNew.vin.size();
|
size_t n = txNew.vin.size();
|
||||||
@@ -5044,6 +5047,7 @@ SpendingKeyAddResult AddSpendingKeyToWallet::operator()(const libzcash::SaplingE
|
|||||||
if (params.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight == Consensus::NetworkUpgrade::ALWAYS_ACTIVE) {
|
if (params.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight == Consensus::NetworkUpgrade::ALWAYS_ACTIVE) {
|
||||||
m_wallet->mapSaplingZKeyMetadata[ivk].nCreateTime = nTime;
|
m_wallet->mapSaplingZKeyMetadata[ivk].nCreateTime = nTime;
|
||||||
} else {
|
} else {
|
||||||
|
// TODO: set a better time for HUSH+DRAGONX
|
||||||
// 154051200 seconds from epoch is Friday, 26 October 2018 00:00:00 GMT - definitely before Sapling activates
|
// 154051200 seconds from epoch is Friday, 26 October 2018 00:00:00 GMT - definitely before Sapling activates
|
||||||
m_wallet->mapSaplingZKeyMetadata[ivk].nCreateTime = std::max((int64_t) 154051200, nTime);
|
m_wallet->mapSaplingZKeyMetadata[ivk].nCreateTime = std::max((int64_t) 154051200, nTime);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user