protected virtual void CreateCash(Miner miner, string signature) { var tempCertificate = this.Certificate; this.Certificate = null; var tempCash = this.Cash; this.Cash = null; try { using (var stream = this.Export(BufferManager.Instance)) { stream.Seek(0, SeekOrigin.End); ItemUtilities.Write(stream, byte.MaxValue, signature); stream.Seek(0, SeekOrigin.Begin); tempCash = miner.Create(stream); } } finally { this.Certificate = tempCertificate; this.Cash = tempCash; } }
public MulticastMetadata(string type, Tag tag, DateTime creationTime, Metadata metadata, DigitalSignature digitalSignature, Miner miner, CancellationToken token) { this.Type = type; this.Tag = tag; this.CreationTime = creationTime; this.Metadata = metadata; this.Cash = miner.Create(this.GetCashStream(digitalSignature.ToString()), token).Result; this.Certificate = new Certificate(digitalSignature, this.GetCertificateStream()); }
public void Test_Miner() { //{ // var key = NetworkConverter.FromHexString("e0ee19d617ee6ea9ea592afbdf71bafba6eecde2beba0d3cdc51419522fe5dbdf18f6830081be1615969b1fe43344fac3c312cd86a487cb1bd04f2c44cddca11"); // var value = NetworkConverter.FromHexString("01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101"); // var count = Verify_1(key, value); //} { Miner miner = new Miner(CashAlgorithm.Version1, -1, new TimeSpan(0, 0, 1)); Cash cash = null; Stopwatch sw = new Stopwatch(); sw.Start(); using (MemoryStream stream = new MemoryStream(NetworkConverter.FromHexString("0101010101010101"))) { cash = miner.Create(stream); } sw.Stop(); Assert.IsTrue(sw.ElapsedMilliseconds < 1000 * 30); } { Miner miner = new Miner(CashAlgorithm.Version1, 20, new TimeSpan(1, 0, 0)); Cash cash = null; using (MemoryStream stream = new MemoryStream(NetworkConverter.FromHexString("0101010101010101"))) { cash = miner.Create(stream); stream.Seek(0, SeekOrigin.Begin); Assert.IsTrue(Miner.Verify(cash, stream) >= 20); } } { Miner miner = new Miner(CashAlgorithm.Version1, 0, TimeSpan.Zero); Cash cash = null; using (MemoryStream stream = new MemoryStream(NetworkConverter.FromHexString("0101010101010101"))) { cash = miner.Create(stream); } Assert.IsTrue(cash == null); } { Stopwatch sw = new Stopwatch(); sw.Start(); Assert.Throws <AggregateException>(() => { Miner miner = new Miner(CashAlgorithm.Version1, -1, new TimeSpan(1, 0, 0)); var task = Task.Factory.StartNew(() => { Cash cash = null; using (MemoryStream stream = new MemoryStream(NetworkConverter.FromHexString("0101010101010101"))) { cash = miner.Create(stream); } }); Thread.Sleep(1000); miner.Cancel(); task.Wait(); }); sw.Stop(); Assert.IsTrue(sw.ElapsedMilliseconds < 1000 * 30); } }