mirror of
https://github.com/mempool/mempool.git
synced 2024-11-20 10:21:52 +01:00
Merge branch 'master' into nymkappa/feature/channel-page-map
This commit is contained in:
commit
b0d4c9eac8
@ -21,7 +21,9 @@
|
|||||||
"EXTERNAL_RETRY_INTERVAL": 0,
|
"EXTERNAL_RETRY_INTERVAL": 0,
|
||||||
"USER_AGENT": "mempool",
|
"USER_AGENT": "mempool",
|
||||||
"STDOUT_LOG_MIN_PRIORITY": "debug",
|
"STDOUT_LOG_MIN_PRIORITY": "debug",
|
||||||
"AUTOMATIC_BLOCK_REINDEXING": false
|
"AUTOMATIC_BLOCK_REINDEXING": false,
|
||||||
|
"POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json",
|
||||||
|
"POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master"
|
||||||
},
|
},
|
||||||
"CORE_RPC": {
|
"CORE_RPC": {
|
||||||
"HOST": "127.0.0.1",
|
"HOST": "127.0.0.1",
|
||||||
|
@ -22,6 +22,8 @@ import poolsParser from './pools-parser';
|
|||||||
import BlocksSummariesRepository from '../repositories/BlocksSummariesRepository';
|
import BlocksSummariesRepository from '../repositories/BlocksSummariesRepository';
|
||||||
import mining from './mining/mining';
|
import mining from './mining/mining';
|
||||||
import DifficultyAdjustmentsRepository from '../repositories/DifficultyAdjustmentsRepository';
|
import DifficultyAdjustmentsRepository from '../repositories/DifficultyAdjustmentsRepository';
|
||||||
|
import PricesRepository from '../repositories/PricesRepository';
|
||||||
|
import priceUpdater from '../tasks/price-updater';
|
||||||
|
|
||||||
class Blocks {
|
class Blocks {
|
||||||
private blocks: BlockExtended[] = [];
|
private blocks: BlockExtended[] = [];
|
||||||
@ -457,6 +459,19 @@ class Blocks {
|
|||||||
}
|
}
|
||||||
await blocksRepository.$saveBlockInDatabase(blockExtended);
|
await blocksRepository.$saveBlockInDatabase(blockExtended);
|
||||||
|
|
||||||
|
const lastestPriceId = await PricesRepository.$getLatestPriceId();
|
||||||
|
if (priceUpdater.historyInserted === true && lastestPriceId !== null) {
|
||||||
|
await blocksRepository.$saveBlockPrices([{
|
||||||
|
height: blockExtended.height,
|
||||||
|
priceId: lastestPriceId,
|
||||||
|
}]);
|
||||||
|
} else {
|
||||||
|
logger.info(`Cannot save block price for ${blockExtended.height} because the price updater hasnt completed yet. Trying again in 10 seconds.`)
|
||||||
|
setTimeout(() => {
|
||||||
|
indexer.runSingleTask('blocksPrices');
|
||||||
|
}, 10000);
|
||||||
|
}
|
||||||
|
|
||||||
// Save blocks summary for visualization if it's enabled
|
// Save blocks summary for visualization if it's enabled
|
||||||
if (Common.blocksSummariesIndexingEnabled() === true) {
|
if (Common.blocksSummariesIndexingEnabled() === true) {
|
||||||
await this.$getStrippedBlockTransactions(blockExtended.id, true);
|
await this.$getStrippedBlockTransactions(blockExtended.id, true);
|
||||||
|
@ -473,7 +473,7 @@ class Mining {
|
|||||||
|
|
||||||
for (const block of blocksWithoutPrices) {
|
for (const block of blocksWithoutPrices) {
|
||||||
// Quick optimisation, out mtgox feed only goes back to 2010-07-19 02:00:00, so skip the first 68951 blocks
|
// Quick optimisation, out mtgox feed only goes back to 2010-07-19 02:00:00, so skip the first 68951 blocks
|
||||||
if (block.height < 68951) {
|
if (['mainnet', 'testnet'].includes(config.MEMPOOL.NETWORK) && block.height < 68951) {
|
||||||
blocksPrices.push({
|
blocksPrices.push({
|
||||||
height: block.height,
|
height: block.height,
|
||||||
priceId: prices[0].id,
|
priceId: prices[0].id,
|
||||||
@ -492,11 +492,11 @@ class Mining {
|
|||||||
|
|
||||||
if (blocksPrices.length >= 100000) {
|
if (blocksPrices.length >= 100000) {
|
||||||
totalInserted += blocksPrices.length;
|
totalInserted += blocksPrices.length;
|
||||||
|
let logStr = `Linking ${blocksPrices.length} blocks to their closest price`;
|
||||||
if (blocksWithoutPrices.length > 200000) {
|
if (blocksWithoutPrices.length > 200000) {
|
||||||
logger.debug(`Linking ${blocksPrices.length} newly indexed blocks to their closest price | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`);
|
logStr += ` | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`;
|
||||||
} else {
|
|
||||||
logger.debug(`Linking ${blocksPrices.length} newly indexed blocks to their closest price`);
|
|
||||||
}
|
}
|
||||||
|
logger.debug(logStr);
|
||||||
await BlocksRepository.$saveBlockPrices(blocksPrices);
|
await BlocksRepository.$saveBlockPrices(blocksPrices);
|
||||||
blocksPrices.length = 0;
|
blocksPrices.length = 0;
|
||||||
}
|
}
|
||||||
@ -504,11 +504,11 @@ class Mining {
|
|||||||
|
|
||||||
if (blocksPrices.length > 0) {
|
if (blocksPrices.length > 0) {
|
||||||
totalInserted += blocksPrices.length;
|
totalInserted += blocksPrices.length;
|
||||||
|
let logStr = `Linking ${blocksPrices.length} blocks to their closest price`;
|
||||||
if (blocksWithoutPrices.length > 200000) {
|
if (blocksWithoutPrices.length > 200000) {
|
||||||
logger.debug(`Linking ${blocksPrices.length} newly indexed blocks to their closest price | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`);
|
logStr += ` | Progress ${Math.round(totalInserted / blocksWithoutPrices.length * 100)}%`;
|
||||||
} else {
|
|
||||||
logger.debug(`Linking ${blocksPrices.length} newly indexed blocks to their closest price`);
|
|
||||||
}
|
}
|
||||||
|
logger.debug(logStr);
|
||||||
await BlocksRepository.$saveBlockPrices(blocksPrices);
|
await BlocksRepository.$saveBlockPrices(blocksPrices);
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
|
@ -24,6 +24,8 @@ interface IConfig {
|
|||||||
USER_AGENT: string;
|
USER_AGENT: string;
|
||||||
STDOUT_LOG_MIN_PRIORITY: 'emerg' | 'alert' | 'crit' | 'err' | 'warn' | 'notice' | 'info' | 'debug';
|
STDOUT_LOG_MIN_PRIORITY: 'emerg' | 'alert' | 'crit' | 'err' | 'warn' | 'notice' | 'info' | 'debug';
|
||||||
AUTOMATIC_BLOCK_REINDEXING: boolean;
|
AUTOMATIC_BLOCK_REINDEXING: boolean;
|
||||||
|
POOLS_JSON_URL: string,
|
||||||
|
POOLS_JSON_TREE_URL: string,
|
||||||
};
|
};
|
||||||
ESPLORA: {
|
ESPLORA: {
|
||||||
REST_API_URL: string;
|
REST_API_URL: string;
|
||||||
@ -136,6 +138,8 @@ const defaults: IConfig = {
|
|||||||
'USER_AGENT': 'mempool',
|
'USER_AGENT': 'mempool',
|
||||||
'STDOUT_LOG_MIN_PRIORITY': 'debug',
|
'STDOUT_LOG_MIN_PRIORITY': 'debug',
|
||||||
'AUTOMATIC_BLOCK_REINDEXING': false,
|
'AUTOMATIC_BLOCK_REINDEXING': false,
|
||||||
|
'POOLS_JSON_URL': 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json',
|
||||||
|
'POOLS_JSON_TREE_URL': 'https://api.github.com/repos/mempool/mining-pools/git/trees/master',
|
||||||
},
|
},
|
||||||
'ESPLORA': {
|
'ESPLORA': {
|
||||||
'REST_API_URL': 'http://127.0.0.1:3000',
|
'REST_API_URL': 'http://127.0.0.1:3000',
|
||||||
|
@ -6,13 +6,12 @@ import logger from './logger';
|
|||||||
import HashratesRepository from './repositories/HashratesRepository';
|
import HashratesRepository from './repositories/HashratesRepository';
|
||||||
import bitcoinClient from './api/bitcoin/bitcoin-client';
|
import bitcoinClient from './api/bitcoin/bitcoin-client';
|
||||||
import priceUpdater from './tasks/price-updater';
|
import priceUpdater from './tasks/price-updater';
|
||||||
|
import PricesRepository from './repositories/PricesRepository';
|
||||||
|
|
||||||
class Indexer {
|
class Indexer {
|
||||||
runIndexer = true;
|
runIndexer = true;
|
||||||
indexerRunning = false;
|
indexerRunning = false;
|
||||||
|
tasksRunning: string[] = [];
|
||||||
constructor() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public reindex() {
|
public reindex() {
|
||||||
if (Common.indexingEnabled()) {
|
if (Common.indexingEnabled()) {
|
||||||
@ -20,6 +19,28 @@ class Indexer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async runSingleTask(task: 'blocksPrices') {
|
||||||
|
if (!Common.indexingEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (task === 'blocksPrices' && !this.tasksRunning.includes(task)) {
|
||||||
|
this.tasksRunning.push(task);
|
||||||
|
const lastestPriceId = await PricesRepository.$getLatestPriceId();
|
||||||
|
if (priceUpdater.historyInserted === false || lastestPriceId === null) {
|
||||||
|
logger.debug(`Blocks prices indexer is waiting for the price updater to complete`)
|
||||||
|
setTimeout(() => {
|
||||||
|
this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask != task)
|
||||||
|
this.runSingleTask('blocksPrices');
|
||||||
|
}, 10000);
|
||||||
|
} else {
|
||||||
|
logger.debug(`Blocks prices indexer will run now`)
|
||||||
|
await mining.$indexBlockPrices();
|
||||||
|
this.tasksRunning = this.tasksRunning.filter(runningTask => runningTask != task)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public async $run() {
|
public async $run() {
|
||||||
if (!Common.indexingEnabled() || this.runIndexer === false ||
|
if (!Common.indexingEnabled() || this.runIndexer === false ||
|
||||||
this.indexerRunning === true || mempool.hasPriority()
|
this.indexerRunning === true || mempool.hasPriority()
|
||||||
@ -50,7 +71,7 @@ class Indexer {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await mining.$indexBlockPrices();
|
this.runSingleTask('blocksPrices');
|
||||||
await mining.$indexDifficultyAdjustments();
|
await mining.$indexDifficultyAdjustments();
|
||||||
await this.$resetHashratesIndexingState(); // TODO - Remove this as it's not efficient
|
await this.$resetHashratesIndexingState(); // TODO - Remove this as it's not efficient
|
||||||
await mining.$generateNetworkHashrateHistory();
|
await mining.$generateNetworkHashrateHistory();
|
||||||
|
@ -27,6 +27,11 @@ class PricesRepository {
|
|||||||
return oldestRow[0] ? oldestRow[0].time : 0;
|
return oldestRow[0] ? oldestRow[0].time : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async $getLatestPriceId(): Promise<number | null> {
|
||||||
|
const [oldestRow] = await DB.query(`SELECT id from prices WHERE USD != -1 ORDER BY time DESC LIMIT 1`);
|
||||||
|
return oldestRow[0] ? oldestRow[0].id : null;
|
||||||
|
}
|
||||||
|
|
||||||
public async $getLatestPriceTime(): Promise<number> {
|
public async $getLatestPriceTime(): Promise<number> {
|
||||||
const [oldestRow] = await DB.query(`SELECT UNIX_TIMESTAMP(time) as time from prices WHERE USD != -1 ORDER BY time DESC LIMIT 1`);
|
const [oldestRow] = await DB.query(`SELECT UNIX_TIMESTAMP(time) as time from prices WHERE USD != -1 ORDER BY time DESC LIMIT 1`);
|
||||||
return oldestRow[0] ? oldestRow[0].time : 0;
|
return oldestRow[0] ? oldestRow[0].time : 0;
|
||||||
|
@ -12,14 +12,11 @@ import * as https from 'https';
|
|||||||
*/
|
*/
|
||||||
class PoolsUpdater {
|
class PoolsUpdater {
|
||||||
lastRun: number = 0;
|
lastRun: number = 0;
|
||||||
currentSha: any = undefined;
|
currentSha: string | undefined = undefined;
|
||||||
poolsUrl: string = 'https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json';
|
poolsUrl: string = config.MEMPOOL.POOLS_JSON_URL;
|
||||||
treeUrl: string = 'https://api.github.com/repos/mempool/mining-pools/git/trees/master';
|
treeUrl: string = config.MEMPOOL.POOLS_JSON_TREE_URL;
|
||||||
|
|
||||||
constructor() {
|
public async updatePoolsJson(): Promise<void> {
|
||||||
}
|
|
||||||
|
|
||||||
public async updatePoolsJson() {
|
|
||||||
if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) {
|
if (['mainnet', 'testnet', 'signet'].includes(config.MEMPOOL.NETWORK) === false) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -77,7 +74,7 @@ class PoolsUpdater {
|
|||||||
/**
|
/**
|
||||||
* Fetch our latest pools.json sha from the db
|
* Fetch our latest pools.json sha from the db
|
||||||
*/
|
*/
|
||||||
private async updateDBSha(githubSha: string) {
|
private async updateDBSha(githubSha: string): Promise<void> {
|
||||||
this.currentSha = githubSha;
|
this.currentSha = githubSha;
|
||||||
if (config.DATABASE.ENABLED === true) {
|
if (config.DATABASE.ENABLED === true) {
|
||||||
try {
|
try {
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
|
import { Common } from '../api/common';
|
||||||
import config from '../config';
|
import config from '../config';
|
||||||
import logger from '../logger';
|
import logger from '../logger';
|
||||||
import PricesRepository from '../repositories/PricesRepository';
|
import PricesRepository from '../repositories/PricesRepository';
|
||||||
@ -34,10 +35,10 @@ export interface Prices {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class PriceUpdater {
|
class PriceUpdater {
|
||||||
historyInserted: boolean = false;
|
public historyInserted = false;
|
||||||
lastRun: number = 0;
|
lastRun = 0;
|
||||||
lastHistoricalRun: number = 0;
|
lastHistoricalRun = 0;
|
||||||
running: boolean = false;
|
running = false;
|
||||||
feeds: PriceFeed[] = [];
|
feeds: PriceFeed[] = [];
|
||||||
currencies: string[] = ['USD', 'EUR', 'GBP', 'CAD', 'CHF', 'AUD', 'JPY'];
|
currencies: string[] = ['USD', 'EUR', 'GBP', 'CAD', 'CHF', 'AUD', 'JPY'];
|
||||||
latestPrices: Prices;
|
latestPrices: Prices;
|
||||||
|
@ -102,7 +102,9 @@ Below we list all settings from `mempool-config.json` and the corresponding over
|
|||||||
"PRICE_FEED_UPDATE_INTERVAL": 600,
|
"PRICE_FEED_UPDATE_INTERVAL": 600,
|
||||||
"USE_SECOND_NODE_FOR_MINFEE": false,
|
"USE_SECOND_NODE_FOR_MINFEE": false,
|
||||||
"EXTERNAL_ASSETS": ["https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json"],
|
"EXTERNAL_ASSETS": ["https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json"],
|
||||||
"STDOUT_LOG_MIN_PRIORITY": "info"
|
"STDOUT_LOG_MIN_PRIORITY": "info",
|
||||||
|
"POOLS_JSON_URL": "https://raw.githubusercontent.com/mempool/mining-pools/master/pools.json",
|
||||||
|
"POOLS_JSON_TREE_URL": "https://api.github.com/repos/mempool/mining-pools/git/trees/master"
|
||||||
},
|
},
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -126,6 +128,8 @@ Corresponding `docker-compose.yml` overrides:
|
|||||||
MEMPOOL_USE_SECOND_NODE_FOR_MINFEE: ""
|
MEMPOOL_USE_SECOND_NODE_FOR_MINFEE: ""
|
||||||
MEMPOOL_EXTERNAL_ASSETS: ""
|
MEMPOOL_EXTERNAL_ASSETS: ""
|
||||||
MEMPOOL_STDOUT_LOG_MIN_PRIORITY: ""
|
MEMPOOL_STDOUT_LOG_MIN_PRIORITY: ""
|
||||||
|
MEMPOOL_POOLS_JSON_URL: ""
|
||||||
|
MEMPOOL_POOLS_JSON_TREE_URL: ""
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -24,6 +24,8 @@ __MEMPOOL_USER_AGENT__=${MEMPOOL_USER_AGENT:=mempool}
|
|||||||
__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__=${MEMPOOL_STDOUT_LOG_MIN_PRIORITY:=info}
|
__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__=${MEMPOOL_STDOUT_LOG_MIN_PRIORITY:=info}
|
||||||
__MEMPOOL_INDEXING_BLOCKS_AMOUNT__=${MEMPOOL_INDEXING_BLOCKS_AMOUNT:=false}
|
__MEMPOOL_INDEXING_BLOCKS_AMOUNT__=${MEMPOOL_INDEXING_BLOCKS_AMOUNT:=false}
|
||||||
__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__=${MEMPOOL_AUTOMATIC_BLOCK_REINDEXING:=false}
|
__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__=${MEMPOOL_AUTOMATIC_BLOCK_REINDEXING:=false}
|
||||||
|
__MEMPOOL_POOLS_JSON_URL__=${MEMPOOL_POOLS_JSON_URL:=false}
|
||||||
|
__MEMPOOL_POOLS_JSON_TREE_URL__=${MEMPOOL_POOLS_JSON_TREE_URL:=false}
|
||||||
|
|
||||||
# CORE_RPC
|
# CORE_RPC
|
||||||
__CORE_RPC_HOST__=${CORE_RPC_HOST:=127.0.0.1}
|
__CORE_RPC_HOST__=${CORE_RPC_HOST:=127.0.0.1}
|
||||||
@ -114,6 +116,8 @@ sed -i "s!__MEMPOOL_USER_AGENT__!${__MEMPOOL_USER_AGENT__}!g" mempool-config.jso
|
|||||||
sed -i "s/__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__/${__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__}/g" mempool-config.json
|
sed -i "s/__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__/${__MEMPOOL_STDOUT_LOG_MIN_PRIORITY__}/g" mempool-config.json
|
||||||
sed -i "s/__MEMPOOL_INDEXING_BLOCKS_AMOUNT__/${__MEMPOOL_INDEXING_BLOCKS_AMOUNT__}/g" mempool-config.json
|
sed -i "s/__MEMPOOL_INDEXING_BLOCKS_AMOUNT__/${__MEMPOOL_INDEXING_BLOCKS_AMOUNT__}/g" mempool-config.json
|
||||||
sed -i "s/__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__/${__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__}/g" mempool-config.json
|
sed -i "s/__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__/${__MEMPOOL_AUTOMATIC_BLOCK_REINDEXING__}/g" mempool-config.json
|
||||||
|
sed -i "s/__MEMPOOL_POOLS_JSON_URL__/${__MEMPOOL_POOLS_JSON_URL__}/g" mempool-config.json
|
||||||
|
sed -i "s/__MEMPOOL_POOLS_JSON_TREE_URL__/${__MEMPOOL_POOLS_JSON_TREE_URL__}/g" mempool-config.json
|
||||||
|
|
||||||
sed -i "s/__CORE_RPC_HOST__/${__CORE_RPC_HOST__}/g" mempool-config.json
|
sed -i "s/__CORE_RPC_HOST__/${__CORE_RPC_HOST__}/g" mempool-config.json
|
||||||
sed -i "s/__CORE_RPC_PORT__/${__CORE_RPC_PORT__}/g" mempool-config.json
|
sed -i "s/__CORE_RPC_PORT__/${__CORE_RPC_PORT__}/g" mempool-config.json
|
||||||
|
@ -34,10 +34,11 @@ esac
|
|||||||
TOR_INSTALL=ON
|
TOR_INSTALL=ON
|
||||||
CERTBOT_INSTALL=ON
|
CERTBOT_INSTALL=ON
|
||||||
|
|
||||||
# install 3 network daemons
|
# install 4 network daemons
|
||||||
BITCOIN_INSTALL=ON
|
BITCOIN_INSTALL=ON
|
||||||
BISQ_INSTALL=ON
|
BISQ_INSTALL=ON
|
||||||
ELEMENTS_INSTALL=ON
|
ELEMENTS_INSTALL=ON
|
||||||
|
CLN_INSTALL=ON
|
||||||
|
|
||||||
# install UNFURL
|
# install UNFURL
|
||||||
UNFURL_INSTALL=ON
|
UNFURL_INSTALL=ON
|
||||||
@ -191,6 +192,7 @@ case $OS in
|
|||||||
NGINX_ETC_FOLDER=/usr/local/etc/nginx
|
NGINX_ETC_FOLDER=/usr/local/etc/nginx
|
||||||
NGINX_CONFIGURATION=/usr/local/etc/nginx/nginx.conf
|
NGINX_CONFIGURATION=/usr/local/etc/nginx/nginx.conf
|
||||||
CERTBOT_PKG=py39-certbot
|
CERTBOT_PKG=py39-certbot
|
||||||
|
CLN_PKG=c-lightning
|
||||||
;;
|
;;
|
||||||
|
|
||||||
Debian)
|
Debian)
|
||||||
@ -275,6 +277,12 @@ ELECTRS_LIQUID_DATA=${ELECTRS_DATA_ROOT}/liquid
|
|||||||
ELECTRS_LIQUIDTESTNET_ZPOOL=${ZPOOL}
|
ELECTRS_LIQUIDTESTNET_ZPOOL=${ZPOOL}
|
||||||
ELECTRS_LIQUIDTESTNET_DATA=${ELECTRS_DATA_ROOT}/liquidtestnet
|
ELECTRS_LIQUIDTESTNET_DATA=${ELECTRS_DATA_ROOT}/liquidtestnet
|
||||||
|
|
||||||
|
# Core Lightning user/group
|
||||||
|
CLN_USER=cln
|
||||||
|
CLN_GROUP=cln
|
||||||
|
# Core Lightning home folder
|
||||||
|
CLN_HOME=/cln
|
||||||
|
|
||||||
# bisq user/group
|
# bisq user/group
|
||||||
BISQ_USER=bisq
|
BISQ_USER=bisq
|
||||||
BISQ_GROUP=bisq
|
BISQ_GROUP=bisq
|
||||||
@ -596,6 +604,10 @@ zfsCreateFilesystems()
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "${CLN_INSTALL}" = ON ];then
|
||||||
|
zfs create -o "mountpoint=${CLN_HOME}" "${ZPOOL}/cln"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${BISQ_INSTALL}" = ON ];then
|
if [ "${BISQ_INSTALL}" = ON ];then
|
||||||
zfs create -o "mountpoint=${BISQ_HOME}" "${ZPOOL}/bisq"
|
zfs create -o "mountpoint=${BISQ_HOME}" "${ZPOOL}/bisq"
|
||||||
fi
|
fi
|
||||||
@ -675,6 +687,10 @@ ext4CreateDir()
|
|||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ "${CLN_INSTALL}" = ON ];then
|
||||||
|
mkdir -p "${CLN_HOME}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "${BISQ_INSTALL}" = ON ];then
|
if [ "${BISQ_INSTALL}" = ON ];then
|
||||||
mkdir -p "${BISQ_HOME}"
|
mkdir -p "${BISQ_HOME}"
|
||||||
fi
|
fi
|
||||||
@ -735,6 +751,7 @@ Testnet:Enable Bitcoin Testnet:ON
|
|||||||
Signet:Enable Bitcoin Signet:ON
|
Signet:Enable Bitcoin Signet:ON
|
||||||
Liquid:Enable Elements Liquid:ON
|
Liquid:Enable Elements Liquid:ON
|
||||||
Liquidtestnet:Enable Elements Liquidtestnet:ON
|
Liquidtestnet:Enable Elements Liquidtestnet:ON
|
||||||
|
CoreLN:Enable Core Lightning:ON
|
||||||
Bisq:Enable Bisq:ON
|
Bisq:Enable Bisq:ON
|
||||||
Unfurl:Enable Unfurl:ON
|
Unfurl:Enable Unfurl:ON
|
||||||
EOF
|
EOF
|
||||||
@ -810,6 +827,11 @@ else
|
|||||||
ELEMENTS_INSTALL=OFF
|
ELEMENTS_INSTALL=OFF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if grep CoreLN $tempfile >/dev/null 2>&1;then
|
||||||
|
CLN_INSTALL=ON
|
||||||
|
else
|
||||||
|
CLN_INSTALL=OFF
|
||||||
|
|
||||||
if [ "${BITCOIN_MAINNET_ENABLE}" = ON -o "${BITCOIN_TESTNET_ENABLE}" = ON -o "${BITCOIN_SIGNET_ENABLE}" = ON ];then
|
if [ "${BITCOIN_MAINNET_ENABLE}" = ON -o "${BITCOIN_TESTNET_ENABLE}" = ON -o "${BITCOIN_SIGNET_ENABLE}" = ON ];then
|
||||||
BITCOIN_ELECTRS_INSTALL=ON
|
BITCOIN_ELECTRS_INSTALL=ON
|
||||||
else
|
else
|
||||||
@ -1234,6 +1256,33 @@ if [ "${ELEMENTS_ELECTRS_INSTALL}" = ON ];then
|
|||||||
osSudo "${ELEMENTS_USER}" sh -c "cd ${ELEMENTS_ELECTRS_HOME} && cargo run --release --features liquid --bin electrs -- --network liquid --version" || true
|
osSudo "${ELEMENTS_USER}" sh -c "cd ${ELEMENTS_ELECTRS_HOME} && cargo run --release --features liquid --bin electrs -- --network liquid --version" || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
#####################################
|
||||||
|
# Core Lightning for Bitcoin Mainnet #
|
||||||
|
#####################################
|
||||||
|
|
||||||
|
echo "[*] Installing Core Lightning"
|
||||||
|
case $OS in
|
||||||
|
FreeBSD)
|
||||||
|
echo "[*] Creating Core Lightning user"
|
||||||
|
osGroupCreate "${CLN_GROUP}"
|
||||||
|
osUserCreate "${CLN_USER}" "${CLN_HOME}" "${CLN_GROUP}"
|
||||||
|
osSudo "${ROOT_USER}" chsh -s `which zsh` "${CLN_USER}"
|
||||||
|
osSudo "${CLN_USER}" touch "${CLN_HOME}/.zshrc"
|
||||||
|
osSudo "${ROOT_USER}" chown -R "${CLN_USER}:${CLN_GROUP}" "${CLN_HOME}"
|
||||||
|
|
||||||
|
echo "[*] Installing Core Lightning package"
|
||||||
|
osPackageInstall ${CLN_PKG}
|
||||||
|
|
||||||
|
echo "[*] Installing Core Lightning mainnet Cronjob"
|
||||||
|
crontab_cln+='@reboot sleep 30 ; screen -dmS main lightningd --alias `hostname` --bitcoin-datadir /bitcoin\n'
|
||||||
|
crontab_cln+='@reboot sleep 60 ; screen -dmS sig lightningd --alias `hostname` --bitcoin-datadir /bitcoin --network signet\n'
|
||||||
|
crontab_cln+='@reboot sleep 90 ; screen -dmS tes lightningd --alias `hostname` --bitcoin-datadir /bitcoin --network testnet\n'
|
||||||
|
echo "${crontab_cln}" | crontab -u "${CLN_USER}" -
|
||||||
|
;;
|
||||||
|
Debian)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
#####################
|
#####################
|
||||||
# Bisq installation #
|
# Bisq installation #
|
||||||
#####################
|
#####################
|
||||||
|
Loading…
Reference in New Issue
Block a user