Beispiel #1
0
        public async Task Start(IResourceOwner resourceOwner, NBitcoin.Network network)
        {
            _NATManager = new NATManager(network.DefaultPort);

            await _NATManager.Init().ContinueWith(t => {
                var Settings = JsonLoader <Settings> .Instance.Value;

                if (_NATManager.DeviceFound &&
                    _NATManager.Mapped.Value &&
                    _NATManager.ExternalIPVerified.Value)
                {
                    var ipEndpoint = new System.Net.IPEndPoint(_NATManager.ExternalIPAddress, Settings.ServerPort);

                    _Server = new Server(resourceOwner, ipEndpoint, network);

                    if (_Server.Start())
                    {
                        Trace.Information($"Server started at {ipEndpoint}");
                    }
                    else
                    {
                        Trace.Information($"Could not start server at {ipEndpoint}");
                    }
                }

                //if (Settings.IPSeeds.Count == 0) {
                //	Trace.Information ("No seeds defined");
                //} else {
                //	DiscoveryManager.Instance.Start (resourceOwner, NATManager.Instance.ExternalIPAddress);
                //}
            });
        }
        public static LedgerAnchorWorker CreateLedgerAnchorWorker(IServiceProvider serviceProvider)
        {
            IConfiguration configuration = serviceProvider.GetService <IConfiguration>();
            IConfiguration anchoring     = configuration.GetSection("anchoring");
            ILogger        logger        = serviceProvider.GetService <ILogger>();

            IAnchorRecorder recorder = null;

            switch (anchoring["type"])
            {
            case "blockchain":
                string anchorKey = anchoring["key"];
                if (!string.IsNullOrEmpty(anchorKey))
                {
                    NBitcoin.Key     key     = NBitcoin.Key.Parse(anchorKey);
                    NBitcoin.Network network = NBitcoin.Network.GetNetworks()
                                               .First(item => item.GetVersionBytes(NBitcoin.Base58Type.PUBKEY_ADDRESS)[0] == byte.Parse(anchoring["network_byte"]));

                    logger.LogInformation($"Starting Blockchain anchor (address: {key.PubKey.GetAddress(network).ToString()})");
                    recorder = new BlockchainAnchorRecorder(new Uri(anchoring["bitcoin_api_url"]), key, network, long.Parse(anchoring["fees"]));
                }
                break;
            }

            if (recorder != null)
            {
                return(new LedgerAnchorWorker(serviceProvider.GetRequiredService <IAnchorBuilder>(), recorder, serviceProvider.GetRequiredService <ILogger>()));
            }
            else
            {
                return(null);
            }
        }
Beispiel #3
0
 public void AssertNetwork(NBitcoin.Network network)
 {
     if (network != _Network)
     {
         throw new Exception("Wrong network");
     }
 }
 public ManyChannelMonitorReadArgs(IChainWatchInterface chainWatchInterface, IBroadcaster broadcaster,
                                   ILogger logger, IFeeEstimator feeEstimator, NBitcoin.Network n)
 {
     _chainWatchInterface = chainWatchInterface ?? throw new ArgumentNullException(nameof(chainWatchInterface));
     _broadcaster         = broadcaster ?? throw new ArgumentNullException(nameof(broadcaster));
     _logger       = logger ?? throw new ArgumentNullException(nameof(logger));
     _feeEstimator = feeEstimator ?? throw new ArgumentNullException(nameof(feeEstimator));
     _n            = n ?? throw new ArgumentNullException(nameof(n));
 }
 public ChannelManagerReadArgs(IKeysInterface keysInterface, IBroadcaster broadcaster, IFeeEstimator feeEstimator, ILogger logger, IChainWatchInterface chainWatchInterface, NBitcoin.Network n, ManyChannelMonitor manyChannelMonitor)
 {
     _keysInterface       = keysInterface ?? throw new ArgumentNullException(nameof(keysInterface));
     _broadcaster         = broadcaster ?? throw new ArgumentNullException(nameof(broadcaster));
     _feeEstimator        = feeEstimator ?? throw new ArgumentNullException(nameof(feeEstimator));
     _logger              = logger ?? throw new ArgumentNullException(nameof(logger));
     _chainWatchInterface = chainWatchInterface ?? throw new ArgumentNullException(nameof(chainWatchInterface));
     _n = n;
     ManyChannelMonitor = manyChannelMonitor ?? throw new ArgumentNullException(nameof(manyChannelMonitor));
 }
Beispiel #6
0
        public static NBitcoin.Network Main()
        {
            if (_mainnet != null)
            {
                return(_mainnet);
            }

            NBitcoin.NetworkBuilder builder = new NBitcoin.NetworkBuilder();

            var graviumMainConsensus = new NBitcoin.Consensus
            {
                SubsidyHalvingInterval      = 210000,
                MajorityEnforceBlockUpgrade = 750,
                MajorityRejectBlockOutdated = 950,
                MajorityWindow                = 1000,
                BIP34Hash                     = null,
                PowLimit                      = new NBitcoin.Target(new NBitcoin.uint256("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")),
                PowTargetTimespan             = TimeSpan.FromSeconds(14 * 24 * 60 * 60), // two weeks, 20160 minutes
                PowTargetSpacing              = TimeSpan.FromSeconds(10 * 60),           // 10 minutes
                PowAllowMinDifficultyBlocks   = false,
                PowNoRetargeting              = false,
                RuleChangeActivationThreshold = 1916,   // 95% of 2016
                MinerConfirmationWindow       = 2016,   // nPowTargetTimespan / nPowTargetSpacing
                CoinbaseMaturity              = 100,
                LitecoinWorkCalculation       = false
            };

            graviumMainConsensus.BIP34Hash = graviumMainConsensus.HashGenesisBlock;

            _mainnet = builder.SetConsensus(graviumMainConsensus)

                       .SetBase58Bytes(NBitcoin.Base58Type.PUBKEY_ADDRESS, new byte[] { (75) })   // GRV / X
                       .SetBase58Bytes(NBitcoin.Base58Type.SCRIPT_ADDRESS, new byte[] { (125) })
                       .SetBase58Bytes(NBitcoin.Base58Type.SECRET_KEY, new byte[] { (75 + 128) }) // GRV
                       .SetBase58Bytes(NBitcoin.Base58Type.ENCRYPTED_SECRET_KEY_NO_EC, new byte[] { 0x01, 0x42 })
                       .SetBase58Bytes(NBitcoin.Base58Type.ENCRYPTED_SECRET_KEY_EC, new byte[] { 0x01, 0x43 })
                       .SetBase58Bytes(NBitcoin.Base58Type.EXT_PUBLIC_KEY, new byte[] { (0x04), (0x88), (0xB2), (0x1E) })
                       .SetBase58Bytes(NBitcoin.Base58Type.EXT_SECRET_KEY, new byte[] { (0x04), (0x88), (0xAD), (0xE4) })
                       .SetBase58Bytes(NBitcoin.Base58Type.PASSPHRASE_CODE, new byte[] { 0x2C, 0xE9, 0xB3, 0xE1, 0xFF, 0x39, 0xE2 })
                       .SetBase58Bytes(NBitcoin.Base58Type.CONFIRMATION_CODE, new byte[] { 0x64, 0x3B, 0xF6, 0xA8, 0x9A })
                       .SetBase58Bytes(NBitcoin.Base58Type.STEALTH_ADDRESS, new byte[] { 0x2a })
                       .SetBase58Bytes(NBitcoin.Base58Type.ASSET_ID, new byte[] { 23 })
                       .SetBase58Bytes(NBitcoin.Base58Type.COLORED_ADDRESS, new byte[] { 0x13 })
                       .SetPort(0)
                       .SetRPCPort(0)
                       .SetName("grv-main")
                       .AddAlias("grv-mainnet")
                       .BuildAndRegister();
            return(_mainnet);
        }
Beispiel #7
0
        public Server(IResourceOwner resourceOwner, IPEndPoint externalEndpoint, NBitcoin.Network network)
        {
            _Server = new NodeServer(network, internalPort: externalEndpoint.Port);
            resourceOwner.OwnResource(_Server);

            NodeConnectionParameters nodeConnectionParameters = new NodeConnectionParameters();

            NBitcoin.Protocol.AddressManager addressManager = AddressManager.Instance.GetBitcoinAddressManager();             // new NBitcoin.Protocol.AddressManager ();

            var addressManagerBehavior = new AddressManagerBehavior(addressManager);

            //	addressManagerBehavior.Mode = hasExternal ? AddressManagerBehaviorMode.AdvertizeDiscover : AddressManagerBehaviorMode.Discover;
            nodeConnectionParameters.TemplateBehaviors.Add(addressManagerBehavior);

            _Server.InboundNodeConnectionParameters = nodeConnectionParameters;
            _Server.AllowLocalPeers  = true;            //TODO
            _Server.ExternalEndpoint = externalEndpoint;

            Trace.Information($"Server setup at {externalEndpoint}");
        }
Beispiel #8
0
 protected Builder(Network network)
 {
     _Network = network.ToNBitcoinNetwork();
 }
Beispiel #9
0
 public string ToString(NBitcoin.Network network)
 {
     return(Serializer.ToString(this, network));
 }
Beispiel #10
0
 protected Monitor(Network network)
 {
     _Network = network.ToNBitcoinNetwork();
 }
Beispiel #11
0
 protected Monitor(Network network)
 {
     _Network = Convert.ToNBitcoinNetwork(network);
 }
Beispiel #12
0
 protected Builder(Network network)
 {
     _Network = Convert.ToNBitcoinNetwork(network);
 }