예제 #1
0
        /// <summary>
        /// The resolve.
        /// </summary>
        public static bool PopulateCoinParameters(CoinParameters param)
        {
            // places to look for the network parameters
            // https://github.com/bitcoin/bitcoin/blob/d612837814020ae832499d18e6ee5eb919a87907/src/chainparams.cpp
            // https://github.com/CrypticApplications/MTR-Update/blob/master/src/base58.h
            // example MTR => private key prefix is [128 + CBitcoinAddress::PUBKEY_ADDRESS]

            List <int> vals;

            if (Params.TryGetValue(param.CoinTag, out vals))
            {
                param.PublicKeyAddressVersion = vals.ElementAt(0);
                param.ScriptAddressVersion    = vals.ElementAt(1);
                param.ExtendedKeyIndex        = vals.ElementAt(2);
                param.PrivateKeyVersion       = vals.ElementAt(3);

                Thrower.If(param.PrivateKeyVersion == -1).Throw <AddressException>();
                Thrower.If(param.ExtendedKeyIndex == -1).Throw <AddressException>();
                Thrower.If(param.PublicKeyAddressVersion == -1).Throw <AddressException>();

                return(true);
            }

            return(false);
        }
예제 #2
0
        /// <summary>
        /// The resolve.
        /// </summary>
        public static CoinParameters TryCreateCoinParameters(string coinTag)
        {
            var coinParameters = new CoinParameters {
                CoinTag = coinTag
            };

            if (AddressUtil.PopulateCoinParameters(coinParameters))
            {
                return(coinParameters);
            }
            return(null);
        }