Beispiel #1
0
        public void SetToP2SH_P2WPKH_CompTest()
        {
            RedeemScript scr = new RedeemScript();
            scr.SetToP2SH_P2WPKH(KeyHelper.Pub1, true);
            byte[] expected = Helper.HexToBytes($"0014{KeyHelper.Pub1CompHashHex}");

            Assert.Equal(expected, scr.Data);
        }
Beispiel #2
0
        public void SetToP2SH_P2WPKH_UnCompTest()
        {
            RedeemScript scr = new RedeemScript();
            // This is non-standard
            scr.SetToP2SH_P2WPKH(KeyHelper.Pub1, false);

            byte[] expected = Helper.HexToBytes($"0014{KeyHelper.Pub1UnCompHashHex}");

            Assert.Equal(expected, scr.Data);
        }
Beispiel #3
0
        /// <summary>
        /// Return the pay to witness public key hash address from the given <see cref="PublicKey"/>.
        /// </summary>
        /// <exception cref="ArgumentException"/>
        /// <exception cref="ArgumentNullException"/>
        /// <param name="pubk">Public key to use</param>
        /// <param name="witVer">Witness version to use</param>
        /// <param name="useCompressed">
        /// [Default value = true]
        /// Indicates wheter to use compressed or compressed public key to generate the address
        /// <para/> Note: using uncompressed public keys makes the output non-standard and can lead to money loss.
        /// </param>
        /// <param name="netType">[Default value = <see cref="NetworkType.MainNet"/>] Network type</param>
        /// <returns>The resulting address</returns>
        public string GetP2sh_P2wpkh(PublicKey pubk, byte witVer, bool useCompressed = true,
                                     NetworkType netType = NetworkType.MainNet)
        {
            if (pubk is null)
            {
                throw new ArgumentNullException(nameof(pubk), "Public key can not be null.");
            }
            if (witVer != 0)
            {
                throw new ArgumentException("Currently only address version 0 is defined for P2WPKH.", nameof(witVer));
            }
            if (netType != NetworkType.MainNet && netType != NetworkType.TestNet && netType != NetworkType.RegTest)
            {
                throw new ArgumentException(Err.InvalidNetwork);
            }

            RedeemScript rdm = new RedeemScript();

            rdm.SetToP2SH_P2WPKH(pubk, useCompressed);
            return(GetP2sh(rdm, netType));
        }
Beispiel #4
0
        public void SetToP2SH_P2WPKH_ExceptionTest()
        {
            RedeemScript scr = new RedeemScript();

            Assert.Throws <ArgumentNullException>(() => scr.SetToP2SH_P2WPKH(null, false));
        }