Example #1
0
        public unsafe bool Compute(byte[] hash, ulong nonce, out byte[] mixDigest, out byte[] result)
        {
            Contract.RequiresNonNull(hash, nameof(hash));

            mixDigest = null;
            result    = null;

            var value = new LibMultihash.ethash_return_value();

            fixed(byte *input = hash)
            {
                LibMultihash.ethash_full_compute(handle, input, nonce, ref value);
            }

            if (value.success)
            {
                mixDigest = value.mix_hash.value;
                result    = value.result.value;
            }

            return(value.success);
        }
Example #2
0
        public unsafe bool Compute(ILogger logger, byte[] hash, ulong nonce, out byte[] mixDigest, out byte[] result)
        {
            Assertion.RequiresNonNull(hash, nameof(hash));

            logger.LogInvoke();

            mixDigest = null;
            result    = null;

            var value = new LibMultihash.ethash_return_value();

            fixed(byte *input = hash)
            {
                LibMultihash.ethash_light_compute(handle, input, nonce, ref value);
            }

            if (value.success)
            {
                mixDigest = value.mix_hash.value;
                result    = value.result.value;
            }

            return(value.success);
        }