From 724780b24a011c79cb63b62b165425c7a9bb343f Mon Sep 17 00:00:00 2001 From: jon4hz Date: Thu, 16 Feb 2023 23:52:25 +0100 Subject: [PATCH] fix: linter warnings and cleanup --- .../.idea.Miningcore/.idea/indexLayout.xml | 4 +- .../Blockchain/Ravencoin/RavencoinJob.cs | 42 +++++++++---------- .../Ravencoin/RavencoinJobManager.cs | 40 +++++++++--------- .../Blockchain/Ravencoin/RavencoinPool.cs | 18 ++++---- .../Ravencoin/RavencoinWorkerContext.cs | 10 ++--- .../Ravencoin/RavencoinWorkerJob.cs | 10 ++--- .../Crypto/Hashing/Algorithms/Sha256DT.cs | 4 +- src/Miningcore/coins.json | 2 +- 8 files changed, 66 insertions(+), 64 deletions(-) diff --git a/src/.idea/.idea.Miningcore/.idea/indexLayout.xml b/src/.idea/.idea.Miningcore/.idea/indexLayout.xml index 7b08163ce..444ce609f 100644 --- a/src/.idea/.idea.Miningcore/.idea/indexLayout.xml +++ b/src/.idea/.idea.Miningcore/.idea/indexLayout.xml @@ -1,7 +1,9 @@ - + + ../../ravencoin + diff --git a/src/Miningcore/Blockchain/Ravencoin/RavencoinJob.cs b/src/Miningcore/Blockchain/Ravencoin/RavencoinJob.cs index 24bfa8428..01e6f0bb5 100644 --- a/src/Miningcore/Blockchain/Ravencoin/RavencoinJob.cs +++ b/src/Miningcore/Blockchain/Ravencoin/RavencoinJob.cs @@ -19,16 +19,16 @@ namespace Miningcore.Blockchain.Ravencoin; public class RavencoinJobParams { - public ulong Height { get; set; } + public ulong Height { get; init; } public bool CleanJobs { get; set; } } public class RavencoinJob : BitcoinJob { - protected Cache kawpowHasher; - protected new RavencoinJobParams jobParams; + private Cache kawpowHasher; + private new RavencoinJobParams jobParams; - protected byte[] SerializeHeader(Span coinbaseHash) + private byte[] SerializeHeader(Span coinbaseHash) { // build merkle-root var merkleRoot = mt.WithFirst(coinbaseHash.ToArray()); @@ -51,7 +51,7 @@ protected byte[] SerializeHeader(Span coinbaseHash) return blockHeader.ToBytes(); } - public virtual (Share Share, string BlockHex) ProcessShareInternal(ILogger logger, + public (Share Share, string BlockHex) ProcessShareInternal(ILogger logger, StratumConnection worker, ulong nonce, string inputHeaderHash, string mixHash) { var context = worker.ContextAs(); @@ -68,7 +68,6 @@ public virtual (Share Share, string BlockHex) ProcessShareInternal(ILogger logge headerHasher.Digest(headerBytes, headerHash); headerHash.Reverse(); - var headerValue = new uint256(headerHash); var headerHashHex = headerHash.ToHexString(); if(headerHashHex != inputHeaderHash) @@ -119,25 +118,25 @@ public virtual (Share Share, string BlockHex) ProcessShareInternal(ILogger logge Difficulty = stratumDifficulty / shareMultiplier, }; - if(isBlockCandidate) + if(!isBlockCandidate) { - result.IsBlockCandidate = true; - result.BlockHash = resultBytes.ReverseInPlace().ToHexString(); + return (result, null); + } - var blockBytes = SerializeBlock(headerBytes, coinbase, nonce, mixHashOut); - var blockHex = blockBytes.ToHexString(); + result.IsBlockCandidate = true; + result.BlockHash = resultBytes.ReverseInPlace().ToHexString(); - return (result, blockHex); - } + var blockBytes = SerializeBlock(headerBytes, coinbase, nonce, mixHashOut); + var blockHex = blockBytes.ToHexString(); - return (result, null); + return (result, blockHex); } - protected virtual byte[] SerializeCoinbase(string extraNonce1) + private byte[] SerializeCoinbase(string extraNonce1) { var extraNonce1Bytes = extraNonce1.HexToByteArray(); - using(var stream = new MemoryStream()) + using var stream = new MemoryStream(); { stream.Write(coinbaseInitial); stream.Write(extraNonce1Bytes); @@ -147,12 +146,12 @@ protected virtual byte[] SerializeCoinbase(string extraNonce1) } } - protected virtual byte[] SerializeBlock(byte[] header, byte[] coinbase, ulong nonce, byte[] mixHash) + private byte[] SerializeBlock(byte[] header, byte[] coinbase, ulong nonce, byte[] mixHash) { var rawTransactionBuffer = BuildRawTransactionBuffer(); var transactionCount = (uint) BlockTemplate.Transactions.Length + 1; // +1 for prepended coinbase tx - using(var stream = new MemoryStream()) + using var stream = new MemoryStream(); { var bs = new BitcoinStream(stream, true); @@ -198,7 +197,8 @@ public void Init(BlockTemplate blockTemplate, string jobId, var coinbaseString = !string.IsNullOrEmpty(cc.PaymentProcessing?.CoinbaseString) ? cc.PaymentProcessing?.CoinbaseString.Trim() : "Miningcore"; - this.scriptSigFinalBytes = new Script(Op.GetPushOp(Encoding.UTF8.GetBytes(coinbaseString))).ToBytes(); + if(!string.IsNullOrEmpty(coinbaseString)) + this.scriptSigFinalBytes = new Script(Op.GetPushOp(Encoding.UTF8.GetBytes(coinbaseString))).ToBytes(); this.Difficulty = new Target(System.Numerics.BigInteger.Parse(BlockTemplate.Target, NumberStyles.HexNumber)).Difficulty; @@ -233,7 +233,7 @@ public void Init(BlockTemplate blockTemplate, string jobId, return jobParams; } - public virtual void PrepareWorkerJob(RavencoinWorkerJob workerJob, out string headerHash) + public void PrepareWorkerJob(RavencoinWorkerJob workerJob, out string headerHash) { workerJob.Job = this; workerJob.Height = BlockTemplate.Height; @@ -242,7 +242,7 @@ public virtual void PrepareWorkerJob(RavencoinWorkerJob workerJob, out string he headerHash = CreateHeaderHash(workerJob); } - protected virtual string CreateHeaderHash(RavencoinWorkerJob workerJob) + private string CreateHeaderHash(RavencoinWorkerJob workerJob) { var headerHasher = coin.HeaderHasherValue; var coinbaseHasher = coin.CoinbaseHasherValue; diff --git a/src/Miningcore/Blockchain/Ravencoin/RavencoinJobManager.cs b/src/Miningcore/Blockchain/Ravencoin/RavencoinJobManager.cs index 351d00fde..984f16196 100644 --- a/src/Miningcore/Blockchain/Ravencoin/RavencoinJobManager.cs +++ b/src/Miningcore/Blockchain/Ravencoin/RavencoinJobManager.cs @@ -29,7 +29,7 @@ public RavencoinJobManager( private RavencoinTemplate coin; - protected async Task> GetBlockTemplateAsync(CancellationToken ct) + private async Task> GetBlockTemplateAsync(CancellationToken ct) { var result = await rpc.ExecuteAsync(logger, BitcoinCommands.GetBlockTemplate, ct, extraPoolConfig?.GBTArgs ?? (object) GetBlockTemplateParams()); @@ -37,30 +37,30 @@ protected async Task> GetBlockTemplateAsync(Cancellat return result; } - protected RpcResponse GetBlockTemplateFromJson(string json) + private RpcResponse GetBlockTemplateFromJson(string json) { var result = JsonConvert.DeserializeObject(json); return new RpcResponse(result!.ResultAs()); } - private RavencoinJob CreateJob() + private static RavencoinJob CreateJob() { - return new(); + return new RavencoinJob(); } - public double ShareMultiplier => coin.ShareMultiplier; + private double ShareMultiplier => coin.ShareMultiplier; protected override void PostChainIdentifyConfigure() { base.PostChainIdentifyConfigure(); - if(poolConfig.EnableInternalStratum == true && coin.HeaderHasherValue is IHashAlgorithmInit hashInit) - { - if(!hashInit.DigestInit(poolConfig)) - logger.Error(() => $"{hashInit.GetType().Name} initialization failed"); - } + if(poolConfig.EnableInternalStratum == false || coin.HeaderHasherValue is not IHashAlgorithmInit hashInit) + return; + + if(!hashInit.DigestInit(poolConfig)) + logger.Error(() => $"{hashInit.GetType().Name} initialization failed"); } protected override async Task PostStartInitAsync(CancellationToken ct) @@ -74,7 +74,7 @@ protected override async Task PostStartInitAsync(CancellationToken ct) { var blockTemplate = await GetBlockTemplateAsync(ct); - if(blockTemplate != null || blockTemplate.Response != null) + if(blockTemplate?.Response != null) { logger.Info(() => "Loading current light cache ..."); @@ -123,7 +123,9 @@ await GetBlockTemplateAsync(ct) : { job = CreateJob(); - var kawpowHasher = await coin.KawpowHasher.GetCacheAsync(logger, (int) blockTemplate.Height); + var blockHeight = blockTemplate?.Height ?? currentJob.BlockTemplate.Height; + + var kawpowHasher = await coin.KawpowHasher.GetCacheAsync(logger, (int) blockHeight); job.Init(blockTemplate, NextJobId(), poolConfig, extraPoolConfig, clusterConfig, clock, poolAddressDestination, network, isPoS, @@ -198,7 +200,7 @@ public override void Configure(PoolConfig pc, ClusterConfig cc) base.Configure(pc, cc); } - public virtual object[] GetSubscriberData(StratumConnection worker) + public object[] GetSubscriberData(StratumConnection worker) { Contract.RequiresNonNull(worker); @@ -216,7 +218,7 @@ public virtual object[] GetSubscriberData(StratumConnection worker) return responseData; } - public virtual void PrepareWorkerJob(RavencoinWorkerJob workerJob, out string headerHash) + public void PrepareWorkerJob(RavencoinWorkerJob workerJob, out string headerHash) { headerHash = null; @@ -231,7 +233,7 @@ public virtual void PrepareWorkerJob(RavencoinWorkerJob workerJob, out string he } } - public virtual async ValueTask SubmitShareAsync(StratumConnection worker, object submission, + public async ValueTask SubmitShareAsync(StratumConnection worker, object submission, CancellationToken ct) { Contract.RequiresNonNull(worker); @@ -245,9 +247,9 @@ public virtual async ValueTask SubmitShareAsync(StratumConnection worker, // extract params var workerValue = (submitParams[0] as string)?.Trim(); var jobId = submitParams[1] as string; - var nonce = (submitParams[2] as string).Substring(2); - var headerHash = (submitParams[3] as string).Substring(2); - var mixHash = (submitParams[4] as string).Substring(2); + var nonce = (submitParams[2] as string)?.Substring(2); + var headerHash = (submitParams[3] as string)?.Substring(2); + var mixHash = (submitParams[4] as string)?.Substring(2); if(string.IsNullOrEmpty(workerValue)) throw new StratumException(StratumError.Other, "missing or invalid workername"); @@ -308,4 +310,4 @@ public virtual async ValueTask SubmitShareAsync(StratumConnection worker, } #endregion // API-Surface -} \ No newline at end of file +} diff --git a/src/Miningcore/Blockchain/Ravencoin/RavencoinPool.cs b/src/Miningcore/Blockchain/Ravencoin/RavencoinPool.cs index 6c07643ff..70c675224 100644 --- a/src/Miningcore/Blockchain/Ravencoin/RavencoinPool.cs +++ b/src/Miningcore/Blockchain/Ravencoin/RavencoinPool.cs @@ -37,9 +37,9 @@ public RavencoinPool(IComponentContext ctx, { } - protected RavencoinJobParams currentJobParams; + private RavencoinJobParams currentJobParams; private long currentJobId; - protected RavencoinJobManager manager; + private RavencoinJobManager manager; private RavencoinTemplate coin; protected virtual async Task OnSubscribeAsync(StratumConnection connection, Timestamped tsRequest) @@ -80,7 +80,7 @@ protected virtual async Task OnSubscribeAsync(StratumConnection connection, Time context.SetDifficulty(nicehashDiff.Value); } - var minerJobParams = CreateWorkerJob(connection, (int) currentJobParams.Height, currentJobParams.CleanJobs); + var minerJobParams = CreateWorkerJob(connection, currentJobParams.CleanJobs); // send intial update await connection.NotifyAsync(RavencoinStratumMethods.SetDifficulty, new object[] { RavencoinUtils.EncodeTarget(context.Difficulty) }); await connection.NotifyAsync(RavencoinStratumMethods.MiningNotify, minerJobParams); @@ -150,7 +150,7 @@ protected virtual async Task OnAuthorizeAsync(StratumConnection connection, Time } } - private object CreateWorkerJob(StratumConnection connection, int block, bool update) + private object CreateWorkerJob(StratumConnection connection, bool update) { var context = connection.ContextAs(); var job = new RavencoinWorkerJob(NextJobId(), context.ExtraNonce1); @@ -256,11 +256,11 @@ protected virtual async Task OnNewJobAsync(object job) currentJobParams = job as RavencoinJobParams; - await Guard(() => ForEachMinerAsync(async (connection, ct) => + await Guard(() => ForEachMinerAsync(async (connection, _) => { var context = connection.ContextAs(); - var minerJobParams = CreateWorkerJob(connection, (int) currentJobParams.Height, currentJobParams.CleanJobs); + var minerJobParams = CreateWorkerJob(connection, currentJobParams.CleanJobs); if(context.ApplyPendingDifficulty()) await connection.NotifyAsync(RavencoinStratumMethods.SetDifficulty, new object[] { RavencoinUtils.EncodeTarget(context.Difficulty) }); @@ -385,13 +385,11 @@ protected override async Task OnVarDiffUpdateAsync(StratumConnection connection, if(connection.Context.ApplyPendingDifficulty()) { - var context = connection.ContextAs(); - var minerJobParams = CreateWorkerJob(connection, (int) currentJobParams.Height, currentJobParams.CleanJobs); - + var minerJobParams = CreateWorkerJob(connection, currentJobParams.CleanJobs); await connection.NotifyAsync(RavencoinStratumMethods.SetDifficulty, new object[] { RavencoinUtils.EncodeTarget(connection.Context.Difficulty) }); await connection.NotifyAsync(RavencoinStratumMethods.MiningNotify, minerJobParams); } } #endregion // Overrides -} \ No newline at end of file +} diff --git a/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerContext.cs b/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerContext.cs index 84b4a5d14..a904e2fc2 100644 --- a/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerContext.cs +++ b/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerContext.cs @@ -19,18 +19,18 @@ public class RavencoinWorkerContext : WorkerContextBase /// public string ExtraNonce1 { get; set; } - private List validJobs { get; } = new(); + private List ValidJobs { get; } = new(); public void AddJob(RavencoinWorkerJob job) { - validJobs.Insert(0, job); + ValidJobs.Insert(0, job); - while(validJobs.Count > 4) - validJobs.RemoveAt(validJobs.Count - 1); + while(ValidJobs.Count > 4) + ValidJobs.RemoveAt(ValidJobs.Count - 1); } public RavencoinWorkerJob FindJob(string jobId) { - return validJobs.FirstOrDefault(x => x.Id == jobId); + return ValidJobs.FirstOrDefault(x => x.Id == jobId); } } diff --git a/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerJob.cs b/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerJob.cs index bbc547ab5..1ec403741 100644 --- a/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerJob.cs +++ b/src/Miningcore/Blockchain/Ravencoin/RavencoinWorkerJob.cs @@ -22,7 +22,7 @@ public RavencoinWorkerJob(string jobId, string extraNonce1) public string Bits { get; set; } public string SeedHash { get; set; } - public readonly ConcurrentDictionary Submissions = new(StringComparer.OrdinalIgnoreCase); + private readonly ConcurrentDictionary submissions = new(StringComparer.OrdinalIgnoreCase); private bool RegisterSubmit(string nonce, string headerHash, string mixHash) { @@ -32,10 +32,10 @@ private bool RegisterSubmit(string nonce, string headerHash, string mixHash) .Append(mixHash) .ToString(); - return Submissions.TryAdd(key, true); + return submissions.TryAdd(key, true); } - public virtual (Share Share, string BlockHex) ProcessShare(ILogger logger, StratumConnection worker, string nonce, string headerHash, string mixHash) + public (Share Share, string BlockHex) ProcessShare(ILogger logger, StratumConnection worker, string nonce, string headerHash, string mixHash) { Contract.RequiresNonNull(worker); Contract.Requires(!string.IsNullOrEmpty(nonce)); @@ -51,7 +51,7 @@ public virtual (Share Share, string BlockHex) ProcessShare(ILogger logger, Strat throw new StratumException(StratumError.Other, $"incorrect size of nonce: {nonce}"); // check if nonce is within range - if(nonce.IndexOf(context.ExtraNonce1.Substring(0, 4)) != 0) + if(nonce.IndexOf(context.ExtraNonce1[0..4], StringComparison.OrdinalIgnoreCase) != 0) throw new StratumException(StratumError.Other, $"nonce out of range: {nonce}"); // dupe check @@ -62,4 +62,4 @@ public virtual (Share Share, string BlockHex) ProcessShare(ILogger logger, Strat return Job.ProcessShareInternal(logger, worker, nonceLong, headerHash, mixHash); } -} \ No newline at end of file +} diff --git a/src/Miningcore/Crypto/Hashing/Algorithms/Sha256DT.cs b/src/Miningcore/Crypto/Hashing/Algorithms/Sha256DT.cs index be4824fe3..1ce6d9fa1 100644 --- a/src/Miningcore/Crypto/Hashing/Algorithms/Sha256DT.cs +++ b/src/Miningcore/Crypto/Hashing/Algorithms/Sha256DT.cs @@ -10,9 +10,9 @@ public void Digest(ReadOnlySpan data, Span result, params object[] e { Contract.Requires(result.Length >= 32); - fixed (byte* input = data) + fixed(byte* input = data) { - fixed (byte* output = result) + fixed(byte* output = result) { Multihash.sha256dt(input, output); } diff --git a/src/Miningcore/coins.json b/src/Miningcore/coins.json index 96d85f21f..470b6c57e 100644 --- a/src/Miningcore/coins.json +++ b/src/Miningcore/coins.json @@ -9,7 +9,7 @@ "telegram": "https://t.me/VGC_5GCASH", "discord": "https://discord.gg/uXHvyBT", "coinbaseHasher": { - "hash": "sha256d" + "hash": "sha256d", }, "headerHasher": { "hash": "x16r-v2"