diff --git a/CMakeLists.txt b/CMakeLists.txt
index 873bb3be270a8660444a6f17fb6e79d2c4e0f3e9..bd98dcd305fbad76ff232286a4c5c7301ab771f0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -7,18 +7,18 @@ set(CMAKE_C_STANDARD 11)
 # Predefine project
 SET( CPACK_PACKAGE_NAME  "${PROJECT_NAME}")
 SET( CPACK_PACKAGE_VERSION_MAJOR 3)
-SET( CPACK_PACKAGE_VERSION_MINOR 3)
-SET( CPACK_PACKAGE_VERSION_PATCH 9)
+SET( CPACK_PACKAGE_VERSION_MINOR 4)
+SET( CPACK_PACKAGE_VERSION_PATCH 1)
 
 # init CellFrame SDK
 add_definitions("-DDAP_VERSION=\"${CPACK_PACKAGE_VERSION_MAJOR}\"")
 set(SUBMODULES_NO_BUILD ON)
 set(SUPPORT_PYTHON_PLUGINS 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-vpn")
+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-vpn srv-xchange")
 else()
-    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum")
+    set(CELLFRAME_MODULES "core chains mining network srv cs-dag-poa cs-dag-pos cs-none srv-app srv-app-db srv-datum srv-xchange")
 endif()
 
 include (cellframe-sdk/cmake/OS_Detection.cmake)
diff --git a/cellframe-sdk b/cellframe-sdk
index b6ec5d920be946759f94e5aa12aa2dade036979c..737074e29c23a31c27db397589c2339a68c15af0 160000
--- a/cellframe-sdk
+++ b/cellframe-sdk
@@ -1 +1 @@
-Subproject commit b6ec5d920be946759f94e5aa12aa2dade036979c
+Subproject commit 737074e29c23a31c27db397589c2339a68c15af0
diff --git a/sources/main.c b/sources/main.c
index a7063fa3eb29d61a5760e5d986460186cf223269..cdae133fa1a2cddb530be684e693068a1e167bca 100755
--- a/sources/main.c
+++ b/sources/main.c
@@ -100,6 +100,7 @@
 #include "dap_stream_ch_chain.h"
 #include "dap_stream_ch_chain_net.h"
 #include "dap_stream_ch_chain_net_srv.h"
+#include "dap_chain_net_srv_xchange.h"
 
 #include "dap_common.h"
 #include "dap_client_remote.h"
@@ -134,6 +135,8 @@ void exit_if_server_already_running( void );
 
 static const char *s_pid_file_path = NULL;
 
+bool dap_chain_net_srv_pay_verificator(dap_chain_tx_out_cond_t *a_cond, dap_chain_datum_tx_t *a_tx) { return true; }
+
 #ifdef __ANDROID__
 int cellframe_node_Main(int argc, const char **argv)
 #else
@@ -293,6 +296,9 @@ int main( int argc, const char **argv )
         return -71;
     }
 
+    dap_chain_ledger_verificator_add(DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_XCHANGE, dap_chain_net_srv_xchange_verificator);
+    dap_chain_ledger_verificator_add(DAP_CHAIN_TX_OUT_COND_SUBTYPE_SRV_PAY, dap_chain_net_srv_pay_verificator);
+
     if( dap_chain_net_init() !=0){
         log_it(L_CRITICAL,"Can't init dap chain network module");
         return -65;
@@ -447,6 +453,10 @@ int main( int argc, const char **argv )
 
     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_config_get_item_bool_default(g_config,"vpn","enabled",false))
 ///        dap_stream_ch_vpn_deinit();