public static NodeConfig CreateDefault()
        {
            var n            = Network.RegTest;
            var chainMonitor = new ChainWatchInterfaceUtil(n);
            var b            = new TestBroadcaster();
            var l            = new TestLogger(Colors[index]);

            index++;
            if (index == 8)
            {
                index = 0;
            }
            var est = new TestFeeEstimator();

            return(new NodeConfig()
            {
                ChainMonitor = chainMonitor,
                TestBroadcaster = b,
                TestFeeEstimator = est,
                ManyChannelMonitor = ManyChannelMonitor.Create(n, chainMonitor, b, l, est),
                TestLogger = l,
                NodeSeed = RandomUtils.GetUInt256(),
                KeysManager = new KeysManager(RandomUtils.GetBytes(32), DateTime.Now),
                ConfigProvider = new TestUserConfigProvider(),
                N = n,
            });
        }
        private ChannelManager GetTestChannelManager()
        {
            var logger              = new TestLogger();
            var broadcaster         = new TestBroadcaster();
            var feeEstiamtor        = new TestFeeEstimator();
            var n                   = NBitcoin.Network.TestNet;
            var chainWatchInterface = new ChainWatchInterfaceUtil(n);
            var keySeed             = new byte[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
            var keysInterface       = new KeysManager(keySeed, DateTime.UnixEpoch);
            var channelManager      = ChannelManager.Create(n, in TestUserConfig.Default, chainWatchInterface, keysInterface, logger, broadcaster, feeEstiamtor, 400000);

            return(channelManager);
        }
Exemple #3
0
        public static PeerManager getTestPeerManager()
        {
            var logger       = new TestLogger();
            var broadcaster  = new TestBroadcaster();
            var feeEstiamtor = new TestFeeEstimator();
            var n            = NBitcoin.Network.TestNet;

            var chainWatchInterface = new ChainWatchInterfaceUtil(n);
            var seed          = new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
            var keysInterface = new KeysManager(seed, DateTime.UnixEpoch);
            var peerManager   =
                PeerManager.Create(
                    seed, n, in TestUserConfig.Default, chainWatchInterface, keysInterface, broadcaster, logger, feeEstiamtor, 400000
                    );

            return(peerManager);
        }
Exemple #4
0
        private (ChannelManager, ChannelManagerReadArgs, ManyChannelMonitor, ManyChannelMonitorReadArgs) GetTestChannelManager()
        {
            var logger              = new TestLogger();
            var broadcaster         = new TestBroadcaster();
            var feeEstiamtor        = new TestFeeEstimator();
            var n                   = Network.TestNet;
            var chainWatchInterface = new ChainWatchInterfaceUtil(n);
            var keySeed             = new byte[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
            var keysInterface       = new KeysManager(keySeed, DateTime.UnixEpoch);
            var manyChannelMonitor  = ManyChannelMonitor.Create(n, chainWatchInterface, broadcaster, logger, feeEstiamtor);
            var userConfig          = new UserConfigObject();
            var channelManager      = ChannelManager.Create(n, userConfig, chainWatchInterface, keysInterface, logger, broadcaster, feeEstiamtor, 400000, manyChannelMonitor);
            var readArgs            = new ChannelManagerReadArgs(keysInterface, broadcaster, feeEstiamtor, logger, chainWatchInterface, n, manyChannelMonitor);
            var monitorReadArgs     = new ManyChannelMonitorReadArgs(chainWatchInterface, broadcaster, logger, feeEstiamtor, n);

            return(channelManager, readArgs, manyChannelMonitor, monitorReadArgs);
        }
Exemple #5
0
        public void ChannelManagerSerializationTests()
        {
            using var channelManager = GetTestChannelManager();
            var b = channelManager.Serialize(_pool);

            var keySeed             = new byte[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
            var keysInterface       = new KeysManager(keySeed, DateTime.UnixEpoch);
            var logger              = new TestLogger();
            var broadcaster         = new TestBroadcaster();
            var feeEstiamtor        = new TestFeeEstimator();
            var n                   = NBitcoin.Network.TestNet;
            var chainWatchInterface = new ChainWatchInterfaceUtil(n);
            var manyChannelMonitor  =
                ManyChannelMonitor.Create(n, chainWatchInterface, broadcaster, logger, feeEstiamtor);
            var args  = new ChannelManagerReadArgs(keysInterface, broadcaster, feeEstiamtor, logger, chainWatchInterface, n, manyChannelMonitor);
            var items = ChannelManager.Deserialize(b, args, new TestUserConfigProvider(), _pool);

            var(_, channelManager2) = items;

            Assert.True(channelManager2.Serialize(_pool).SequenceEqual(b));
        }
Exemple #6
0
        public static PeerManager getTestPeerManager()
        {
            var logger       = new TestLogger();
            var broadcaster  = new TestBroadcaster();
            var feeEstiamtor = new TestFeeEstimator();
            var n            = NBitcoin.Network.TestNet;

            var chainWatchInterface = new ChainWatchInterfaceUtil(n);
            var seed               = new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
            var keysInterface      = new KeysManager(seed, DateTime.UnixEpoch);
            var blockNotifier      = BlockNotifier.Create(chainWatchInterface);
            var manyChannelMonitor = ManyChannelMonitor.Create(n, chainWatchInterface, broadcaster, logger, feeEstiamtor);
            var channelManager     = ChannelManager.Create(n, TestUserConfig.Default, chainWatchInterface, keysInterface, logger, broadcaster, feeEstiamtor, 400000, manyChannelMonitor);

            blockNotifier.RegisterChannelManager(channelManager);
            blockNotifier.RegisterManyChannelMonitor(manyChannelMonitor);
            var peerManager =
                PeerManager.Create(
                    seed, in TestUserConfig.Default, chainWatchInterface, logger, keysInterface.GetNodeSecret().ToBytes(), channelManager, blockNotifier, 10000
                    );

            return(peerManager);
        }
        public void RegistrationTests()
        {
            var keySeed             = new byte[] { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
            var keysInterface       = new KeysManager(keySeed, DateTime.UnixEpoch);
            var logger              = new TestLogger();
            var broadcaster         = new TestBroadcaster();
            var feeEstiamtor        = new TestFeeEstimator();
            var n                   = NBitcoin.Network.TestNet;
            var chainWatchInterface = new ChainWatchInterfaceUtil(n);

            using var blockNotifier      = BlockNotifier.Create(chainWatchInterface);
            using var manyChannelMonitor =
                      ManyChannelMonitor.Create(n, chainWatchInterface, broadcaster, logger, feeEstiamtor);

            blockNotifier.RegisterManyChannelMonitor(manyChannelMonitor);

            using var channelManager = ChannelManager.Create(n, UserConfig.GetDefault(), chainWatchInterface, keysInterface, logger, broadcaster, feeEstiamtor, 0, manyChannelMonitor);
            blockNotifier.RegisterChannelManager(channelManager);

            // second block in testnet3
            var block = (Block.Parse("0100000006128e87be8b1b4dea47a7247d5528d2702c96826c7a648497e773b800000000e241352e3bec0a95a6217e10c3abb54adfa05abb12c126695595580fb92e222032e7494dffff001d00d235340101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0e0432e7494d010e062f503253482fffffffff0100f2052a010000002321038a7f6ef1c8ca0c588aa53fa860128077c9e6c11e6830f4d7ee4e763a56b7718fac00000000", n));

            blockNotifier.BlockConnected(block, 1);

            var b = manyChannelMonitor.Serialize(_pool);

            var(manyChannelMonitor2, keyToHeaderHash) = ManyChannelMonitor.Deserialize(new ManyChannelMonitorReadArgs(chainWatchInterface, broadcaster, logger, feeEstiamtor, n), b.AsMemory(), _pool);
            using (manyChannelMonitor2)
            {
                Assert.True(NBitcoin.Utils.ArrayEqual(b, manyChannelMonitor2.Serialize(_pool)));
                // without creating any channel, it will result to empty.
                Assert.Empty(keyToHeaderHash);
            }

            blockNotifier.UnregisterManyChannelMonitor(manyChannelMonitor);
            blockNotifier.UnregisterChannelManager(channelManager);
        }
Exemple #8
0
        public static void UnitTest()
        {
            TestListener    listener    = new TestListener();
            TestBroadcaster broadcaster = new TestBroadcaster();

            XUtils.Assert(listener.mMailbox1.GetNumEvents() == 0);
            //listener_1.mMailbox1.ReadNext(); // correctly hit assert for reading no events

            var event1 = new tEvent1();

            event1.a = 2;

            XUtils.Assert(broadcaster.mEvent1.IsSubscribed(listener.mMailbox1) == false);
            broadcaster.mEvent1.Subscribe(listener.mMailbox1);
            XUtils.Assert(broadcaster.mEvent1.IsSubscribed(listener.mMailbox1) == true);

            broadcaster.mEvent1.Post(event1);
            XUtils.Assert(listener.mMailbox1.GetNumEvents() == 1);
            var enumerator_1 = listener.mMailbox1.CreateEnumerator();

            enumerator_1.MoveNext();
            tEvent1 event_read = enumerator_1.GetCurrent();

            XUtils.Assert(listener.mMailbox1.GetNumEvents() == 0);
            XUtils.Assert(event_read.a == 2);

            // listener.mMailbox1.ReadNext(); // correctly asserts for reading no events after having one
            broadcaster.mEvent1.Post(event1);
            // broadcaster.mEvent1.Post( event1 ); // correctly asserts for event queue full

            var event3 = new tEvent3();

            event3.c = 'a';

            broadcaster.mEvent3.Subscribe(listener.mMailbox3);
            broadcaster.mEvent3.Post(event3);
            var event4 = new tEvent3();

            event4.c = 'b';
            broadcaster.mEvent3.Post(event4);
            broadcaster.mEvent3.Post(event4);
            XUtils.Assert(listener.mMailbox3.GetNumEvents() == 1);
            var enumerator_3 = listener.mMailbox3.CreateEnumerator();

            enumerator_3.MoveNext();
            XUtils.Assert(enumerator_3.GetCurrent().c == 'a');

            var event2 = new tEvent2();
            var event6 = new tEvent2();
            var event7 = new tEvent2();

            event2.b = 1.0f;

            broadcaster.mEvent2.Subscribe(listener.mMailbox2);
            broadcaster.mEvent2.Post(event2);
            event6.b = 2.0f;
            broadcaster.mEvent2.Post(event6);
            event7.b = 3.0f;
            broadcaster.mEvent2.Post(event7);
            XUtils.Assert(listener.mMailbox2.GetNumEvents() == 2);
            var enumerator2 = listener.mMailbox2.CreateEnumerator();

            enumerator2.MoveNext();
            XUtils.Assert(enumerator2.GetCurrent().b == 2.0f);
            enumerator2.MoveNext();
            XUtils.Assert(enumerator2.GetCurrent().b == 3.0f);

            TestListener listener2 = new TestListener();

            broadcaster.mEvent1.Subscribe(listener2.mMailbox1);
            var e1 = listener.mMailbox1.CreateEnumerator();

            e1.MoveNext();
            XUtils.Assert(listener.mMailbox1.GetNumEvents() == 0);
            XUtils.Assert(broadcaster.mEvent1.IsSubscribed(listener.mMailbox1));
            broadcaster.mEvent1.Post(event1);
            XUtils.Assert(listener.mMailbox1.GetNumEvents() == 1);
            XUtils.Assert(listener2.mMailbox1.GetNumEvents() == 1);
        }