public static string GenerateAddress(Types.Script script, string prefix) { List <int> data = new List <int>(); int? shortId = null; if (script.CodeHash == SecpCodeHash && script.HashType == SecpHashType) { shortId = SecpShortId; } else if (script.CodeHash == MultisigCodeHash && script.HashType == MultisigHashType) { shortId = MultisigShortId; } if (shortId != null) { data.Add(1); data.Add((int)shortId); foreach (byte c in Types.Convert.HexStringToBytes(script.Args)) { data.Add(Convert.ToInt32(c)); } } else { data.Add(script.HashType == "type" ? 4 : 2); foreach (byte c in Types.Convert.HexStringToBytes(script.CodeHash)) { data.Add(Convert.ToInt32(c)); } foreach (byte c in Types.Convert.HexStringToBytes(script.Args)) { data.Add(Convert.ToInt32(c)); } } string addr = ConvertAddress.Encode(prefix, data.ToArray()); return(addr); }