1) Index is searched by id for vins same as the vin that is being added ( hash( string(hash_of_trx) + string(n_vout) ) ).
2) Id is calculated by the evaluator, since if it is passed in an operation, a potential attack vector opens: a valid ID for a different vin could be used to get approvals on another vin.
3) If nothing was found, a new btc_input_data_object object is created, storing the number of active SON members. son_id of the SON that sent the operation to set is also recorded in order to check confirmations by other SONs.
4) If set.size() > (2/3 + 1) * active_son_members_amount, btc_input_data_object object is considered confirmed (the consensus part).
5) Estimated fee index is searched for btc_fee_data_object by ID ( hash( string(btc_block_hash) ) ).
6) If no object was found, we create a btc_fee_data_object object, storing the number of active SON members.
7) Estimate fee map (key=son_id, value=fee) is checked for records about operation sender. If there is a record, handling stops.
8) If there are no records found in step 7, new information is recorded to the map.
9) If map.size() > (2/3 + 1) * active_son_members_amount, btc_fee_data_object is considered confirmed (the consensus part).