BitShares-Core  7.0.2
BitShares blockchain node software and command-line wallet software
asset_evaluator.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2015 Cryptonomex, Inc., and contributors.
3  *
4  * The MIT License
5  *
6  * Permission is hereby granted, free of charge, to any person obtaining a copy
7  * of this software and associated documentation files (the "Software"), to deal
8  * in the Software without restriction, including without limitation the rights
9  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10  * copies of the Software, and to permit persons to whom the Software is
11  * furnished to do so, subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be included in
14  * all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22  * THE SOFTWARE.
23  */
24 #pragma once
28 
29 #include <graphene/chain/hardfork.hpp>
30 #include <locale>
31 
32 namespace graphene { namespace chain {
33 
34  class asset_create_evaluator : public evaluator<asset_create_evaluator>
35  {
36  public:
38 
41 
45  void pay_fee() override;
46  private:
47  bool fee_is_odd;
48  };
49 
50  class asset_issue_evaluator : public evaluator<asset_issue_evaluator>
51  {
52  public:
55  void_result do_apply( const asset_issue_operation& o ) const;
56 
57  private:
58  const asset_dynamic_data_object* asset_dyn_data = nullptr;
59  const account_object* to_account = nullptr;
60  };
61 
62  class asset_reserve_evaluator : public evaluator<asset_reserve_evaluator>
63  {
64  public:
68 
69  private:
70  const asset_dynamic_data_object* asset_dyn_data = nullptr;
71  const account_object* from_account = nullptr;
72  };
73 
74 
75  class asset_update_evaluator : public evaluator<asset_update_evaluator>
76  {
77  public:
79 
82 
83  private:
84  const asset_object* asset_to_update = nullptr;
85  const asset_bitasset_data_object* bitasset_data = nullptr;
86  };
87 
88  class asset_update_issuer_evaluator : public evaluator<asset_update_issuer_evaluator>
89  {
90  public:
92 
95 
96  private:
97  const asset_object* asset_to_update = nullptr;
98  };
99 
100  class asset_update_bitasset_evaluator : public evaluator<asset_update_bitasset_evaluator>
101  {
102  public:
104 
107 
108  private:
109  const asset_bitasset_data_object* bitasset_to_update = nullptr;
110  const asset_object* asset_to_update = nullptr;
111 
112  bool update_feeds_due_to_bsrm_change = false;
113  };
114 
115  class asset_update_feed_producers_evaluator : public evaluator<asset_update_feed_producers_evaluator>
116  {
117  public:
119 
121  void_result do_apply( const operation_type& o ) const;
122 
123  private:
124  const asset_object* asset_to_update = nullptr;
125  };
126 
127  class asset_fund_fee_pool_evaluator : public evaluator<asset_fund_fee_pool_evaluator>
128  {
129  public:
131 
134 
135  private:
136  const asset_dynamic_data_object* asset_dyn_data = nullptr;
137  };
138 
139  class asset_global_settle_evaluator : public evaluator<asset_global_settle_evaluator>
140  {
141  public:
143 
146 
147  private:
148  const asset_object* asset_to_settle = nullptr;
149  };
150  class asset_settle_evaluator : public evaluator<asset_settle_evaluator>
151  {
152  public:
154 
157 
158  private:
159  const asset_object* asset_to_settle = nullptr;
160  const asset_bitasset_data_object* bitasset_ptr = nullptr;
161  };
162 
163  class asset_publish_feeds_evaluator : public evaluator<asset_publish_feeds_evaluator>
164  {
165  public:
167 
170 
171  private:
172  const asset_object* asset_ptr = nullptr;
173  const asset_bitasset_data_object* bitasset_ptr = nullptr;
174  };
175 
176  class asset_claim_fees_evaluator : public evaluator<asset_claim_fees_evaluator>
177  {
178  public:
180 
183 
184  private:
185  const asset_object* container_asset = nullptr;
186  const asset_dynamic_data_object* container_ddo = nullptr;
187  };
188 
189  class asset_claim_pool_evaluator : public evaluator<asset_claim_pool_evaluator>
190  {
191  public:
193 
196  };
197 
198 } } // graphene::chain
graphene::chain::asset_claim_pool_evaluator::do_apply
void_result do_apply(const asset_claim_pool_operation &o)
Definition: asset_evaluator.cpp:1615
graphene::chain::asset_fund_fee_pool_evaluator::do_apply
void_result do_apply(const asset_fund_fee_pool_operation &op) const
Definition: asset_evaluator.cpp:418
graphene::chain::asset_fund_fee_pool_evaluator::do_evaluate
void_result do_evaluate(const asset_fund_fee_pool_operation &op)
Definition: asset_evaluator.cpp:407
graphene::chain::asset_reserve_evaluator
Definition: asset_evaluator.hpp:62
graphene::chain::asset_publish_feeds_evaluator::do_evaluate
void_result do_evaluate(const asset_publish_feed_operation &o)
Definition: asset_evaluator.cpp:1414
graphene::chain::asset_issue_evaluator
Definition: asset_evaluator.hpp:50
graphene::chain::asset_update_evaluator::do_apply
void_result do_apply(const asset_update_operation &o)
Definition: asset_evaluator.cpp:598
database.hpp
fc::static_variant< void_result, object_id_type, asset, generic_operation_result, generic_exchange_operation_result, extendable_operation_result >
graphene::chain::asset_update_bitasset_evaluator::do_evaluate
void_result do_evaluate(const asset_update_bitasset_operation &o)
Definition: asset_evaluator.cpp:724
graphene::protocol::asset_claim_fees_operation
used to transfer accumulated fees back to the issuer's balance.
Definition: asset_ops.hpp:529
graphene::chain::asset_global_settle_evaluator
Definition: asset_evaluator.hpp:139
graphene::chain::asset_claim_fees_evaluator
Definition: asset_evaluator.hpp:176
graphene::chain::asset_update_issuer_evaluator::do_evaluate
void_result do_evaluate(const asset_update_issuer_operation &o)
Definition: asset_evaluator.cpp:660
graphene::protocol::asset_update_issuer_operation
Update issuer of an asset.
Definition: asset_ops.hpp:565
graphene::chain::asset_object
tracks the parameters of an asset
Definition: asset_object.hpp:75
graphene::chain::asset_settle_evaluator::do_evaluate
void_result do_evaluate(const operation_type &op)
Definition: asset_evaluator.cpp:1145
graphene::chain::asset_create_evaluator::pay_fee
void pay_fee() override
Definition: asset_evaluator.cpp:274
graphene::chain::asset_fund_fee_pool_evaluator
Definition: asset_evaluator.hpp:127
graphene::chain::asset_update_evaluator::do_evaluate
void_result do_evaluate(const asset_update_operation &o)
Definition: asset_evaluator.cpp:446
graphene::chain::asset_update_feed_producers_evaluator::do_apply
void_result do_apply(const operation_type &o) const
Definition: asset_evaluator.cpp:1072
graphene::chain::asset_update_feed_producers_evaluator
Definition: asset_evaluator.hpp:115
graphene::chain::asset_claim_pool_evaluator
Definition: asset_evaluator.hpp:189
operations.hpp
graphene::chain::asset_update_evaluator
Definition: asset_evaluator.hpp:75
graphene::protocol::asset_reserve_operation
used to take an asset out of circulation, returning to the issuer
Definition: asset_ops.hpp:513
graphene::protocol::asset_update_operation
Update options common to all assets.
Definition: asset_ops.hpp:351
graphene::chain::asset_dynamic_data_object
tracks the asset information that changes frequently
Definition: asset_object.hpp:56
graphene::chain::asset_settle_evaluator
Definition: asset_evaluator.hpp:150
graphene::chain::account_object
This class represents an account on the object graph.
Definition: account_object.hpp:180
evaluator.hpp
graphene::chain::asset_update_issuer_evaluator::do_apply
void_result do_apply(const asset_update_issuer_operation &o)
Definition: asset_evaluator.cpp:676
graphene::chain::asset_update_issuer_evaluator
Definition: asset_evaluator.hpp:88
graphene::chain::evaluator
Definition: evaluator.hpp:142
graphene::chain::asset_bitasset_data_object
contains properties that only apply to bitassets (market issued assets)
Definition: asset_object.hpp:255
graphene::chain::asset_update_feed_producers_evaluator::do_evaluate
void_result do_evaluate(const operation_type &o)
Definition: asset_evaluator.cpp:1048
graphene::chain::asset_update_bitasset_evaluator
Definition: asset_evaluator.hpp:100
graphene::chain::asset_create_evaluator
Definition: asset_evaluator.hpp:34
graphene::protocol::asset_update_bitasset_operation
Update options specific to BitAssets.
Definition: asset_ops.hpp:398
graphene::protocol::asset_publish_feed_operation
Publish price feeds for market-issued assets.
Definition: asset_ops.hpp:462
graphene::chain::asset_claim_fees_evaluator::do_evaluate
void_result do_evaluate(const asset_claim_fees_operation &o)
Definition: asset_evaluator.cpp:1550
graphene::chain::asset_publish_feeds_evaluator
Definition: asset_evaluator.hpp:163
graphene::chain::asset_reserve_evaluator::do_evaluate
void_result do_evaluate(const asset_reserve_operation &o)
Definition: asset_evaluator.cpp:365
graphene::chain::asset_create_evaluator::do_apply
object_id_type do_apply(const asset_create_operation &o) const
Definition: asset_evaluator.cpp:282
graphene::protocol::asset_update_feed_producers_operation
Update the set of feed-producing accounts for a BitAsset.
Definition: asset_ops.hpp:430
graphene::chain::asset_global_settle_evaluator::do_evaluate
void_result do_evaluate(const operation_type &op)
Definition: asset_evaluator.cpp:1110
graphene::chain::asset_settle_evaluator::do_apply
operation_result do_apply(const operation_type &op)
Definition: asset_evaluator.cpp:1359
graphene::protocol::asset_settle_operation
Schedules a market-issued asset for automatic settlement.
Definition: asset_ops.hpp:267
graphene::db::object_id_type
Definition: object_id.hpp:30
graphene::chain::asset_claim_pool_evaluator::do_evaluate
void_result do_evaluate(const asset_claim_pool_operation &o)
Definition: asset_evaluator.cpp:1608
graphene::chain::asset_claim_fees_evaluator::do_apply
void_result do_apply(const asset_claim_fees_operation &o)
Definition: asset_evaluator.cpp:1588
graphene::chain::asset_global_settle_evaluator::do_apply
void_result do_apply(const operation_type &op)
Definition: asset_evaluator.cpp:1138
graphene::chain::asset_issue_evaluator::do_apply
void_result do_apply(const asset_issue_operation &o) const
Definition: asset_evaluator.cpp:354
graphene::protocol::asset_fund_fee_pool_operation
Definition: asset_ops.hpp:322
graphene::chain::asset_publish_feeds_evaluator::do_apply
void_result do_apply(const asset_publish_feed_operation &o)
Definition: asset_evaluator.cpp:1476
graphene::chain::asset_create_evaluator::do_evaluate
void_result do_evaluate(const asset_create_operation &o) const
Definition: asset_evaluator.cpp:185
graphene::chain::asset_issue_evaluator::do_evaluate
void_result do_evaluate(const asset_issue_operation &o)
Definition: asset_evaluator.cpp:333
graphene::chain::asset_update_bitasset_evaluator::do_apply
void_result do_apply(const asset_update_bitasset_operation &o)
Definition: asset_evaluator.cpp:1025
graphene::chain::asset_reserve_evaluator::do_apply
void_result do_apply(const asset_reserve_operation &o) const
Definition: asset_evaluator.cpp:396
graphene::protocol::void_result
Definition: base.hpp:86
graphene::protocol::asset_issue_operation
Definition: asset_ops.hpp:485
graphene::protocol::asset_global_settle_operation
allows global settling of bitassets (black swan or prediction markets)
Definition: asset_ops.hpp:238
graphene
Definition: api.cpp:48
graphene::protocol::asset_create_operation
Definition: asset_ops.hpp:192
graphene::protocol::asset_claim_pool_operation
Transfers BTS from the fee pool of a specified asset back to the issuer's balance.
Definition: asset_ops.hpp:601