Go to the documentation of this file.
   17 #ifndef USGOV_49e5fff0395fac385e48353d91ae777f7b0ba92baa74a883f127855ad412c9e0 
   18 #define USGOV_49e5fff0395fac385e48353d91ae777f7b0ba92baa74a883f127855ad412c9e0 
   24 #include <unordered_map> 
   25 #include <unordered_set> 
   42 namespace us { 
namespace gov {
 
  107                 struct m_t: map<string,string> {
 
  111                     void dump(
const string& prefix, ostream& os) 
const;
 
  123                 struct f_t final: map<hash_t,fileattr_t> {
 
  127                     void dump(
const string& prefix, ostream& os) 
const;
 
  145                 struct t_t final: map<hash_t,cash_t> {
 
  149                     void dump(
const string& prefix, 
const hash_t& addr, ostream& os) 
const;
 
  165                 bool store(
const string& key, 
const string& value);
 
  166                 bool store(
const string& path, 
const hash_t& key, 
const uint32_t& sz);
 
  190                 void dump(
const hash_t& addr, 
int detail, ostream& os) 
const;
 
  208             struct batch_t final: unordered_map<hash_t,batch_item> {
 
  221                 void dump(
int detail, ostream& os) 
const;
 
  279             void dump(
int detail, ostream& os) 
const;
 
  299             struct counters_t final {
 
  300                 uint32_t tx_rejected_bad_amounts{0};
 
  301                 uint32_t tx_rejected_state{0};
 
  302                 uint32_t tx_rejected_could_not_unlock_input{0};
 
  303                 uint32_t tx_rejected_locking_program_mismatch{0};
 
  304                 uint32_t tx_processed{0};
 
  305                 void dump(ostream&os) 
const;
 
  307             static counters_t counters;
 
  315         constexpr 
static const char* name={
"cash"};
 
  317         static bool unlock(
const hash_t& address, 
const hash_t& locking_program, 
const string& locking_program_input, 
const tx&);
 
  322         static constexpr 
int id() { 
return 30; }
 
  350         bool checksig(
const size_t& this_index, 
const string& locking_program_input, 
const tx&) 
const;
 
  352         int get_id()
 const override { 
return id(); }
 
  382     struct hash<
us::gov::cash::app::local_delta> {
 
  
 
cash_t max_subsidy
Definition: app.h:295
void dump(const string &prefix, ostream &os) const
void get_files(vector< pair< dfs::hash_t, safe_deposit_box::fileattr_t >> &v) const
void process_profit(cash_t &profit)
void add(const hash_t &address, const batch_item &bi)
bool process(const file_tx &)
void hash_data(crypto::ripemd160 &) const
static bool check_amounts(const tx &)
void hash_data_to_sign(crypto::ec::sigmsg_hasher_t &) const
static bool unlock(const hash_t &address, const hash_t &locking_program, const map_tx &t)
Definition: fileattr_t.h:28
cash_t cash_in_circulation() const
us::gov::dfs::fileattr_t fileattr_t
Definition: app.h:121
void from_stream_prev(istream &is)
void update_ledger(const delta &g, vector< pair< hash_t, uint32_t >> &old_files, vector< pair< hash_t, uint32_t >> &new_files)
hash_t file_hash(const hash_t &addr, const string &path) const
box_t box
Definition: app.h:204
void get_files(vector< pair< dfs::hash_t, fileattr_t >> &) const
int64_t cash_t
Definition: tx.h:47
void set_supply(const hash_t &token, const cash_t &supply)
void to_stream(ostream &os) const
void get_files(set< dfs::hash_t > &) const
void set_supply(const hash_t &token, const cash_t &supply)
cash_t input_eligible2(const hash_t &coin) const
hasher_t::value_type hash_t
Definition: app.h:55
void merge(const account_t &other)
int app_id() const override
bool pay(const hash_t &k, const cash_t &amount)
bool from_stream_prev(istream &is)
local_delta::box_t box_t
Definition: app.h:245
bool process(const tx &, const tx::section_t &, local_delta::batch_t &, cash_t &fee)
bool from_stream(istream &is)
virtual ~safe_deposit_box()
void hash_data(crypto::ripemd160 &) const override
void on_destroy(accounts_t &ledger)
local_delta(const local_delta &)
mutex mx_pool
Definition: app.h:371
void diff(const f_t &newer, vector< pair< hash_t, uint32_t >> &old_files, vector< pair< hash_t, uint32_t >> &new_files) const
safe_deposit_box(const cash_t &v)
engine::evidence evidence
Definition: app.h:57
void dump(const string &prefix, ostream &os) const
relay::peer_t peer_t
Definition: daemon.h:31
static accounts_t * from_stream_prev(istream &is)
engine::app::local_delta b
Definition: app.h:73
Definition: ripemd160.h:38
void list_files(const hash_t &addr, const string &path, ostream &os) const
keys::pub_t pubkey_t
Definition: app.h:53
engine::app::delta b
Definition: app.h:248
vector< pair< hash_t, uint32_t > > old_files
Definition: app.h:373
void from_stream(istream &is)
string get_name() const override
Definition: app.h:332
local_delta::safe_deposit_box::fileattr_t fileattr_t
Definition: app.h:312
safe_deposit_box box_t
Definition: app.h:183
void from_stream_prev(istream &)
void to_stream(ostream &os) const override
void get_files(const hash_t &a, vector< pair< hash_t, pair< dfs::hash_t, fileattr_t >>> &v) const
db_t db
Definition: app.h:369
local_delta::accounts_t accounts_t
Definition: app.h:311
void diff_files(const safe_deposit_box &newer, vector< pair< hash_t, uint32_t >> &old_files, vector< pair< hash_t, uint32_t >> &new_files) const
bool process(const ttx &)
void search_kv(peer_t *, datagram *)
datagram * get_datagram(uint16_t seq) const
void from_stream_prev(istream &is)
void list_files(const string &path, ostream &os) const
bool store(const string &key, const string &value)
f_t & operator=(const f_t &)=delete
void hash_data_to_sign(crypto::ec::sigmsg_hasher_t &) const
local_delta::account_t account_t
Definition: app.h:310
void on_destroy(accounts_t &ledger)
bool account_state(const local_delta::batch_t &batch, const hash_t &address, account_t &acc) const
void add(const hash_t &addr)
void dump(int detail, ostream &os) const
void hash_data(crypto::ripemd160 &) const
void save_db(ostream &) const override
bool from_stream_prev(istream &is)
void to_stream(ostream &os) const
Definition: datagram.h:44
static constexpr int id()
Definition: app.h:322
void get_files(vector< pair< dfs::hash_t, uint32_t >> &v) const
void hash_data_to_sign(crypto::ec::sigmsg_hasher_t &) const
tx::cash_t cash_t
Definition: app.h:56
local_delta::accounts_t accounts_t
Definition: app.h:271
void get_files(vector< pair< hash_t, fileattr_t >> &) const
static bool unlock(const hash_t &address, const hash_t &locking_program, const file_tx &t)
uint32_t total_mib() const
static query_accounts_t from_string(const string &)
bool process(const evidence &) override
void report_wallet(const tx &t, const string &feedback) const
safe_deposit_box & operator=(const safe_deposit_box &other)
hash_t file_hash(const string &path) const
void hash_data(crypto::ripemd160 &) const
void to_stream(ostream &os) const
safe_deposit_box(const safe_deposit_box &other)
cash_t maintenance_fee() const
mutex mx
Definition: app.h:293
hash_t compute_hash() const
engine::majority_merger< local_delta > * m
Definition: app.h:260
void merge(const m_t &other)
void tax_accounts(const cash_t &amount)
cash_t input_eligible(const hash_t &coin) const
void hash_data(crypto::ripemd160 &) const
bool add_(const hash_t &, const cash_t &amount)
void from_stream(istream &) override
void print_kv_b64(const hash_t &addr, ostream &os) const
bool withdraw(const hash_t &k, const cash_t &amount)
void to_stream(ostream &) const override
cash_t pay_services() const
void print_data(const hash_t &addr, ostream &os) const
bool load_db(istream &) override
static bool unlock(const hash_t &address, const hash_t &locking_program, const string &locking_program_input, const tx &)
m_t & operator=(const m_t &)=delete
void on_destroy(accounts_t &ledger)
void hash_data(crypto::ripemd160 &) const
account_t batch_item
Definition: app.h:206
static delta * from_stream_prev(istream &is)
void end_merge() override
ripemd160 hasher_t
Definition: app.h:54
Definition: ripemd160.h:34
void get_files(vector< pair< dfs::hash_t, uint32_t >> &v) const
void to_stream(ostream &os) const
cash_t get_value(const hash_t &token) const
cash_t value
Definition: app.h:105
void get_files(vector< pair< dfs::hash_t, uint32_t >> &) const
Definition: client.cpp:417
void pay_subsidy(const cash_t &amount, const engine::pow_t &w)
void from_stream(istream &is)
bool process_tx(peer_t *, datagram *)
cash_t charge(const cash_t &tax)
void print_data(const hash_t &addr, ostream &os) const
bool store(const string &path, const hash_t &key, const uint32_t &sz)
void get_files(const hash_t &a, vector< pair< hash_t, pair< dfs::hash_t, fileattr_t >>> &) const
crypto::ec::keys keys
Definition: app.h:52
void tax_accounts(const cash_t &amount)
size_t operator()(const us::gov::cash::app::local_delta &) const
bool burn(const hash_t &token, const cash_t &amount, cash_t &fee)
void print_data(const hash_t &addr, ostream &os) const
void dump(const hash_t &addr, int detail, ostream &os) const
bool process(const map_tx &)
bool withdraw_(const hash_t &k, const cash_t &amount)
void add(const hash_t &token, const cash_t &)
cash_t get_balance() const
hash_t file_hash(const hash_t &addr, const string &path) const
void dump(int detail, ostream &os) const
void from_stream(istream &)
delta(const delta &)=delete
accounts_t accounts
Definition: app.h:237
bool process_query(peer_t *, datagram *) override
void print_kv_b64(const hash_t &addr, ostream &os) const
void print_kv_b64(ostream &os) const
void get_files(set< dfs::hash_t > &v) const
void get_files(vector< pair< dfs::hash_t, fileattr_t >> &v) const
hash_t file_hash(const string &path) const
void get_files(set< hash_t > &) const
void hash_data_to_sign(crypto::ec::sigmsg_hasher_t &) const
void dump(ostream &os) const
void merge(const safe_deposit_box &other)
static const hash_t min_locking_program(10000)
void cash_query(peer_t *, datagram *)
bool from_stream(istream &is)
t_t & operator=(const t_t &)=delete
void add(const batch_t &batch)
void get_files(set< dfs::hash_t > &v) const
const hash_t & get_hash() const
void list_files(const string &path, ostream &os) const
void hash_data(crypto::ripemd160 &) const
static query_accounts_t from_datagram(datagram *)
static accounts_t * from_stream(istream &is)
void to_stream(ostream &) const
hash_t file_hash(const string &path) const
int get_id() const override
Definition: app.h:352
cash_t get_value(const hash_t &token) const
static delta * from_stream(istream &is)
Definition: evidence.h:31
void merge(const t_t &other)
bool process(const tx &, const tx::sections_t &, local_delta::batch_t &, cash_t &fee)
bool burn(const hash_t &token, const cash_t &)
local_delta::accounts_t accounts_t
Definition: app.h:249
local_delta g
Definition: app.h:259
void hash_data_to_sign(crypto::ec::sigmsg_hasher_t &) const override
hash_t locking_program
Definition: app.h:203
void from_stream(istream &is)
void dump(const string &prefix, const hash_t &addr, ostream &os) const
bool shell_command(istream &, ostream &) override
void list_files(const hash_t &addr, const string &path, ostream &os) const
engine::app::local_delta * create_local_delta() override
uint64_t merge(engine::app::local_delta *other0) override
static evidence * evidence_from_stream(uint8_t evid, istream &is)
void to_stream(ostream &os) const
static bool unlock(const hash_t &address, const hash_t &locking_program, const ttx &t)
account_t(const hash_t &locking_program, const box_t &)
bool checksig(const size_t &this_index, const string &locking_program_input, const tx &) const
db_t(const db_t &)=delete
void from_stream_prev(istream &is)
void get_files(vector< pair< hash_t, uint32_t >> &) const
void hash_data_to_sign(crypto::ec::sigmsg_hasher_t &) const
bool load_db_prev(istream &) override
void get_files(vector< pair< hash_t, pair< dfs::hash_t, safe_deposit_box::fileattr_t >>> &v) const
void from_stream_prev(istream &) override
void merge(const f_t &other)
void hash_data_to_sign(crypto::ec::sigmsg_hasher_t &) const
vector< pair< hash_t, uint32_t > > new_files
Definition: app.h:374
engine::app b
Definition: app.h:66
void file_hash(peer_t *c, datagram *d) const
void to_stream(ostream &os) const