[FIX] Skip orphans for double payout detection

Should fix the case where orphan blocks are followed by valid blocks
with the same or lower height due to changing the main chain.

Fixes $715, specifically the orphan block issue.
This commit is contained in:
Sebastian Grewe 2013-10-30 07:54:25 +01:00
parent 61f6c99363
commit c9435cf180
2 changed files with 13 additions and 2 deletions

View File

@ -53,7 +53,13 @@ foreach ($aAllBlocks as $iIndex => $aBlock) {
$pplns_target = $config['pplns']['shares']['default'];
}
if (!$aBlock['accounted'] && $aBlock['height'] > $setting->getValue('last_accounted_block_height')) {
if ($iLastBlockHeight = $setting->getValue('last_accounted_block_height')) {
$aLastAccountedBlock = $block->getBlock($iLastBlockHeight);
} else {
$iLastBlockHeight = 0;
}
// Double payout detection
if (!$aBlock['accounted'] && $aBlock['height'] > $iLastBlockHeight && @$aLastAccountedBlock['confirmations'] != -1) {
$iPreviousShareId = @$aAllBlocks[$iIndex - 1]['share_id'] ? $aAllBlocks[$iIndex - 1]['share_id'] : 0;
$iCurrentUpstreamId = $aBlock['share_id'];
if (!is_numeric($iCurrentUpstreamId)) {

View File

@ -45,7 +45,12 @@ $count = 0;
// Table header for account shares
$log->logInfo("ID\tUsername\tValid\tInvalid\tPercentage\tPayout\t\tDonation\tFee");
foreach ($aAllBlocks as $iIndex => $aBlock) {
if (!$aBlock['accounted'] && $aBlock['height'] > $setting->getValue('last_accounted_block_height')) {
if ($iLastBlockHeight = $setting->getValue('last_accounted_block_height')) {
$aLastAccountedBlock = $block->getBlock($iLastBlockHeight);
} else {
$iLastBlockHeight = 0;
}
if (!$aBlock['accounted'] && $aBlock['height'] > $iLastBlockHeight && @$aLastAccountedBlock['confirmations'] != -1) {
$iPreviousShareId = @$aAllBlocks[$iIndex - 1]['share_id'] ? $aAllBlocks[$iIndex - 1]['share_id'] : 0;
$iCurrentUpstreamId = $aBlock['share_id'];
$aAccountShares = $share->getSharesForAccounts($iPreviousShareId, $aBlock['share_id']);