Exemplo n.º 1
0
        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;
            }
        }
Exemplo n.º 2
0
 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());
 }
Exemplo n.º 3
0
        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);
            }
        }