Example #1
0
        public ActionStatus SetUpBuilder(NodeDownloadData data, Network net)
        {
            builder = NodeBuilder.Create(data, net);
            builder.ConfigParameters.Add("printtoconsole", "0");

            return(new ActionStatus
            {
                Status = "Setup",
                Success = true
            });
        }
Example #2
0
        public ServerTester(string directory)
        {
            nodeDownloadData = bitcoinDownloadData;
            var networkString = "regtest";

            try
            {
                var rootTestData = "TestData";
                directory  = Path.Combine(rootTestData, directory);
                _Directory = directory;
                if (!Directory.Exists(rootTestData))
                {
                    Directory.CreateDirectory(rootTestData);
                }

                NodeBuilder = CreateNodeBuilder(directory);



                User1    = NodeBuilder.CreateNode();
                User2    = NodeBuilder.CreateNode();
                Explorer = NodeBuilder.CreateNode();
                foreach (var node in NodeBuilder.Nodes)
                {
                    node.WhiteBind = true;
                }
                NodeBuilder.StartAll();

                User1.CreateRPCClient().Generate(1);
                User1.Sync(Explorer, true);
                Explorer.CreateRPCClient().Generate(1);
                Explorer.Sync(User2, true);
                User2.CreateRPCClient().Generate(101);
                User1.Sync(User2, true);

                var creds   = RPCCredentialString.Parse(Explorer.AuthenticationString).UserPassword;
                var datadir = Path.Combine(directory, "explorer");
                DeleteRecursivelyWithMagicDust(datadir);
                List <(string key, string value)> keyValues = new List <(string key, string value)>();
                keyValues.Add(("conf", Path.Combine(directory, "explorer", "settings.config")));
                keyValues.Add(("datadir", datadir));
                keyValues.Add(("network", networkString));
                keyValues.Add(("verbose", "1"));
                keyValues.Add(("btcrpcuser", creds.UserName));
                keyValues.Add(("btcrpcpassword", creds.Password));
                keyValues.Add(("btcrpcurl", Explorer.CreateRPCClient().Address.AbsoluteUri));
                keyValues.Add(("cachechain", "0"));
                keyValues.Add(("rpcnotest", "1"));
                keyValues.Add(("mingapsize", "2"));
                keyValues.Add(("maxgapsize", "4"));
                keyValues.Add(("btcstartheight", Explorer.CreateRPCClient().GetBlockCount().ToString()));
                keyValues.Add(("btcnodeendpoint", $"{Explorer.Endpoint.Address}:{Explorer.Endpoint.Port}"));

                var args = keyValues.SelectMany(kv => new[] { $"--{kv.key}", kv.value }).ToArray();
                Host = new WebHostBuilder()
                       .UseConfiguration(new DefaultConfiguration().CreateConfiguration(args))
                       .UseKestrel()
                       .ConfigureLogging(l =>
                {
                    l.SetMinimumLevel(LogLevel.Information)
                    .AddFilter("Microsoft", LogLevel.Error)
                    .AddFilter("Hangfire", LogLevel.Error)
                    .AddFilter("NBXplorer.Authentication.BasicAuthenticationHandler", LogLevel.Critical)
                    .AddProvider(Logs.LogProvider);
                })
                       .UseStartup <Startup>()
                       .Build();

                string cryptoCode = "BTC";
                RPC = ((RPCClientProvider)Host.Services.GetService(typeof(RPCClientProvider))).GetRPCClient(cryptoCode);
                var nbxnetwork = ((NBXplorerNetworkProvider)Host.Services.GetService(typeof(NBXplorerNetworkProvider))).GetFromCryptoCode(cryptoCode);
                Network = nbxnetwork.NBitcoinNetwork;
                var conf = (ExplorerConfiguration)Host.Services.GetService(typeof(ExplorerConfiguration));
                Host.Start();

                _Client = new ExplorerClient(nbxnetwork, Address);
                _Client.SetCookieAuth(Path.Combine(conf.DataDir, ".cookie"));
            }
            catch
            {
                Dispose();
                throw;
            }
        }