diff --git a/.gitmodules b/.gitmodules
index c0066fb398a742a16c582dabb8f99a25e9b3b062..7c291d18c1d24ba53e36169e438e59eb502be92b 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -12,3 +12,7 @@
 [submodule "prod_build"]
 	path = prod_build
 	url = ../prod_build_dapcash-node
+[submodule "3rdparty/libmdbx"]
+	path = 3rdparty/libmdbx
+	url = ../../cellframe/libmdbx.git
+	branch = master
diff --git a/3rdparty/libmdbx b/3rdparty/libmdbx
new file mode 160000
index 0000000000000000000000000000000000000000..c5847bd09adb648a0eec0023744ca8c78b47fa08
--- /dev/null
+++ b/3rdparty/libmdbx
@@ -0,0 +1 @@
+Subproject commit c5847bd09adb648a0eec0023744ca8c78b47fa08
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 47536d7a0d20ddbdb79c909d5b46b5284e66c49d..43cd8597a459fb5d566f4c2c69efece885d3e179 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,8 +7,8 @@ set(CMAKE_C_STANDARD 11)
 # Predefine project
 SET( CPACK_PACKAGE_NAME  "${PROJECT_NAME}")
 SET( CPACK_PACKAGE_VERSION_MAJOR 4)
-SET( CPACK_PACKAGE_VERSION_MINOR 1)
-SET( CPACK_PACKAGE_VERSION_PATCH 99)
+SET( CPACK_PACKAGE_VERSION_MINOR 3)
+SET( CPACK_PACKAGE_VERSION_PATCH 23)
 
 #
 # init CellFrame SDK
@@ -18,9 +18,13 @@ add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}-${CPACK_PACKAGE_
 set(SUBMODULES_NO_BUILD ON)
 
 if (NOT(WIN32))
-    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic srv-vpn")
+    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic srv-vpn")
 else()
-    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic")
+    set(CELLFRAME_MODULES "core chains mining network srv cs-blocks cs-dag-poa cs-block-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-stake srv-xchange modules-dynamic")
+endif()
+
+if(BUILD_WITH_GDB_DRIVER_MDBX)
+add_subdirectory(3rdparty/libmdbx)
 endif()
 
 include (cellframe-sdk/cmake/OS_Detection.cmake)
diff --git a/cellframe-sdk b/cellframe-sdk
index 15d774b3535d530459eada6ccabb7a1b4ba4f8ef..b948640c3578c5d5e8d3af5243fa1f0f52d134fd 160000
--- a/cellframe-sdk
+++ b/cellframe-sdk
@@ -1 +1 @@
-Subproject commit 15d774b3535d530459eada6ccabb7a1b4ba4f8ef
+Subproject commit b948640c3578c5d5e8d3af5243fa1f0f52d134fd
diff --git a/dist/share/configs/dapcash-node.cfg.tpl b/dist/share/configs/dapcash-node.cfg.tpl
index 85d161c6eea2345a10154bef8f44249f3c87e37c..460d6523828ca37d4a772ded61669b0e0a362da7 100644
--- a/dist/share/configs/dapcash-node.cfg.tpl
+++ b/dist/share/configs/dapcash-node.cfg.tpl
@@ -4,8 +4,6 @@
 debug_mode={DEBUG_MODE}
 # Debug stream packets
 debug_dump_stream_headers=false
-# Debug chains syncronyzation
-debug_chain_sync=false
 # Debug I/O reactor, false by default
 #debug_reactor=false
 
@@ -15,15 +13,6 @@ debug_chain_sync=false
 # Auto bring up links and sync everything over them
 auto_online={AUTO_ONLINE}
 
-# Ledger defaults
-[ledger]
-# More debug output
-debug_more=false
-
-[dag]
-# More debug output
-debug_more=false
-
 # Server part
 [server]
 #   By default you don't need to open you to the world
@@ -33,11 +22,26 @@ bugreport_url_enabled=false
 listen_address={SERVER_ADDR}
 listen_port_tcp={SERVER_PORT}
 
+
+# Build in DNS client (need for bootstraping)
+[dns_client]
+request_timeout=10
+
 # Builtin DNS server
 [dns_server]
 enabled=false
 bootstrap_balancer=false
 
+# Ledger defaults
+[ledger]
+# More debug output
+debug_more=false
+
+# DAG defaults
+[dag]
+# More debug output
+debug_more=false
+
 [srv]
 order_signed_only=false
 
@@ -50,6 +54,29 @@ pricelist=[]
 # Automaticaly should be true for master ad root node role
 # auto_proc=false
 
+# DAP network protocol client
+[dap_client]
+#debug_more=false
+#timeout=10
+#timeout_read_after_connect=5
+#max_tries=5
+
+# Chain network settings
+[chain_net]
+debug_more=true
+# Timeout for network status wait
+status_wait_timeout=10
+
+[stream_ch_chain]
+# Uncomment to have more debug information in stream channel Chain
+# False by default
+#debug_more=true
+
+# Number of hashes packed into the one update packet
+# Increase it to reduce update latency
+# Decrease if bad networking
+update_pack_size=100
+
 
 # Central Dataase
 [cdb]
diff --git a/python-cellframe b/python-cellframe
index 17a0569e1c1d73cc7c9a75d152eb38d4c3a93586..5f7f50045b26904da1cce15ab349c97d70e767bb 160000
--- a/python-cellframe
+++ b/python-cellframe
@@ -1 +1 @@
-Subproject commit 17a0569e1c1d73cc7c9a75d152eb38d4c3a93586
+Subproject commit 5f7f50045b26904da1cce15ab349c97d70e767bb
diff --git a/sources/main.c b/sources/main.c
index f2c9a41e128a0cb7814ea71ade46d1e049c0cb94..9b92dfcefa5ceb68fb02db2eb01e176392c688a8 100755
--- a/sources/main.c
+++ b/sources/main.c
@@ -58,7 +58,8 @@
 #include "dap_server.h"
 #include "dap_http.h"
 #include "dap_http_folder.h"
-#include "dap_dns_server.h"
+#include "dap_chain_node_dns_client.h"
+#include "dap_chain_node_dns_server.h"
 #include "dap_modules_dynamic_cdb.h"
 
 
@@ -116,6 +117,7 @@
 
 #ifdef DAP_SUPPORT_PYTHON_PLUGINS
     #include "dap_chain_plugins.h"
+    #include "dap_plugins_python_app_context.h"
 #endif
 
 
@@ -320,11 +322,26 @@ int main( int argc, const char **argv )
     dap_chain_ledger_verificator_add(DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_PAY, dap_chain_net_srv_pay_verificator);
     dap_chain_ledger_verificator_add(DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_STAKE, dap_chain_net_srv_stake_verificator);
 
+    // Chain Network init
+
+    dap_stream_ch_chain_init( );
+    dap_stream_ch_chain_net_init( );
+
+    dap_stream_ch_chain_net_srv_init();
+
+    if (!dap_chain_net_srv_xchange_init()) {
+        log_it(L_ERROR, "Can't provide exchange capability");
+    }
+    if (!dap_chain_net_srv_stake_init()) {
+        log_it(L_ERROR, "Can't start delegated stake service");
+    }
+///    if (dap_config_get_item_bool_default(g_config,"vpn","enabled",false))
+///        dap_stream_ch_vpn_deinit();
+
     if( dap_chain_net_init() !=0){
         log_it(L_CRITICAL,"Can't init dap chain network module");
         return -65;
     }
-
     if( dap_chain_net_srv_init(g_config) !=0){
         log_it(L_CRITICAL,"Can't init dap chain network service module");
         return -66;
@@ -340,6 +357,7 @@ int main( int argc, const char **argv )
         return -68;
     }
 
+
 #ifndef _WIN32
     // vpn server
     if(dap_config_get_item_bool_default(g_config, "srv_vpn", "enabled", false)) {
@@ -443,27 +461,12 @@ int main( int argc, const char **argv )
     {
         // DNS server start
         bool bootstrap_balancer_enabled = dap_config_get_item_bool_default(g_config, "dns_server", "bootstrap_balancer", false);
-        log_it(L_DEBUG, "config dns_server->bootstrap_balancer = \"%u\" ", bootstrap_balancer_enabled);
         if (bootstrap_balancer_enabled) {
             dap_dns_server_start(l_events, dap_config_get_item_uint16_default(g_config, "dns_server", "bootstrap_balancer_port", DNS_LISTEN_PORT));
         }
     }
 
-    // Chain Network init
-
-	dap_stream_ch_chain_init( );
-	dap_stream_ch_chain_net_init( );
 
-    dap_stream_ch_chain_net_srv_init();
-
-    if (!dap_chain_net_srv_xchange_init()) {
-        log_it(L_ERROR, "Can't provide exchange capability");
-    }
-    if (!dap_chain_net_srv_stake_init()) {
-        log_it(L_ERROR, "Can't start delegated stake service");
-    }
-///    if (dap_config_get_item_bool_default(g_config,"vpn","enabled",false))
-///        dap_stream_ch_vpn_deinit();
 
 
     //dap_chain_net_load_all();