Coverage Summary for Class: HashRateCalculatorMining (co.rsk.metrics)
Class |
Class, %
|
Method, %
|
Line, %
|
HashRateCalculatorMining |
0%
(0/1)
|
0%
(0/3)
|
0%
(0/4)
|
1 /*
2 * This file is part of RskJ
3 * Copyright (C) 2017 RSK Labs Ltd.
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19 package co.rsk.metrics;
20
21 import co.rsk.core.RskAddress;
22 import co.rsk.crypto.Keccak256;
23 import co.rsk.util.RskCustomCache;
24 import org.ethereum.db.BlockStore;
25
26 import java.math.BigInteger;
27 import java.time.Duration;
28
29 public class HashRateCalculatorMining extends HashRateCalculator {
30
31 private final RskAddress coinbaseAddress;
32
33 public HashRateCalculatorMining(BlockStore blockStore, RskCustomCache<Keccak256, BlockHeaderElement> headerCache, RskAddress coinbaseAddress) {
34 super(blockStore, headerCache);
35 this.coinbaseAddress = coinbaseAddress;
36 }
37
38 @Override
39 public BigInteger calculateNodeHashRate(Duration period) {
40 return calculateHashRate(this::checkOwnership, period);
41 }
42
43 private Boolean checkOwnership(BlockHeaderElement element) {
44 return coinbaseAddress.equals(element.getBlockHeader().getCoinbase());
45 }
46
47 }