コード例 #1
0
ファイル: CryptonoteJob.cs プロジェクト: rvrsh3ll/miningcore
    public CryptonoteJob(GetBlockTemplateResponse blockTemplate, byte[] instanceId, string jobId,
                         CryptonoteCoinTemplate coin, PoolConfig poolConfig, ClusterConfig clusterConfig, string prevHash, string randomXRealm)
    {
        Contract.RequiresNonNull(blockTemplate);
        Contract.RequiresNonNull(poolConfig);
        Contract.RequiresNonNull(clusterConfig);
        Contract.RequiresNonNull(instanceId);
        Contract.Requires <ArgumentException>(!string.IsNullOrEmpty(jobId));

        BlockTemplate = blockTemplate;
        PrepareBlobTemplate(instanceId);
        PrevHash     = prevHash;
        RandomXRealm = randomXRealm;

        hashFunc = hashFuncs[coin.Hash];
    }
コード例 #2
0
        private async Task <bool> EnsureBalance(decimal requiredAmount, CryptonoteCoinTemplate coin)
        {
            var response = await walletDaemon.ExecuteCmdSingleAsync <GetBalanceResponse>(logger, CryptonoteWalletCommands.GetBalance);

            if (response.Error != null)
            {
                logger.Error(() => $"[{LogCategory}] Daemon command '{CryptonoteWalletCommands.GetBalance}' returned error: {response.Error.Message} code {response.Error.Code}");
                return(false);
            }

            var unlockedBalance = Math.Floor(response.Response.UnlockedBalance / coin.SmallestUnit);
            var balance         = Math.Floor(response.Response.Balance / coin.SmallestUnit);

            if (unlockedBalance < requiredAmount)
            {
                logger.Info(() => $"[{LogCategory}] {FormatAmount(requiredAmount)} unlocked balance required for payout, but only have {FormatAmount(unlockedBalance)} of {FormatAmount(balance)} available yet. Will try again.");
                return(false);
            }

            logger.Info(() => $"[{LogCategory}] Current balance is {FormatAmount(unlockedBalance)}");
            return(true);
        }
コード例 #3
0
ファイル: CryptonoteJob.cs プロジェクト: jaschadub/miningcore
        public CryptonoteJob(GetBlockTemplateResponse blockTemplate, byte[] instanceId, string jobId,
                             CryptonoteCoinTemplate coin, PoolConfig poolConfig, ClusterConfig clusterConfig, string prevHash, string randomXRealm)
        {
            Contract.RequiresNonNull(blockTemplate, nameof(blockTemplate));
            Contract.RequiresNonNull(poolConfig, nameof(poolConfig));
            Contract.RequiresNonNull(clusterConfig, nameof(clusterConfig));
            Contract.RequiresNonNull(instanceId, nameof(instanceId));
            Contract.Requires <ArgumentException>(!string.IsNullOrEmpty(jobId), $"{nameof(jobId)} must not be empty");

            BlockTemplate = blockTemplate;
            PrepareBlobTemplate(instanceId);
            PrevHash = prevHash;

            switch (coin.Hash)
            {
            case CryptonightHashType.RandomX:
                hashFunc = ((seedHex, data, result, height) =>
                {
                    LibRandomX.CalculateHash(randomXRealm, seedHex, data, result);
                });
                break;
            }
        }