Equity
Bitcoin Protocol Library
Address.h
1 #pragma once
2 
3 #include "crypto/Ripemd.h"
4 #include <array>
5 #include <cstdint>
6 #include <string>
7 #include <vector>
8 
9 namespace Equity
10 {
11 
12 class PublicKey;
13 
15 
16 class Address
17 {
18 public:
19 
21  static size_t const SIZE = Crypto::RIPEMD160_HASH_SIZE;
22 
23  // Constructor
26  explicit Address(std::string const & s);
27 
28  // Constructor
32  Address(uint8_t const * data, size_t size);
33 
34  // Constructor
37  explicit Address(Crypto::Ripemd160Hash const & k);
38 
39  // Constructor
42  explicit Address(PublicKey const & publicKey);
43 
45  std::array<uint8_t, SIZE> value() const { return value_; }
46 
48  bool valid() const { return valid_; }
49 
51  std::string toString(unsigned network) const;
52 
53 private:
54 
55  std::array<uint8_t, SIZE> value_;
56  bool valid_;
57 };
58 
59 } // namespace Equity
Definition: Configuration.cpp:3
size_t const RIPEMD160_HASH_SIZE
The sized of a RIPEMD-160 hash in bytes.
Definition: Ripemd.h:10
static size_t const SIZE
Number of bytes in the unencoded binary form.
Definition: Address.h:21
A Bitcoin address.
Definition: Address.h:16
std::string toString(unsigned network) const
Returns the address in Base58Check form.
Definition: Address.cpp:42
std::vector< uint8_t > PublicKey
An ECC public key.
Definition: Ecc.h:25
Address(std::string const &s)
Definition: Address.cpp:13
bool valid() const
Returns true if the address is valid.
Definition: Address.h:48
std::array< uint8_t, RIPEMD160_HASH_SIZE > Ripemd160Hash
A RIPEMD-160 hash.
Definition: Ripemd.h:11
std::array< uint8_t, SIZE > value() const
Returns the address in binary form.
Definition: Address.h:45
A Bitcoin public key.
Definition: PublicKey.h:17