Scorum
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
account.hpp
Go to the documentation of this file.
1 #pragma once
2 
6 
7 namespace scorum {
8 namespace chain {
9 
11 {
14 
17 
20 
23 
25 };
26 
27 struct account_service_i : public base_service_i<account_object>
28 {
31 
32  virtual const account_object& get(const account_id_type&) const = 0;
33 
34  virtual const account_object& get_account(const account_name_type&) const = 0;
35 
36  virtual bool is_exists(const account_name_type&) const = 0;
37 
38  virtual const account_authority_object& get_account_authority(const account_name_type&) const = 0;
39 
41  const optional<const char*>& context_type_name
42  = optional<const char*>()) const = 0;
43 
45  const optional<const char*>& context_type_name
46  = optional<const char*>()) const = 0;
47 
48  virtual const account_object& create_initial_account(const account_name_type& new_account_name,
49  const public_key_type& memo_key,
50  const asset& balance_in_scorums,
51  const std::string& json_metadata)
52  = 0;
53 
54  virtual const account_object& create_account(const account_name_type& new_account_name,
55  const account_name_type& creator_name,
56  const public_key_type& memo_key,
57  const std::string& json_metadata,
58  const authority& owner,
59  const authority& active,
60  const authority& posting)
61  = 0;
62 
63  virtual const account_object& create_account(const account_name_type& new_account_name,
64  const account_name_type& creator_name,
65  const public_key_type& memo_key,
66  const std::string& json_metadata,
67  const authority& owner,
68  const authority& active,
69  const authority& posting,
70  const asset& fee_in_scorums)
71  = 0;
72 
73  virtual const account_object& create_account_with_delegation(const account_name_type& new_account_name,
74  const account_name_type& creator_name,
75  const public_key_type& memo_key,
76  const std::string& json_metadata,
77  const authority& owner,
78  const authority& active,
79  const authority& posting,
80  const asset& fee_in_scorums,
81  const asset& delegation_in_scorumpower)
82  = 0;
83 
84  virtual const account_object& create_account_with_bonus(const account_name_type& new_account_name,
85  const account_name_type& creator_name,
86  const public_key_type& memo_key,
87  const std::string& json_metadata,
88  const authority& owner,
89  const authority& active,
90  const authority& posting,
91  const asset& bonus)
92  = 0;
93 
94  virtual void update_acount(const account_object& account,
95  const account_authority_object& account_authority,
96  const public_key_type& memo_key,
97  const std::string& json_metadata,
98  const optional<authority>& owner,
99  const optional<authority>& active,
100  const optional<authority>& posting)
101  = 0;
102 
103  virtual void increase_balance(const account_object& account, const asset& amount) = 0;
104  virtual void increase_balance(account_name_type account_name, const asset& amount) = 0;
105  virtual void decrease_balance(const account_object& account, const asset& amount) = 0;
106 
107  virtual void increase_pending_balance(const account_object& account, const asset& amount) = 0;
108  virtual void decrease_pending_balance(const account_object& account, const asset& amount) = 0;
109 
110  virtual void increase_scorumpower(const account_object& account, const asset& amount) = 0;
111  virtual void decrease_scorumpower(const account_object& account, const asset& amount) = 0;
112 
113  virtual void increase_pending_scorumpower(const account_object& account, const asset& amount) = 0;
114  virtual void decrease_pending_scorumpower(const account_object& account, const asset& amount) = 0;
115 
116  virtual const asset create_scorumpower(const account_object& to_account, const asset& scorum) = 0;
117 
118  virtual void increase_delegated_scorumpower(const account_object& account, const asset& amount) = 0;
119 
120  virtual void increase_received_scorumpower(account_name_type account_name, const asset& amount) = 0;
121  virtual void increase_received_scorumpower(const account_object& account, const asset& amount) = 0;
122  virtual void decrease_received_scorumpower(account_name_type account_name, const asset& amount) = 0;
123  virtual void decrease_received_scorumpower(const account_object& account, const asset& amount) = 0;
124 
125  virtual void drop_challenged(const account_object& account) = 0;
126 
127  virtual void prove_authority(const account_object& account, bool require_owner) = 0;
128 
129  virtual void increase_witnesses_voted_for(const account_object& account) = 0;
130  virtual void decrease_witnesses_voted_for(const account_object& account) = 0;
131 
132  virtual void add_post(const account_object& author_account, const account_name_type& parent_author_name) = 0;
133 
134  virtual void update_voting_power(const account_object& account, uint16_t voting_power) = 0;
135 
136  virtual void update_active_sp_holders_cashout_time(const account_object& account) = 0;
137 
138  virtual void update_owner_authority(const account_object& account, const authority& owner_authority) = 0;
139 
140  virtual void create_account_recovery(const account_name_type& account_to_recover_name,
141  const authority& new_owner_authority)
142  = 0;
143 
144  virtual void submit_account_recovery(const account_object& account_to_recover,
145  const authority& new_owner_authority,
146  const authority& recent_owner_authority)
147  = 0;
148 
149  virtual void change_recovery_account(const account_object& account_to_recover,
150  const account_name_type& new_recovery_account)
151  = 0;
152 
153  virtual void update_voting_proxy(const account_object& account, const optional<account_object>& proxy_account) = 0;
154 
155  virtual void clear_witness_votes(const account_object& account) = 0;
156 
157  virtual void adjust_proxied_witness_votes(const account_object& account,
158  const std::array<share_type, SCORUM_MAX_PROXY_RECURSION_DEPTH + 1>& delta,
159  int depth = 0)
160  = 0;
161 
162  virtual void adjust_proxied_witness_votes(const account_object& account, const share_type& delta, int depth = 0)
163  = 0;
164 
166 
167  using account_refs_type = std::vector<cref_type>;
168 
170 
172 
173  virtual void foreach_account(account_call_type&&) const = 0;
174 
176 
177  virtual account_refs_type get_by_cashout_time(const fc::time_point_sec& until) const = 0;
178 };
179 
180 // DB operations with account_*** objects
181 //
182 class dbs_account : public dbs_service_base<account_service_i>
183 {
184  friend class dbservice_dbs_factory;
185 
186 public:
188 
191 
192  virtual const account_object& get(const account_id_type&) const override;
193 
194  virtual const account_object& get_account(const account_name_type&) const override;
195 
196  virtual bool is_exists(const account_name_type&) const override;
197 
198  virtual const account_authority_object& get_account_authority(const account_name_type&) const override;
199 
200  virtual void check_account_existence(const account_name_type&,
201  const optional<const char*>& context_type_name
202  = optional<const char*>()) const override;
203 
205  const optional<const char*>& context_type_name
206  = optional<const char*>()) const override;
207 
208  virtual const account_object& create_initial_account(const account_name_type& new_account_name,
209  const public_key_type& memo_key,
210  const asset& balance_in_scorums,
211  const std::string& json_metadata) override;
212 
213  const account_object& create_account(const account_name_type& new_account_name,
214  const account_name_type& creator_name,
215  const public_key_type& memo_key,
216  const std::string& json_metadata,
217  const authority& owner,
218  const authority& active,
219  const authority& posting) override;
220 
221  virtual const account_object& create_account(const account_name_type& new_account_name,
222  const account_name_type& creator_name,
223  const public_key_type& memo_key,
224  const std::string& json_metadata,
225  const authority& owner,
226  const authority& active,
227  const authority& posting,
228  const asset& fee_in_scorums) override;
229 
230  virtual const account_object& create_account_with_delegation(const account_name_type& new_account_name,
231  const account_name_type& creator_name,
232  const public_key_type& memo_key,
233  const std::string& json_metadata,
234  const authority& owner,
235  const authority& active,
236  const authority& posting,
237  const asset& fee_in_scorums,
238  const asset& delegation_in_scorumpower) override;
239 
240  virtual const account_object& create_account_with_bonus(const account_name_type& new_account_name,
241  const account_name_type& creator_name,
242  const public_key_type& memo_key,
243  const std::string& json_metadata,
244  const authority& owner,
245  const authority& active,
246  const authority& posting,
247  const asset& bonus) override;
248 
249  virtual void update_acount(const account_object& account,
250  const account_authority_object& account_authority,
251  const public_key_type& memo_key,
252  const std::string& json_metadata,
253  const optional<authority>& owner,
254  const optional<authority>& active,
255  const optional<authority>& posting) override;
256 
257  virtual void increase_balance(const account_object& account, const asset& amount) override;
258  virtual void increase_balance(account_name_type account_name, const asset& amount) override;
259  virtual void decrease_balance(const account_object& account, const asset& amount) override;
260 
261  virtual void increase_pending_balance(const account_object& account, const asset& amount) override;
262  virtual void decrease_pending_balance(const account_object& account, const asset& amount) override;
263 
264  virtual void increase_scorumpower(const account_object& account, const asset& amount) override;
265  virtual void decrease_scorumpower(const account_object& account, const asset& amount) override;
266 
267  virtual void increase_pending_scorumpower(const account_object& account, const asset& amount) override;
268  virtual void decrease_pending_scorumpower(const account_object& account, const asset& amount) override;
269 
270  virtual const asset create_scorumpower(const account_object& to_account, const asset& scorum) override;
271 
272  virtual void increase_delegated_scorumpower(const account_object& account, const asset& amount) override;
273 
274  virtual void increase_received_scorumpower(account_name_type account_name, const asset& amount) override;
275  virtual void increase_received_scorumpower(const account_object& account, const asset& amount) override;
276  virtual void decrease_received_scorumpower(account_name_type account_name, const asset& amount) override;
277  virtual void decrease_received_scorumpower(const account_object& account, const asset& amount) override;
278 
279  virtual void drop_challenged(const account_object& account) override;
280 
281  virtual void prove_authority(const account_object& account, bool require_owner) override;
282 
283  virtual void increase_witnesses_voted_for(const account_object& account) override;
284  virtual void decrease_witnesses_voted_for(const account_object& account) override;
285 
286  virtual void add_post(const account_object& author_account, const account_name_type& parent_author_name) override;
287 
288  virtual void update_voting_power(const account_object& account, uint16_t voting_power) override;
289 
290  virtual void update_active_sp_holders_cashout_time(const account_object& account) override;
291 
292  virtual void update_owner_authority(const account_object& account, const authority& owner_authority) override;
293 
294  virtual void create_account_recovery(const account_name_type& account_to_recover_name,
295  const authority& new_owner_authority) override;
296 
297  virtual void submit_account_recovery(const account_object& account_to_recover,
298  const authority& new_owner_authority,
299  const authority& recent_owner_authority) override;
300 
301  virtual void change_recovery_account(const account_object& account_to_recover,
302  const account_name_type& new_recovery_account) override;
303 
304  virtual void update_voting_proxy(const account_object& account,
305  const optional<account_object>& proxy_account) override;
306 
311  virtual void clear_witness_votes(const account_object& account) override;
312 
314  virtual void adjust_proxied_witness_votes(const account_object& account,
315  const std::array<share_type, SCORUM_MAX_PROXY_RECURSION_DEPTH + 1>& delta,
316  int depth = 0) override;
317 
319  virtual void
320  adjust_proxied_witness_votes(const account_object& account, const share_type& delta, int depth = 0) override;
321 
322  virtual account_refs_type get_active_sp_holders() const override;
323 
324  virtual void foreach_account(account_call_type&&) const override;
325 
326  virtual accounts_total accounts_circulating_capital() const override;
327 
328  virtual account_refs_type get_by_cashout_time(const fc::time_point_sec& until) const override;
329 
330 private:
332  witness_service_i& _witness_svc;
333 };
334 
335 } // namespace chain
336 } // namespace scorum
virtual account_refs_type get_by_cashout_time(const fc::time_point_sec &until) const override
Definition: account.cpp:687
virtual void add_post(const account_object &author_account, const account_name_type &parent_author_name) override
Definition: account.cpp:426
virtual void increase_delegated_scorumpower(const account_object &account, const asset &amount) override
Definition: account.cpp:359
virtual void increase_pending_scorumpower(const account_object &account, const asset &amount) override
Definition: account.cpp:333
virtual void update_owner_authority(const account_object &account, const authority &owner_authority) override
Definition: account.cpp:262
virtual void decrease_scorumpower(const account_object &account, const asset &amount) override
Definition: account.cpp:328
virtual const account_object & create_account_with_delegation(const account_name_type &new_account_name, const account_name_type &creator_name, const public_key_type &memo_key, const std::string &json_metadata, const authority &owner, const authority &active, const authority &posting, const asset &fee_in_scorums, const asset &delegation_in_scorumpower) override
Definition: account.cpp:159
virtual void increase_received_scorumpower(account_name_type account_name, const asset &amount) override
Definition: account.cpp:365
virtual const account_authority_object & get_account_authority(const account_name_type &) const override
Definition: account.cpp:47
virtual void foreach_account(account_call_type &&) const override
Definition: account.cpp:683
virtual void update_voting_power(const account_object &account, uint16_t voting_power) override
Definition: account.cpp:439
virtual const account_object & create_account_with_bonus(const account_name_type &new_account_name, const account_name_type &creator_name, const public_key_type &memo_key, const std::string &json_metadata, const authority &owner, const authority &active, const authority &posting, const asset &bonus) override
Definition: account.cpp:201
virtual void increase_balance(const account_object &account, const asset &amount) override
Definition: account.cpp:279
virtual account_refs_type get_active_sp_holders() const override
Definition: account.cpp:675
virtual void check_account_existence(const account_name_type &, const optional< const char * > &context_type_name=optional< const char * >()) const override
Definition: account.cpp:56
virtual void decrease_balance(const account_object &account, const asset &amount) override
Definition: account.cpp:297
virtual void decrease_pending_scorumpower(const account_object &account, const asset &amount) override
Definition: account.cpp:341
virtual void decrease_pending_balance(const account_object &account, const asset &amount) override
Definition: account.cpp:310
virtual void drop_challenged(const account_object &account) override
Definition: account.cpp:388
virtual void clear_witness_votes(const account_object &account) override
Definition: account.cpp:611
virtual void update_active_sp_holders_cashout_time(const account_object &account) override
Definition: account.cpp:457
virtual void update_acount(const account_object &account, const account_authority_object &account_authority, const public_key_type &memo_key, const std::string &json_metadata, const optional< authority > &owner, const optional< authority > &active, const optional< authority > &posting) override
Definition: account.cpp:223
virtual void increase_scorumpower(const account_object &account, const asset &amount) override
Definition: account.cpp:315
virtual void decrease_witnesses_voted_for(const account_object &account) override
Definition: account.cpp:421
virtual const account_object & create_initial_account(const account_name_type &new_account_name, const public_key_type &memo_key, const asset &balance_in_scorums, const std::string &json_metadata) override
Definition: account.cpp:79
virtual void change_recovery_account(const account_object &account_to_recover, const account_name_type &new_recovery_account) override
Definition: account.cpp:540
virtual void decrease_received_scorumpower(account_name_type account_name, const asset &amount) override
Definition: account.cpp:377
virtual void create_account_recovery(const account_name_type &account_to_recover_name, const authority &new_owner_authority) override
Definition: account.cpp:468
virtual const asset create_scorumpower(const account_object &to_account, const asset &scorum) override
Definition: account.cpp:346
dbs_account(dba::db_index &, dynamic_global_property_service_i &, witness_service_i &)
Definition: account.cpp:17
const account_object & create_account(const account_name_type &new_account_name, const account_name_type &creator_name, const public_key_type &memo_key, const std::string &json_metadata, const authority &owner, const authority &active, const authority &posting) override
Definition: account.cpp:104
virtual void submit_account_recovery(const account_object &account_to_recover, const authority &new_owner_authority, const authority &recent_owner_authority) override
Definition: account.cpp:507
virtual void increase_pending_balance(const account_object &account, const asset &amount) override
Definition: account.cpp:302
virtual void increase_witnesses_voted_for(const account_object &account) override
Definition: account.cpp:416
virtual void adjust_proxied_witness_votes(const account_object &account, const std::array< share_type, SCORUM_MAX_PROXY_RECURSION_DEPTH+1 > &delta, int depth=0) override
Definition: account.cpp:625
virtual void prove_authority(const account_object &account, bool require_owner) override
Definition: account.cpp:401
virtual const account_object & get_account(const account_name_type &) const override
Definition: account.cpp:33
virtual accounts_total accounts_circulating_capital() const override
Definition: account.cpp:697
virtual void update_voting_proxy(const account_object &account, const optional< account_object > &proxy_account) override
Definition: account.cpp:570
virtual const object_type & get() const override
#define SP_SYMBOL
Definition: config.hpp:104
#define SCORUM_SYMBOL
Definition: config.hpp:102
fc::safe< share_value_type > share_type
Definition: types.hpp:73
flat_map< account_name_type, authority_weight_type > account_authority_map
Definition: authority.hpp:8
fc::fixed_string_16 account_name_type
Definition: types.hpp:62
Definition: asset.cpp:15
virtual const account_object & create_account(const account_name_type &new_account_name, const account_name_type &creator_name, const public_key_type &memo_key, const std::string &json_metadata, const authority &owner, const authority &active, const authority &posting)=0
typename base_service_i::object_cref_type cref_type
Definition: account.hpp:165
virtual account_refs_type get_by_cashout_time(const fc::time_point_sec &until) const =0
virtual const asset create_scorumpower(const account_object &to_account, const asset &scorum)=0
virtual const account_object & get_account(const account_name_type &) const =0
virtual void increase_balance(const account_object &account, const asset &amount)=0
virtual void update_voting_power(const account_object &account, uint16_t voting_power)=0
virtual void update_voting_proxy(const account_object &account, const optional< account_object > &proxy_account)=0
virtual void update_owner_authority(const account_object &account, const authority &owner_authority)=0
virtual void update_acount(const account_object &account, const account_authority_object &account_authority, const public_key_type &memo_key, const std::string &json_metadata, const optional< authority > &owner, const optional< authority > &active, const optional< authority > &posting)=0
virtual const account_object & create_account_with_delegation(const account_name_type &new_account_name, const account_name_type &creator_name, const public_key_type &memo_key, const std::string &json_metadata, const authority &owner, const authority &active, const authority &posting, const asset &fee_in_scorums, const asset &delegation_in_scorumpower)=0
virtual bool is_exists(const account_name_type &) const =0
virtual void increase_pending_balance(const account_object &account, const asset &amount)=0
virtual void check_account_existence(const account_name_type &, const optional< const char * > &context_type_name=optional< const char * >()) const =0
virtual void increase_witnesses_voted_for(const account_object &account)=0
virtual void adjust_proxied_witness_votes(const account_object &account, const std::array< share_type, SCORUM_MAX_PROXY_RECURSION_DEPTH+1 > &delta, int depth=0)=0
virtual const account_object & create_account(const account_name_type &new_account_name, const account_name_type &creator_name, const public_key_type &memo_key, const std::string &json_metadata, const authority &owner, const authority &active, const authority &posting, const asset &fee_in_scorums)=0
virtual void foreach_account(account_call_type &&) const =0
virtual void decrease_witnesses_voted_for(const account_object &account)=0
virtual const account_object & create_initial_account(const account_name_type &new_account_name, const public_key_type &memo_key, const asset &balance_in_scorums, const std::string &json_metadata)=0
virtual void increase_received_scorumpower(account_name_type account_name, const asset &amount)=0
virtual void decrease_pending_balance(const account_object &account, const asset &amount)=0
virtual void submit_account_recovery(const account_object &account_to_recover, const authority &new_owner_authority, const authority &recent_owner_authority)=0
std::vector< cref_type > account_refs_type
Definition: account.hpp:167
virtual void clear_witness_votes(const account_object &account)=0
virtual void increase_pending_scorumpower(const account_object &account, const asset &amount)=0
virtual void decrease_received_scorumpower(account_name_type account_name, const asset &amount)=0
virtual void add_post(const account_object &author_account, const account_name_type &parent_author_name)=0
virtual void increase_scorumpower(const account_object &account, const asset &amount)=0
virtual const account_authority_object & get_account_authority(const account_name_type &) const =0
virtual accounts_total accounts_circulating_capital() const =0
virtual void prove_authority(const account_object &account, bool require_owner)=0
virtual void change_recovery_account(const account_object &account_to_recover, const account_name_type &new_recovery_account)=0
virtual void create_account_recovery(const account_name_type &account_to_recover_name, const authority &new_owner_authority)=0
virtual const account_object & get(const account_id_type &) const =0
virtual void decrease_scorumpower(const account_object &account, const asset &amount)=0
virtual void check_account_existence(const account_authority_map &, const optional< const char * > &context_type_name=optional< const char * >()) const =0
typename base_service_i::call_type account_call_type
Definition: account.hpp:171
virtual void increase_received_scorumpower(const account_object &account, const asset &amount)=0
virtual const account_object & create_account_with_bonus(const account_name_type &new_account_name, const account_name_type &creator_name, const public_key_type &memo_key, const std::string &json_metadata, const authority &owner, const authority &active, const authority &posting, const asset &bonus)=0
virtual void drop_challenged(const account_object &account)=0
virtual void increase_delegated_scorumpower(const account_object &account, const asset &amount)=0
virtual void increase_balance(account_name_type account_name, const asset &amount)=0
virtual void decrease_pending_scorumpower(const account_object &account, const asset &amount)=0
virtual void decrease_received_scorumpower(const account_object &account, const asset &amount)=0
virtual void adjust_proxied_witness_votes(const account_object &account, const share_type &delta, int depth=0)=0
virtual void update_active_sp_holders_cashout_time(const account_object &account)=0
virtual void decrease_balance(const account_object &account, const asset &amount)=0
virtual account_refs_type get_active_sp_holders() const =0
asset scr
sum of all SCR balances
Definition: account.hpp:13
asset pending_scr
sum of all pending SCR balances
Definition: account.hpp:19
asset pending_sp
sum of all pending SP balances
Definition: account.hpp:22
std::reference_wrapper< const object_type > object_cref_type
std::function< void(const object_type &)> call_type