Example #1
0
transaction_builder& transaction_builder::update_signing_key( const string& authorizing_account_name,
        const string& delegate_name,
        const public_key_type& signing_key )
{   try {
        const owallet_account_record authorizing_account_record = _wimpl->_wallet_db.lookup_account( authorizing_account_name );
        if( !authorizing_account_record.valid() )
            FC_THROW_EXCEPTION( unknown_account, "Unknown authorizing account name!" );

        const oaccount_record delegate_record = _wimpl->_blockchain->get_account_record( delegate_name );
        if( !delegate_record.valid() )
            FC_THROW_EXCEPTION( unknown_account, "Unknown delegate account name!" );

        trx.update_signing_key( delegate_record->id, signing_key );
        deduct_balance( authorizing_account_record->owner_address(), asset() );

        ledger_entry entry;
        entry.from_account = authorizing_account_record->active_key();
        entry.to_account = delegate_record->owner_key;
        entry.memo = "update block signing key";

        transaction_record.ledger_entries.push_back( entry );

        required_signatures.insert( authorizing_account_record->active_key() );
        return *this;
    }
    FC_CAPTURE_AND_RETHROW( (authorizing_account_name)(delegate_name)(signing_key) )
}