Some renaming to follow existing naming convention, code cleanup

This commit is contained in:
Srdjan Obucina 2019-10-08 21:14:26 +02:00
parent 3b167ffd03
commit 7b6562ec85
13 changed files with 129 additions and 133 deletions

View file

@ -19,10 +19,10 @@ build:
- tests/ - tests/
tags: tags:
- builder - builder
test: test:
stage: test stage: test
dependencies: dependencies:
- build - build
script: script:
- ./tests/betting_test - ./tests/betting_test
@ -30,7 +30,7 @@ test:
- ./tests/cli_test - ./tests/cli_test
tags: tags:
- builder - builder
code_quality: code_quality:
stage: test stage: test
image: docker:stable image: docker:stable

6
.gitmodules vendored
View file

@ -3,6 +3,6 @@
url = https://github.com/bitshares/bitshares-core.wiki.git url = https://github.com/bitshares/bitshares-core.wiki.git
ignore = dirty ignore = dirty
[submodule "libraries/fc"] [submodule "libraries/fc"]
path = libraries/fc path = libraries/fc
url = https://github.com/PBSA/peerplays-fc.git url = https://github.com/PBSA/peerplays-fc.git
ignore = dirty ignore = dirty

View file

@ -441,7 +441,7 @@ namespace graphene { namespace app {
} case son_object_type:{ } case son_object_type:{
const auto& aobj = dynamic_cast<const son_object*>(obj); const auto& aobj = dynamic_cast<const son_object*>(obj);
assert( aobj != nullptr ); assert( aobj != nullptr );
accounts.insert( aobj->son_member_account ); accounts.insert( aobj->son_account );
break; break;
} }
case sport_object_type: case sport_object_type:

View file

@ -1736,13 +1736,13 @@ map<string, son_id_type> database_api_impl::lookup_son_accounts(const string& lo
const auto& sons_by_id = _db.get_index_type<son_index>().indices().get<by_id>(); const auto& sons_by_id = _db.get_index_type<son_index>().indices().get<by_id>();
// we want to order sons by account name, but that name is in the account object // we want to order sons by account name, but that name is in the account object
// so the son_member_index doesn't have a quick way to access it. // so the son_index doesn't have a quick way to access it.
// get all the names and look them all up, sort them, then figure out what // get all the names and look them all up, sort them, then figure out what
// records to return. This could be optimized, but we expect the // records to return. This could be optimized, but we expect the
// number of witnesses to be few and the frequency of calls to be rare // number of witnesses to be few and the frequency of calls to be rare
std::map<std::string, son_id_type> sons_by_account_name; std::map<std::string, son_id_type> sons_by_account_name;
for (const son_object& son : sons_by_id) for (const son_object& son : sons_by_id)
if (auto account_iter = _db.find(son.son_member_account)) if (auto account_iter = _db.find(son.son_account))
if (account_iter->name >= lower_bound_name) // we can ignore anything below lower_bound_name if (account_iter->name >= lower_bound_name) // we can ignore anything below lower_bound_name
sons_by_account_name.insert(std::make_pair(account_iter->name, son.id)); sons_by_account_name.insert(std::make_pair(account_iter->name, son.id));

View file

@ -262,10 +262,8 @@ void database::initialize_indexes()
acnt_index->add_secondary_index<account_referrer_index>(); acnt_index->add_secondary_index<account_referrer_index>();
add_index< primary_index<committee_member_index, 8> >(); // 256 members per chunk add_index< primary_index<committee_member_index, 8> >(); // 256 members per chunk
add_index< primary_index<son_index, 8> >(); // 256 sons per chunk
add_index< primary_index<witness_index, 10> >(); // 1024 witnesses per chunk add_index< primary_index<witness_index, 10> >(); // 1024 witnesses per chunk
add_index< primary_index<committee_member_index> >();
add_index< primary_index<son_index> >();
add_index< primary_index<witness_index> >();
add_index< primary_index<limit_order_index > >(); add_index< primary_index<limit_order_index > >();
add_index< primary_index<call_order_index > >(); add_index< primary_index<call_order_index > >();

View file

@ -253,7 +253,7 @@ void database::update_active_witnesses()
void database::update_active_committee_members() void database::update_active_committee_members()
{ try { { try {
assert( _committee_count_histogram_buffer.size() > 0 ); assert( _committee_count_histogram_buffer.size() > 0 );
share_type stake_target = (_total_voting_stake-_witness_count_histogram_buffer[0]) / 2; share_type stake_target = (_total_voting_stake-_committee_count_histogram_buffer[0]) / 2;
/// accounts that vote for 0 or 1 witness do not get to express an opinion on /// accounts that vote for 0 or 1 witness do not get to express an opinion on
/// the number of witnesses to have (they abstain and are non-voting accounts) /// the number of witnesses to have (they abstain and are non-voting accounts)
@ -329,7 +329,7 @@ void database::update_active_committee_members()
void database::update_active_sons() void database::update_active_sons()
{ try { { try {
assert( _son_count_histogram_buffer.size() > 0 ); assert( _son_count_histogram_buffer.size() > 0 );
share_type stake_target = (_total_voting_stake-_witness_count_histogram_buffer[0]) / 2; share_type stake_target = (_total_voting_stake-_son_count_histogram_buffer[0]) / 2;
/// accounts that vote for 0 or 1 son do not get to express an opinion on /// accounts that vote for 0 or 1 son do not get to express an opinion on
/// the number of sons to have (they abstain and are non-voting accounts) /// the number of sons to have (they abstain and are non-voting accounts)
@ -372,7 +372,7 @@ void database::update_active_sons()
for( const son_object& son : sons ) for( const son_object& son : sons )
{ {
weights.emplace(son.son_member_account, _vote_tally_buffer[son.vote_id]); weights.emplace(son.son_account, _vote_tally_buffer[son.vote_id]);
total_votes += _vote_tally_buffer[son.vote_id]; total_votes += _vote_tally_buffer[son.vote_id];
} }
@ -394,7 +394,7 @@ void database::update_active_sons()
{ {
vote_counter vc; vote_counter vc;
for( const son_object& son : sons ) for( const son_object& son : sons )
vc.add( son.son_member_account, std::max(_vote_tally_buffer[son.vote_id], UINT64_C(1)) ); vc.add( son.son_account, std::max(_vote_tally_buffer[son.vote_id], UINT64_C(1)) );
vc.finish( a.active ); vc.finish( a.active );
} }
} ); } );

View file

@ -384,7 +384,7 @@ void get_relevant_accounts( const object* obj, flat_set<account_id_type>& accoun
} case son_object_type:{ } case son_object_type:{
const auto& aobj = dynamic_cast<const son_object*>(obj); const auto& aobj = dynamic_cast<const son_object*>(obj);
assert( aobj != nullptr ); assert( aobj != nullptr );
accounts.insert( aobj->son_member_account ); accounts.insert( aobj->son_account );
break; break;
} }
} }

View file

@ -1,4 +1,5 @@
// SON HARDFORK Monday, September 21, 2020 1:43:11 PM // SON HARDFORK Monday, September 21, 2020 1:43:11 PM
#ifndef HARDFORK_SON_TIME #ifndef HARDFORK_SON_TIME
#define HARDFORK_SON_TIME (fc::time_point_sec( 1000000000 )) #include <ctime>
#define HARDFORK_SON_TIME (fc::time_point_sec( time(NULL) - (60 * 60) ))
#endif #endif

View file

@ -8,7 +8,7 @@ namespace graphene { namespace chain {
/** /**
* @class son_object * @class son_object
* @brief tracks information about a son_member account. * @brief tracks information about a SON account.
* @ingroup object * @ingroup object
*/ */
class son_object : public abstract_object<son_object> class son_object : public abstract_object<son_object>
@ -17,7 +17,7 @@ namespace graphene { namespace chain {
static const uint8_t space_id = protocol_ids; static const uint8_t space_id = protocol_ids;
static const uint8_t type_id = son_object_type; static const uint8_t type_id = son_object_type;
account_id_type son_member_account; account_id_type son_account;
vote_id_type vote_id; vote_id_type vote_id;
uint64_t total_votes = 0; uint64_t total_votes = 0;
string url; string url;
@ -28,22 +28,22 @@ namespace graphene { namespace chain {
struct by_account; struct by_account;
struct by_vote_id; struct by_vote_id;
using son_member_multi_index_type = multi_index_container< using son_multi_index_type = multi_index_container<
son_object, son_object,
indexed_by< indexed_by<
ordered_unique< tag<by_id>, ordered_unique< tag<by_id>,
member<object, object_id_type, &object::id> member<object, object_id_type, &object::id>
>, >,
ordered_unique< tag<by_account>, ordered_unique< tag<by_account>,
member<son_object, account_id_type, &son_object::son_member_account> member<son_object, account_id_type, &son_object::son_account>
>, >,
ordered_unique< tag<by_vote_id>, ordered_unique< tag<by_vote_id>,
member<son_object, vote_id_type, &son_object::vote_id> member<son_object, vote_id_type, &son_object::vote_id>
> >
> >
>; >;
using son_index = generic_index<son_object, son_member_multi_index_type>; using son_index = generic_index<son_object, son_multi_index_type>;
} } // graphene::chain } } // graphene::chain
FC_REFLECT_DERIVED( graphene::chain::son_object, (graphene::db::object), FC_REFLECT_DERIVED( graphene::chain::son_object, (graphene::db::object),
(son_member_account)(vote_id)(total_votes)(url)(deposit)(signing_key)(pay_vb) ) (son_account)(vote_id)(total_votes)(url)(deposit)(signing_key)(pay_vb) )

View file

@ -21,7 +21,7 @@ object_id_type create_son_evaluator::do_apply(const son_create_operation& op)
}); });
const auto& new_son_object = db().create<son_object>( [&]( son_object& obj ){ const auto& new_son_object = db().create<son_object>( [&]( son_object& obj ){
obj.son_member_account = op.owner_account; obj.son_account = op.owner_account;
obj.vote_id = vote_id; obj.vote_id = vote_id;
obj.url = op.url; obj.url = op.url;
obj.deposit = op.deposit; obj.deposit = op.deposit;
@ -34,7 +34,7 @@ object_id_type create_son_evaluator::do_apply(const son_create_operation& op)
void_result update_son_evaluator::do_evaluate(const son_update_operation& op) void_result update_son_evaluator::do_evaluate(const son_update_operation& op)
{ try { { try {
FC_ASSERT(db().head_block_time() >= HARDFORK_SON_TIME, "Not allowed until SON HARDFORK"); // can be removed after HF date pass FC_ASSERT(db().head_block_time() >= HARDFORK_SON_TIME, "Not allowed until SON HARDFORK"); // can be removed after HF date pass
FC_ASSERT(db().get(op.son_id).son_member_account == op.owner_account); FC_ASSERT(db().get(op.son_id).son_account == op.owner_account);
const auto& idx = db().get_index_type<son_index>().indices().get<by_id>(); const auto& idx = db().get_index_type<son_index>().indices().get<by_id>();
FC_ASSERT( idx.find(op.son_id) != idx.end() ); FC_ASSERT( idx.find(op.son_id) != idx.end() );
return void_result(); return void_result();
@ -59,7 +59,7 @@ object_id_type update_son_evaluator::do_apply(const son_update_operation& op)
void_result delete_son_evaluator::do_evaluate(const son_delete_operation& op) void_result delete_son_evaluator::do_evaluate(const son_delete_operation& op)
{ try { { try {
FC_ASSERT(db().head_block_time() >= HARDFORK_SON_TIME, "Not allowed until SON_HARDFORK"); // can be removed after HF date pass FC_ASSERT(db().head_block_time() >= HARDFORK_SON_TIME, "Not allowed until SON_HARDFORK"); // can be removed after HF date pass
FC_ASSERT(db().get(op.son_id).son_member_account == op.owner_account); FC_ASSERT(db().get(op.son_id).son_account == op.owner_account);
const auto& idx = db().get_index_type<son_index>().indices().get<by_id>(); const auto& idx = db().get_index_type<son_index>().indices().get<by_id>();
FC_ASSERT( idx.find(op.son_id) != idx.end() ); FC_ASSERT( idx.find(op.son_id) != idx.end() );
return void_result(); return void_result();

View file

@ -68,7 +68,7 @@ struct brain_key_info
* the meta data about the receipt that helps the sender identify which receipt is * the meta data about the receipt that helps the sender identify which receipt is
* for the receiver and which is for the change address. * for the receiver and which is for the change address.
*/ */
struct blind_confirmation struct blind_confirmation
{ {
struct output struct output
{ {
@ -313,7 +313,7 @@ class wallet_api
*/ */
uint64_t get_account_count()const; uint64_t get_account_count()const;
/** Lists all accounts controlled by this wallet. /** Lists all accounts controlled by this wallet.
* This returns a list of the full account objects for all accounts whose private keys * This returns a list of the full account objects for all accounts whose private keys
* we possess. * we possess.
* @returns a list of account objects * @returns a list of account objects
*/ */
@ -325,14 +325,14 @@ class wallet_api
* start by setting \c lowerbound to the empty string \c "", and then each iteration, pass * start by setting \c lowerbound to the empty string \c "", and then each iteration, pass
* the last account name returned as the \c lowerbound for the next \c list_accounts() call. * the last account name returned as the \c lowerbound for the next \c list_accounts() call.
* *
* @param lowerbound the name of the first account to return. If the named account does not exist, * @param lowerbound the name of the first account to return. If the named account does not exist,
* the list will start at the account that comes after \c lowerbound * the list will start at the account that comes after \c lowerbound
* @param limit the maximum number of accounts to return (max: 1000) * @param limit the maximum number of accounts to return (max: 1000)
* @returns a list of accounts mapping account names to account ids * @returns a list of accounts mapping account names to account ids
*/ */
map<string,account_id_type> list_accounts(const string& lowerbound, uint32_t limit); map<string,account_id_type> list_accounts(const string& lowerbound, uint32_t limit);
/** List the balances of an account. /** List the balances of an account.
* Each account can have multiple balances, one for each type of asset owned by that * Each account can have multiple balances, one for each type of asset owned by that
* account. The returned list will only contain assets for which the account has a * account. The returned list will only contain assets for which the account has a
* nonzero balance * nonzero balance
* @param id the name or id of the account whose balances you want * @param id the name or id of the account whose balances you want
@ -340,7 +340,7 @@ class wallet_api
*/ */
vector<asset> list_account_balances(const string& id); vector<asset> list_account_balances(const string& id);
/** Lists all assets registered on the blockchain. /** Lists all assets registered on the blockchain.
* *
* To list all assets, pass the empty string \c "" for the lowerbound to start * To list all assets, pass the empty string \c "" for the lowerbound to start
* at the beginning of the list, and iterate as necessary. * at the beginning of the list, and iterate as necessary.
* *
@ -351,12 +351,12 @@ class wallet_api
vector<asset_object> list_assets(const string& lowerbound, uint32_t limit)const; vector<asset_object> list_assets(const string& lowerbound, uint32_t limit)const;
/** Returns assets count registered on the blockchain. /** Returns assets count registered on the blockchain.
* *
* @returns assets count * @returns assets count
*/ */
uint64_t get_asset_count()const; uint64_t get_asset_count()const;
vector<asset_object> get_lotteries( asset_id_type stop = asset_id_type(), vector<asset_object> get_lotteries( asset_id_type stop = asset_id_type(),
unsigned limit = 100, unsigned limit = 100,
asset_id_type start = asset_id_type() )const; asset_id_type start = asset_id_type() )const;
@ -392,7 +392,7 @@ class wallet_api
vector<limit_order_object> get_limit_orders(string a, string b, uint32_t limit)const; vector<limit_order_object> get_limit_orders(string a, string b, uint32_t limit)const;
vector<call_order_object> get_call_orders(string a, uint32_t limit)const; vector<call_order_object> get_call_orders(string a, uint32_t limit)const;
vector<force_settlement_object> get_settle_orders(string a, uint32_t limit)const; vector<force_settlement_object> get_settle_orders(string a, uint32_t limit)const;
/** Returns the block chain's slowly-changing settings. /** Returns the block chain's slowly-changing settings.
* This object contains all of the properties of the blockchain that are fixed * This object contains all of the properties of the blockchain that are fixed
* or that change only once per maintenance interval (daily) such as the * or that change only once per maintenance interval (daily) such as the
@ -448,8 +448,8 @@ class wallet_api
* Returns the blockchain object corresponding to the given id. * Returns the blockchain object corresponding to the given id.
* *
* This generic function can be used to retrieve any object from the blockchain * This generic function can be used to retrieve any object from the blockchain
* that is assigned an ID. Certain types of objects have specialized convenience * that is assigned an ID. Certain types of objects have specialized convenience
* functions to return their objects -- e.g., assets have \c get_asset(), accounts * functions to return their objects -- e.g., assets have \c get_asset(), accounts
* have \c get_account(), but this function will work for any object. * have \c get_account(), but this function will work for any object.
* *
* @param id the id of the object to return * @param id the id of the object to return
@ -457,7 +457,7 @@ class wallet_api
*/ */
variant get_object(object_id_type id) const; variant get_object(object_id_type id) const;
/** Returns the current wallet filename. /** Returns the current wallet filename.
* *
* This is the filename that will be used when automatically saving the wallet. * This is the filename that will be used when automatically saving the wallet.
* *
@ -528,21 +528,21 @@ class wallet_api
* @ingroup Wallet Management * @ingroup Wallet Management
*/ */
bool is_new()const; bool is_new()const;
/** Checks whether the wallet is locked (is unable to use its private keys). /** Checks whether the wallet is locked (is unable to use its private keys).
* *
* This state can be changed by calling \c lock() or \c unlock(). * This state can be changed by calling \c lock() or \c unlock().
* @return true if the wallet is locked * @return true if the wallet is locked
* @ingroup Wallet Management * @ingroup Wallet Management
*/ */
bool is_locked()const; bool is_locked()const;
/** Locks the wallet immediately. /** Locks the wallet immediately.
* @ingroup Wallet Management * @ingroup Wallet Management
*/ */
void lock(); void lock();
/** Unlocks the wallet. /** Unlocks the wallet.
* *
* The wallet remain unlocked until the \c lock is called * The wallet remain unlocked until the \c lock is called
* or the program exits. * or the program exits.
@ -550,7 +550,7 @@ class wallet_api
* @ingroup Wallet Management * @ingroup Wallet Management
*/ */
void unlock(string password); void unlock(string password);
/** Sets a new password on the wallet. /** Sets a new password on the wallet.
* *
* The wallet must be either 'new' or 'unlocked' to * The wallet must be either 'new' or 'unlocked' to
@ -563,7 +563,7 @@ class wallet_api
* *
* The keys are printed in WIF format. You can import these keys into another wallet * The keys are printed in WIF format. You can import these keys into another wallet
* using \c import_key() * using \c import_key()
* @returns a map containing the private keys, indexed by their public key * @returns a map containing the private keys, indexed by their public key
*/ */
map<public_key_type, string> dump_private_keys(); map<public_key_type, string> dump_private_keys();
@ -598,7 +598,7 @@ class wallet_api
bool load_wallet_file(string wallet_filename = ""); bool load_wallet_file(string wallet_filename = "");
/** Saves the current wallet to the given filename. /** Saves the current wallet to the given filename.
* *
* @warning This does not change the wallet filename that will be used for future * @warning This does not change the wallet filename that will be used for future
* writes, so think of this function as 'Save a Copy As...' instead of * writes, so think of this function as 'Save a Copy As...' instead of
* 'Save As...'. Use \c set_wallet_filename() to make the filename * 'Save As...'. Use \c set_wallet_filename() to make the filename
@ -667,7 +667,7 @@ class wallet_api
/** Imports the private key for an existing account. /** Imports the private key for an existing account.
* *
* The private key must match either an owner key or an active key for the * The private key must match either an owner key or an active key for the
* named account. * named account.
* *
* @see dump_private_keys() * @see dump_private_keys()
* *
@ -770,7 +770,7 @@ class wallet_api
* @param to the name or id of the account receiving the funds * @param to the name or id of the account receiving the funds
* @param amount the amount to send (in nominal units -- to send half of a BTS, specify 0.5) * @param amount the amount to send (in nominal units -- to send half of a BTS, specify 0.5)
* @param asset_symbol the symbol or id of the asset to send * @param asset_symbol the symbol or id of the asset to send
* @param memo a memo to attach to the transaction. The memo will be encrypted in the * @param memo a memo to attach to the transaction. The memo will be encrypted in the
* transaction and readable for the receiver. There is no length limit * transaction and readable for the receiver. There is no length limit
* other than the limit imposed by maximum transaction size, but transaction * other than the limit imposed by maximum transaction size, but transaction
* increase with transaction size * increase with transaction size
@ -845,7 +845,7 @@ class wallet_api
* who sent it. * who sent it.
* *
* @param opt_from - if not empty and the sender is a unknown public key, then the unknown public key will be given the label opt_from * @param opt_from - if not empty and the sender is a unknown public key, then the unknown public key will be given the label opt_from
* @param confirmation_receipt - a base58 encoded stealth confirmation * @param confirmation_receipt - a base58 encoded stealth confirmation
*/ */
blind_receipt receive_blind_transfer( string confirmation_receipt, string opt_from, string opt_memo ); blind_receipt receive_blind_transfer( string confirmation_receipt, string opt_from, string opt_memo );
@ -853,18 +853,18 @@ class wallet_api
* Transfers a public balance from @from to one or more blinded balances using a * Transfers a public balance from @from to one or more blinded balances using a
* stealth transfer. * stealth transfer.
*/ */
blind_confirmation transfer_to_blind( string from_account_id_or_name, blind_confirmation transfer_to_blind( string from_account_id_or_name,
string asset_symbol, string asset_symbol,
/** map from key or label to amount */ /** map from key or label to amount */
vector<pair<string, string>> to_amounts, vector<pair<string, string>> to_amounts,
bool broadcast = false ); bool broadcast = false );
/** /**
* Transfers funds from a set of blinded balances to a public account balance. * Transfers funds from a set of blinded balances to a public account balance.
*/ */
blind_confirmation transfer_from_blind( blind_confirmation transfer_from_blind(
string from_blind_account_key_or_label, string from_blind_account_key_or_label,
string to_account_id_or_name, string to_account_id_or_name,
string amount, string amount,
string asset_symbol, string asset_symbol,
bool broadcast = false ); bool broadcast = false );
@ -880,14 +880,14 @@ class wallet_api
/** Place a limit order attempting to sell one asset for another. /** Place a limit order attempting to sell one asset for another.
* *
* Buying and selling are the same operation on Graphene; if you want to buy BTS * Buying and selling are the same operation on Graphene; if you want to buy BTS
* with USD, you should sell USD for BTS. * with USD, you should sell USD for BTS.
* *
* The blockchain will attempt to sell the \c symbol_to_sell for as * The blockchain will attempt to sell the \c symbol_to_sell for as
* much \c symbol_to_receive as possible, as long as the price is at * much \c symbol_to_receive as possible, as long as the price is at
* least \c min_to_receive / \c amount_to_sell. * least \c min_to_receive / \c amount_to_sell.
* *
* In addition to the transaction fees, market fees will apply as specified * In addition to the transaction fees, market fees will apply as specified
* by the issuer of both the selling asset and the receiving asset as * by the issuer of both the selling asset and the receiving asset as
* a percentage of the amount exchanged. * a percentage of the amount exchanged.
* *
@ -900,16 +900,16 @@ class wallet_api
* *
* @todo Allow order expiration to be set here. Document default/max expiration time * @todo Allow order expiration to be set here. Document default/max expiration time
* *
* @param seller_account the account providing the asset being sold, and which will * @param seller_account the account providing the asset being sold, and which will
* receive the proceeds of the sale. * receive the proceeds of the sale.
* @param amount_to_sell the amount of the asset being sold to sell (in nominal units) * @param amount_to_sell the amount of the asset being sold to sell (in nominal units)
* @param symbol_to_sell the name or id of the asset to sell * @param symbol_to_sell the name or id of the asset to sell
* @param min_to_receive the minimum amount you are willing to receive in return for * @param min_to_receive the minimum amount you are willing to receive in return for
* selling the entire amount_to_sell * selling the entire amount_to_sell
* @param symbol_to_receive the name or id of the asset you wish to receive * @param symbol_to_receive the name or id of the asset you wish to receive
* @param timeout_sec if the order does not fill immediately, this is the length of * @param timeout_sec if the order does not fill immediately, this is the length of
* time the order will remain on the order books before it is * time the order will remain on the order books before it is
* cancelled and the un-spent funds are returned to the seller's * cancelled and the un-spent funds are returned to the seller's
* account * account
* @param fill_or_kill if true, the order will only be included in the blockchain * @param fill_or_kill if true, the order will only be included in the blockchain
* if it is filled immediately; if false, an open order will be * if it is filled immediately; if false, an open order will be
@ -926,12 +926,12 @@ class wallet_api
uint32_t timeout_sec = 0, uint32_t timeout_sec = 0,
bool fill_or_kill = false, bool fill_or_kill = false,
bool broadcast = false); bool broadcast = false);
/** Place a limit order attempting to sell one asset for another. /** Place a limit order attempting to sell one asset for another.
* *
* This API call abstracts away some of the details of the sell_asset call to be more * This API call abstracts away some of the details of the sell_asset call to be more
* user friendly. All orders placed with sell never timeout and will not be killed if they * user friendly. All orders placed with sell never timeout and will not be killed if they
* cannot be filled immediately. If you wish for one of these parameters to be different, * cannot be filled immediately. If you wish for one of these parameters to be different,
* then sell_asset should be used instead. * then sell_asset should be used instead.
* *
* @param seller_account the account providing the asset being sold, and which will * @param seller_account the account providing the asset being sold, and which will
@ -941,7 +941,7 @@ class wallet_api
* @param rate The rate in base:quote at which you want to sell. * @param rate The rate in base:quote at which you want to sell.
* @param amount The amount of base you want to sell. * @param amount The amount of base you want to sell.
* @param broadcast true to broadcast the transaction on the network. * @param broadcast true to broadcast the transaction on the network.
* @returns The signed transaction selling the funds. * @returns The signed transaction selling the funds.
*/ */
signed_transaction sell( string seller_account, signed_transaction sell( string seller_account,
string base, string base,
@ -949,7 +949,7 @@ class wallet_api
double rate, double rate,
double amount, double amount,
bool broadcast ); bool broadcast );
/** Place a limit order attempting to buy one asset with another. /** Place a limit order attempting to buy one asset with another.
* *
* This API call abstracts away some of the details of the sell_asset call to be more * This API call abstracts away some of the details of the sell_asset call to be more
@ -1004,14 +1004,14 @@ class wallet_api
* Right now this function is difficult to use because you must provide raw JSON data * Right now this function is difficult to use because you must provide raw JSON data
* structures for the options objects, and those include prices and asset ids. * structures for the options objects, and those include prices and asset ids.
* *
* @param issuer the name or id of the account who will pay the fee and become the * @param issuer the name or id of the account who will pay the fee and become the
* issuer of the new asset. This can be updated later * issuer of the new asset. This can be updated later
* @param symbol the ticker symbol of the new asset * @param symbol the ticker symbol of the new asset
* @param precision the number of digits of precision to the right of the decimal point, * @param precision the number of digits of precision to the right of the decimal point,
* must be less than or equal to 12 * must be less than or equal to 12
* @param common asset options required for all new assets. * @param common asset options required for all new assets.
* Note that core_exchange_rate technically needs to store the asset ID of * Note that core_exchange_rate technically needs to store the asset ID of
* this new asset. Since this ID is not known at the time this operation is * this new asset. Since this ID is not known at the time this operation is
* created, create this price as though the new asset has instance ID 1, and * created, create this price as though the new asset has instance ID 1, and
* the chain will overwrite it with the new asset's ID. * the chain will overwrite it with the new asset's ID.
* @param bitasset_opts options specific to BitAssets. This may be null unless the * @param bitasset_opts options specific to BitAssets. This may be null unless the
@ -1031,7 +1031,7 @@ class wallet_api
asset_options common, asset_options common,
lottery_asset_options lottery_opts, lottery_asset_options lottery_opts,
bool broadcast = false); bool broadcast = false);
signed_transaction buy_ticket( asset_id_type lottery, account_id_type buyer, uint64_t tickets_to_buy ); signed_transaction buy_ticket( asset_id_type lottery, account_id_type buyer, uint64_t tickets_to_buy );
/** Issue new shares of an asset. /** Issue new shares of an asset.
@ -1049,8 +1049,8 @@ class wallet_api
bool broadcast = false); bool broadcast = false);
/** Update the core options on an asset. /** Update the core options on an asset.
* There are a number of options which all assets in the network use. These options are * There are a number of options which all assets in the network use. These options are
* enumerated in the asset_object::asset_options struct. This command is used to update * enumerated in the asset_object::asset_options struct. This command is used to update
* these options for an existing asset. * these options for an existing asset.
* *
* @note This operation cannot be used to update BitAsset-specific options. For these options, * @note This operation cannot be used to update BitAsset-specific options. For these options,
@ -1114,7 +1114,7 @@ class wallet_api
signed_transaction update_asset_feed_producers(string symbol, signed_transaction update_asset_feed_producers(string symbol,
flat_set<string> new_feed_producers, flat_set<string> new_feed_producers,
bool broadcast = false); bool broadcast = false);
/** Publishes a price feed for the named asset. /** Publishes a price feed for the named asset.
* *
* Price feed providers use this command to publish their price feeds for market-issued assets. A price feed is * Price feed providers use this command to publish their price feeds for market-issued assets. A price feed is
@ -1142,7 +1142,7 @@ class wallet_api
/** Pay into the fee pool for the given asset. /** Pay into the fee pool for the given asset.
* *
* User-issued assets can optionally have a pool of the core asset which is * User-issued assets can optionally have a pool of the core asset which is
* automatically used to pay transaction fees for any transaction using that * automatically used to pay transaction fees for any transaction using that
* asset (using the asset's core exchange rate). * asset (using the asset's core exchange rate).
* *
@ -1183,7 +1183,7 @@ class wallet_api
* used as backing for other bitassets, those bitassets will be force settled at their current * used as backing for other bitassets, those bitassets will be force settled at their current
* feed price. * feed price.
* *
* @note this operation is used only by the asset issuer, \c settle_asset() may be used by * @note this operation is used only by the asset issuer, \c settle_asset() may be used by
* any user owning the asset * any user owning the asset
* *
* @param symbol the name or id of the asset to force settlement on * @param symbol the name or id of the asset to force settlement on
@ -1251,7 +1251,7 @@ class wallet_api
* @returns the signed transaction registering a committee_member * @returns the signed transaction registering a committee_member
*/ */
signed_transaction create_committee_member(string owner_account, signed_transaction create_committee_member(string owner_account,
string url, string url,
bool broadcast = false); bool broadcast = false);
/** Lists all witnesses registered in the blockchain. /** Lists all witnesses registered in the blockchain.
@ -1262,7 +1262,7 @@ class wallet_api
* start by setting \c lowerbound to the empty string \c "", and then each iteration, pass * start by setting \c lowerbound to the empty string \c "", and then each iteration, pass
* the last witness name returned as the \c lowerbound for the next \c list_witnesss() call. * the last witness name returned as the \c lowerbound for the next \c list_witnesss() call.
* *
* @param lowerbound the name of the first witness to return. If the named witness does not exist, * @param lowerbound the name of the first witness to return. If the named witness does not exist,
* the list will start at the witness that comes after \c lowerbound * the list will start at the witness that comes after \c lowerbound
* @param limit the maximum number of witnesss to return (max: 1000) * @param limit the maximum number of witnesss to return (max: 1000)
* @returns a list of witnesss mapping witness names to witness ids * @returns a list of witnesss mapping witness names to witness ids
@ -1277,7 +1277,7 @@ class wallet_api
* start by setting \c lowerbound to the empty string \c "", and then each iteration, pass * start by setting \c lowerbound to the empty string \c "", and then each iteration, pass
* the last committee_member name returned as the \c lowerbound for the next \c list_committee_members() call. * the last committee_member name returned as the \c lowerbound for the next \c list_committee_members() call.
* *
* @param lowerbound the name of the first committee_member to return. If the named committee_member does not exist, * @param lowerbound the name of the first committee_member to return. If the named committee_member does not exist,
* the list will start at the committee_member that comes after \c lowerbound * the list will start at the committee_member that comes after \c lowerbound
* @param limit the maximum number of committee_members to return (max: 1000) * @param limit the maximum number of committee_members to return (max: 1000)
* @returns a list of committee_members mapping committee_member names to committee_member ids * @returns a list of committee_members mapping committee_member names to committee_member ids
@ -1352,7 +1352,7 @@ class wallet_api
* start by setting \c lowerbound to the empty string \c "", and then each iteration, pass * start by setting \c lowerbound to the empty string \c "", and then each iteration, pass
* the last SON name returned as the \c lowerbound for the next \c list_sons() call. * the last SON name returned as the \c lowerbound for the next \c list_sons() call.
* *
* @param lowerbound the name of the first SON to return. If the named SON does not exist, * @param lowerbound the name of the first SON to return. If the named SON does not exist,
* the list will start at the SON that comes after \c lowerbound * the list will start at the SON that comes after \c lowerbound
* @param limit the maximum number of SON to return (max: 1000) * @param limit the maximum number of SON to return (max: 1000)
* @returns a list of SON mapping SON names to SON ids * @returns a list of SON mapping SON names to SON ids
@ -1446,7 +1446,7 @@ class wallet_api
/** Vote for a given committee_member. /** Vote for a given committee_member.
* *
* An account can publish a list of all committee_memberes they approve of. This * An account can publish a list of all committee_memberes they approve of. This
* command allows you to add or remove committee_memberes from this list. * command allows you to add or remove committee_memberes from this list.
* Each account's vote is weighted according to the number of shares of the * Each account's vote is weighted according to the number of shares of the
* core asset owned by that account at the time the votes are tallied. * core asset owned by that account at the time the votes are tallied.
@ -1456,7 +1456,7 @@ class wallet_api
* *
* @param voting_account the name or id of the account who is voting with their shares * @param voting_account the name or id of the account who is voting with their shares
* @param committee_member the name or id of the committee_member' owner account * @param committee_member the name or id of the committee_member' owner account
* @param approve true if you wish to vote in favor of that committee_member, false to * @param approve true if you wish to vote in favor of that committee_member, false to
* remove your vote in favor of that committee_member * remove your vote in favor of that committee_member
* @param broadcast true if you wish to broadcast the transaction * @param broadcast true if you wish to broadcast the transaction
* @return the signed transaction changing your vote for the given committee_member * @return the signed transaction changing your vote for the given committee_member
@ -1466,25 +1466,25 @@ class wallet_api
bool approve, bool approve,
bool broadcast = false); bool broadcast = false);
/** Vote for a given son_member. /** Vote for a given SON.
* *
* An account can publish a list of all son_memberes they approve of. This * An account can publish a list of all SONs they approve of. This
* command allows you to add or remove son_memberes from this list. * command allows you to add or remove SONs from this list.
* Each account's vote is weighted according to the number of shares of the * Each account's vote is weighted according to the number of shares of the
* core asset owned by that account at the time the votes are tallied. * core asset owned by that account at the time the votes are tallied.
* *
* @note you cannot vote against a son_member, you can only vote for the son_member * @note you cannot vote against a SON, you can only vote for the SON
* or not vote for the son_member. * or not vote for the SON.
* *
* @param voting_account the name or id of the account who is voting with their shares * @param voting_account the name or id of the account who is voting with their shares
* @param son_member the name or id of the son_member' owner account * @param son the name or id of the SONs' owner account
* @param approve true if you wish to vote in favor of that son_member, false to * @param approve true if you wish to vote in favor of that SON, false to
* remove your vote in favor of that son_member * remove your vote in favor of that SON
* @param broadcast true if you wish to broadcast the transaction * @param broadcast true if you wish to broadcast the transaction
* @return the signed transaction changing your vote for the given son_member * @return the signed transaction changing your vote for the given SON
*/ */
signed_transaction vote_for_son(string voting_account, signed_transaction vote_for_son(string voting_account,
string son_member, string son,
bool approve, bool approve,
bool broadcast = false); bool broadcast = false);
@ -1533,7 +1533,7 @@ class wallet_api
* *
* @param voting_account the name or id of the account who is voting with their shares * @param voting_account the name or id of the account who is voting with their shares
* @param witness the name or id of the witness' owner account * @param witness the name or id of the witness' owner account
* @param approve true if you wish to vote in favor of that witness, false to * @param approve true if you wish to vote in favor of that witness, false to
* remove your vote in favor of that witness * remove your vote in favor of that witness
* @param broadcast true if you wish to broadcast the transaction * @param broadcast true if you wish to broadcast the transaction
* @return the signed transaction changing your vote for the given witness * @return the signed transaction changing your vote for the given witness
@ -1545,12 +1545,12 @@ class wallet_api
/** Change your witness votes. /** Change your witness votes.
* *
* An account can publish a list of all witnesses they approve of. * An account can publish a list of all witnesses they approve of.
* Each account's vote is weighted according to the number of shares of the * Each account's vote is weighted according to the number of shares of the
* core asset owned by that account at the time the votes are tallied. * core asset owned by that account at the time the votes are tallied.
* This command allows you to add or remove one or more witnesses from this list * This command allows you to add or remove one or more witnesses from this list
* in one call. When you are changing your vote on several witnesses, this * in one call. When you are changing your vote on several witnesses, this
* may be easier than multiple `vote_for_witness` and * may be easier than multiple `vote_for_witness` and
* `set_desired_witness_and_committee_member_count` calls. * `set_desired_witness_and_committee_member_count` calls.
* *
* @note you cannot vote against a witness, you can only vote for the witness * @note you cannot vote against a witness, you can only vote for the witness
@ -1565,7 +1565,7 @@ class wallet_api
* you currently approve). This list can be empty. * you currently approve). This list can be empty.
* @param desired_number_of_witnesses the number of witnesses you believe the network * @param desired_number_of_witnesses the number of witnesses you believe the network
* should have. You must vote for at least this many * should have. You must vote for at least this many
* witnesses. You can set this to 0 to abstain from * witnesses. You can set this to 0 to abstain from
* voting on the number of witnesses. * voting on the number of witnesses.
* @param broadcast true if you wish to broadcast the transaction * @param broadcast true if you wish to broadcast the transaction
* @return the signed transaction changing your vote for the given witnesses * @return the signed transaction changing your vote for the given witnesses
@ -1596,23 +1596,23 @@ class wallet_api
signed_transaction set_voting_proxy(string account_to_modify, signed_transaction set_voting_proxy(string account_to_modify,
optional<string> voting_account, optional<string> voting_account,
bool broadcast = false); bool broadcast = false);
/** Set your vote for the number of witnesses and committee_members in the system. /** Set your vote for the number of witnesses and committee_members in the system.
* *
* Each account can voice their opinion on how many committee_members and how many * Each account can voice their opinion on how many committee_members and how many
* witnesses there should be in the active committee_member/active witness list. These * witnesses there should be in the active committee_member/active witness list. These
* are independent of each other. You must vote your approval of at least as many * are independent of each other. You must vote your approval of at least as many
* committee_members or witnesses as you claim there should be (you can't say that there should * committee_members or witnesses as you claim there should be (you can't say that there should
* be 20 committee_members but only vote for 10). * be 20 committee_members but only vote for 10).
* *
* There are maximum values for each set in the blockchain parameters (currently * There are maximum values for each set in the blockchain parameters (currently
* defaulting to 1001). * defaulting to 1001).
* *
* This setting can be changed at any time. If your account has a voting proxy * This setting can be changed at any time. If your account has a voting proxy
* set, your preferences will be ignored. * set, your preferences will be ignored.
* *
* @param account_to_modify the name or id of the account to update * @param account_to_modify the name or id of the account to update
* @param number_of_committee_members the number * @param number_of_committee_members the number
* *
* @param broadcast true if you wish to broadcast the transaction * @param broadcast true if you wish to broadcast the transaction
* @return the signed transaction changing your vote proxy settings * @return the signed transaction changing your vote proxy settings
@ -1634,16 +1634,16 @@ class wallet_api
/** Returns an uninitialized object representing a given blockchain operation. /** Returns an uninitialized object representing a given blockchain operation.
* *
* This returns a default-initialized object of the given type; it can be used * This returns a default-initialized object of the given type; it can be used
* during early development of the wallet when we don't yet have custom commands for * during early development of the wallet when we don't yet have custom commands for
* creating all of the operations the blockchain supports. * creating all of the operations the blockchain supports.
* *
* Any operation the blockchain supports can be created using the transaction builder's * Any operation the blockchain supports can be created using the transaction builder's
* \c add_operation_to_builder_transaction() , but to do that from the CLI you need to * \c add_operation_to_builder_transaction() , but to do that from the CLI you need to
* know what the JSON form of the operation looks like. This will give you a template * know what the JSON form of the operation looks like. This will give you a template
* you can fill in. It's better than nothing. * you can fill in. It's better than nothing.
* *
* @param operation_type the type of operation to return, must be one of the * @param operation_type the type of operation to return, must be one of the
* operations defined in `graphene/chain/operations.hpp` * operations defined in `graphene/chain/operations.hpp`
* (e.g., "global_parameters_update_operation") * (e.g., "global_parameters_update_operation")
* @return a default-constructed operation of the given type * @return a default-constructed operation of the given type
@ -1668,7 +1668,7 @@ class wallet_api
bool broadcast = false); bool broadcast = false);
/** Propose a fee change. /** Propose a fee change.
* *
* @param proposing_account The account paying the fee to propose the tx * @param proposing_account The account paying the fee to propose the tx
* @param expiration_time Timestamp specifying when the proposal will either take effect or expire. * @param expiration_time Timestamp specifying when the proposal will either take effect or expire.
* @param changed_values Map of operation type to new fee. Operations may be specified by name or ID. * @param changed_values Map of operation type to new fee. Operations may be specified by name or ID.
@ -1710,7 +1710,7 @@ class wallet_api
const approval_delta& delta, const approval_delta& delta,
bool broadcast /* = false */ bool broadcast /* = false */
); );
order_book get_order_book( const string& base, const string& quote, unsigned limit = 50); order_book get_order_book( const string& base, const string& quote, unsigned limit = 50);
asset get_total_matched_bet_amount_for_betting_market_group(betting_market_group_id_type group_id); asset get_total_matched_bet_amount_for_betting_market_group(betting_market_group_id_type group_id);
@ -1749,7 +1749,7 @@ class wallet_api
sport_id_type sport_id, sport_id_type sport_id,
fc::optional<internationalized_string_type> name, fc::optional<internationalized_string_type> name,
bool broadcast = false); bool broadcast = false);
signed_transaction propose_delete_sport( signed_transaction propose_delete_sport(
const string& proposing_account, const string& proposing_account,
fc::time_point_sec expiration_time, fc::time_point_sec expiration_time,
@ -1776,7 +1776,7 @@ class wallet_api
fc::time_point_sec expiration_time, fc::time_point_sec expiration_time,
event_group_id_type event_group, event_group_id_type event_group,
bool broadcast = false); bool broadcast = false);
signed_transaction propose_create_event( signed_transaction propose_create_event(
const string& proposing_account, const string& proposing_account,
fc::time_point_sec expiration_time, fc::time_point_sec expiration_time,
@ -1847,7 +1847,7 @@ class wallet_api
fc::optional<internationalized_string_type> payout_condition, fc::optional<internationalized_string_type> payout_condition,
bool broadcast = false); bool broadcast = false);
/** Place a bet /** Place a bet
* @param bettor the account placing the bet * @param bettor the account placing the bet
* @param betting_market_id the market on which to bet * @param betting_market_id the market on which to bet
* @param back_or_lay back or lay * @param back_or_lay back or lay
@ -1923,7 +1923,7 @@ class wallet_api
tournament_state state); tournament_state state);
/** Get specific information about a tournament /** Get specific information about a tournament
* @param tournament_id the ID of the tournament * @param tournament_id the ID of the tournament
*/ */
tournament_object get_tournament(tournament_id_type id); tournament_object get_tournament(tournament_id_type id);
@ -2025,7 +2025,7 @@ FC_REFLECT_DERIVED( graphene::wallet::signed_block_with_info, (graphene::chain::
FC_REFLECT_DERIVED( graphene::wallet::vesting_balance_object_with_info, (graphene::chain::vesting_balance_object), FC_REFLECT_DERIVED( graphene::wallet::vesting_balance_object_with_info, (graphene::chain::vesting_balance_object),
(allowed_withdraw)(allowed_withdraw_time) ) (allowed_withdraw)(allowed_withdraw_time) )
FC_REFLECT( graphene::wallet::operation_detail, FC_REFLECT( graphene::wallet::operation_detail,
(memo)(description)(op) ) (memo)(description)(op) )
FC_API( graphene::wallet::wallet_api, FC_API( graphene::wallet::wallet_api,

View file

@ -701,11 +701,8 @@ public:
result["participation"] = (100*dynamic_props.recent_slots_filled.popcount()) / 128.0; result["participation"] = (100*dynamic_props.recent_slots_filled.popcount()) / 128.0;
result["active_witnesses"] = fc::variant(global_props.active_witnesses, GRAPHENE_MAX_NESTED_OBJECTS); result["active_witnesses"] = fc::variant(global_props.active_witnesses, GRAPHENE_MAX_NESTED_OBJECTS);
result["active_committee_members"] = fc::variant(global_props.active_committee_members, GRAPHENE_MAX_NESTED_OBJECTS); result["active_committee_members"] = fc::variant(global_props.active_committee_members, GRAPHENE_MAX_NESTED_OBJECTS);
result["active_sons"] = fc::variant(global_props.active_sons, GRAPHENE_MAX_NESTED_OBJECTS);
result["entropy"] = fc::variant(dynamic_props.random, GRAPHENE_MAX_NESTED_OBJECTS); result["entropy"] = fc::variant(dynamic_props.random, GRAPHENE_MAX_NESTED_OBJECTS);
result["active_witnesses"] = global_props.active_witnesses;
result["active_committee_members"] = global_props.active_committee_members;
result["active_sons"] = global_props.active_sons;
result["entropy"] = dynamic_props.random;
return result; return result;
} }
@ -1898,7 +1895,7 @@ public:
bool broadcast /* = false */) bool broadcast /* = false */)
{ try { { try {
son_object son = get_son(owner_account); son_object son = get_son(owner_account);
account_object son_account = get_account( son.son_member_account ); account_object son_account = get_account( son.son_account );
fc::ecc::private_key active_private_key = get_private_key_for_account(son_account); fc::ecc::private_key active_private_key = get_private_key_for_account(son_account);
son_update_operation son_update_op; son_update_operation son_update_op;
@ -1922,7 +1919,7 @@ public:
bool broadcast /* = false */) bool broadcast /* = false */)
{ try { { try {
son_object son = get_son(owner_account); son_object son = get_son(owner_account);
account_object son_account = get_account( son.son_member_account ); account_object son_account = get_account( son.son_account );
fc::ecc::private_key active_private_key = get_private_key_for_account(son_account); fc::ecc::private_key active_private_key = get_private_key_for_account(son_account);
son_delete_operation son_delete_op; son_delete_operation son_delete_op;
@ -2206,26 +2203,26 @@ public:
} FC_CAPTURE_AND_RETHROW( (voting_account)(committee_member)(approve)(broadcast) ) } } FC_CAPTURE_AND_RETHROW( (voting_account)(committee_member)(approve)(broadcast) ) }
signed_transaction vote_for_son(string voting_account, signed_transaction vote_for_son(string voting_account,
string son_member, string son,
bool approve, bool approve,
bool broadcast /* = false */) bool broadcast /* = false */)
{ try { { try {
account_object voting_account_object = get_account(voting_account); account_object voting_account_object = get_account(voting_account);
account_id_type son_member_owner_account_id = get_account_id(son_member); account_id_type son_account_id = get_account_id(son);
fc::optional<son_object> son_member_obj = _remote_db->get_son_by_account(son_member_owner_account_id); fc::optional<son_object> son_obj = _remote_db->get_son_by_account(son_account_id);
if (!son_member_obj) if (!son_obj)
FC_THROW("Account ${son_member} is not registered as a son_member", ("son_member", son_member)); FC_THROW("Account ${son} is not registered as a son", ("son", son));
if (approve) if (approve)
{ {
auto insert_result = voting_account_object.options.votes.insert(son_member_obj->vote_id); auto insert_result = voting_account_object.options.votes.insert(son_obj->vote_id);
if (!insert_result.second) if (!insert_result.second)
FC_THROW("Account ${account} was already voting for son_member ${son_member}", ("account", voting_account)("son_member", son_member)); FC_THROW("Account ${account} was already voting for son ${son}", ("account", voting_account)("son", son));
} }
else else
{ {
unsigned votes_removed = voting_account_object.options.votes.erase(son_member_obj->vote_id); unsigned votes_removed = voting_account_object.options.votes.erase(son_obj->vote_id);
if (!votes_removed) if (!votes_removed)
FC_THROW("Account ${account} is already not voting for son_member ${son_member}", ("account", voting_account)("son_member", son_member)); FC_THROW("Account ${account} is already not voting for son ${son}", ("account", voting_account)("son", son));
} }
account_update_operation account_update_op; account_update_operation account_update_op;
account_update_op.account = voting_account_object.id; account_update_op.account = voting_account_object.id;
@ -2237,7 +2234,7 @@ public:
tx.validate(); tx.validate();
return sign_transaction( tx, broadcast ); return sign_transaction( tx, broadcast );
} FC_CAPTURE_AND_RETHROW( (voting_account)(son_member)(approve)(broadcast) ) } } FC_CAPTURE_AND_RETHROW( (voting_account)(son)(approve)(broadcast) ) }
signed_transaction update_son_votes(string voting_account, signed_transaction update_son_votes(string voting_account,
std::vector<std::string> sons_to_approve, std::vector<std::string> sons_to_approve,
@ -4331,11 +4328,11 @@ signed_transaction wallet_api::vote_for_committee_member(string voting_account,
} }
signed_transaction wallet_api::vote_for_son(string voting_account, signed_transaction wallet_api::vote_for_son(string voting_account,
string son_member, string son,
bool approve, bool approve,
bool broadcast /* = false */) bool broadcast /* = false */)
{ {
return my->vote_for_son(voting_account, son_member, approve, broadcast); return my->vote_for_son(voting_account, son, approve, broadcast);
} }
signed_transaction wallet_api::update_son_votes(string voting_account, signed_transaction wallet_api::update_son_votes(string voting_account,

View file

@ -175,7 +175,7 @@ try {
obj = idx.find( alice_id ); obj = idx.find( alice_id );
// not deleting // not deleting
BOOST_REQUIRE( obj != idx.end() ); BOOST_REQUIRE( obj != idx.end() );
BOOST_CHECK( obj->son_member_account.instance == alice_id.instance); BOOST_CHECK( obj->son_account.instance == alice_id.instance);
} }
catch (fc::exception &e) { catch (fc::exception &e) {
edump((e.to_detail_string())); edump((e.to_detail_string()));