示例#1
0
        public void SetToP2SH_P2WSHTest()
        {
            RedeemScript scr = new RedeemScript();
            MockSerializableScript mockScr = new MockSerializableScript(new byte[] { 1, 2, 3 }, 255);
            scr.SetToP2SH_P2WSH(mockScr);
            byte[] expected = Helper.HexToBytes("0020039058c6f2c0cb492c533b0a4d14ef77cc0f78abccced5287d84a1a2011cfb81");

            Assert.Equal(expected, scr.Data);
        }
示例#2
0
        /// <summary>
        /// Return the pay to witness script hash wrapped in a pay to script hash address from the given <see cref="IScript"/>.
        /// </summary>
        /// <exception cref="ArgumentException"/>
        /// <exception cref="ArgumentNullException"/>
        /// <param name="script">Public key to use</param>
        /// <param name="witVer">Witness version to use</param>
        /// <param name="netType">[Default value = <see cref="NetworkType.MainNet"/>] Network type</param>
        /// <returns>The resulting address</returns>
        public string GetP2sh_P2wsh(IScript script, byte witVer, NetworkType netType = NetworkType.MainNet)
        {
            if (script is null)
            {
                throw new ArgumentNullException(nameof(script), "Script can not be null.");
            }
            if (witVer != 0)
            {
                throw new ArgumentException("Currently only address version 0 is defined for P2WSH-P2SH.", nameof(witVer));
            }
            if (netType != NetworkType.MainNet && netType != NetworkType.TestNet && netType != NetworkType.RegTest)
            {
                throw new ArgumentException(Err.InvalidNetwork);
            }

            RedeemScript rdm = new RedeemScript();

            rdm.SetToP2SH_P2WSH(script);
            return(GetP2sh(rdm, netType));
        }
示例#3
0
        public void SetToP2SH_P2WSH_ExceptionTest()
        {
            RedeemScript scr = new RedeemScript();

            Assert.Throws <ArgumentNullException>(() => scr.SetToP2SH_P2WSH(null));
        }