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); }
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); }