diff --git a/CMakeLists.txt b/CMakeLists.txt index 59c5885ae7f25fa984426405d1fdd71c4bda92c3..9fd7506ccae17033d0a5c7b5cacc1487dd687955 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,7 +2,7 @@ project(cellframe-sdk C) cmake_minimum_required(VERSION 2.8) set(CMAKE_C_STANDARD 11) -set(CELLFRAME_SDK_NATIVE_VERSION "2.5-16") +set(CELLFRAME_SDK_NATIVE_VERSION "2.5-17") add_definitions ("-DCELLFRAME_SDK_VERSION=\"${CELLFRAME_SDK_NATIVE_VERSION}\"") set(DAPSDK_MODULES "") diff --git a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c index 597ea51c63afaf5db0f92c5567c1fc847866389c..cb37b8d615f7b32d1c94b6e4ca17a8f634898354 100644 --- a/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c +++ b/modules/consensus/dag-pos/dap_chain_cs_dag_pos.c @@ -231,9 +231,9 @@ static int s_callback_event_verify(dap_chain_cs_dag_t * a_dag, dap_chain_cs_dag_ dap_chain_addr_t l_addr = { 0 }; for ( size_t l_sig_pos=0; l_sig_pos < a_dag_event->header.signs_count; l_sig_pos++ ){ - dap_sign_t * l_sign = dap_chain_cs_dag_event_get_sign(a_dag_event, 0,a_dag_event_size); + dap_sign_t * l_sign = dap_chain_cs_dag_event_get_sign(a_dag_event, a_dag_event_size,l_sig_pos); if ( l_sign == NULL){ - log_it(L_WARNING, "Event is NOT signed with anything"); + log_it(L_WARNING, "Event is NOT signed with anything: sig pos %zd, event size %zd", a_dag_event_size); return -4; } diff --git a/modules/type/dag/dap_chain_cs_dag.c b/modules/type/dag/dap_chain_cs_dag.c index 44c31b78720f26857924d5786b85fc88052b4f0f..6385aacf84141e8111d2e39249a4a947de32bbd8 100644 --- a/modules/type/dag/dap_chain_cs_dag.c +++ b/modules/type/dag/dap_chain_cs_dag.c @@ -482,7 +482,6 @@ static size_t s_chain_callback_datums_pool_proc(dap_chain_t * a_chain, dap_chain if(l_dag->callback_cs_event_create) l_event = l_dag->callback_cs_event_create(l_dag,l_datum,l_hashes,l_hashes_linked,&l_event_size); if ( l_event&&l_event_size){ // Event is created - if (l_dag->is_add_directy) { if (s_chain_callback_atom_add(a_chain, l_event, l_event_size) == ATOM_ACCEPT) { // add events to file @@ -593,24 +592,29 @@ static dap_chain_atom_verify_res_t s_chain_callback_atom_verify(dap_chain_t * a_ } // genesis or seed mode if (l_event->header.hash_count == 0){ - if(s_seed_mode && !PVT(l_dag)->events) - return ATOM_ACCEPT; - - if (l_dag->is_static_genesis_event ){ - dap_chain_hash_fast_t l_event_hash; - dap_chain_cs_dag_event_calc_hash(l_event,a_atom_size, &l_event_hash); - if ( memcmp( &l_event_hash, &l_dag->static_genesis_event_hash, sizeof(l_event_hash) ) != 0 ){ - char * l_event_hash_str = dap_chain_hash_fast_to_str_new(&l_event_hash); - char * l_genesis_event_hash_str = dap_chain_hash_fast_to_str_new(&l_dag->static_genesis_event_hash); - - log_it(L_WARNING, "Wrong genesis block %s (staticly predefined %s)",l_event_hash_str, l_genesis_event_hash_str); - DAP_DELETE(l_event_hash_str); - DAP_DELETE(l_genesis_event_hash_str); - return ATOM_REJECT; - }else{ - return ATOM_ACCEPT; + if(s_seed_mode && !PVT(l_dag)->events){ + log_it(L_NOTICE,"Accepting genesis event"); + return ATOM_ACCEPT; + }else if(s_seed_mode){ + log_it(L_WARNING,"Cant accept genesis event: already present data in DAG, ->events is not NULL"); + return ATOM_REJECT; + } + + if (l_dag->is_static_genesis_event ){ + dap_chain_hash_fast_t l_event_hash; + dap_chain_cs_dag_event_calc_hash(l_event,a_atom_size, &l_event_hash); + if ( memcmp( &l_event_hash, &l_dag->static_genesis_event_hash, sizeof(l_event_hash) ) != 0 ){ + char * l_event_hash_str = dap_chain_hash_fast_to_str_new(&l_event_hash); + char * l_genesis_event_hash_str = dap_chain_hash_fast_to_str_new(&l_dag->static_genesis_event_hash); + + log_it(L_WARNING, "Wrong genesis block %s (staticly predefined %s)",l_event_hash_str, l_genesis_event_hash_str); + DAP_DELETE(l_event_hash_str); + DAP_DELETE(l_genesis_event_hash_str); + return ATOM_REJECT; + }else{ + return ATOM_ACCEPT; + } } - } } //chain coherence diff --git a/modules/type/dag/dap_chain_cs_dag_event.c b/modules/type/dag/dap_chain_cs_dag_event.c index a9d1d755b57b6591a1c395fe59d05aeebc0c3e34..3b39ba72c0c4cff5530c11a0b2f8e1c3e1325bb3 100644 --- a/modules/type/dag/dap_chain_cs_dag_event.c +++ b/modules/type/dag/dap_chain_cs_dag_event.c @@ -77,9 +77,10 @@ dap_chain_cs_dag_event_t * dap_chain_cs_dag_event_new(dap_chain_id_t a_chain_id, size_t l_sign_size = dap_sign_get_size(l_sign); l_event_new = (dap_chain_cs_dag_event_t* )DAP_REALLOC(l_event_new,l_event_size+l_sign_size ); memcpy(l_event_new->hashes_n_datum_n_signs + l_hashes_size + l_datum_size, l_sign, l_sign_size); - *a_event_size += l_sign_size; l_event_size += l_sign_size; + *a_event_size = l_event_size; l_event_new->header.signs_count++; + log_it(L_INFO,"Created event size %zd, signed with sign size %zd", l_event_size, l_sign_size); DAP_DELETE(l_sign); }else { log_it(L_ERROR,"Can't sign dag event!");