Set min depth when selecting notes to migrate

This commit is contained in:
Eirik0 2019-04-25 13:43:23 -06:00
parent d2a584e35a
commit 5519d16997
3 changed files with 13 additions and 8 deletions

View File

@ -94,6 +94,7 @@ class SproutSaplingMigration(BitcoinTestFramework):
print "sprout balance: {}, sapling balance: {}".format(sprout_balance, sapling_balance)
assert_true(sprout_balance < Decimal('10'), "Should have less Sprout funds")
assert_true(sapling_balance > Decimal('0'), "Should have more Sapling funds")
assert_true(sprout_balance + sapling_balance, Decimal('9.9999'))
if __name__ == '__main__':

View File

@ -54,7 +54,7 @@ void AsyncRPCOperation_saplingmigration::main() {
set_state(OperationStatus::FAILED);
}
std::string s = strprintf("%s: Sprout->Sapling transactions sent. (status=%s", getId(), getStateAsString());
std::string s = strprintf("%s: Sprout->Sapling transactions created. (status=%s", getId(), getStateAsString());
if (success) {
s += strprintf(", success)\n");
} else {
@ -69,12 +69,10 @@ bool AsyncRPCOperation_saplingmigration::main_impl() {
std::vector<SaplingNoteEntry> saplingEntries;
{
LOCK2(cs_main, pwalletMain->cs_wallet);
// We set minDepth to 11 to avoid unconfirmed notes and in anticipation of specifying
// an anchor at height N-10 for each Sprout JoinSplit description
// Consider, should notes be sorted?
pwalletMain->GetFilteredNotes(sproutEntries, saplingEntries, "", 0);
}
if (sproutEntries.empty()) { // Consider, should the migration remain enabled?
pwalletMain->fSaplingMigrationEnabled = false;
return true;
pwalletMain->GetFilteredNotes(sproutEntries, saplingEntries, "", 11);
}
CAmount availableFunds = 0;
for (const CSproutNotePlaintextEntry& sproutEntry : sproutEntries) {
@ -82,7 +80,7 @@ bool AsyncRPCOperation_saplingmigration::main_impl() {
}
// If the remaining amount to be migrated is less than 0.01 ZEC, end the migration.
if (availableFunds < CENT) {
pwalletMain->fSaplingMigrationEnabled = false;
setMigrationResult(0);
return true;
}
@ -136,10 +134,14 @@ bool AsyncRPCOperation_saplingmigration::main_impl() {
++numTxCreated;
} while (numTxCreated < 5 && availableFunds > CENT);
setMigrationResult(numTxCreated);
return true;
}
void AsyncRPCOperation_saplingmigration::setMigrationResult(int numTxCreated) {
UniValue res(UniValue::VOBJ);
res.push_back(Pair("num_tx_created", numTxCreated));
set_result(res);
return true;
}
CAmount AsyncRPCOperation_saplingmigration::chooseAmount(const CAmount& availableFunds) {

View File

@ -25,6 +25,8 @@ private:
bool main_impl();
void setMigrationResult(int numTxCreated);
CAmount chooseAmount(const CAmount& availableFunds);
libzcash::SaplingPaymentAddress getMigrationDestAddress(const HDSeed& seed);