Merge pull request #2651 from mononaut/fix-close-channel-id
Fix lightning channel close classification logic
This commit is contained in:
commit
f3faf99c15
@ -4,7 +4,7 @@ import logger from '../logger';
|
|||||||
import { Common } from './common';
|
import { Common } from './common';
|
||||||
|
|
||||||
class DatabaseMigration {
|
class DatabaseMigration {
|
||||||
private static currentVersion = 40;
|
private static currentVersion = 41;
|
||||||
private queryTimeout = 120000;
|
private queryTimeout = 120000;
|
||||||
private statisticsAddedIndexed = false;
|
private statisticsAddedIndexed = false;
|
||||||
private uniqueLogs: string[] = [];
|
private uniqueLogs: string[] = [];
|
||||||
@ -348,6 +348,10 @@ class DatabaseMigration {
|
|||||||
await this.$executeQuery('ALTER TABLE `nodes` ADD channels int(11) unsigned DEFAULT NULL');
|
await this.$executeQuery('ALTER TABLE `nodes` ADD channels int(11) unsigned DEFAULT NULL');
|
||||||
await this.$executeQuery('ALTER TABLE `nodes` ADD INDEX `capacity` (`capacity`);');
|
await this.$executeQuery('ALTER TABLE `nodes` ADD INDEX `capacity` (`capacity`);');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (databaseSchemaVersion < 41 && isBitcoin === true) {
|
||||||
|
await this.$executeQuery('UPDATE channels SET closing_reason = NULL WHERE closing_reason = 1');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -289,6 +289,24 @@ class NetworkSyncService {
|
|||||||
1. Mutually closed
|
1. Mutually closed
|
||||||
2. Forced closed
|
2. Forced closed
|
||||||
3. Forced closed with penalty
|
3. Forced closed with penalty
|
||||||
|
|
||||||
|
┌────────────────────────────────────┐ ┌────────────────────────────┐
|
||||||
|
│ outputs contain revocation script? ├──yes──► force close w/ penalty = 3 │
|
||||||
|
└──────────────┬─────────────────────┘ └────────────────────────────┘
|
||||||
|
no
|
||||||
|
┌──────────────▼──────────────────────────┐
|
||||||
|
│ outputs contain other lightning script? ├──┐
|
||||||
|
└──────────────┬──────────────────────────┘ │
|
||||||
|
no yes
|
||||||
|
┌──────────────▼─────────────┐ │
|
||||||
|
│ sequence starts with 0x80 │ ┌────────▼────────┐
|
||||||
|
│ and ├──────► force close = 2 │
|
||||||
|
│ locktime starts with 0x20? │ └─────────────────┘
|
||||||
|
└──────────────┬─────────────┘
|
||||||
|
no
|
||||||
|
┌─────────▼────────┐
|
||||||
|
│ mutual close = 1 │
|
||||||
|
└──────────────────┘
|
||||||
*/
|
*/
|
||||||
|
|
||||||
private async $runClosedChannelsForensics(): Promise<void> {
|
private async $runClosedChannelsForensics(): Promise<void> {
|
||||||
@ -326,10 +344,6 @@ class NetworkSyncService {
|
|||||||
lightningScriptReasons.push(lightningScript);
|
lightningScriptReasons.push(lightningScript);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (lightningScriptReasons.length === outspends.length
|
|
||||||
&& lightningScriptReasons.filter((r) => r === 1).length === outspends.length) {
|
|
||||||
reason = 1;
|
|
||||||
} else {
|
|
||||||
const filteredReasons = lightningScriptReasons.filter((r) => r !== 1);
|
const filteredReasons = lightningScriptReasons.filter((r) => r !== 1);
|
||||||
if (filteredReasons.length) {
|
if (filteredReasons.length) {
|
||||||
if (filteredReasons.some((r) => r === 2 || r === 4)) {
|
if (filteredReasons.some((r) => r === 2 || r === 4)) {
|
||||||
@ -357,7 +371,6 @@ class NetworkSyncService {
|
|||||||
reason = 1;
|
reason = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (reason) {
|
if (reason) {
|
||||||
logger.debug('Setting closing reason ' + reason + ' for channel: ' + channel.id + '.');
|
logger.debug('Setting closing reason ' + reason + ' for channel: ' + channel.id + '.');
|
||||||
await DB.query(`UPDATE channels SET closing_reason = ? WHERE id = ?`, [reason, channel.id]);
|
await DB.query(`UPDATE channels SET closing_reason = ? WHERE id = ?`, [reason, channel.id]);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user