diff --git a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c index 714fb1887e4058f3bf08122cd644865b2ce6582e..3f76098b1a4f96d9ac3c5d7b1144fbd09d797fdc 100644 --- a/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c +++ b/modules/service/stake/dap_chain_net_srv_stake_pos_delegate.c @@ -4124,11 +4124,27 @@ bool dap_chain_net_srv_stake_get_fee_validators(dap_chain_net_t *a_net, uint256_t t = uint256_0; SUM_256_256(l_order->price, l_average, &t); l_average = t; - if (compare256(l_min, l_order->price) == 1) { - l_min = l_order->price; + } + + uint16_t l_min_count = dap_chain_esbocs_get_min_validators_count(a_net->pub.id); + uint256_t l_min_tmp = uint256_0; + uint16_t l_min_tmp_count = 0; + bool l_found = false; + for (size_t k = 0; k < l_order_fee_count; k++) { + if (!l_found) { + switch (compare256(l_min_tmp, l_all_fees[k])) { + case 0: l_min_tmp_count++; break; + case 1: + case -1: l_min_tmp = l_all_fees[k]; l_min_tmp_count = 1; break; + default: break; + } + if (l_min_tmp_count == l_min_count) { + l_min = l_min_tmp; + l_found = true; + } } - if (compare256(l_max, l_order->price) == -1) { - l_max = l_order->price; + if (compare256(l_max, l_all_fees[k]) == -1) { + l_max = l_all_fees[k]; } } dap_global_db_objs_delete(l_orders, l_orders_count);