Beispiel #1
0
        public void Should_count_valid_megabundles()
        {
            var ecdsa = Substitute.For <IEthereumEcdsa>();

            ecdsa.RecoverAddress(Arg.Any <Signature>(), Arg.Any <Keccak>()).Returns(TestItem.AddressB);

            TestBundlePool bundlePool = CreateTestBundlePool(ecdsa);

            int beforeMegabundlesReceived      = Metrics.MegabundlesReceived;
            int beforeValidMegabundlesReceived = Metrics.ValidMegabundlesReceived;
            int beforeBundlesSimulated         = Metrics.BundlesSimulated;

            bundlePool.AddMegabundle(new MevMegabundle(1, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }));
            bundlePool.AddMegabundle(new MevMegabundle(1, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }));
            bundlePool.AddMegabundle(new MevMegabundle(3, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }));
            bundlePool.AddMegabundle(new MevMegabundle(4, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }));

            int deltaMegabundlesReceived      = Metrics.MegabundlesReceived - beforeMegabundlesReceived;
            int deltaValidMegabundlesReceived = Metrics.ValidMegabundlesReceived - beforeValidMegabundlesReceived;
            int deltaMegabundlesSimulated     = Metrics.BundlesSimulated - beforeBundlesSimulated;

            deltaMegabundlesReceived.Should().Be(4);
            deltaValidMegabundlesReceived.Should().Be(4);
            deltaMegabundlesSimulated.Should().Be(2); // first two megeabundles are at current head
        }
Beispiel #2
0
        public void Should_count_invalid_megabundles()
        {
            var ecdsa = Substitute.For <IEthereumEcdsa>();

            MevMegabundle[] bundles = new[]
            {
                new MevMegabundle(1, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }, minTimestamp: 5, maxTimestamp: 0),             // invalid
                new MevMegabundle(2, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }, minTimestamp: 0, maxTimestamp: 0),             // invalid relay address
                new MevMegabundle(3, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }, minTimestamp: 0, maxTimestamp: long.MaxValue), // invalid
                new MevMegabundle(4, new [] { Build.A.TypedTransaction <BundleTransaction>().SignedAndResolved(TestItem.PrivateKeyA).TestObject }, minTimestamp: 0, maxTimestamp: 0)
            };

            ecdsa.RecoverAddress(Arg.Any <Signature>(), bundles[2].Hash).Returns(TestItem.AddressC); // not in list of trusted relay addresses
            ecdsa.RecoverAddress(Arg.Any <Signature>(), bundles[3].Hash).Returns(TestItem.AddressB); // trusted relay address

            TestBundlePool bundlePool = CreateTestBundlePool(ecdsa);

            int beforeMegabundlesReceived      = Metrics.MegabundlesReceived;
            int beforeValidMegabundlesReceived = Metrics.ValidMegabundlesReceived;
            int beforeMegabundlesSimulated     = Metrics.BundlesSimulated;

            foreach (MevMegabundle mevMegabundle in bundles)
            {
                bundlePool.AddMegabundle(mevMegabundle);
            }

            int deltaBundlesReceived      = Metrics.MegabundlesReceived - beforeMegabundlesReceived;
            int deltaValidBundlesReceived = Metrics.ValidMegabundlesReceived - beforeValidMegabundlesReceived;
            int deltaBundlesSimulated     = Metrics.BundlesSimulated - beforeMegabundlesSimulated;

            deltaBundlesReceived.Should().Be(4);
            deltaValidBundlesReceived.Should().Be(1);
            deltaBundlesSimulated.Should().Be(0); // should not simulate invalid bundle
        }