diff --git a/README.md b/README.md index 573fec6..2b6a429 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,6 @@ This file has to be in the miner directory (same folder as '*.jar' file) > The min. required settings for the different mining-modes. # Pool-Setup -uses only the best deadline per block to calculate shares. plotPaths=D:/,C:/,E:/plots,F:/plots numericAccountId= @@ -26,20 +25,6 @@ uses only the best deadline per block to calculate shares. plotPaths=D:/,C:/,E:/plots,F:/plots poolMining=false passPhrase= - -# DevPool-Setup -uses all deadlines below a given target per block to calculate shares. -DevPool http://178.62.39.204:8121 seams no longer available?! -Miner support will be removed in future versions. - - devPool=true - plotPaths=D:/,C:/,E:/plots,F:/plots - numericAccountId= - poolServer=http://pool.com:port - - - - # List of all properties @@ -112,28 +97,6 @@ time to wait until next retry to get winner from walletServer winnerRetryIntervalInMs=250 -### devPool (default:false) -'true' for using devPools (V1 or V2), 'false' or empty if not -on using devPool please read NOTICE in description of 'chunkPartNonces' -DevPool http://178.62.39.204:8121 seams no longer available?! -Miner support will be removed in future versions. - - devPool=true - -### devPoolCommitsPerRound (default:3) -how often the miner tries to commit shares to devPool not needed for other pools. -DevPool http://178.62.39.204:8121 seams no longer available?! -Miner support will be removed in future versions. - - devPoolCommitsPerRound=6 - - -> NOTICE: 'devPool' wants all deadlines below a given target, this miner will only deliver -> one deadline per chunkPart, so it can happen, that not all shares can be delivered -> i suggest using lower 'chunkPartNonces' e.g. 160000 ... (1 result per 160000 nonces) -> play with that on same block to test if you get more shares with lower 'chunkPartNonces'. - - ## Solo-mining @@ -260,12 +223,6 @@ e.g. play with +/- 160000 steps chunkPartNonces=960000 - -> NOTICE: for 'devPool': only one result per chunkPart will be committed, -> without 'optDevPool' (witch is not implemented, yet) -> consider using low chunkPartNonces size, to commit more. -> (guess, there will not be multiple dl below target in small chunkPart) - ### readerThreads (default:0) normally '0' means, the miner takes one thread per drive (plotPath) this is recommend. choosing a other number of 'readerThreads' can be useful on memory issues. diff --git a/jminer.default.properties b/jminer.default.properties index c67a68f..0019ee8 100644 --- a/jminer.default.properties +++ b/jminer.default.properties @@ -73,17 +73,6 @@ poolMining= # (default:4) # winnerRetryIntervalInMs - time to wait until next retry to get winner from walletServer # (default:500) -# -# devPool - 'true' for using devPools (V1 or V2), 'false' or empty if not -# (default:false) on using devPool please read NOTICE in description of 'chunkPartNonces' -# -# devPoolCommitsPerRound - how often the miner tries to commit shares to devPool -# (default:3) not needed for other pools. -# -# NOTICE: 'devPool' wants all deadlines below a given target, this miner will only deliver -# one deadline per chunkPart, so it can happen, that not all shares can be delivered -# i suggest using lower 'chunkPartNonces' e.g. 160000 ... (1 result per 160000 nonces) -# play with that on same block to test if you get more shares with lower 'chunkPartNonces'. # ----------------------------------------------------------------------------------- numericAccountId=xxxxxxxxxxxxxxx poolServer=http://pool.com @@ -93,10 +82,6 @@ walletServer=https://wallet.burst-team.us winnerRetriesOnAsync= winnerRetryIntervalInMs= -# devPool (DevPool http://178.62.39.204:8121 seams no longer available?! Miner support will be removed in future versions.) -devPool= -devPoolCommitsPerRound= - # ----------------------------------------------------------------------------------- # - MINING MODE - SOLO ---------------------------------- ONLY NEEDED 4 SOLO MINING - # ----------------------------------------------------------------------------------- @@ -193,16 +178,10 @@ showSkippedDeadlines= # if staggersize is smaller than chunkPartNonces, staggersize will be used. # e.g. play with +/- 160000 steps # -# NOTICE: for 'devPool': only one result per chunkPart will be committed, -# without 'optDevPool' (witch is not implemented, yet) -# consider using low chunkPartNonces size, to commit more. -# (guess, there will not be multiple dl below target in small chunkPart) -# # readerThreads - normally '0' means, the miner takes one thread per drive (plotPath) this is recommend. # (default:0) choosing a other number of 'readerThreads' can be useful on memory issues. # For example, if you mine on 4 drives (plotPaths), you can reduce the memory usage # by setting 'readerThreads=2', this will reduce mining speed but save memory. # ----------------------------------------------------------------------------------- chunkPartNonces= -readerThreads= - +readerThreads= \ No newline at end of file diff --git a/src/main/java/burstcoin/jminer/JMinerCommandLine.java b/src/main/java/burstcoin/jminer/JMinerCommandLine.java index 9d6467f..f2f3e32 100644 --- a/src/main/java/burstcoin/jminer/JMinerCommandLine.java +++ b/src/main/java/burstcoin/jminer/JMinerCommandLine.java @@ -24,13 +24,11 @@ import burstcoin.jminer.core.CoreProperties; import burstcoin.jminer.core.network.Network; -import burstcoin.jminer.core.network.event.NetworkDevResultConfirmedEvent; import burstcoin.jminer.core.network.event.NetworkLastWinnerEvent; import burstcoin.jminer.core.network.event.NetworkPoolInfoEvent; import burstcoin.jminer.core.network.event.NetworkResultConfirmedEvent; import burstcoin.jminer.core.network.event.NetworkResultErrorEvent; import burstcoin.jminer.core.network.event.NetworkStateChangeEvent; -import burstcoin.jminer.core.network.model.DevPoolResult; import burstcoin.jminer.core.reader.event.ReaderCorruptFileEvent; import burstcoin.jminer.core.reader.event.ReaderDriveFinishEvent; import burstcoin.jminer.core.reader.event.ReaderDriveInterruptedEvent; @@ -260,20 +258,6 @@ public void onApplicationEvent(NetworkResultConfirmedEvent event) } }); - context.addApplicationListener(new ApplicationListener() - { - @Override - public void onApplicationEvent(NetworkDevResultConfirmedEvent event) - { - LOG.info("devPool response '" + event.getResponse() + "', block '" + event.getBlockNumber() + "'"); - for(DevPoolResult devPoolResult : event.getDevPoolResults()) - { - LOG.info( - "dl '" + devPoolResult.getCalculatedDeadline() + "' successful committed! [ " + getDeadlineTime(devPoolResult.getCalculatedDeadline()) + " ]"); - } - } - }); - context.addApplicationListener(new ApplicationListener() { @Override diff --git a/src/main/java/burstcoin/jminer/core/CoreConfig.java b/src/main/java/burstcoin/jminer/core/CoreConfig.java index 2a63f64..6ce180b 100644 --- a/src/main/java/burstcoin/jminer/core/CoreConfig.java +++ b/src/main/java/burstcoin/jminer/core/CoreConfig.java @@ -40,11 +40,6 @@ @ComponentScan(basePackages = "burstcoin.jminer.core") public class CoreConfig { - /** - * Reader pool. - * - * @return the thread pool task executor - */ @Bean(name = "readerPool") public ThreadPoolTaskExecutor readerPool() { @@ -55,11 +50,6 @@ public ThreadPoolTaskExecutor readerPool() return pool; } - /** - * Network pool. - * - * @return the thread pool task executor - */ @Bean(name = "networkPool") public SimpleAsyncTaskExecutor networkPool() { @@ -68,33 +58,18 @@ public SimpleAsyncTaskExecutor networkPool() return pool; } - /** - * Task executor. - * - * @return the sync task executor - */ @Bean(name = "checkTaskExecutor") public SyncTaskExecutor taskExecutor() { return new SyncTaskExecutor(); } - /** - * Round pool. - * - * @return the thread pool task executor - */ @Bean(name = "roundPool") public ThreadPoolTaskExecutor roundPool() { return new ThreadPoolTaskExecutor(); } - /** - * Http client. - * - * @return the http client - */ @Bean public HttpClient httpClient() { @@ -110,11 +85,6 @@ public HttpClient httpClient() return client; } - /** - * Object mapper. - * - * @return the object mapper - */ @Bean public ObjectMapper objectMapper() { diff --git a/src/main/java/burstcoin/jminer/core/CoreProperties.java b/src/main/java/burstcoin/jminer/core/CoreProperties.java index 09ce923..b495d7a 100644 --- a/src/main/java/burstcoin/jminer/core/CoreProperties.java +++ b/src/main/java/burstcoin/jminer/core/CoreProperties.java @@ -33,10 +33,6 @@ import java.util.List; import java.util.Properties; - -/** - * The type Core properties. - */ public class CoreProperties { private static final Logger LOG = LoggerFactory.getLogger(CoreProperties.class); @@ -48,7 +44,6 @@ public class CoreProperties private static final int DEFAULT_PLATFORM_ID = 0; private static final int DEFAULT_DEVICE_ID = 0; private static final boolean DEFAULT_POOL_MINING = true; - private static final boolean DEFAULT_DEV_POOL = false; private static final long DEFAULT_TARGET_DEADLINE = Long.MAX_VALUE; private static final String DEFAULT_SOLO_SERVER = "http://localhost:8125"; private static final int DEFAULT_READ_PROGRESS_PER_ROUND = 9; @@ -57,7 +52,6 @@ public class CoreProperties private static final int DEFAULT_WINNER_RETRIES_ON_ASYNC = 4; private static final int DEFAULT_WINNER_RETRY_INTERVAL_IN_MS = 500; private static final boolean DEFAULT_SCAN_PATHS_EVERY_ROUND = true; - private static final int DEFAULT_DEV_POOL_COMMITS_PER_ROUND = 3; private static final boolean DEFAULT_BYTE_UNIT_DECIMAL = true; private static final boolean DEFAULT_LIST_PLOT_FILES = false; private static final boolean DEFAULT_SHOW_DRIVE_INFO = false; @@ -86,8 +80,6 @@ public class CoreProperties private static Integer winnerRetriesOnAsync; private static Long winnerRetryIntervalInMs; private static Boolean scanPathsEveryRound; - private static Integer devPoolCommitsPerRound; - private static Boolean devPool; private static Boolean poolMining; private static Long targetDeadline; private static List plotPaths; @@ -198,34 +190,6 @@ public static boolean isScanPathsEveryRound() return scanPathsEveryRound; } - /** - * Gets dev pool commits per round. - * - * @return the dev pool commits per round - */ - public static int getDevPoolCommitsPerRound() - { - if(devPoolCommitsPerRound == null) - { - devPoolCommitsPerRound = asInteger("devPoolCommitsPerRound", DEFAULT_DEV_POOL_COMMITS_PER_ROUND); - } - return devPoolCommitsPerRound; - } - - /** - * Is dev pool. - * - * @return the boolean - */ - public static boolean isDevPool() - { - if(devPool == null) - { - devPool = asBoolean("devPool", DEFAULT_DEV_POOL); - } - return devPool; - } - /** * Is pool mining. * diff --git a/src/main/java/burstcoin/jminer/core/checker/Checker.java b/src/main/java/burstcoin/jminer/core/checker/Checker.java index 330a18a..189c2f4 100644 --- a/src/main/java/burstcoin/jminer/core/checker/Checker.java +++ b/src/main/java/burstcoin/jminer/core/checker/Checker.java @@ -39,7 +39,6 @@ @Component @Scope("singleton") public class Checker - implements ReaderLoadedPartEvent.Handler { private static final Logger LOG = LoggerFactory.getLogger(Checker.class); @@ -63,7 +62,6 @@ public void reconfigure(long blockNumber, byte[] generationSignature) this.generationSignature = generationSignature; } - @Override @EventListener public void handleMessage(ReaderLoadedPartEvent event) { diff --git a/src/main/java/burstcoin/jminer/core/checker/task/OCLCheckerTask.java b/src/main/java/burstcoin/jminer/core/checker/task/OCLCheckerTask.java index c401b6c..af0bec4 100644 --- a/src/main/java/burstcoin/jminer/core/checker/task/OCLCheckerTask.java +++ b/src/main/java/burstcoin/jminer/core/checker/task/OCLCheckerTask.java @@ -26,8 +26,6 @@ import burstcoin.jminer.core.checker.event.CheckerResultEvent; import burstcoin.jminer.core.checker.util.OCLChecker; import fr.cryptohash.Shabal256; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationEventPublisher; import org.springframework.context.annotation.Scope; @@ -41,8 +39,6 @@ public class OCLCheckerTask implements Runnable { - private static final Logger LOG = LoggerFactory.getLogger(OCLCheckerTask.class); - private final ApplicationEventPublisher publisher; private final OCLChecker oclChecker; diff --git a/src/main/java/burstcoin/jminer/core/network/Network.java b/src/main/java/burstcoin/jminer/core/network/Network.java index 701c16d..7e29751 100644 --- a/src/main/java/burstcoin/jminer/core/network/Network.java +++ b/src/main/java/burstcoin/jminer/core/network/Network.java @@ -24,12 +24,10 @@ import burstcoin.jminer.core.CoreProperties; import burstcoin.jminer.core.network.event.NetworkStateChangeEvent; -import burstcoin.jminer.core.network.model.DevPoolResult; import burstcoin.jminer.core.network.task.NetworkRequestLastWinnerTask; import burstcoin.jminer.core.network.task.NetworkRequestMiningInfoTask; import burstcoin.jminer.core.network.task.NetworkRequestPoolInfoTask; import burstcoin.jminer.core.network.task.NetworkRequestTriggerServerTask; -import burstcoin.jminer.core.network.task.NetworkSubmitDevPoolNoncesTask; import burstcoin.jminer.core.network.task.NetworkSubmitPoolNonceTask; import burstcoin.jminer.core.network.task.NetworkSubmitSoloNonceTask; import org.slf4j.Logger; @@ -45,15 +43,12 @@ import javax.annotation.PostConstruct; import java.math.BigInteger; -import java.util.Collections; -import java.util.List; import java.util.Timer; import java.util.TimerTask; @Component @Scope("singleton") public class Network - implements NetworkStateChangeEvent.Handler { private static final Logger LOG = LoggerFactory.getLogger(Network.class); @@ -66,7 +61,6 @@ public class Network private String numericAccountId; private boolean poolMining; - private boolean devPool; private String poolServer; private String walletServer; @@ -101,8 +95,6 @@ protected void postConstruct() this.walletServer = CoreProperties.getWalletServer(); this.winnerRetriesOnAsync = CoreProperties.getWinnerRetriesOnAsync(); this.winnerRetryIntervalInMs = CoreProperties.getWinnerRetryIntervalInMs(); - - this.devPool = CoreProperties.isDevPool(); } else { @@ -130,7 +122,6 @@ protected void postConstruct() this.connectionTimeout = CoreProperties.getConnectionTimeout(); } - @Override @EventListener public void handleMessage(NetworkStateChangeEvent event) { @@ -143,7 +134,7 @@ public void checkNetworkState() if(!StringUtils.isEmpty(server)) { NetworkRequestMiningInfoTask networkRequestMiningInfoTask = context.getBean(NetworkRequestMiningInfoTask.class); - networkRequestMiningInfoTask.init(server, blockNumber, poolMining, connectionTimeout, defaultTargetDeadline, devPool); + networkRequestMiningInfoTask.init(server, blockNumber, poolMining, connectionTimeout, defaultTargetDeadline); networkPool.execute(networkRequestMiningInfoTask); } } @@ -185,21 +176,10 @@ public void commitResult(long blockNumber, long calculatedDeadline, BigInteger n { if(poolMining) { - if(devPool) - { - NetworkSubmitDevPoolNoncesTask networkSubmitDevPoolNoncesTask = context.getBean(NetworkSubmitDevPoolNoncesTask.class); - List devPoolResults = Collections.singletonList(new DevPoolResult(blockNumber, calculatedDeadline, - nonce, chunkPartStartNonce)); - networkSubmitDevPoolNoncesTask.init(blockNumber, numericAccountId, poolServer, connectionTimeout, devPoolResults); - networkPool.execute(networkSubmitDevPoolNoncesTask); - } - else - { - NetworkSubmitPoolNonceTask networkSubmitPoolNonceTask = context.getBean(NetworkSubmitPoolNonceTask.class); - networkSubmitPoolNonceTask.init(blockNumber, numericAccountId, poolServer, connectionTimeout, nonce, - chunkPartStartNonce, calculatedDeadline, totalCapacity, result); - networkPool.execute(networkSubmitPoolNonceTask); - } + NetworkSubmitPoolNonceTask networkSubmitPoolNonceTask = context.getBean(NetworkSubmitPoolNonceTask.class); + networkSubmitPoolNonceTask.init(blockNumber, numericAccountId, poolServer, connectionTimeout, nonce, + chunkPartStartNonce, calculatedDeadline, totalCapacity, result); + networkPool.execute(networkSubmitPoolNonceTask); } else { @@ -209,13 +189,6 @@ public void commitResult(long blockNumber, long calculatedDeadline, BigInteger n } } - public void commitDevResult(long blockNumber, List devPoolResults) - { - NetworkSubmitDevPoolNoncesTask networkSubmitDevPoolNoncesTask = context.getBean(NetworkSubmitDevPoolNoncesTask.class); - networkSubmitDevPoolNoncesTask.init(blockNumber, numericAccountId, poolServer, connectionTimeout, devPoolResults); - networkPool.execute(networkSubmitDevPoolNoncesTask); - } - public void startMining() { timer.schedule(new TimerTask() diff --git a/src/main/java/burstcoin/jminer/core/network/event/NetworkDevResultConfirmedEvent.java b/src/main/java/burstcoin/jminer/core/network/event/NetworkDevResultConfirmedEvent.java deleted file mode 100644 index 7f3114e..0000000 --- a/src/main/java/burstcoin/jminer/core/network/event/NetworkDevResultConfirmedEvent.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016 by luxe - https://github.com/de-luxe - BURST-LUXE-RED2-G6JW-H4HG5 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, - * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software - * is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -package burstcoin.jminer.core.network.event; - -import burstcoin.jminer.core.network.model.DevPoolResult; -import org.springframework.context.ApplicationEvent; - -import java.util.List; - -/** - * The type Network dev result confirmed event. - */ -public class NetworkDevResultConfirmedEvent - extends ApplicationEvent -{ - private long blockNumber; - - private String response; - private List devPoolResults; - - /** - * Instantiates a new Network dev result confirmed event. - * - * @param blockNumber the block number - * @param response the response - * @param devPoolResults the dev pool results - */ - public NetworkDevResultConfirmedEvent(long blockNumber, String response, List devPoolResults) - { - super(blockNumber); - this.blockNumber = blockNumber; - this.response = response; - - this.devPoolResults = devPoolResults; - } - - /** - * Gets block number. - * - * @return the block number - */ - public long getBlockNumber() - { - return blockNumber; - } - - /** - * Gets response. - * - * @return the response - */ - public String getResponse() - { - return response; - } - - /** - * Gets dev pool results. - * - * @return the dev pool results - */ - public List getDevPoolResults() - { - return devPoolResults; - } -} - diff --git a/src/main/java/burstcoin/jminer/core/network/event/NetworkResultErrorEvent.java b/src/main/java/burstcoin/jminer/core/network/event/NetworkResultErrorEvent.java index 565d5af..945bd15 100644 --- a/src/main/java/burstcoin/jminer/core/network/event/NetworkResultErrorEvent.java +++ b/src/main/java/burstcoin/jminer/core/network/event/NetworkResultErrorEvent.java @@ -32,19 +32,6 @@ public class NetworkResultErrorEvent extends ApplicationEvent { - /** - * The interface Handler. - */ - public interface Handler - { - /** - * Handle message. - * - * @param event the event - */ - void handleMessage(NetworkResultErrorEvent event); - } - private long blockNumber; private BigInteger nonce; diff --git a/src/main/java/burstcoin/jminer/core/network/event/NetworkStateChangeEvent.java b/src/main/java/burstcoin/jminer/core/network/event/NetworkStateChangeEvent.java index 478d341..d9d28f7 100644 --- a/src/main/java/burstcoin/jminer/core/network/event/NetworkStateChangeEvent.java +++ b/src/main/java/burstcoin/jminer/core/network/event/NetworkStateChangeEvent.java @@ -31,19 +31,6 @@ public class NetworkStateChangeEvent extends ApplicationEvent { - /** - * The interface Handler. - */ - public interface Handler - { - /** - * Handle message. - * - * @param event the event - */ - void handleMessage(NetworkStateChangeEvent event); - } - private long blockNumber; private byte[] generationSignature; private long baseTarget; diff --git a/src/main/java/burstcoin/jminer/core/network/model/DevPoolResult.java b/src/main/java/burstcoin/jminer/core/network/model/DevPoolResult.java deleted file mode 100644 index fc47751..0000000 --- a/src/main/java/burstcoin/jminer/core/network/model/DevPoolResult.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016 by luxe - https://github.com/de-luxe - BURST-LUXE-RED2-G6JW-H4HG5 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, - * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software - * is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -package burstcoin.jminer.core.network.model; - - -import java.math.BigInteger; - -/** - * The type Dev pool result. - */ -public class DevPoolResult -{ - private long blockNumber; - private long calculatedDeadline; - private BigInteger nonce; - private BigInteger chunkPartStartNonce; - - /** - * Instantiates a new Dev pool result. - * - * @param blockNumber the block number - * @param calculatedDeadline the calculated deadline - * @param nonce the nonce - * @param chunkPartStartNonce the chunk part start nonce - */ - public DevPoolResult(long blockNumber, long calculatedDeadline, BigInteger nonce, BigInteger chunkPartStartNonce) - { - this.blockNumber = blockNumber; - this.calculatedDeadline = calculatedDeadline; - this.nonce = nonce; - this.chunkPartStartNonce = chunkPartStartNonce; - } - - /** - * Gets block number. - * - * @return the block number - */ - public long getBlockNumber() - { - return blockNumber; - } - - /** - * Gets calculated deadline. - * - * @return the calculated deadline - */ - public long getCalculatedDeadline() - { - return calculatedDeadline; - } - - /** - * Gets nonce. - * - * @return the nonce - */ - public BigInteger getNonce() - { - return nonce; - } - - /** - * Gets chunk part start nonce. - * - * @return the chunk part start nonce - */ - public BigInteger getChunkPartStartNonce() - { - return chunkPartStartNonce; - } -} diff --git a/src/main/java/burstcoin/jminer/core/network/task/NetworkRequestMiningInfoTask.java b/src/main/java/burstcoin/jminer/core/network/task/NetworkRequestMiningInfoTask.java index 15f2a37..35ef391 100644 --- a/src/main/java/burstcoin/jminer/core/network/task/NetworkRequestMiningInfoTask.java +++ b/src/main/java/burstcoin/jminer/core/network/task/NetworkRequestMiningInfoTask.java @@ -65,9 +65,8 @@ public class NetworkRequestMiningInfoTask private boolean poolMining; private long connectionTimeout; private long defaultTargetDeadline; - private boolean devV2Pool; - public void init(String server, long blockNumber, boolean poolMining, long connectionTimeout, long defaultTargetDeadline, boolean devV2Pool) + public void init(String server, long blockNumber, boolean poolMining, long connectionTimeout, long defaultTargetDeadline) { this.server = server; this.blockNumber = blockNumber; @@ -75,7 +74,6 @@ public void init(String server, long blockNumber, boolean poolMining, long conne this.connectionTimeout = connectionTimeout; this.defaultTargetDeadline = defaultTargetDeadline; - this.devV2Pool = devV2Pool; } @Override @@ -86,19 +84,9 @@ public void run() MiningInfoResponse result; try { - ContentResponse response; - if(devV2Pool) - { - response = httpClient.newRequest(server + "/pool/getMiningInfo") - .timeout(connectionTimeout, TimeUnit.MILLISECONDS) - .send(); - } - else - { - response = httpClient.newRequest(server + "/burst?requestType=getMiningInfo") - .timeout(connectionTimeout, TimeUnit.MILLISECONDS) - .send(); - } + ContentResponse response = httpClient.newRequest(server + "/burst?requestType=getMiningInfo") + .timeout(connectionTimeout, TimeUnit.MILLISECONDS) + .send(); result = objectMapper.readValue(response.getContentAsString(), MiningInfoResponse.class); diff --git a/src/main/java/burstcoin/jminer/core/network/task/NetworkSubmitDevPoolNoncesTask.java b/src/main/java/burstcoin/jminer/core/network/task/NetworkSubmitDevPoolNoncesTask.java deleted file mode 100644 index c4883c6..0000000 --- a/src/main/java/burstcoin/jminer/core/network/task/NetworkSubmitDevPoolNoncesTask.java +++ /dev/null @@ -1,119 +0,0 @@ -/* - * The MIT License (MIT) - * - * Copyright (c) 2016 by luxe - https://github.com/de-luxe - BURST-LUXE-RED2-G6JW-H4HG5 - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of this software - * and associated documentation files (the "Software"), to deal in the Software without restriction, - * including without limitation the rights to use, copy, modify, merge, publish, distribute, - * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software - * is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all copies - * or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING - * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - */ - -package burstcoin.jminer.core.network.task; - -import burstcoin.jminer.core.network.event.NetworkDevResultConfirmedEvent; -import burstcoin.jminer.core.network.model.DevPoolResult; -import org.eclipse.jetty.client.HttpClient; -import org.eclipse.jetty.client.api.ContentResponse; -import org.eclipse.jetty.client.util.StringContentProvider; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationEventPublisher; -import org.springframework.context.annotation.Scope; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -/** - * The type Network submit dev pool nonces task. - */ -@Component -@Scope("prototype") -public class NetworkSubmitDevPoolNoncesTask - implements Runnable -{ - private static final Logger LOG = LoggerFactory.getLogger(NetworkSubmitPoolNonceTask.class); - - @Autowired - private ApplicationEventPublisher publisher; - - @Autowired - private HttpClient httpClient; - - private long connectionTimeout; - - private String poolServer; - private String numericAccountId; - - private long blockNumber; - private List devPoolResults; - - /** - * Init void. - * - * @param blockNumber the block number - * @param numericAccountId the numeric account id - * @param poolServer the pool server - * @param connectionTimeout the connection timeout - * @param devPoolResults the dev pool results - */ - public void init(long blockNumber, String numericAccountId, String poolServer, long connectionTimeout, List devPoolResults) - { - this.connectionTimeout = connectionTimeout; - this.poolServer = poolServer; - this.numericAccountId = numericAccountId; - this.blockNumber = blockNumber; - this.devPoolResults = devPoolResults; - } - - @Override - public void run() - { - try - { - String data = ""; - for(DevPoolResult devPoolResult : devPoolResults) - { - data += numericAccountId + ":" + devPoolResult.getNonce().toString() + ":" + blockNumber + "\n"; - } - - ContentResponse response = httpClient.POST(poolServer + "/pool/submitWork") - .content(new StringContentProvider(data)) - .timeout(connectionTimeout, TimeUnit.MILLISECONDS) - .send(); - - String submitResult = response.getContentAsString(); - if(submitResult != null && submitResult.contains("Received")) - { - // success - publisher.publishEvent(new NetworkDevResultConfirmedEvent(blockNumber, submitResult, devPoolResults)); - } - else - { - LOG.error("Error: could not commit nonces to devPool: " + submitResult); - } - } - catch(TimeoutException timeoutException) - { - LOG.warn("Unable to commit nonces to devPool, caused by connectionTimeout, currently '" + (connectionTimeout/1000) + " sec.' try increasing it!"); - } - catch(Exception e) - { - LOG.error("Error: Failed to submit nonce to devPool: " + e.getMessage()); - } - } -} diff --git a/src/main/java/burstcoin/jminer/core/reader/Reader.java b/src/main/java/burstcoin/jminer/core/reader/Reader.java index 5d84bff..c16167a 100644 --- a/src/main/java/burstcoin/jminer/core/reader/Reader.java +++ b/src/main/java/burstcoin/jminer/core/reader/Reader.java @@ -67,7 +67,6 @@ @Component @Scope("singleton") public class Reader - implements ReaderLoadedPartEvent.Handler, NetworkResultErrorEvent.Handler { private static final Logger LOG = LoggerFactory.getLogger(Reader.class); @@ -215,7 +214,6 @@ public boolean cleanupReaderPool() return false; } - @Override @EventListener public void handleMessage(ReaderLoadedPartEvent event) { @@ -241,7 +239,6 @@ public void handleMessage(ReaderLoadedPartEvent event) } } - @Override @EventListener public void handleMessage(NetworkResultErrorEvent event) { diff --git a/src/main/java/burstcoin/jminer/core/reader/event/ReaderLoadedPartEvent.java b/src/main/java/burstcoin/jminer/core/reader/event/ReaderLoadedPartEvent.java index 60120fd..046457b 100644 --- a/src/main/java/burstcoin/jminer/core/reader/event/ReaderLoadedPartEvent.java +++ b/src/main/java/burstcoin/jminer/core/reader/event/ReaderLoadedPartEvent.java @@ -25,36 +25,13 @@ import java.math.BigInteger; -/** - * The type Reader loaded part event. - */ public class ReaderLoadedPartEvent { - /** - * The interface Handler. - */ - public interface Handler - { - /** - * Handle message. - * - * @param event the event - */ - void handleMessage(ReaderLoadedPartEvent event); - } - private BigInteger chunkPartStartNonce; private long blockNumber; private byte[] scoops; - /** - * Instantiates a new Reader loaded part event. - * - * @param blockNumber the block number - * @param scoops the scoops - * @param chunkPartStartNonce the chunk part start nonce - */ public ReaderLoadedPartEvent(long blockNumber, byte[] scoops, BigInteger chunkPartStartNonce) { this.chunkPartStartNonce = chunkPartStartNonce; @@ -62,31 +39,16 @@ public ReaderLoadedPartEvent(long blockNumber, byte[] scoops, BigInteger chunkPa this.scoops = scoops; } - /** - * Gets block number. - * - * @return the block number - */ public long getBlockNumber() { return blockNumber; } - /** - * Get scoops. - * - * @return the byte [ ] - */ public byte[] getScoops() { return scoops; } - /** - * Gets chunk part start nonce. - * - * @return the chunk part start nonce - */ public BigInteger getChunkPartStartNonce() { return chunkPartStartNonce; diff --git a/src/main/java/burstcoin/jminer/core/round/Round.java b/src/main/java/burstcoin/jminer/core/round/Round.java index 3b1c962..566c546 100644 --- a/src/main/java/burstcoin/jminer/core/round/Round.java +++ b/src/main/java/burstcoin/jminer/core/round/Round.java @@ -26,14 +26,11 @@ import burstcoin.jminer.core.checker.Checker; import burstcoin.jminer.core.checker.event.CheckerResultEvent; import burstcoin.jminer.core.network.Network; -import burstcoin.jminer.core.network.event.NetworkDevResultConfirmedEvent; import burstcoin.jminer.core.network.event.NetworkResultConfirmedEvent; import burstcoin.jminer.core.network.event.NetworkResultErrorEvent; import burstcoin.jminer.core.network.event.NetworkStateChangeEvent; -import burstcoin.jminer.core.network.model.DevPoolResult; import burstcoin.jminer.core.reader.Reader; import burstcoin.jminer.core.reader.data.Plots; -import burstcoin.jminer.core.reader.event.ReaderProgressChangedEvent; import burstcoin.jminer.core.reader.event.ReaderStoppedEvent; import burstcoin.jminer.core.round.event.RoundFinishedEvent; import burstcoin.jminer.core.round.event.RoundSingleResultEvent; @@ -56,10 +53,8 @@ import javax.annotation.PostConstruct; import java.math.BigInteger; import java.nio.ByteBuffer; -import java.util.ArrayList; import java.util.Date; import java.util.HashSet; -import java.util.List; import java.util.Set; import java.util.Timer; import java.util.TimerTask; @@ -70,7 +65,6 @@ @Component @Scope("singleton") public class Round - implements NetworkStateChangeEvent.Handler, NetworkResultErrorEvent.Handler { private static final Logger LOG = LoggerFactory.getLogger(Round.class); @@ -100,12 +94,6 @@ public class Round private CheckerResultEvent queuedEvent; private BigInteger lowestCommitted; - // dev pool - private boolean devPool; - private List devPoolResults; - private int devPoolCommitsThisRound; - private int devPoolCommitsPerRound;// one additional on finish round - private Set runningChunkPartStartNonces; private Plots plots; @@ -117,16 +105,10 @@ public Round(Reader reader, Checker checker, Network network) this.network = network; } - /** - * Post construct. - */ @PostConstruct protected void postConstruct() { this.poolMining = CoreProperties.isPoolMining(); - this.devPool = CoreProperties.isDevPool(); - this.devPoolCommitsPerRound = CoreProperties.getDevPoolCommitsPerRound(); - timer = new Timer(); } @@ -137,9 +119,7 @@ private void initNewRound(Plots plots) lowest = new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16); lowestCommitted = new BigInteger("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF", 16); queuedEvent = null; - devPoolResults = new ArrayList<>(); bestCommittedDeadline = Long.MAX_VALUE; - devPoolCommitsThisRound = devPoolCommitsPerRound; } @EventListener @@ -190,66 +170,50 @@ public void handleMessage(CheckerResultEvent event) BigInteger deadline = event.getResult().divide(BigInteger.valueOf(baseTarget)); long calculatedDeadline = deadline.longValue(); - if(devPool) + if(event.getResult().compareTo(lowest) < 0) { - if(calculatedDeadline <= targetDeadline) + lowest = event.getResult(); + if(calculatedDeadline < targetDeadline) { - // remember for next triggered commit - devPoolResults.add(new DevPoolResult(event.getBlockNumber(), calculatedDeadline, event.getNonce(), event.getChunkPartStartNonce())); + network.commitResult(blockNumber, calculatedDeadline, nonce, event.getChunkPartStartNonce(), plots.getSize(), event.getResult()); + + // ui event + fireEvent(new RoundSingleResultEvent(this, event.getBlockNumber(), nonce, event.getChunkPartStartNonce(), calculatedDeadline, poolMining)); } else { + // ui event + if(CoreProperties.isShowSkippedDeadlines()) + { + fireEvent(new RoundSingleResultSkippedEvent(this, event.getBlockNumber(), nonce, event.getChunkPartStartNonce(), calculatedDeadline, + targetDeadline, poolMining)); + } + // chunkPartStartNonce finished runningChunkPartStartNonces.remove(event.getChunkPartStartNonce()); triggerFinishRoundEvent(event.getBlockNumber()); } } - else + // remember next lowest in case that lowest fails to commit + else if(calculatedDeadline < targetDeadline + && event.getResult().compareTo(lowestCommitted) < 0 + && (queuedEvent == null || event.getResult().compareTo(queuedEvent.getResult()) < 0)) { - if(event.getResult().compareTo(lowest) < 0) + if(queuedEvent != null) { - lowest = event.getResult(); - if(calculatedDeadline < targetDeadline) - { - network.commitResult(blockNumber, calculatedDeadline, nonce, event.getChunkPartStartNonce(), plots.getSize(), event.getResult()); - - // ui event - fireEvent(new RoundSingleResultEvent(this, event.getBlockNumber(), nonce, event.getChunkPartStartNonce(), calculatedDeadline, poolMining)); - } - else - { - // ui event - if(CoreProperties.isShowSkippedDeadlines()) - { - fireEvent(new RoundSingleResultSkippedEvent(this, event.getBlockNumber(), nonce, event.getChunkPartStartNonce(), calculatedDeadline, - targetDeadline, poolMining)); - } - // chunkPartStartNonce finished - runningChunkPartStartNonces.remove(event.getChunkPartStartNonce()); - triggerFinishRoundEvent(event.getBlockNumber()); - } + // remove previous queued + runningChunkPartStartNonces.remove(queuedEvent.getChunkPartStartNonce()); } - // remember next lowest in case that lowest fails to commit - else if(calculatedDeadline < targetDeadline - && event.getResult().compareTo(lowestCommitted) < 0 - && (queuedEvent == null || event.getResult().compareTo(queuedEvent.getResult()) < 0)) - { - if(queuedEvent != null) - { - // remove previous queued - runningChunkPartStartNonces.remove(queuedEvent.getChunkPartStartNonce()); - } - LOG.info("dl '" + calculatedDeadline + "' queued"); - queuedEvent = event; + LOG.info("dl '" + calculatedDeadline + "' queued"); + queuedEvent = event; - // todo not sure if / why needed?! - triggerFinishRoundEvent(event.getBlockNumber()); - } - else - { - // chunkPartStartNonce finished - runningChunkPartStartNonces.remove(event.getChunkPartStartNonce()); - triggerFinishRoundEvent(event.getBlockNumber()); - } + // todo not sure if / why needed?! + triggerFinishRoundEvent(event.getBlockNumber()); + } + else + { + // chunkPartStartNonce finished + runningChunkPartStartNonces.remove(event.getChunkPartStartNonce()); + triggerFinishRoundEvent(event.getBlockNumber()); } } else @@ -263,42 +227,6 @@ else if(calculatedDeadline < targetDeadline } } - /** - * triggers commit devPool nonces if needed, there will be 'numberOfDevPoolCommitsPerRound' - * - * @param event read progress - */ - @EventListener - public void handleMessage(ReaderProgressChangedEvent event) - { - if(devPool && blockNumber == event.getBlockNumber()) - { - if(devPoolCommitsPerRound == devPoolCommitsThisRound) - { - devPoolCommitsThisRound--; - } - else if(event.getRemainingCapacity() < (event.getCapacity() / devPoolCommitsPerRound) * devPoolCommitsThisRound) - { - devPoolCommitsThisRound--; - LOG.debug("trigger dev commit by progress #" + (devPoolCommitsPerRound - devPoolCommitsThisRound) + " this round."); - - if(!devPoolResults.isEmpty()) - { - commitDevPoolNonces(event.getBlockNumber()); - } - else - { - LOG.info("no shares to commit to dev pool ..."); - } - } - } - } - - /** - * Handle message. - * - * @param event the event - */ @EventListener public void handleMessage(NetworkResultConfirmedEvent event) { @@ -326,34 +254,6 @@ public void handleMessage(NetworkResultConfirmedEvent event) } } - /** - * Handle message. - * - * @param event the event - */ - @EventListener - public void handleMessage(NetworkDevResultConfirmedEvent event) - { - if(blockNumber == event.getBlockNumber()) - { - for(DevPoolResult devPoolResult : event.getDevPoolResults()) - { - if(!runningChunkPartStartNonces.remove(devPoolResult.getChunkPartStartNonce())) - { - LOG.error("unknown chunkPartStartNonce in devResult." + devPoolResult.getChunkPartStartNonce()); - } - if(devPoolResult.getCalculatedDeadline() < bestCommittedDeadline) - { - // this is not really a committed just the calculated, cause devPool does not provide deadlines - // therefore no chance to validate a commit. - bestCommittedDeadline = devPoolResult.getCalculatedDeadline(); - } - } - triggerFinishRoundEvent(event.getBlockNumber()); - } - } - - @Override @EventListener public void handleMessage(NetworkResultErrorEvent event) { @@ -391,11 +291,6 @@ private void triggerFinishRoundEvent(long blockNumber) { onRoundFinish(blockNumber); } - // commit last devPool results - else if(devPool && runningChunkPartStartNonces.size() == devPoolResults.size()) - { - commitDevPoolNonces(blockNumber); - } } } @@ -440,15 +335,6 @@ public void run() } } - private void commitDevPoolNonces(long blockNumber) - { - network.commitDevResult(blockNumber, new ArrayList<>(devPoolResults)); - devPoolResults.clear(); - - // todo ui event - LOG.info("shares, committed to devPool ..."); - } - // not needed, just to force java to free memory (depending on gc used) private void triggerGarbageCollection() {