2 using System.Collections.Generic;
5 using System.Threading.Tasks;
13 PUBKEY_ADDRESS_TEST = 111,
14 SCRIPT_ADDRESS_TEST = 196
17 public class CNovacoinAddress
19 private byte nVersion;
20 private List<byte> addrData;
22 public CNovacoinAddress(byte nVersionIn, IEnumerable<byte> addrDataIn)
24 nVersion = nVersionIn;
25 addrData = addrDataIn.ToList();
28 public CNovacoinAddress(CKeyID keyID)
30 nVersion = (byte)AddrType.PUBKEY_ADDRESS;
31 addrData = new List<byte>(keyID.hashBytes);
34 public CNovacoinAddress(CScriptID scriptID)
36 nVersion = (byte)AddrType.SCRIPT_ADDRESS;
37 addrData = new List<byte>(scriptID.hashBytes);
40 public static byte[] ConcatAddress(byte[] RipeHash, byte[] Checksum)
42 byte[] ret = new byte[RipeHash.Length + 4];
43 Array.Copy(RipeHash, ret, RipeHash.Length);
44 Array.Copy(Checksum, 0, ret, RipeHash.Length, 4);
50 int nExpectedSize = 20;
52 switch ((AddrType) nVersion)
54 case AddrType.PUBKEY_ADDRESS:
55 nExpectedSize = 20; // Hash of public key
57 case AddrType.SCRIPT_ADDRESS:
58 nExpectedSize = 20; // Hash of CScript
60 case AddrType.PUBKEY_ADDRESS_TEST:
63 case AddrType.SCRIPT_ADDRESS_TEST:
70 return addrData.Count == nExpectedSize;
73 public override string ToString()
75 List<byte> r = new List<byte>();
77 byte[] checkSum = Hash256.Compute256(addrData).hashBytes;
78 Array.Resize(ref checkSum, 4);
84 return AddressTools.Base58Encode(r.ToArray());