30 #include <boost/multi_index/composite_key.hpp> 32 namespace graphene {
namespace chain {
48 static constexpr uint8_t type_id = limit_order_object_type;
60 if( tmp.first > tmp.second ) std::swap( tmp.first, tmp.second );
73 struct by_account_price;
74 typedef multi_index_container<
77 ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
78 ordered_unique< tag<by_expiration>,
79 composite_key< limit_order_object,
80 member< limit_order_object, time_point_sec, &limit_order_object::expiration>,
81 member< object, object_id_type, &object::id>
84 ordered_unique< tag<by_price>,
85 composite_key< limit_order_object,
86 member< limit_order_object, price, &limit_order_object::sell_price>,
87 member< object, object_id_type, &object::id>
89 composite_key_compare< std::greater<price>, std::less<object_id_type> >
92 ordered_unique< tag<by_account>,
93 composite_key< limit_order_object,
94 member<limit_order_object, account_id_type, &limit_order_object::seller>,
95 member<object, object_id_type, &object::id>
99 ordered_unique< tag<by_account_price>,
100 composite_key< limit_order_object,
101 member<limit_order_object, account_id_type, &limit_order_object::seller>,
102 member<limit_order_object, price, &limit_order_object::sell_price>,
103 member<object, object_id_type, &object::id>
105 composite_key_compare<std::less<account_id_type>, std::greater<price>, std::less<object_id_type>>
123 static constexpr uint8_t type_id = call_order_object_type;
128 asset_id_type
debt_type()
const {
return call_price.quote.asset_id; }
142 if( tmp.first > tmp.second ) std::swap( tmp.first, tmp.second );
158 const uint16_t maintenance_collateral_ratio,
172 static constexpr uint8_t type_id = force_settlement_object_type;
193 static constexpr uint8_t type_id = impl_collateral_bid_object_type;
197 asset_id_type
debt_type()
const {
return inv_swan_price.quote.asset_id; }
203 struct by_collateral;
206 typedef multi_index_container<
209 ordered_unique< tag<by_id>,
210 member< object, object_id_type, &object::id > >,
211 ordered_unique< tag<by_price>,
212 composite_key< call_order_object,
213 member< call_order_object, price, &call_order_object::call_price>,
214 member< object, object_id_type, &object::id>
216 composite_key_compare< std::less<price>, std::less<object_id_type> >
218 ordered_unique< tag<by_account>,
219 composite_key< call_order_object,
220 member< call_order_object, account_id_type, &call_order_object::borrower >,
221 const_mem_fun< call_order_object, asset_id_type, &call_order_object::debt_type>
224 ordered_unique< tag<by_collateral>,
225 composite_key< call_order_object,
226 const_mem_fun< call_order_object, price, &call_order_object::collateralization >,
227 member< object, object_id_type, &object::id >
234 typedef multi_index_container<
237 ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
238 ordered_unique< tag<by_account>,
239 composite_key< force_settlement_object,
240 member<force_settlement_object, account_id_type, &force_settlement_object::owner>,
241 member< object, object_id_type, &object::id >
244 ordered_unique< tag<by_expiration>,
245 composite_key< force_settlement_object,
246 const_mem_fun<force_settlement_object, asset_id_type, &force_settlement_object::settlement_asset_id>,
247 member<force_settlement_object, time_point_sec, &force_settlement_object::settlement_date>,
248 member< object, object_id_type, &object::id >
254 typedef multi_index_container<
257 ordered_unique< tag<by_id>,
258 member< object, object_id_type, &object::id > >,
259 ordered_unique< tag<by_account>,
260 composite_key< collateral_bid_object,
261 const_mem_fun< collateral_bid_object, asset_id_type, &collateral_bid_object::debt_type>,
262 member< collateral_bid_object, account_id_type, &collateral_bid_object::bidder>
265 ordered_unique< tag<by_price>,
266 composite_key< collateral_bid_object,
267 const_mem_fun< collateral_bid_object, asset_id_type, &collateral_bid_object::debt_type>,
268 member< collateral_bid_object, price, &collateral_bid_object::inv_swan_price >,
269 member< object, object_id_type, &object::id >
271 composite_key_compare< std::less<asset_id_type>, std::greater<price>, std::less<object_id_type> >
asset_id_type receive_asset_id() const
optional< uint16_t > target_collateral_ratio
maximum CR to maintain when selling collateral on margin call
asset_id_type debt_type() const
asset get_debt_covered() const
asset amount_to_receive() const
tracks debt and call price information
generic_index< collateral_bid_object, collateral_bid_object_multi_index_type > collateral_bid_index
#define MAP_OBJECT_ID_TO_TYPE(OBJECT)
asset get_collateral() const
multi_index_container< limit_order_object, indexed_by< ordered_unique< tag< by_id >, member< object, object_id_type,&object::id > >, ordered_unique< tag< by_expiration >, composite_key< limit_order_object, member< limit_order_object, time_point_sec,&limit_order_object::expiration >, member< object, object_id_type,&object::id > > >, ordered_unique< tag< by_price >, composite_key< limit_order_object, member< limit_order_object, price,&limit_order_object::sell_price >, member< object, object_id_type,&object::id > >, composite_key_compare< std::greater< price >, std::less< object_id_type > > >, ordered_unique< tag< by_account >, composite_key< limit_order_object, member< limit_order_object, account_id_type,&limit_order_object::seller >, member< object, object_id_type,&object::id > > >, ordered_unique< tag< by_account_price >, composite_key< limit_order_object, member< limit_order_object, account_id_type,&limit_order_object::seller >, member< limit_order_object, price,&limit_order_object::sell_price >, member< object, object_id_type,&object::id > >, composite_key_compare< std::less< account_id_type >, std::greater< price >, std::less< object_id_type > > > >> limit_order_multi_index_type
pair< asset_id_type, asset_id_type > get_market() const
multi_index_container< call_order_object, indexed_by< ordered_unique< tag< by_id >, member< object, object_id_type,&object::id > >, ordered_unique< tag< by_price >, composite_key< call_order_object, member< call_order_object, price,&call_order_object::call_price >, member< object, object_id_type,&object::id > >, composite_key_compare< std::less< price >, std::less< object_id_type > > >, ordered_unique< tag< by_account >, composite_key< call_order_object, member< call_order_object, account_id_type,&call_order_object::borrower >, const_mem_fun< call_order_object, asset_id_type,&call_order_object::debt_type > > >, ordered_unique< tag< by_collateral >, composite_key< call_order_object, const_mem_fun< call_order_object, price,&call_order_object::collateralization >, member< object, object_id_type,&object::id > > > >> call_order_multi_index_type
price call_price
Collateral / Debt.
generic_index< limit_order_object, limit_order_multi_index_type > limit_order_index
multi_index_container< force_settlement_object, indexed_by< ordered_unique< tag< by_id >, member< object, object_id_type,&object::id > >, ordered_unique< tag< by_account >, composite_key< force_settlement_object, member< force_settlement_object, account_id_type,&force_settlement_object::owner >, member< object, object_id_type,&object::id > > >, ordered_unique< tag< by_expiration >, composite_key< force_settlement_object, const_mem_fun< force_settlement_object, asset_id_type,&force_settlement_object::settlement_asset_id >, member< force_settlement_object, time_point_sec,&force_settlement_object::settlement_date >, member< object, object_id_type,&object::id > > > >> force_settlement_object_multi_index_type
time_point_sec settlement_date
share_type for_sale
asset id is sell_price.base.asset_id
asset_id_type collateral_type() const
provides stack-based nullable value similar to boost::optional
time_point_sec expiration
FC_REFLECT_TYPENAME(fc::log_message)
share_type debt
call_price.quote.asset_id, access via get_debt
asset amount_to_receive() const
#define GRAPHENE_DECLARE_EXTERNAL_SERIALIZATION(type)
asset_id_type settlement_asset_id() const
The price struct stores asset prices in the BitShares system.
asset_id_type debt_type() const
pair< asset_id_type, asset_id_type > get_market() const
tracks bitassets scheduled for force settlement at some point in the future.
asset amount_for_sale() const
asset get_additional_collateral() const
bids of collateral for debt after a black swan
Use the Curiously Recurring Template Pattern to automatically add the ability to clone, serialize, and move objects polymorphically.
multi_index_container< collateral_bid_object, indexed_by< ordered_unique< tag< by_id >, member< object, object_id_type,&object::id > >, ordered_unique< tag< by_account >, composite_key< collateral_bid_object, const_mem_fun< collateral_bid_object, asset_id_type,&collateral_bid_object::debt_type >, member< collateral_bid_object, account_id_type,&collateral_bid_object::bidder > > >, ordered_unique< tag< by_price >, composite_key< collateral_bid_object, const_mem_fun< collateral_bid_object, asset_id_type,&collateral_bid_object::debt_type >, member< collateral_bid_object, price,&collateral_bid_object::inv_swan_price >, member< object, object_id_type,&object::id > >, composite_key_compare< std::less< asset_id_type >, std::greater< price >, std::less< object_id_type > > > >> collateral_bid_object_multi_index_type
asset_id_type sell_asset_id() const
share_type collateral
call_price.base.asset_id, access via get_collateral
generic_index< force_settlement_object, force_settlement_object_multi_index_type > force_settlement_index
price collateralization() const
generic_index< call_order_object, call_order_multi_index_type > call_order_index
share_type deferred_fee
fee converted to CORE
asset deferred_paid_fee
originally paid fee
an offer to sell a amount of a asset at a specified exchange rate by a certain timeThis limit_order_o...