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