32 #include <boost/multi_index/composite_key.hpp> 34 namespace graphene {
namespace chain {
48 static constexpr uint8_t type_id = liquidity_pool_object_type;
55 uint16_t taker_fee_percent = 0;
56 uint16_t withdrawal_fee_percent = 0;
57 fc::uint128_t virtual_value = 0;
61 virtual_value = fc::uint128_t( balance_a.
value ) * balance_b.
value;
65 struct by_share_asset;
73 typedef multi_index_container<
76 ordered_unique< tag<by_id>, member< object, object_id_type, &object::id > >,
77 ordered_unique< tag<by_share_asset>,
78 member< liquidity_pool_object, asset_id_type, &liquidity_pool_object::share_asset > >,
79 ordered_unique< tag<by_asset_a>,
80 composite_key< liquidity_pool_object,
81 member< liquidity_pool_object, asset_id_type, &liquidity_pool_object::asset_a >,
82 member< object, object_id_type, &object::id>
85 ordered_unique< tag<by_asset_b>,
86 composite_key< liquidity_pool_object,
87 member< liquidity_pool_object, asset_id_type, &liquidity_pool_object::asset_b >,
88 member< object, object_id_type, &object::id>
91 ordered_unique< tag<by_asset_ab>,
92 composite_key< liquidity_pool_object,
93 member< liquidity_pool_object, asset_id_type, &liquidity_pool_object::asset_a >,
94 member< liquidity_pool_object, asset_id_type, &liquidity_pool_object::asset_b >,
95 member< object, object_id_type, &object::id>
117 (withdrawal_fee_percent)
asset_id_type asset_a
Type of the first asset in the pool.
#define MAP_OBJECT_ID_TO_TYPE(OBJECT)
asset_id_type asset_b
Type of the second asset in the pool.
asset_id_type share_asset
Type of the share asset aka the LP token.
#define GRAPHENE_DECLARE_EXTERNAL_SERIALIZATION(type)
multi_index_container< liquidity_pool_object, indexed_by< ordered_unique< tag< by_id >, member< object, object_id_type,&object::id > >, ordered_unique< tag< by_share_asset >, member< liquidity_pool_object, asset_id_type,&liquidity_pool_object::share_asset > >, ordered_unique< tag< by_asset_a >, composite_key< liquidity_pool_object, member< liquidity_pool_object, asset_id_type,&liquidity_pool_object::asset_a >, member< object, object_id_type,&object::id > > >, ordered_unique< tag< by_asset_b >, composite_key< liquidity_pool_object, member< liquidity_pool_object, asset_id_type,&liquidity_pool_object::asset_b >, member< object, object_id_type,&object::id > > >, ordered_unique< tag< by_asset_ab >, composite_key< liquidity_pool_object, member< liquidity_pool_object, asset_id_type,&liquidity_pool_object::asset_a >, member< liquidity_pool_object, asset_id_type,&liquidity_pool_object::asset_b >, member< object, object_id_type,&object::id > > > >> liquidity_pool_multi_index_type
share_type balance_a
The balance of the first asset in the pool.
Use the Curiously Recurring Template Pattern to automatically add the ability to clone, serialize, and move objects polymorphically.
generic_index< liquidity_pool_object, liquidity_pool_multi_index_type > liquidity_pool_index
void update_virtual_value()
#define FC_REFLECT_DERIVED(TYPE, INHERITS, MEMBERS)
Specializes fc::reflector for TYPE where type inherits other reflected classes.
share_type balance_b
The balance of the second asset in the pool.