2021-08-22 04:20:59 -06:00
/*
* This file is part of the Monero P2Pool < https : //github.com/SChernykh/p2pool>
2023-01-04 05:07:55 -07:00
* Copyright ( c ) 2021 - 2023 SChernykh < https : //github.com/SChernykh>
2021-08-22 04:20:59 -06:00
*
* This program is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , version 3.
*
* This program is distributed in the hope that it will be useful , but
* WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
# include "common.h"
2021-10-01 07:21:32 -06:00
# include "crypto.h"
2021-08-22 04:20:59 -06:00
# include "p2pool.h"
2021-09-18 02:03:06 -06:00
# include "stratum_server.h"
# include "p2p_server.h"
2022-06-07 08:02:08 -06:00
# include <curl/curl.h>
2021-08-22 04:20:59 -06:00
2022-02-21 00:02:36 -07:00
void p2pool_usage ( )
2021-08-22 04:20:59 -06:00
{
2021-10-02 09:06:48 -06:00
printf ( " P2Pool %s \n "
2021-08-22 04:20:59 -06:00
" \n Usage: \n \n " \
" --wallet Wallet address to mine to. Subaddresses and integrated addresses are not supported! \n "
" --host IP address of your Monero node, default is 127.0.0.1 \n "
" --rpc-port monerod RPC API port number, default is 18081 \n "
" --zmq-port monerod ZMQ pub port number, default is 18083 (same port as in monerod's \" --zmq-pub \" command line parameter) \n "
" --stratum Comma-separated list of IP:port for stratum server to listen on \n "
" --p2p Comma-separated list of IP:port for p2p server to listen on \n "
" --addpeers Comma-separated list of IP:port of other p2pool nodes to connect to \n "
" --light-mode Don't allocate RandomX dataset, saves 2GB of RAM \n "
2021-10-14 05:47:30 -06:00
" --loglevel Verbosity of the log, integer number between 0 and %d \n "
2021-08-22 04:20:59 -06:00
" --config Name of the p2pool config file \n "
2021-09-01 05:49:58 -06:00
" --data-api Path to the p2pool JSON data (use it in tandem with an external web-server) \n "
2022-01-24 02:25:20 -07:00
" --local-api Enable /local/ path in api path for Stratum Server and built-in miner statistics \n "
" --stratum-api An alias for --local-api \n "
2021-10-16 05:45:28 -06:00
" --no-cache Disable p2pool.cache \n "
2021-10-27 08:21:56 -06:00
" --no-color Disable colors in console output \n "
2021-11-20 03:51:22 -07:00
" --no-randomx Disable internal RandomX hasher: p2pool will use RPC calls to monerod to check PoW hashes \n "
2022-09-20 02:39:55 -06:00
" --out-peers N Maximum number of outgoing connections for p2p server (any value between 10 and 450) \n "
" --in-peers N Maximum number of incoming connections for p2p server (any value between 10 and 450) \n "
2022-01-22 15:09:29 -07:00
" --start-mining N Start built-in miner using N threads (any value between 1 and 64) \n "
2022-05-08 04:30:22 -06:00
" --mini Connect to p2pool-mini sidechain. Note that it will also change default p2p port from %d to %d \n "
" --no-autodiff Disable automatic difficulty adjustment for miners connected to stratum \n "
2022-06-04 05:16:05 -06:00
" --rpc-login Specify username[:password] required for Monero RPC server \n "
2022-08-31 08:37:33 -06:00
" --socks5 Specify IP:port of a SOCKS5 proxy to use for outgoing connections \n "
2022-09-04 10:10:14 -06:00
" --no-dns disable DNS queries, use only IP addresses to connect to peers (seed node DNS will be unavailable too) \n "
2022-10-28 06:06:26 -06:00
" --p2p-external-port port number that your router uses for mapping to your local p2p port. Use it if you are behind a NAT and still want to accept incoming connections \n "
2021-08-22 04:20:59 -06:00
" --help Show this help message \n \n "
" Example command line: \n \n "
2021-09-18 02:03:06 -06:00
" %s --host 127.0.0.1 --rpc-port 18081 --zmq-port 18083 --wallet YOUR_WALLET_ADDRESS --stratum 0.0.0.0:%d --p2p 0.0.0.0:%d \n \n " ,
2021-10-02 09:06:48 -06:00
p2pool : : VERSION ,
2021-10-14 05:47:30 -06:00
p2pool : : log : : MAX_GLOBAL_LOG_LEVEL ,
2022-02-14 05:57:59 -07:00
p2pool : : DEFAULT_P2P_PORT ,
p2pool : : DEFAULT_P2P_PORT_MINI ,
2021-08-22 04:20:59 -06:00
# ifdef _WIN32
" p2pool.exe "
# else
" ./p2pool "
# endif
2021-09-18 02:03:06 -06:00
, p2pool : : DEFAULT_STRATUM_PORT
, p2pool : : DEFAULT_P2P_PORT
2021-08-22 04:20:59 -06:00
) ;
}
2021-08-26 15:27:05 -06:00
void memory_tracking_start ( ) ;
void memory_tracking_stop ( ) ;
2021-08-22 04:20:59 -06:00
int main ( int argc , char * argv [ ] )
{
if ( argc = = 1 ) {
2022-02-21 00:02:36 -07:00
p2pool_usage ( ) ;
2021-08-22 04:20:59 -06:00
return 0 ;
}
for ( int i = 1 ; i < argc ; + + i ) {
if ( ! strcmp ( argv [ i ] , " --help " ) | | ! strcmp ( argv [ i ] , " /help " ) | | ! strcmp ( argv [ i ] , " -h " ) | | ! strcmp ( argv [ i ] , " /h " ) ) {
2022-02-21 00:02:36 -07:00
p2pool_usage ( ) ;
2021-08-22 04:20:59 -06:00
return 0 ;
}
}
2021-08-26 15:27:05 -06:00
memory_tracking_start ( ) ;
2021-10-01 07:21:32 -06:00
p2pool : : init_crypto_cache ( ) ;
2022-05-23 01:37:11 -06:00
2022-06-07 08:02:08 -06:00
int result = static_cast < int > ( curl_global_init_mem ( CURL_GLOBAL_ALL , p2pool : : malloc_hook , p2pool : : free_hook , p2pool : : realloc_hook , p2pool : : strdup_hook , p2pool : : calloc_hook ) ) ;
if ( result ! = CURLE_OK ) {
return result ;
}
2022-05-23 01:37:11 -06:00
try {
2021-08-26 15:27:05 -06:00
p2pool : : p2pool pool ( argc , argv ) ;
result = pool . run ( ) ;
}
2022-05-23 01:37:11 -06:00
catch ( . . . ) {
result = 1 ;
}
2022-06-07 08:02:08 -06:00
curl_global_cleanup ( ) ;
2021-10-01 07:21:32 -06:00
p2pool : : destroy_crypto_cache ( ) ;
2021-08-26 15:27:05 -06:00
memory_tracking_stop ( ) ;
return result ;
2021-08-22 04:20:59 -06:00
}