private IPubkeyScript BuildPubkeyScript(string address) { Address addr = new Address(); if (!addr.TryGetType(address, out PubkeyScriptType scrType, out byte[] hash)) { throw new FormatException(); } PubkeyScript scr = new PubkeyScript(); switch (scrType) { case PubkeyScriptType.P2PKH: scr.SetToP2PKH(hash); break; case PubkeyScriptType.P2SH: scr.SetToP2SH(hash); break; case PubkeyScriptType.P2WPKH: scr.SetToP2WPKH(hash); break; case PubkeyScriptType.P2WSH: scr.SetToP2WSH(hash); break; default: throw new NotImplementedException(); } return(scr); }
public void SetToP2SH_FromAddressTest() { PubkeyScript scr = new PubkeyScript(); scr.SetToP2SH("3FuPMWfen385RLwbMsZEVhx9QsHyR6zEmv"); byte[] expected = Helper.HexToBytes($"a9149be8a44c3ef40c1eeab2d487ecd2ef7c7cd9ce5587"); Assert.Equal(expected, scr.Data); }
public void SetToP2SH_FromBytesTest() { PubkeyScript scr = new PubkeyScript(); scr.SetToP2SH(Helper.GetBytes(20)); byte[] expected = Helper.HexToBytes($"a914{Helper.GetBytesHex(20)}87"); Assert.Equal(expected, scr.Data); }
public void SetToP2SH_FromScriptTest() { PubkeyScript scr = new PubkeyScript(); var redeem = new MockSerializableRedeemScript(new byte[] { 1, 2, 3 }, 255); scr.SetToP2SH(redeem); byte[] expected = Helper.HexToBytes($"a9149bc4860bb936abf262d7a51f74b4304833fee3b287"); Assert.Equal(expected, scr.Data); }
public void SetToP2SH_ExceptionTest() { PubkeyScript scr = new PubkeyScript(); byte[] nba = null; RedeemScript nscr = null; string naddr = null; Assert.Throws <ArgumentNullException>(() => scr.SetToP2SH(nba)); Assert.Throws <ArgumentOutOfRangeException>(() => scr.SetToP2SH(new byte[19])); Assert.Throws <ArgumentNullException>(() => scr.SetToP2SH(nscr)); Assert.Throws <ArgumentNullException>(() => scr.SetToP2SH(naddr)); Assert.Throws <ArgumentNullException>(() => scr.SetToP2SH("")); Assert.Throws <FormatException>(() => scr.SetToP2SH("$")); Assert.Throws <FormatException>(() => scr.SetToP2SH(KeyHelper.Pub1CompAddr)); }
public override bool SetOperations() { Errors = null; if (string.IsNullOrEmpty(Address)) { Errors = "Address can not be empty."; return(false); } else if (addrManager.TryGetType(Address, out PubkeyScriptType scrType, out byte[] hash)) { PubkeyScript scr = new PubkeyScript(); switch (scrType) { case PubkeyScriptType.P2PKH: scr.SetToP2PKH(hash); break; case PubkeyScriptType.P2SH: scr.SetToP2SH(hash); break; case PubkeyScriptType.P2WPKH: scr.SetToP2WPKH(hash); break; case PubkeyScriptType.P2WSH: scr.SetToP2WSH(hash); break; default: Errors = "Undefined script type."; // This should never happen. return(false); } OpsToAdd = scr.OperationList; return(true); }