diff --git a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c index 0ac4c23414c1f025661d4d3d28db0c8051380c07..b708d9d05db22af9ce2f1acdcaaae2d72cd6f7dc 100644 --- a/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c +++ b/modules/consensus/dag-poa/dap_chain_cs_dag_poa.c @@ -751,7 +751,7 @@ static int s_callback_created(dap_chain_t * a_chain, dap_config_t *a_chain_net_c assert(l_net); dap_global_db_cluster_t *l_dag_cluster = dap_global_db_cluster_add(dap_global_db_instance_get_default(), NULL, dap_guuid_compose(l_net->pub.id.uint64, DAP_CHAIN_CLUSTER_ID_DAG), - l_dag->gdb_group_events_round_new, 900, true, + l_dag->gdb_group_events_round_new, 1, true, DAP_GDB_MEMBER_ROLE_NOBODY, DAP_CLUSTER_TYPE_AUTONOMIC); dap_global_db_cluster_add_notify_callback(l_dag_cluster, s_round_changes_notify, l_dag); dap_chain_net_add_auth_nodes_to_cluster(l_net, l_dag_cluster); diff --git a/modules/consensus/esbocs/dap_chain_cs_esbocs.c b/modules/consensus/esbocs/dap_chain_cs_esbocs.c index f839eca6fb70962bdee80a494ea025c490089914..eaa405cd7fff060fb691a9ac78e475bdc861a140 100644 --- a/modules/consensus/esbocs/dap_chain_cs_esbocs.c +++ b/modules/consensus/esbocs/dap_chain_cs_esbocs.c @@ -539,7 +539,7 @@ static int s_callback_created(dap_chain_t *a_chain, dap_config_t *a_chain_net_cf char *l_sync_group = s_get_penalty_group(l_net->pub.id); l_session->db_cluster = dap_global_db_cluster_add(dap_global_db_instance_get_default(), NULL, dap_guuid_compose(l_net->pub.id.uint64, DAP_CHAIN_CLUSTER_ID_ESBOCS), - l_sync_group, 72 * 3600, true, + l_sync_group, 72, true, DAP_GDB_MEMBER_ROLE_NOBODY, DAP_CLUSTER_TYPE_AUTONOMIC); dap_link_manager_add_net_associate(l_net->pub.id.uint64, l_session->db_cluster->links_cluster); dap_global_db_erase_table_sync(l_sync_group); // Drop table on stratup @@ -961,6 +961,9 @@ static dap_list_t *s_validator_check_synced(dap_chain_addr_t *a_addr, dap_list_t static void s_db_calc_sync_hash(dap_chain_esbocs_session_t *a_session) { + dap_chain_addr_t l_addr_blank = c_dap_chain_addr_blank; + l_addr_blank.net_id = a_session->chain->net_id; + dap_chain_net_srv_stake_mark_validator_active(&l_addr_blank, true); // Mark all validators active for now char *l_penalty_group = s_get_penalty_group(a_session->chain->net_id); size_t l_penalties_count = 0; dap_global_db_obj_t *l_objs = dap_global_db_get_all_sync(l_penalty_group, &l_penalties_count); diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index ebcbcc348ac6d63123fe18faa353dd619caa504f..2044750dc741f18050c674f14cb519e21bc7cf13 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -2326,7 +2326,7 @@ bool s_net_load(void *a_arg) l_gdb_groups_mask = dap_strdup_printf("%s.orders", l_net->pub.gdb_groups_prefix); l_net_pvt->common_orders = dap_global_db_cluster_add(dap_global_db_instance_get_default(), l_net->pub.name, dap_guuid_compose(l_net->pub.id.uint64, 0), - l_gdb_groups_mask, 72, true, + l_gdb_groups_mask, 336, true, DAP_GDB_MEMBER_ROLE_USER, DAP_CLUSTER_TYPE_EMBEDDED); if (!l_net_pvt->common_orders) { @@ -2337,12 +2337,11 @@ bool s_net_load(void *a_arg) DAP_DELETE(l_gdb_groups_mask); // Node states cluster l_gdb_groups_mask = dap_strdup_printf("%s.nodes.states", l_net->pub.gdb_groups_prefix); - l_net_pvt->nodes_states = dap_global_db_cluster_add( - dap_global_db_instance_get_default(), - l_net->pub.name, dap_guuid_compose(l_net->pub.id.uint64, 0), - l_gdb_groups_mask, 0, true, - DAP_GDB_MEMBER_ROLE_USER, - DAP_CLUSTER_TYPE_EMBEDDED); + l_net_pvt->nodes_states = dap_global_db_cluster_add(dap_global_db_instance_get_default(), + l_net->pub.name, dap_guuid_compose(l_net->pub.id.uint64, 0), + l_gdb_groups_mask, 6, true, + DAP_GDB_MEMBER_ROLE_USER, + DAP_CLUSTER_TYPE_EMBEDDED); DAP_DELETE(l_gdb_groups_mask); // Nodes and its aliases cluster l_net->pub.gdb_nodes = dap_strdup_printf("%s.nodes.list",l_net->pub.gdb_groups_prefix); 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 6efd943456ae53c279954729b14558c91fbce70c..2efa8490bfb650e3268f9e8e8e4595c6a79d508c 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 @@ -505,13 +505,17 @@ int dap_chain_net_srv_stake_mark_validator_active(dap_chain_addr_t *a_signing_ad dap_return_val_if_fail(a_signing_addr, -1); dap_chain_net_srv_stake_t *l_srv_stake = s_srv_stake_by_net_id(a_signing_addr->net_id); dap_return_val_if_fail(l_srv_stake, -3); - dap_chain_net_srv_stake_item_t *l_stake = NULL; - HASH_FIND(hh, l_srv_stake->itemlist, &a_signing_addr->data.hash_fast, sizeof(dap_hash_fast_t), l_stake); - if (l_stake) { // public key delegated for this network + dap_chain_net_srv_stake_item_t *l_stake = NULL, *l_tmp; + if (!dap_hash_fast_is_blank(&a_signing_addr->data.hash_fast)) { + // Mark a single validator + HASH_FIND(hh, l_srv_stake->itemlist, &a_signing_addr->data.hash_fast, sizeof(dap_hash_fast_t), l_stake); + if (!l_stake) // public key isn't delegated for this network + return -2; l_stake->is_active = a_on_off; - return 0; - } - return -2; + } else // Mark all validators + HASH_ITER(hh, l_srv_stake->itemlist, l_stake, l_tmp) + l_stake->is_active = a_on_off; + return 0; } int dap_chain_net_srv_stake_verify_key_and_node(dap_chain_addr_t *a_signing_addr, dap_chain_node_addr_t *a_node_addr) @@ -2944,7 +2948,8 @@ dap_chain_net_srv_stake_item_t *dap_chain_net_srv_stake_check_pkey_hash(dap_chai return NULL; } -size_t dap_chain_net_srv_stake_get_total_keys(dap_chain_net_id_t a_net_id, size_t *a_in_active_count){ +size_t dap_chain_net_srv_stake_get_total_keys(dap_chain_net_id_t a_net_id, size_t *a_in_active_count) +{ dap_chain_net_srv_stake_t *l_stake_rec = s_srv_stake_by_net_id(a_net_id); if (!l_stake_rec) return 0;