Example #1
0
        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();
        }
Example #2
0
        private void ConfigureMinimumDiff(StratumConnection connection, BitcoinWorkerContext context,
                                          IReadOnlyDictionary <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[connection.PoolEndpoint.Port];

            if (requestedDiff > poolEndpoint.Difficulty)
            {
                context.VarDiff = null; // disable vardiff
                context.SetDifficulty(requestedDiff);

                logger.Info(() => $"[{connection.ConnectionId}] Difficulty set to {requestedDiff} as requested by miner. VarDiff now disabled.");

                // enabled
                result[BitcoinStratumExtensions.MinimumDiff] = true;
            }
        }
Example #3
0
        private void ConfigureVersionRolling(StratumConnection connection, BitcoinWorkerContext context,
                                             IReadOnlyDictionary <string, JToken> extensionParams, Dictionary <string, object> result)
        {
            //var requestedBits = extensionParams[BitcoinStratumExtensions.VersionRollingBits].Value<int>();
            var 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(() => $"[{connection.ConnectionId}] Using version-rolling mask {result[BitcoinStratumExtensions.VersionRollingMask]}");
        }