diff --git a/.gitmodules b/.gitmodules
index f4a671349c424ab6d76f4631eeb21b064283c341..d3c26ccb903d2d8ccd29aca2ebd8d92380ec38bb 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -13,3 +13,66 @@
 	path = libdap-crypto-python
 	url = https://gitlab.demlabs.net/cellframe/libdap-crypto-python.git
         branch = features-2466
+[submodule "libdap-chain-python"]
+	path = libdap-chain-python
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-python.git
+[submodule "libdap-chain"]
+	path = libdap-chain
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain.git
+[submodule "libdap-chain-crypto"]
+	path = libdap-chain-crypto
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-crypto.git
+[submodule "libdap-chain-gdb"]
+	path = libdap-chain-gdb
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-gdb.git
+[submodule "libdap-chain-global-db"]
+	path = libdap-chain-global-db
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-global-db.git
+[submodule "libdap-chain-mempool"]
+	path = libdap-chain-mempool
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-mempool.git
+[submodule "libdap-chain-net"]
+	path = libdap-chain-net
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-net.git
+[submodule "libdap-chain-net-srv"]
+	path = libdap-chain-net-srv
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-net-srv.git
+[submodule "libdap-chain-net-srv-vpn"]
+	path = libdap-chain-net-srv-vpn
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-net-srv-vpn.git
+[submodule "libdap-chain-wallet"]
+	path = libdap-chain-wallet
+	url = https://gitlab.demlabs.net/cellframe/libdap-chain-wallet.git
+[submodule "libdap-client"]
+	path = libdap-client
+	url = https://gitlab.demlabs.net/cellframe/libdap-client.git
+[submodule "libdap-crypto"]
+	path = libdap-crypto
+	url = https://gitlab.demlabs.net/cellframe/libdap-crypto.git
+[submodule "libdap-server"]
+	path = libdap-server
+	url = https://gitlab.demlabs.net/cellframe/libdap-server.git
+[submodule "libdap-server-core"]
+	path = libdap-server-core
+	url = https://gitlab.demlabs.net/cellframe/libdap-server-core.git
+[submodule "libdap-server-http-db-auth"]
+	path = libdap-server-http-db-auth
+	url = https://gitlab.demlabs.net/cellframe/libdap-server-http-db-auth.git
+[submodule "libdap-server-udp"]
+	path = libdap-server-udp
+	url = https://gitlab.demlabs.net/cellframe/libdap-server-udp.git
+[submodule "libdap-stream"]
+	path = libdap-stream
+	url = https://gitlab.demlabs.net/cellframe/libdap-stream.git
+[submodule "libdap-stream-ch"]
+	path = libdap-stream-ch
+	url = https://gitlab.demlabs.net/cellframe/libdap-stream-ch.git
+[submodule "libdap-stream-ch-chain"]
+	path = libdap-stream-ch-chain
+	url = https://gitlab.demlabs.net/cellframe/libdap-stream-ch-chain.git
+[submodule "libdap-stream-ch-chain-net"]
+	path = libdap-stream-ch-chain-net
+	url = https://gitlab.demlabs.net/cellframe/libdap-stream-ch-chain-net.git
+[submodule "libdap-server-http-db"]
+	path = libdap-server-http-db
+	url = http://gitlab.demlabs.net/cellframe/libdap-server-http-db.git
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 173b4819fbc4afbc820ff4275d7d05539c2311df..ef90638032a28dffab49ad58466a4148a7e56d06 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -6,12 +6,64 @@ set(CMAKE_COLOR_MAKEFILE   ON)
 set(CMAKE_C_STANDARD 11)
 set(SUBMODULES_NO_BUILD ON)
 
+if (UNIX)
+    add_definitions("-DDAP_OS_UNIX")
+endif()
+
+add_definitions("-DDAP_LOG_MT")
+add_definitions("-DNODE_NETNAME=\"cellframe\"")
+add_definitions("-DDAP_APP_NAME=\"pythonCellframe\"")
+
 add_subdirectory(libdap)
+target_compile_options(dap_core PRIVATE "-fpic")
+add_subdirectory(libdap-crypto)
+target_compile_options(dap_crypto PRIVATE "-fpic")
+add_subdirectory(libdap-chain)
+target_compile_options(dap_chain PRIVATE "-fpic")
+add_subdirectory(libdap-chain-crypto)
+add_subdirectory(libdap-chain-wallet)
+target_compile_options(dap_chain_wallet PRIVATE "-fpic" )
+target_compile_options(dap_chain_crypto PRIVATE "-fpic" )
+add_subdirectory(libdap-chain-mempool)
+target_compile_options(dap_chain_mempool PRIVATE "-fpic" )
+add_subdirectory(libdap-chain-net)
+target_compile_options(dap_chain_net PRIVATE "-fpic" )
+add_subdirectory(libdap-server-core)
+target_compile_options(dap_server_core PRIVATE "-fpic" )
+add_subdirectory(libdap-server-core-python)
+add_subdirectory(libdap-chain-global-db)
+target_compile_options(dap_chain_global_db PRIVATE "-fpic" )
+add_subdirectory(libdap-client)
+target_compile_options(dap_client PRIVATE "-fpic" )
+add_subdirectory(libdap-server)
+#target_compile_options(libdap-server PRIVATE "-fpic" )
+add_subdirectory(libdap-stream)
+target_compile_options(dap_stream PRIVATE "-fpic" )
+add_subdirectory(libdap-stream-ch)
+target_compile_options(dap_stream_ch PRIVATE "-fpic" )
+add_subdirectory(libdap-stream-ch-chain-net)
+target_compile_options(dap_stream_ch_chain_net PRIVATE "-fpic" )
+add_subdirectory(libdap-stream-ch-chain)
+target_compile_options(dap_stream_ch_chain PRIVATE "-fpic" )
+add_subdirectory(libdap-server-udp)
+target_compile_options(dap_udp_server PRIVATE "-fpic" )
+add_subdirectory(libdap-chain-net-srv)
+target_compile_options(dap_chain_net_srv PRIVATE "-fpic" )
+add_subdirectory(libdap-server-http-db-auth)
+add_subdirectory(libdap-chain-net-srv-vpn)
+target_compile_options(dap_chain_net_srv_vpn PRIVATE "-fpic" )
+target_compile_options(dap_server_http_db_auth PRIVATE "-fpic" )
+add_subdirectory(libdap-chain-gdb)
+target_compile_options(dap_chain_gdb PRIVATE "-fpic" )
 add_subdirectory(libdap-python)
+target_compile_options(dap_python_module PRIVATE "-fpic" )
 add_subdirectory(libdap-crypto-python)
-add_subdirectory(libdap-server-core-python)
-#add_subdirectory(libdap)
-#add_subdirectory(libdap-crypto)
+target_compile_options(dap_crypto_python_module PRIVATE "-fpic" )
+add_subdirectory(libdap-server-http-db)
+target_compile_options(dap_server_http_db PRIVATE "-fpic")
+
+add_subdirectory(libdap-chain-python)
+target_compile_options(dap_chain_python_module PRIVATE "-fpic")
 
 file(GLOB PYTHON_CELLFRAME_SRCS src/*.c)
 file(GLOB PYTHON_CELLFRAME_HEADERS include/*.h)
@@ -66,6 +118,7 @@ endif()
 target_link_libraries(${PROJECT_NAME} dap_python_module 
                       dap_crypto_python_module 
                       DapServerCore
+                     dap_chain_python_module
                      )
 #target_link_libraries(${PROJECT_NAME} dap_core dap_crypto)
 
diff --git a/include/python-cellframe.h b/include/python-cellframe.h
index df1b7ca7a29a215a7508836d45ddf5ff8eb84c73..cc02a5fb9e46238eabfee7714e6d8f2462a7b93f 100644
--- a/include/python-cellframe.h
+++ b/include/python-cellframe.h
@@ -5,6 +5,19 @@
 #include "libdap-server-core-python.h"
 #include "libdap_crypto_key_type_python.h"
 #include "libdap_crypto_data_type.h"
+// === CHAIN ==
+#include "libdap-chain-python.h"
+#include "libdap_chain_type_python.h"
+#include "libdap_chain_atom_iter_python.h"
+#include "wrapping_dap_chain_cell.h"
+#include "wrapping_dap_chain_common.h"
+#include "wrapping_dap_chain_common_objects.h"
+#include "wrapping_dap_chain_cs.h"
+#include "wrapping_dap_chain_datum.h"
+#include "wrapping_dap_chain_datum_token.h"
+#include "wrapping_dap_chain_datum_tx.h"
+#include "wrapping_dap_chain_ledger.h"
+// ============
 #include "dap_common.h"
 
 
@@ -16,6 +29,7 @@ extern "C" {
 #define LOG_TAG "python-cellframe"
 
 static bool init_crypto;
+static bool init_chain;
 
 static PyObject* CellFrame_error;
 
diff --git a/libdap b/libdap
index d6b17b0bc60ae9c7015edd0a74523c43d9d5a628..1c0614797a3a2a2f4c179630025600e177637a65 160000
--- a/libdap
+++ b/libdap
@@ -1 +1 @@
-Subproject commit d6b17b0bc60ae9c7015edd0a74523c43d9d5a628
+Subproject commit 1c0614797a3a2a2f4c179630025600e177637a65
diff --git a/libdap-chain b/libdap-chain
new file mode 160000
index 0000000000000000000000000000000000000000..d7166bf173223fb027d248ccb7c2df7288a8433b
--- /dev/null
+++ b/libdap-chain
@@ -0,0 +1 @@
+Subproject commit d7166bf173223fb027d248ccb7c2df7288a8433b
diff --git a/libdap-chain-crypto b/libdap-chain-crypto
new file mode 160000
index 0000000000000000000000000000000000000000..f8dfd888432234c0314057f5551a578dd770003c
--- /dev/null
+++ b/libdap-chain-crypto
@@ -0,0 +1 @@
+Subproject commit f8dfd888432234c0314057f5551a578dd770003c
diff --git a/libdap-chain-gdb b/libdap-chain-gdb
new file mode 160000
index 0000000000000000000000000000000000000000..e9d57285c3d2383e13e1d949935628cb56c694cc
--- /dev/null
+++ b/libdap-chain-gdb
@@ -0,0 +1 @@
+Subproject commit e9d57285c3d2383e13e1d949935628cb56c694cc
diff --git a/libdap-chain-global-db b/libdap-chain-global-db
new file mode 160000
index 0000000000000000000000000000000000000000..8c6bbf4458bd10614bf48bb2da7e84b4f80f0d33
--- /dev/null
+++ b/libdap-chain-global-db
@@ -0,0 +1 @@
+Subproject commit 8c6bbf4458bd10614bf48bb2da7e84b4f80f0d33
diff --git a/libdap-chain-mempool b/libdap-chain-mempool
new file mode 160000
index 0000000000000000000000000000000000000000..4bbdcf60e10de8462820e45d7cc3715dca4c2139
--- /dev/null
+++ b/libdap-chain-mempool
@@ -0,0 +1 @@
+Subproject commit 4bbdcf60e10de8462820e45d7cc3715dca4c2139
diff --git a/libdap-chain-net b/libdap-chain-net
new file mode 160000
index 0000000000000000000000000000000000000000..c285d7ca6385dd480b0168c5a7e380b85e0327db
--- /dev/null
+++ b/libdap-chain-net
@@ -0,0 +1 @@
+Subproject commit c285d7ca6385dd480b0168c5a7e380b85e0327db
diff --git a/libdap-chain-net-srv b/libdap-chain-net-srv
new file mode 160000
index 0000000000000000000000000000000000000000..5edea70af6a5ede0c759e9d83a5741376f4da9fb
--- /dev/null
+++ b/libdap-chain-net-srv
@@ -0,0 +1 @@
+Subproject commit 5edea70af6a5ede0c759e9d83a5741376f4da9fb
diff --git a/libdap-chain-net-srv-vpn b/libdap-chain-net-srv-vpn
new file mode 160000
index 0000000000000000000000000000000000000000..5d22d6242694b003694ea5130be2383761880551
--- /dev/null
+++ b/libdap-chain-net-srv-vpn
@@ -0,0 +1 @@
+Subproject commit 5d22d6242694b003694ea5130be2383761880551
diff --git a/libdap-chain-python b/libdap-chain-python
new file mode 160000
index 0000000000000000000000000000000000000000..4bbc01ce9a5878c155a67e7cd36535419e360a54
--- /dev/null
+++ b/libdap-chain-python
@@ -0,0 +1 @@
+Subproject commit 4bbc01ce9a5878c155a67e7cd36535419e360a54
diff --git a/libdap-chain-wallet b/libdap-chain-wallet
new file mode 160000
index 0000000000000000000000000000000000000000..5273ba5ba0a15dd94e680f9d961ab150f3764848
--- /dev/null
+++ b/libdap-chain-wallet
@@ -0,0 +1 @@
+Subproject commit 5273ba5ba0a15dd94e680f9d961ab150f3764848
diff --git a/libdap-client b/libdap-client
new file mode 160000
index 0000000000000000000000000000000000000000..d3f5458f352294547b1ac68404d5ccdc8dea28ba
--- /dev/null
+++ b/libdap-client
@@ -0,0 +1 @@
+Subproject commit d3f5458f352294547b1ac68404d5ccdc8dea28ba
diff --git a/libdap-crypto b/libdap-crypto
new file mode 160000
index 0000000000000000000000000000000000000000..d9337dda7db1b3430d17914b4e290b9a200045a2
--- /dev/null
+++ b/libdap-crypto
@@ -0,0 +1 @@
+Subproject commit d9337dda7db1b3430d17914b4e290b9a200045a2
diff --git a/libdap-crypto-python b/libdap-crypto-python
index edd62ffc6b588b3bc877833e3585960b192b83d0..e0fef50bbe630c2835020fbebf3bcdfe064255a8 160000
--- a/libdap-crypto-python
+++ b/libdap-crypto-python
@@ -1 +1 @@
-Subproject commit edd62ffc6b588b3bc877833e3585960b192b83d0
+Subproject commit e0fef50bbe630c2835020fbebf3bcdfe064255a8
diff --git a/libdap-python b/libdap-python
index 0cddffd9bcbf28646ef996473e25d45852417f6a..4a15aca686aa56313f8ef8157c7d0aba7c9d7154 160000
--- a/libdap-python
+++ b/libdap-python
@@ -1 +1 @@
-Subproject commit 0cddffd9bcbf28646ef996473e25d45852417f6a
+Subproject commit 4a15aca686aa56313f8ef8157c7d0aba7c9d7154
diff --git a/libdap-server b/libdap-server
new file mode 160000
index 0000000000000000000000000000000000000000..e3f07ae78aaecfada9f44abdd48a4ebbce9e2184
--- /dev/null
+++ b/libdap-server
@@ -0,0 +1 @@
+Subproject commit e3f07ae78aaecfada9f44abdd48a4ebbce9e2184
diff --git a/libdap-server-core b/libdap-server-core
new file mode 160000
index 0000000000000000000000000000000000000000..73a86ef8202ee67a05098d186aac2deacb207f63
--- /dev/null
+++ b/libdap-server-core
@@ -0,0 +1 @@
+Subproject commit 73a86ef8202ee67a05098d186aac2deacb207f63
diff --git a/libdap-server-core-python b/libdap-server-core-python
index f6f2041893f5bf0a9ffccbdf8d94d25fec8987c0..fa0c59dac96fe133b53c56c6f6c5f1473566fc9e 160000
--- a/libdap-server-core-python
+++ b/libdap-server-core-python
@@ -1 +1 @@
-Subproject commit f6f2041893f5bf0a9ffccbdf8d94d25fec8987c0
+Subproject commit fa0c59dac96fe133b53c56c6f6c5f1473566fc9e
diff --git a/libdap-server-http-db b/libdap-server-http-db
new file mode 160000
index 0000000000000000000000000000000000000000..f3f0b0ed919d37368e86210940ebb9de686879a1
--- /dev/null
+++ b/libdap-server-http-db
@@ -0,0 +1 @@
+Subproject commit f3f0b0ed919d37368e86210940ebb9de686879a1
diff --git a/libdap-server-http-db-auth b/libdap-server-http-db-auth
new file mode 160000
index 0000000000000000000000000000000000000000..cf0d3043d2003690b0f8d92aab8f193671a4d6db
--- /dev/null
+++ b/libdap-server-http-db-auth
@@ -0,0 +1 @@
+Subproject commit cf0d3043d2003690b0f8d92aab8f193671a4d6db
diff --git a/libdap-server-udp b/libdap-server-udp
new file mode 160000
index 0000000000000000000000000000000000000000..a14daa6c39aed9bba32684872d03afc7778db61e
--- /dev/null
+++ b/libdap-server-udp
@@ -0,0 +1 @@
+Subproject commit a14daa6c39aed9bba32684872d03afc7778db61e
diff --git a/libdap-stream b/libdap-stream
new file mode 160000
index 0000000000000000000000000000000000000000..5fd18ccdb08cf8f35b0ab7eed857387433bddbbb
--- /dev/null
+++ b/libdap-stream
@@ -0,0 +1 @@
+Subproject commit 5fd18ccdb08cf8f35b0ab7eed857387433bddbbb
diff --git a/libdap-stream-ch b/libdap-stream-ch
new file mode 160000
index 0000000000000000000000000000000000000000..daeb35e4680f659d41ade4da7514138e56278685
--- /dev/null
+++ b/libdap-stream-ch
@@ -0,0 +1 @@
+Subproject commit daeb35e4680f659d41ade4da7514138e56278685
diff --git a/libdap-stream-ch-chain b/libdap-stream-ch-chain
new file mode 160000
index 0000000000000000000000000000000000000000..5dcf99b114a8fc1b48d124feba528e0b9f413cd1
--- /dev/null
+++ b/libdap-stream-ch-chain
@@ -0,0 +1 @@
+Subproject commit 5dcf99b114a8fc1b48d124feba528e0b9f413cd1
diff --git a/libdap-stream-ch-chain-net b/libdap-stream-ch-chain-net
new file mode 160000
index 0000000000000000000000000000000000000000..6875d05d0d3c3da2c9562b4840f48a5267e865ca
--- /dev/null
+++ b/libdap-stream-ch-chain-net
@@ -0,0 +1 @@
+Subproject commit 6875d05d0d3c3da2c9562b4840f48a5267e865ca
diff --git a/src/python-cellframe.c b/src/python-cellframe.c
index 1fd7abf735c70f5c883add35f5ee775ecdf9fbf9..5e525c79b930e15a0aaa191c6d470b4cb32c87c4 100644
--- a/src/python-cellframe.c
+++ b/src/python-cellframe.c
@@ -95,6 +95,18 @@ static PyObject *python_cellframe_init(PyObject *self, PyObject *args){
                 return NULL;
             }
         }
+        if (strcmp(c_value, "Chain") == 0){
+            if(init_chain_py() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize Chain. "
+                                                 "Fields thread_cnt and conn are not numerical or absent.");
+                return NULL;
+            }
+            if (dap_chain_cs_init_py() != 0){
+                PyErr_SetString(CellFrame_error, "Failed to initialize Chain CS. "
+                                                 "Fields thread_cnt and conn are not numerical or absent.");
+                return NULL;
+            }
+        }
     }
     return PyLong_FromLong(0);
 }
@@ -105,7 +117,35 @@ PyMODINIT_FUNC PyInit_CellFrame(void){
             PyType_Ready(&ServerCore_ServerCoreType) < 0 || PyType_Ready(&dapEvents_dapEventsType) < 0 ||
             PyType_Ready(&dapEventsSocket_dapEventsSocketType) < 0 ||
             PyType_Ready(&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType) < 0 ||
-            PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0)
+            PyType_Ready(&CryptoDataTypeObjecy_CryptoDataTypeObjecyType) < 0 ||
+            // === Chain ===
+            PyType_Ready(&dapChainObject_dapChainType) < 0 ||
+            PyType_Ready(&dapChainTypeObject_dapChainTypeType) < 0 ||
+            PyType_Ready(&dapChainAtomPtr_dapChainAtomPtrType) < 0 ||
+            PyType_Ready(&DapChainCell_DapChainCellObjectType) < 0 ||
+            PyType_Ready(&ChainCommonObject_ChainCommonType) < 0 ||
+
+            PyType_Ready(&DapChainIdObject_DapChainIdObjectType) < 0 ||
+            PyType_Ready(&DapChainCellIdObject_DapChainCellIdObjectType) < 0 ||
+            PyType_Ready(&DapChainNodeAddrObject_DapChainNodeAddrObjectType) < 0 ||
+            PyType_Ready(&DapChainHashSlowObject_DapChainHashSlowObjectType) < 0 ||
+            PyType_Ready(&DapChainHashFastObject_DapChainHashFastObjectType) < 0 ||
+            PyType_Ready(&DapChainHashSlowKindObject_DapChainHashSlowKindObjectType) < 0 ||
+            PyType_Ready(&DapChainAddrObject_DapChainAddrObjectType) < 0 ||
+
+            PyType_Ready(&DapChainCsObject_DapChainCsObjectType) < 0 ||
+            PyType_Ready(&DapChainDatumTypeIdObject_DapChainDatumTypeIdObjectType) < 0 ||
+            PyType_Ready(&DapChainDatumObject_DapChainDatumObjectType) < 0 ||
+            PyType_Ready(&DapChainDatumIterObject_DapChainDatumIterObjectType) < 0 ||
+            PyType_Ready(&DapChainDatumToken_DapChainDatumTokenObjectType) < 0 ||
+            PyType_Ready(&DapChainDatumTokenEmission_DapChainDatumTokenEmissionObjectType) < 0 ||
+            PyType_Ready(&DapChainTxItemObject_DapChainTxItemTypeObjectType) < 0 ||
+            PyType_Ready(&DapChainTxType_DapChainTxCondTypeObject) < 0 ||
+            PyType_Ready(&DapChainDatumTx_DapChainDatumTxObjectType) < 0 ||
+            PyType_Ready(&DapChainTxOutCond_DapChainTxOutCondObjectType) < 0 ||
+            PyType_Ready(&DapChainLedger_DapChainLedgerType) < 0
+            // =============
+            )
                return NULL;
 
     PyObject *module = PyModule_Create(&CellFramePythonModule);
@@ -131,6 +171,35 @@ PyMODINIT_FUNC PyInit_CellFrame(void){
     PyModule_AddObject(module, "CryptoKeyType", (PyObject*)&CryptoKeyTypeObjecy_CryptoKeyTypeObjecyType);
     PyModule_AddObject(module, "CryptoDataType", (PyObject*)&CryptoDataTypeObjecy_CryptoDataTypeObjecyType);
 
+    // === Chain ===
+    PyModule_AddObject(module, "Chain", (PyObject*)&dapChainObject_dapChainType);
+    PyModule_AddObject(module, "ChainType", (PyObject*)&dapChainTypeObject_dapChainTypeType);
+    PyModule_AddObject(module, "ChainAtomIter", (PyObject*)&dapChainAtomPtr_dapChainAtomPtrType);
+    PyModule_AddObject(module, "ChainCell", (PyObject*)&DapChainCell_DapChainCellObjectType);
+    PyModule_AddObject(module, "ChainCommon", (PyObject*)&ChainCommonObject_ChainCommonType);
+
+    PyModule_AddObject(module, "ChainID", (PyObject*)&DapChainIdObject_DapChainIdObjectType);
+    PyModule_AddObject(module, "ChainCellID", (PyObject*)&DapChainCellIdObject_DapChainCellIdObjectType);
+    PyModule_AddObject(module, "ChainNodeAddr", (PyObject*)&DapChainNodeAddrObject_DapChainNodeAddrObjectType);
+//    PyModule_AddObject(module, "ChainNetID", (PyObject*)&DapChainNetIdObject_DapChainNetIdObjectType);
+    PyModule_AddObject(module, "ChainHashSlow", (PyObject*)&DapChainHashSlowObject_DapChainHashSlowObjectType);
+    PyModule_AddObject(module, "ChainHashFast", (PyObject*)&DapChainHashFastObject_DapChainHashFastObjectType);
+    PyModule_AddObject(module, "ChainHashSlowKind", (PyObject*)&DapChainHashSlowKindObject_DapChainHashSlowKindObjectType);
+    PyModule_AddObject(module, "ChainAddr", (PyObject*)&DapChainAddrObject_DapChainAddrObjectType);
+
+    PyModule_AddObject(module, "ChainCS", (PyObject*)&DapChainCsObject_DapChainCsObjectType);
+    PyModule_AddObject(module, "ChainDatumTypeID", (PyObject*)&DapChainDatumTypeIdObject_DapChainDatumTypeIdObjectType);
+    PyModule_AddObject(module, "ChainDatum", (PyObject*)&DapChainDatumObject_DapChainDatumObjectType);
+    PyModule_AddObject(module, "ChainDatumIter", (PyObject*)&DapChainDatumIterObject_DapChainDatumIterObjectType);
+    PyModule_AddObject(module, "ChainDatumToken", (PyObject*)&DapChainDatumToken_DapChainDatumTokenObjectType);
+    PyModule_AddObject(module, "ChainDatumTokenEmisson", (PyObject*)&DapChainDatumTokenEmission_DapChainDatumTokenEmissionObjectType);
+    PyModule_AddObject(module, "ChainTxItemType", (PyObject*)&DapChainTxItemObject_DapChainTxItemTypeObjectType);
+    PyModule_AddObject(module, "ChainTxCondType", (PyObject*)&DapChainTxType_DapChainTxCondTypeObject);
+    PyModule_AddObject(module, "ChainDatumTx", (PyObject*)&DapChainDatumTx_DapChainDatumTxObjectType);
+    PyModule_AddObject(module, "ChainTxOutCond", (PyObject*)&DapChainTxOutCond_DapChainTxOutCondObjectType);
+    PyModule_AddObject(module, "ChainLedger", (PyObject*)&DapChainLedger_DapChainLedgerType);
+    // =============
+
 
     return module;
 }
@@ -140,6 +209,10 @@ static PyObject *python_cellframe_deinit(PyObject *self, PyObject *args){
     dap_config_deinit();
     if (init_crypto)
         dap_crypto_deinit();
+    if (init_chain){
+        deinit_chain_py();
+        dap_chain_cs_deinit_py();
+    }
     return PyLong_FromLong(0);
 }