Пример #1
0
        internal static Network Register(NetworkBuilder builder)
        {
            if (builder.Name == null)
            {
                throw new InvalidOperationException("A network name need to be provided");
            }

            if (GetNetwork(builder.Name) != null)
            {
                throw new InvalidOperationException("The network " + builder.Name + " is already registered");
            }

            Network network = new Network();

            network.Name                       = builder.Name;
            network.RootFolderName             = builder.RootFolderName;
            network.DefaultConfigFilename      = builder.DefaultConfigFilename;
            network.consensus                  = builder.Consensus;
            network.magic                      = builder.Magic;
            network.DefaultPort                = builder.Port;
            network.RPCPort                    = builder.RPCPort;
            network.genesis                    = builder.Genesis;
            network.consensus.HashGenesisBlock = network.genesis.GetHash();

            foreach (DNSSeedData seed in builder.Seeds)
            {
                network.seeds.Add(seed);
            }

            foreach (NetworkAddress seed in builder.FixedSeeds)
            {
                network.fixedSeeds.Add(seed);
            }

            network.base58Prefixes = Network.Main.base58Prefixes.ToArray();

            foreach (KeyValuePair <Base58Type, byte[]> kv in builder.Base58Prefixes)
            {
                network.base58Prefixes[(int)kv.Key] = kv.Value;
            }

            network.bech32Encoders = Network.Main.bech32Encoders.ToArray();

            foreach (KeyValuePair <Bech32Type, Bech32Encoder> kv in builder.Bech32Prefixes)
            {
                network.bech32Encoders[(int)kv.Key] = kv.Value;
            }

            foreach (string alias in builder.Aliases)
            {
                NetworksContainer.TryAdd(alias.ToLowerInvariant(), network);
            }

            NetworksContainer.TryAdd(network.Name.ToLowerInvariant(), network);

            network.MinTxFee      = builder.MinTxFee;
            network.FallbackFee   = builder.FallbackFee;
            network.MinRelayTxFee = builder.MinRelayTxFee;

            return(network);
        }
        private static Network InitStratisMain()
        {
            Block.BlockSignature  = true;
            Transaction.TimeStamp = true;

            var consensus = new Consensus();

            consensus.NetworkOptions = new NetworkOptions()
            {
                IsProofOfStake = true
            };
            consensus.GetPoWHash = (n, h) => Crypto.HashX13.Instance.Hash(h.ToBytes(options: n));

            consensus.SubsidyHalvingInterval      = 210000;
            consensus.MajorityEnforceBlockUpgrade = 750;
            consensus.MajorityRejectBlockOutdated = 950;
            consensus.MajorityWindow = 1000;
            consensus.BuriedDeployments[BuriedDeployments.BIP34] = 227931;
            consensus.BuriedDeployments[BuriedDeployments.BIP65] = 388381;
            consensus.BuriedDeployments[BuriedDeployments.BIP66] = 363725;
            consensus.BIP34Hash                     = new uint256("0x000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8");
            consensus.PowLimit                      = new Target(new uint256("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"));
            consensus.PowTargetTimespan             = TimeSpan.FromSeconds(14 * 24 * 60 * 60); // two weeks
            consensus.PowTargetSpacing              = TimeSpan.FromSeconds(10 * 60);
            consensus.PowAllowMinDifficultyBlocks   = false;
            consensus.PowNoRetargeting              = false;
            consensus.RuleChangeActivationThreshold = 1916; // 95% of 2016
            consensus.MinerConfirmationWindow       = 2016; // nPowTargetTimespan / nPowTargetSpacing

            consensus.BIP9Deployments[BIP9Deployments.TestDummy] = new BIP9DeploymentsParameters(28, 1199145601, 1230767999);
            consensus.BIP9Deployments[BIP9Deployments.CSV]       = new BIP9DeploymentsParameters(0, 1462060800, 1493596800);
            consensus.BIP9Deployments[BIP9Deployments.Segwit]    = new BIP9DeploymentsParameters(1, 0, 0);

            consensus.LastPOWBlock = 12500;

            consensus.ProofOfStakeLimit   = new BigInteger(uint256.Parse("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff").ToBytes(false));
            consensus.ProofOfStakeLimitV2 = new BigInteger(uint256.Parse("000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff").ToBytes(false));

            consensus.CoinType = 105;

            consensus.DefaultAssumeValid = new uint256("0x5acb513b96dcb727fbe85c7d50a1266e6414cdd4c3ae66d01313c34a81b466a2"); // 602240

            Block genesis = CreateStratisGenesisBlock(1470467000, 1831645, 0x1e0fffff, 1, Money.Zero);

            consensus.HashGenesisBlock = genesis.GetHash(consensus.NetworkOptions);

            // The message start string is designed to be unlikely to occur in normal data.
            // The characters are rarely used upper ASCII, not valid as UTF-8, and produce
            // a large 4-byte int at any alignment.
            var messageStart = new byte[4];

            messageStart[0] = 0x70;
            messageStart[1] = 0x35;
            messageStart[2] = 0x22;
            messageStart[3] = 0x05;
            var magic = BitConverter.ToUInt32(messageStart, 0); //0x5223570;

            Assert(consensus.HashGenesisBlock == uint256.Parse("0x0000066e91e46e5a264d42c89e1204963b2ee6be230b443e9159020539d972af"));
            Assert(genesis.Header.HashMerkleRoot == uint256.Parse("0x65a26bc20b0351aebf05829daefa8f7db2f800623439f3c114257c91447f1518"));

            var builder = new NetworkBuilder()
                          .SetName("StratisMain")
                          .SetConsensus(consensus)
                          .SetMagic(magic)
                          .SetGenesis(genesis)
                          .SetPort(16178)
                          .SetRPCPort(16174)
                          .SetTxFees(10000, 60000, 10000)

                          .AddDNSSeeds(new[]
            {
                new DNSSeedData("seednode1.stratisplatform.com", "seednode1.stratisplatform.com"),
                new DNSSeedData("seednode2.stratis.cloud", "seednode2.stratis.cloud"),
                new DNSSeedData("seednode3.stratisplatform.com", "seednode3.stratisplatform.com"),
                new DNSSeedData("seednode4.stratis.cloud", "seednode4.stratis.cloud")
            })

                          .SetBase58Bytes(Base58Type.PUBKEY_ADDRESS, new byte[] { (63) })
                          .SetBase58Bytes(Base58Type.SCRIPT_ADDRESS, new byte[] { (125) })
                          .SetBase58Bytes(Base58Type.SECRET_KEY, new byte[] { (63 + 128) })
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_NO_EC, new byte[] { 0x01, 0x42 })
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_EC, new byte[] { 0x01, 0x43 })
                          .SetBase58Bytes(Base58Type.EXT_PUBLIC_KEY, new byte[] { (0x04), (0x88), (0xB2), (0x1E) })
                          .SetBase58Bytes(Base58Type.EXT_SECRET_KEY, new byte[] { (0x04), (0x88), (0xAD), (0xE4) })
                          .SetBase58Bytes(Base58Type.PASSPHRASE_CODE, new byte[] { 0x2C, 0xE9, 0xB3, 0xE1, 0xFF, 0x39, 0xE2 })
                          .SetBase58Bytes(Base58Type.CONFIRMATION_CODE, new byte[] { 0x64, 0x3B, 0xF6, 0xA8, 0x9A })
                          .SetBase58Bytes(Base58Type.STEALTH_ADDRESS, new byte[] { 0x2a })
                          .SetBase58Bytes(Base58Type.ASSET_ID, new byte[] { 23 })
                          .SetBase58Bytes(Base58Type.COLORED_ADDRESS, new byte[] { 0x13 })
                          .SetBech32(Bech32Type.WITNESS_PUBKEY_ADDRESS, "bc")
                          .SetBech32(Bech32Type.WITNESS_SCRIPT_ADDRESS, "bc");

            var seed       = new[] { "101.200.198.155", "103.24.76.21", "104.172.24.79" };
            var fixedSeeds = new List <NetworkAddress>();
            // Convert the pnSeeds array into usable address objects.
            Random   rand    = new Random();
            TimeSpan oneWeek = TimeSpan.FromDays(7);

            for (int i = 0; i < seed.Length; i++)
            {
                // It'll only connect to one or two seed nodes because once it connects,
                // it'll get a pile of addresses with newer timestamps.
                NetworkAddress addr = new NetworkAddress();
                // Seed nodes are given a random 'last seen time' of between one and two
                // weeks ago.
                addr.Time     = DateTime.UtcNow - (TimeSpan.FromSeconds(rand.NextDouble() * oneWeek.TotalSeconds)) - oneWeek;
                addr.Endpoint = Utils.ParseIpEndpoint(seed[i], builder.Port);
                fixedSeeds.Add(addr);
            }

            builder.AddSeeds(fixedSeeds);
            return(builder.BuildAndRegister());
        }
Пример #3
0
        private static Network InitStratisTest()
        {
            Block.BlockSignature  = true;
            Transaction.TimeStamp = true;

            var consensus = Network.StratisMain.Consensus.Clone();

            consensus.PowLimit = new Target(uint256.Parse("0000ffff00000000000000000000000000000000000000000000000000000000"));

            // The message start string is designed to be unlikely to occur in normal data.
            // The characters are rarely used upper ASCII, not valid as UTF-8, and produce
            // a large 4-byte int at any alignment.
            var messageStart = new byte[4];

            messageStart[0] = 0x71;
            messageStart[1] = 0x31;
            messageStart[2] = 0x21;
            messageStart[3] = 0x11;
            var magic = BitConverter.ToUInt32(messageStart, 0); //0x5223570;

            var genesis = Network.StratisMain.GetGenesis();

            genesis.Header.Time        = 1493909211;
            genesis.Header.Nonce       = 2433759;
            genesis.Header.Bits        = consensus.PowLimit;
            consensus.HashGenesisBlock = genesis.GetHash(consensus.NetworkOptions);

            Assert(consensus.HashGenesisBlock == uint256.Parse("0x00000e246d7b73b88c9ab55f2e5e94d9e22d471def3df5ea448f5576b1d156b9"));

            consensus.DefaultAssumeValid = new uint256("0x12ae16993ce7f0836678f225b2f4b38154fa923bd1888f7490051ddaf4e9b7fa"); // 218810

            var builder = new NetworkBuilder()
                          .SetName("StratisTest")
                          .SetRootFolderName(StratisRootFolderName)
                          .SetDefaultConfigFilename(StratisDefaultConfigFilename)
                          .SetConsensus(consensus)
                          .SetMagic(magic)
                          .SetGenesis(genesis)
                          .SetPort(26178)
                          .SetRPCPort(26174)
                          .SetMaxTimeOffsetSeconds(StratisMaxTimeOffsetSeconds)
                          .SetMaxTipAge(StratisDefaultMaxTipAgeInSeconds)
                          .SetTxFees(10000, 60000, 10000)
                          .SetBase58Bytes(Base58Type.PUBKEY_ADDRESS, new byte[] { (65) })
                          .SetBase58Bytes(Base58Type.SCRIPT_ADDRESS, new byte[] { (196) })
                          .SetBase58Bytes(Base58Type.SECRET_KEY, new byte[] { (65 + 128) })
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_NO_EC, new byte[] { 0x01, 0x42 })
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_EC, new byte[] { 0x01, 0x43 })
                          .SetBase58Bytes(Base58Type.EXT_PUBLIC_KEY, new byte[] { (0x04), (0x88), (0xB2), (0x1E) })
                          .SetBase58Bytes(Base58Type.EXT_SECRET_KEY, new byte[] { (0x04), (0x88), (0xAD), (0xE4) })

                          .AddDNSSeeds(new[]
            {
                new DNSSeedData("testnet1.stratisplatform.com", "testnet1.stratisplatform.com"),
                new DNSSeedData("testnet2.stratisplatform.com", "testnet2.stratisplatform.com"),
                new DNSSeedData("testnet3.stratisplatform.com", "testnet3.stratisplatform.com"),
                new DNSSeedData("testnet4.stratisplatform.com", "testnet4.stratisplatform.com")
            });

            builder.AddSeeds(new[]
            {
                new NetworkAddress(IPAddress.Parse("51.140.231.125"), builder.Port), // danger cloud node
                new NetworkAddress(IPAddress.Parse("13.70.81.5"), 3389),             // beard cloud node
                new NetworkAddress(IPAddress.Parse("191.235.85.131"), 3389),         // fassa cloud node
                new NetworkAddress(IPAddress.Parse("52.232.58.52"), 26178),          // neurosploit public node
            });

            return(builder.BuildAndRegister());
        }
Пример #4
0
        private static Network InitStratisMain()
        {
            Block.BlockSignature  = true;
            Transaction.TimeStamp = true;

            var consensus = new Consensus();

            consensus.SubsidyHalvingInterval      = 210000;
            consensus.MajorityEnforceBlockUpgrade = 750;
            consensus.MajorityRejectBlockOutdated = 950;
            consensus.MajorityWindow = 1000;
            consensus.BuriedDeployments[BuriedDeployments.BIP34] = 227931;
            consensus.BuriedDeployments[BuriedDeployments.BIP65] = 388381;
            consensus.BuriedDeployments[BuriedDeployments.BIP66] = 363725;
            consensus.BIP34Hash                     = new uint256("0x000000000000024b89b42a942fe0d9fea3bb44ab7bd1b19115dd6a759c0808b8");
            consensus.PowLimit                      = new Target(new uint256("000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff")); // ODN
            consensus.PowTargetTimespan             = TimeSpan.FromSeconds(14 * 24 * 60 * 60);                                                     // two weeks
            consensus.PowTargetSpacing              = TimeSpan.FromSeconds(10 * 60);
            consensus.PowAllowMinDifficultyBlocks   = false;
            consensus.PowNoRetargeting              = false;
            consensus.RuleChangeActivationThreshold = 1916; // 95% of 2016
            consensus.MinerConfirmationWindow       = 2016; // nPowTargetTimespan / nPowTargetSpacing

            consensus.BIP9Deployments[BIP9Deployments.TestDummy] = new BIP9DeploymentsParameters(28, 1199145601, 1230767999);
            consensus.BIP9Deployments[BIP9Deployments.CSV]       = new BIP9DeploymentsParameters(0, 1462060800, 1493596800);
            consensus.BIP9Deployments[BIP9Deployments.Segwit]    = new BIP9DeploymentsParameters(1, 0, 0);

            consensus.LastPOWBlock = 12500;

            consensus.ProofOfStakeLimit   = new BigInteger(uint256.Parse("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff").ToBytes(false));
            consensus.ProofOfStakeLimitV2 = new BigInteger(uint256.Parse("000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff").ToBytes(false));

            consensus.CoinType = 105;

            var genesis = CreateStratisGenesisBlock(1503532800, 36151509, consensus.PowLimit.ToCompact(), 1, Money.Zero);             // ODN

            consensus.HashGenesisBlock = genesis.GetHash();

            var pchMessageStart = new byte[4];             // ODN

            pchMessageStart[0] = 0x4f;
            pchMessageStart[1] = 0x64;
            pchMessageStart[2] = 0x6e;
            pchMessageStart[3] = 0x31;
            var magic = BitConverter.ToUInt32(pchMessageStart, 0);

            assert(consensus.HashGenesisBlock == uint256.Parse("0x0000006dd8a92f58e952fa61c9402b74a381a69d1930fb5cc12c73273fab5f0a"));             // ODN
            assert(genesis.Header.HashMerkleRoot == uint256.Parse("0x062e0ef40ca83213f645710bf497cc68220d42ac2254d31bbc8fb64a4d207209"));          // ODN

            var builder = new NetworkBuilder()
                          .SetName("StratisMain")
                          .SetConsensus(consensus)
                          .SetMagic(magic)
                          .SetGenesis(genesis)
                          .SetPort(56660)       // ODN
                          .SetRPCPort(56661)    // ODN
                          .SetTxFees(10000, 60000, 10000)
#if !NOSOCKET
                          .AddDNSSeeds(new[]
            {
                new DNSSeedData("obsidianblockchain1.westeurope.cloudapp.azure.com", "obsidianblockchain1.westeurope.cloudapp.azure.com"),
                new DNSSeedData("obsidianblockchain2.westeurope.cloudapp.azure.com", "obsidianblockchain2.westeurope.cloudapp.azure.com"),
                new DNSSeedData("obsidianseednode1.westeurope.cloudapp.azure.com", "obsidianseednode1.westeurope.cloudapp.azure.com")
            })
#endif

                                                                                            //vAlertPubKey = Encoders.Hex.DecodeData("0486bce1bac0d543f104cbff2bd23680056a3b9ea05e1137d2ff90eeb5e08472eb500322593a2cb06fbf8297d7beb6cd30cb90f98153b5b7cce1493749e41e0284");

                          .SetBase58Bytes(Base58Type.PUBKEY_ADDRESS, new byte[] { (75) })   // ODN
                          .SetBase58Bytes(Base58Type.SCRIPT_ADDRESS, new byte[] { (125) })
                          .SetBase58Bytes(Base58Type.SECRET_KEY, new byte[] { (75 + 128) }) // ODN
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_NO_EC, new byte[] { 0x01, 0x42 })
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_EC, new byte[] { 0x01, 0x43 })
                          .SetBase58Bytes(Base58Type.EXT_PUBLIC_KEY, new byte[] { (0x04), (0x88), (0xC2), (0x1E) })       // ODN
                          .SetBase58Bytes(Base58Type.EXT_SECRET_KEY, new byte[] { (0x04), (0x88), (0xB2), (0xDD) })       // ODN
                          .SetBase58Bytes(Base58Type.PASSPHRASE_CODE, new byte[] { 0x2C, 0xE9, 0xB3, 0xE1, 0xFF, 0x39, 0xE2 })
                          .SetBase58Bytes(Base58Type.CONFIRMATION_CODE, new byte[] { 0x64, 0x3B, 0xF6, 0xA8, 0x9A })
                          .SetBase58Bytes(Base58Type.STEALTH_ADDRESS, new byte[] { 0x2a })
                          .SetBase58Bytes(Base58Type.ASSET_ID, new byte[] { 23 })
                          .SetBase58Bytes(Base58Type.COLORED_ADDRESS, new byte[] { 0x13 })
                          .SetBech32(Bech32Type.WITNESS_PUBKEY_ADDRESS, "bc")
                          .SetBech32(Bech32Type.WITNESS_SCRIPT_ADDRESS, "bc");

#if !NOSOCKET
            var seed        = new[] { "138.68.191.239", "104.131.9.93", "139.59.173.104" };      // ODN
            var vFixedSeeds = new List <NetworkAddress>();
            // Convert the pnSeeds array into usable address objects.
            Random   rand     = new Random();
            TimeSpan nOneWeek = TimeSpan.FromDays(7);
            for (int i = 0; i < seed.Length; i++)
            {
                // It'll only connect to one or two seed nodes because once it connects,
                // it'll get a pile of addresses with newer timestamps.
                NetworkAddress addr = new NetworkAddress();
                // Seed nodes are given a random 'last seen time' of between one and two
                // weeks ago.
                addr.Time     = DateTime.UtcNow - (TimeSpan.FromSeconds(rand.NextDouble() * nOneWeek.TotalSeconds)) - nOneWeek;
                addr.Endpoint = Utils.ParseIpEndpoint(seed[i], builder._Port);
                vFixedSeeds.Add(addr);
            }

            builder.AddSeeds(vFixedSeeds);
#endif
            return(builder.BuildAndRegister());
        }
Пример #5
0
        private static Network InitPurpleMain()
        {
            Block.BlockSignature  = true;
            Transaction.TimeStamp = true;

            var consensus = new Consensus();

            consensus.NetworkOptions = new NetworkOptions()
            {
                IsProofOfStake = true
            };

            consensus.GetPoWHash = (n, h) => Crypto.CryptoNight.Instance.Hash(h.ToBytes(options: n));

            consensus.SubsidyHalvingInterval      = 262800;
            consensus.MajorityEnforceBlockUpgrade = 750;
            consensus.MajorityRejectBlockOutdated = 950;
            consensus.MajorityWindow = 1000;
            consensus.BuriedDeployments[BuriedDeployments.BIP34] = 0;
            consensus.BuriedDeployments[BuriedDeployments.BIP65] = 0;
            consensus.BuriedDeployments[BuriedDeployments.BIP66] = 0;
            consensus.BIP34Hash                     = new uint256("0x00000301683c2faabee07661d29ad2d873b5274464fcea1f300912467d53ac1d");
            consensus.PowLimit                      = new Target(new uint256("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"));
            consensus.PowTargetTimespan             = TimeSpan.FromSeconds(24 * 60 * 60); // 1 day
            consensus.PowTargetSpacing              = TimeSpan.FromSeconds(2 * 60);       // 2 minutes
            consensus.PowAllowMinDifficultyBlocks   = false;
            consensus.PowNoRetargeting              = false;
            consensus.RuleChangeActivationThreshold = 684; // 95% of 720
            consensus.MinerConfirmationWindow       = 720; // nPowTargetTimespan / nPowTargetSpacing

            consensus.BIP9Deployments[BIP9Deployments.TestDummy] = new BIP9DeploymentsParameters(28, 0, 0);
            consensus.BIP9Deployments[BIP9Deployments.CSV]       = new BIP9DeploymentsParameters(0, 0, 0);
            consensus.BIP9Deployments[BIP9Deployments.Segwit]    = new BIP9DeploymentsParameters(1, 0, 0);

            consensus.LastPOWBlock = 1324000;

            consensus.ProofOfStakeLimit   = new BigInteger(uint256.Parse("00000fffffffffffffffffffffffffffffffffffffffffffffffffffffffffff").ToBytes(false));
            consensus.ProofOfStakeLimitV2 = new BigInteger(uint256.Parse("000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffff").ToBytes(false));

            consensus.CoinType = 174;

            consensus.DefaultAssumeValid = new uint256("0x00000301683c2faabee07661d29ad2d873b5274464fcea1f300912467d53ac1d");

            Block genesis = CreateGenesisBlock(1515944103, 51454, consensus.PowLimit, 1, Money.Zero);

            consensus.HashGenesisBlock = genesis.GetHash(consensus.NetworkOptions);

            Assert(consensus.HashGenesisBlock == uint256.Parse("0x00000301683c2faabee07661d29ad2d873b5274464fcea1f300912467d53ac1d"));
            Assert(genesis.Header.HashMerkleRoot == uint256.Parse("0xe0c01fb7ea26f7de5cc362056b01fd8de036c1a166d355e6f07bbf2dfab1c4ee"));

            var messageStart = new byte[4];

            messageStart[0] = 0x11;
            messageStart[1] = 0x10;
            messageStart[2] = 0x19;
            messageStart[3] = 0x07;
            var magic = BitConverter.ToUInt32(messageStart, 0);

            var builder = new NetworkBuilder()
                          .SetName("PurpleMain")
                          .SetConsensus(consensus)
                          .SetMagic(magic)
                          .SetGenesis(genesis)
                          .SetPort(16178)
                          .SetRPCPort(16174)
                          .SetTxFees(10000, 60000, 10000)

                          //.AddDNSSeeds(new[]
                          //{
                          //})

                          .SetBase58Bytes(Base58Type.PUBKEY_ADDRESS, new byte[] { (51) })
                          .SetBase58Bytes(Base58Type.SCRIPT_ADDRESS, new byte[] { (125) })
                          .SetBase58Bytes(Base58Type.SECRET_KEY, new byte[] { (63 + 128) })
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_NO_EC, new byte[] { 0x01, 0x42 })
                          .SetBase58Bytes(Base58Type.ENCRYPTED_SECRET_KEY_EC, new byte[] { 0x01, 0x43 })
                          .SetBase58Bytes(Base58Type.EXT_PUBLIC_KEY, new byte[] { (0x04), (0x88), (0xB2), (0x1E) })
                          .SetBase58Bytes(Base58Type.EXT_SECRET_KEY, new byte[] { (0x04), (0x88), (0xAD), (0xE4) })
                          .SetBase58Bytes(Base58Type.PASSPHRASE_CODE, new byte[] { 0x2C, 0xE9, 0xB3, 0xE1, 0xFF, 0x39, 0xE2 })
                          .SetBase58Bytes(Base58Type.CONFIRMATION_CODE, new byte[] { 0x64, 0x3B, 0xF6, 0xA8, 0x9A })
                          .SetBase58Bytes(Base58Type.STEALTH_ADDRESS, new byte[] { 0x2a })
                          .SetBase58Bytes(Base58Type.ASSET_ID, new byte[] { 23 })
                          .SetBase58Bytes(Base58Type.COLORED_ADDRESS, new byte[] { 0x13 })
                          .SetBech32(Bech32Type.WITNESS_PUBKEY_ADDRESS, "bc")
                          .SetBech32(Bech32Type.WITNESS_SCRIPT_ADDRESS, "bc");

            //var seed = new[] { "" };
            //var fixedSeeds = new List<NetworkAddress>();
            //// Convert the pnSeeds array into usable address objects.
            //Random rand = new Random();
            //TimeSpan oneWeek = TimeSpan.FromDays(7);
            //for (int i = 0; i < seed.Length; i++)
            //{
            //    // It'll only connect to one or two seed nodes because once it connects,
            //    // it'll get a pile of addresses with newer timestamps.
            //    NetworkAddress addr = new NetworkAddress();
            //    // Seed nodes are given a random 'last seen time' of between one and two
            //    // weeks ago.
            //    addr.Time = DateTime.UtcNow - (TimeSpan.FromSeconds(rand.NextDouble() * oneWeek.TotalSeconds)) - oneWeek;
            //    addr.Endpoint = Utils.ParseIpEndpoint(seed[i], builder.Port);
            //    fixedSeeds.Add(addr);
            //}

            //builder.AddSeeds(fixedSeeds);
            return(builder.BuildAndRegister());
        }