namespace Novacoin
{
+ /// <summary>
+ /// Available address types
+ /// </summary>
public enum AddrType
{
PUBKEY_ADDRESS = 8,
SCRIPT_ADDRESS_TEST = 196
};
+ /// <summary>
+ /// Represents novacoin address
+ /// </summary>
public class CNovacoinAddress
{
private byte nVersion;
private List<byte> addrData;
+ /// <summary>
+ /// Initialize with custom data and version
+ /// </summary>
+ /// <param name="nVersionIn"></param>
+ /// <param name="addrDataIn"></param>
public CNovacoinAddress(byte nVersionIn, IEnumerable<byte> addrDataIn)
{
nVersion = nVersionIn;
addrData = addrDataIn.ToList();
}
+ /// <summary>
+ /// Initialize new instance of PUBKEY_ADDRESS
+ /// </summary>
+ /// <param name="keyID">CKeyID instance</param>
public CNovacoinAddress(CKeyID keyID)
{
nVersion = (byte)AddrType.PUBKEY_ADDRESS;
addrData = new List<byte>(keyID.hashBytes);
}
+ /// <summary>
+ /// Initialize new instance of SCRIPT_ADDRESS
+ /// </summary>
+ /// <param name="keyID">CScriptID instance</param>
public CNovacoinAddress(CScriptID scriptID)
{
nVersion = (byte)AddrType.SCRIPT_ADDRESS;
addrData = new List<byte>(scriptID.hashBytes);
}
+ /// <summary>
+ /// Basic sanity checking
+ /// </summary>
+ /// <returns></returns>
public bool IsValid()
{
+ // Address data is normally generated by RIPEMD-160 hash function
int nExpectedSize = 20;
switch ((AddrType) nVersion)
return addrData.Count == nExpectedSize;
}
+ /// <summary>
+ /// Generate base58 serialized representation of novacoin address
+ /// </summary>
+ /// <returns>Base58(data + checksum)</returns>
public override string ToString()
{
List<byte> r = new List<byte>();