Skip to content
Permalink
Browse files

Fix restore height when using stagenet/testnet

  • Loading branch information...
mmbyday committed May 15, 2019
1 parent c286c7e commit 843404980558332cf9d99ed93174b4a2d542bee0
Showing with 14 additions and 5 deletions.
  1. +12 −4 js/Wizard.js
  2. +2 −1 wizard/WizardRestoreWallet1.qml
@@ -134,15 +134,15 @@ function restoreWalletCheckViewSpendAddress(walletmanager, nettype, viewkey, spe

//usage: getApproximateBlockchainHeight("March 18 2016") or getApproximateBlockchainHeight("2016-11-11")
//returns estimated block height with 1 month buffer prior to requested date.
function getApproximateBlockchainHeight(_date){
function getApproximateBlockchainHeight(_date, _nettype){
// time of monero birth 2014-04-18 10:49:53 (1397818193)
var moneroBirthTime = 1397818193;
var moneroBirthTime = _nettype == "Mainnet" ? 1397818193 : _nettype == "Testnet" ? 1410295020 : 1518932025;
// avg seconds per block in v1
var secondsPerBlockV1 = 60;
// time of v2 fork 2016-03-23 15:57:38 (1458748658)
var forkTime = 1458748658;
var forkTime = _nettype == "Mainnet" ? 1458748658 : _nettype == "Testnet" ? 1448285909 : 1520937818;
// v2 fork block
var forkBlock = 1009827;
var forkBlock = _nettype == "Mainnet" ? 1009827 : _nettype == "Testnet" ? 624634 : 32000;
// avg seconds per block in V2
var secondsPerBlockV2 = 120;
// time in UTC
@@ -166,6 +166,14 @@ function getApproximateBlockchainHeight(_date){
console.log("Calculated blockchain height: " + approxBlockchainHeight );
secondsPerBlock = secondsPerBlockV2;
}

if(_nettype == "Testnet"){
// testnet got some huge rollbacks, so the estimation is way off
var approximateTestnetRolledBackBlocks = 303967;
if(approxBlockchainHeight > approximateTestnetRolledBackBlocks)
approxBlockchainHeight -= approximateTestnetRolledBackBlocks
}

var blocksPerMonth = 60*60*24*30/secondsPerBlock;
if(approxBlockchainHeight - blocksPerMonth > 0){
return approxBlockchainHeight - blocksPerMonth;
@@ -31,6 +31,7 @@ import QtQuick.Layouts 1.2
import QtQuick.Controls 2.0

import "../js/Wizard.js" as Wizard
import "../js/Utils.js" as Utils
import "../components" as MoneroComponents

Rectangle {
@@ -292,7 +293,7 @@ Rectangle {
if(restoreHeight.text){
// Parse date string or restore height as integer
if(restoreHeight.text.indexOf('-') === 4 && restoreHeight.text.length === 10){
_restoreHeight = Wizard.getApproximateBlockchainHeight(restoreHeight.text);
_restoreHeight = Wizard.getApproximateBlockchainHeight(restoreHeight.text, Utils.netTypeToString());
} else {
_restoreHeight = parseInt(restoreHeight.text)
}

0 comments on commit 8434049

Please sign in to comment.
You can’t perform that action at this time.