private void ConfigureMinimumDiff(StratumClient client, BitcoinWorkerContext context, Dictionary <string, JToken> extensionParams, Dictionary <string, object> result) { var requestedDiff = extensionParams[BitcoinStratumExtensions.MinimumDiffValue].Value <double>(); // client may suggest higher-than-base difficulty, but not a lower one var poolEndpoint = poolConfig.Ports[client.PoolEndpoint.Port]; if (requestedDiff > poolEndpoint.Difficulty) { context.VarDiff = null; // disable vardiff context.SetDifficulty(requestedDiff); logger.Info(() => $"[{client.ConnectionId}] Difficulty set to {requestedDiff} as requested by miner. VarDiff now disabled."); // enabled result[BitcoinStratumExtensions.MinimumDiff] = true; } }
private void ConfigureVersionRolling(StratumClient client, BitcoinWorkerContext context, Dictionary <string, JToken> extensionParams, Dictionary <string, object> result) { //var requestedBits = extensionParams[BitcoinStratumExtensions.VersionRollingBits].Value<int>(); uint requestedMask = BitcoinConstants.VersionRollingPoolMask; if (extensionParams.TryGetValue(BitcoinStratumExtensions.VersionRollingMask, out var requestedMaskValue)) { requestedMask = uint.Parse(requestedMaskValue.Value <string>(), NumberStyles.HexNumber); } // Compute effective mask context.VersionRollingMask = BitcoinConstants.VersionRollingPoolMask & requestedMask; // enabled result[BitcoinStratumExtensions.VersionRolling] = true; result[BitcoinStratumExtensions.VersionRollingMask] = context.VersionRollingMask.Value.ToStringHex8(); logger.Info(() => $"[{client.ConnectionId}] Using version-rolling mask {result[BitcoinStratumExtensions.VersionRollingMask]}"); }