예제 #1
0
        public void Sets_clique_block_producer_properly()
        {
            CliqueConfig        cliqueConfig = new CliqueConfig();
            IBlockTree          blockTree    = Substitute.For <IBlockTree>();
            Signer              signer       = new Signer(ChainId.Ropsten, TestItem.PrivateKeyA, LimboLogs.Instance);
            CliqueBlockProducer producer     = new CliqueBlockProducer(
                Substitute.For <ITxSource>(),
                Substitute.For <IBlockchainProcessor>(),
                Substitute.For <IStateProvider>(),
                blockTree,
                Substitute.For <ITimestamper>(),
                Substitute.For <ICryptoRandom>(),
                Substitute.For <ISnapshotManager>(),
                new CliqueSealer(signer, cliqueConfig, Substitute.For <ISnapshotManager>(), LimboLogs.Instance),
                new TargetAdjustedGasLimitCalculator(GoerliSpecProvider.Instance, new MiningConfig()),
                MainnetSpecProvider.Instance,
                cliqueConfig,
                LimboLogs.Instance);

            SnapshotManager snapshotManager = new SnapshotManager(CliqueConfig.Default, new MemDb(), Substitute.For <IBlockTree>(), NullEthereumEcdsa.Instance, LimboLogs.Instance);

            CliqueRpcRpcModule bridge = new CliqueRpcRpcModule(producer, snapshotManager, blockTree);

            Assert.DoesNotThrow(() => bridge.CastVote(TestItem.AddressB, true));
            Assert.DoesNotThrow(() => bridge.UncastVote(TestItem.AddressB));
            Assert.DoesNotThrow(() => bridge.CastVote(TestItem.AddressB, false));
            Assert.DoesNotThrow(() => bridge.UncastVote(TestItem.AddressB));
        }
예제 #2
0
        public void Can_ask_for_block_signer_when_hash_is_null()
        {
            ISnapshotManager   snapshotManager = Substitute.For <ISnapshotManager>();
            IBlockFinder       blockFinder     = Substitute.For <IBlockFinder>();
            CliqueRpcRpcModule rpcModule       = new CliqueRpcRpcModule(Substitute.For <ICliqueBlockProducer>(), snapshotManager, blockFinder);

            rpcModule.clique_getBlockSigner(null).Result.ResultType.Should().Be(ResultType.Failure);
        }
예제 #3
0
        public void Can_ask_for_block_signer_when_block_is_unknown()
        {
            ISnapshotManager snapshotManager = Substitute.For <ISnapshotManager>();
            IBlockFinder     blockFinder     = Substitute.For <IBlockFinder>();

            blockFinder.FindHeader(Arg.Any <Keccak>()).Returns((BlockHeader)null);
            CliqueRpcRpcModule rpcModule = new CliqueRpcRpcModule(Substitute.For <ICliqueBlockProducer>(), snapshotManager, blockFinder);

            rpcModule.clique_getBlockSigner(Keccak.Zero).Result.ResultType.Should().Be(ResultType.Failure);
        }
예제 #4
0
        public void Can_ask_for_block_signer()
        {
            ISnapshotManager snapshotManager = Substitute.For <ISnapshotManager>();
            IBlockFinder     blockFinder     = Substitute.For <IBlockFinder>();
            BlockHeader      header          = Build.A.BlockHeader.TestObject;

            blockFinder.FindHeader(Arg.Any <Keccak>()).Returns(header);
            snapshotManager.GetBlockSealer(header).Returns(TestItem.AddressA);
            CliqueRpcRpcModule rpcModule = new CliqueRpcRpcModule(Substitute.For <ICliqueBlockProducer>(), snapshotManager, blockFinder);

            rpcModule.clique_getBlockSigner(Keccak.Zero).Result.ResultType.Should().Be(ResultType.Success);
            rpcModule.clique_getBlockSigner(Keccak.Zero).Data.Should().Be(TestItem.AddressA);
        }