예제 #1
0
        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);
        }