internal Work(DifficultyTarget target, IReadOnlyList <byte> header, ShareSubmitInfo info, ulong nonceBase) { this.target = target; this.header = header; this.info = info; this.nonceBase = nonceBase; uniq = System.Threading.Interlocked.Increment(ref next); }
public void GivingTargetIsNotEnough() { var uut = new WorkGenerator(); var target = new DifficultyTarget(); uut.SetTarget(target); // nonsensical difficulty... but that's still enough for it Assert.Throws <InvalidOperationException>(() => uut.WannaConsume(0)); }
public void ConsumingZeroThrows() { var uut = new WorkGenerator(); var target = new DifficultyTarget(); uut.SetHeader(DummySubmit, new byte[] { 1 }); uut.SetTarget(target); Assert.Throws <ArgumentException>(() => uut.WannaConsume(0)); }
public void ReadyWhenHeaderAndDiffProvided() { var uut = new WorkGenerator(); var target = new DifficultyTarget(); uut.SetHeader(DummySubmit, new byte[] { 1 }); uut.SetTarget(target); Assert.False(uut.Empty); }
static WorkGenerator MakeFedWorkGenerator() { var gen = new WorkGenerator(); var target = new DifficultyTarget(); gen.SetHeader(DummySubmit, new byte[] { 1 }); gen.SetTarget(target); return(gen); }
public void ReadyCanBeInterrupted() { var uut = new WorkGenerator(); var target = new DifficultyTarget(); uut.SetHeader(DummySubmit, new byte[] { 1 }); uut.SetTarget(target); uut.Stop(); Assert.True(uut.Empty); }
public void InterruptedIsReadyWithJustHeader() { var uut = new WorkGenerator(); var target = new DifficultyTarget(); uut.SetHeader(DummySubmit, new byte[] { 1 }); uut.SetTarget(target); uut.Stop(); uut.SetHeader(DummySubmit, new byte[] { 2 }); Assert.False(uut.Empty); }
public void ConsumingBurnsRequestedNonces() { var target = new DifficultyTarget(); var uut = new WorkGenerator(); var hdr = new byte[] { 1 }; var info = DummySubmit; uut.SetHeader(info, hdr); uut.SetTarget(target); var work = uut.WannaConsume(1); Assert.Equal(1u, uut.ConsumedNonces); Assert.Same(work.target, target); Assert.Same(work.header, hdr); // and be careful, to save on copies it takes references to everything. Assert.Same(work.info, info); }
private void ___writeHeader(Stream stream) { // try for cached write first byte[] cachedHeader = getCachedHeader(); if (cachedHeader != null) { stream.Write(cachedHeader); return; } EnsureParsedHeader(); stream.Write(Version.ToByteArrayLe()); stream.Write(PreviousBlockHash.Bytes.ReverseBytes()); stream.Write(MerkleRoot.Bytes.ReverseBytes()); stream.Write(TimeSeconds.ToByteArrayLe()); stream.Write(DifficultyTarget.ToByteArrayLe()); stream.Write(Nonce.ToByteArrayLe()); }
internal void SetTarget(DifficultyTarget target) => this.target = target;