diff --git a/dap-sdk/core/include/dap_math_ops.h b/dap-sdk/core/include/dap_math_ops.h
index 946a6be6a7d73a15f754e79674d421c7779df43f..5cc8142dd9757d042dc4b9b9403d092c02bf7a58 100755
--- a/dap-sdk/core/include/dap_math_ops.h
+++ b/dap-sdk/core/include/dap_math_ops.h
@@ -33,13 +33,18 @@ typedef unsigned __int128 uint128_t;
 
 typedef union uint128 {
     struct{
-         uint64_t hi;
          uint64_t lo;
-    }  DAP_ALIGN_PACKED;
-    uint64_t u64[2];
-    uint32_t u32[4];
+         uint64_t hi;
+    } DAP_ALIGN_PACKED;
+    struct{
+        uint32_t c;
+        uint32_t d;
+        uint32_t a;
+        uint32_t b;
+    } DAP_ALIGN_PACKED u32;
 } uint128_t;
 
+
 typedef union int128 {
     int64_t i64[2];
     int32_t i32[4];
@@ -52,12 +57,12 @@ typedef int128_t _dap_int128_t;
 typedef struct uint256 {
     uint128_t hi;
     uint128_t lo;
-} uint256_t;
+} DAP_ALIGN_PACKED uint256_t;
 
 typedef struct uint512 {
     uint256_t hi;
     uint256_t lo;
-} uint512_t;
+} DAP_ALIGN_PACKED uint512_t;
 
 #endif //defined(__GNUC__) || defined (__clang__)
 
@@ -68,9 +73,9 @@ typedef struct uint512 {
 // uint128_t dap_uint128_substract(uint128_t a, uint128_t b);
 // uint128_t dap_uint128_add(uint128_t a, uint128_t b);
 // bool dap_uint128_check_equal(uint128_t a, uint128_t b);
-const  uint128_t two_power_64={ .hi = 1, .lo = 0};
-const  uint128_t lo_64={ .hi = 0, .lo = 0xffffffffffffffff};
-const  uint128_t hi_64={ .hi = 0xffffffffffffffff, .lo = 0};
+// const  uint128_t two_power_64={ .hi = 1, .lo = 0};
+// const  uint128_t lo_64={ .hi = 0, .lo = 0xffffffffffffffff};
+// const  uint128_t hi_64={ .hi = 0xffffffffffffffff, .lo = 0};
 // const  uint128_t zero_128={.hi=0,.lo=0};
 // #define zero_128 ((uint128_t){.hi=0,.lo=0})
 
diff --git a/dap-sdk/net/stream/stream/include/dap_stream.h b/dap-sdk/net/stream/stream/include/dap_stream.h
index baa5a86ba0f68b3856418e377c545148eb4ab29f..b6685a93c473da560e390b0bee0ec031698962a9 100644
--- a/dap-sdk/net/stream/stream/include/dap_stream.h
+++ b/dap-sdk/net/stream/stream/include/dap_stream.h
@@ -53,7 +53,8 @@ typedef struct dap_stream {
     int id;
     dap_stream_session_t * session;
     dap_events_socket_t * esocket; // Connection
-    uint128_t esocket_uuid;
+    // uint128_t esocket_uuid;
+    uint64_t esocket_uuid;
     dap_stream_worker_t * stream_worker;
     struct dap_http_client * conn_http; // HTTP-specific
 
diff --git a/modules/chain/dap_chain_ledger.c b/modules/chain/dap_chain_ledger.c
index ba54cceed23c06d607448a2840580fee99ce8e4d..5f99b6083339ac399c6f3eccff42a7a5f3a6c28e 100644
--- a/modules/chain/dap_chain_ledger.c
+++ b/modules/chain/dap_chain_ledger.c
@@ -3038,12 +3038,6 @@ bool dap_chain_ledger_tx_hash_is_used_out_item(dap_ledger_t *a_ledger, dap_chain
 uint256_t dap_chain_ledger_calc_balance(dap_ledger_t *a_ledger, const dap_chain_addr_t *a_addr,
                                         const char *a_token_ticker)
 {
-// #ifdef DAP_GLOBAL_IS_INT128
-//     uint128_t l_ret = 0;
-// #else
-//     uint128_t l_ret = {};
-// #endif
-    //uint128_t l_ret = uint128_0;
     uint256_t l_ret = uint256_0;
 
     dap_ledger_wallet_balance_t *l_balance_item = NULL;// ,* l_balance_item_tmp = NULL;
@@ -3069,12 +3063,6 @@ uint256_t dap_chain_ledger_calc_balance(dap_ledger_t *a_ledger, const dap_chain_
 uint256_t dap_chain_ledger_calc_balance_full(dap_ledger_t *a_ledger, const dap_chain_addr_t *a_addr,
                                              const char *a_token_ticker)
 {
-// #ifdef DAP_GLOBAL_IS_INT128
-//     uint128_t balance = 0;
-// #else
-//     uint128_t balance = {0};
-// #endif
-    //uint128_t balance = uint128_0;
     uint256_t balance = uint256_0;
 
     if(!a_addr || !dap_chain_addr_check_sum(a_addr))
diff --git a/modules/common/dap_chain_common.c b/modules/common/dap_chain_common.c
index 8b6c329fa58bc9e1af94ac13dfb6ee1364ca94d8..0a1409b07a81529c0e8b9c40a06aaff3c7cadb93 100644
--- a/modules/common/dap_chain_common.c
+++ b/modules/common/dap_chain_common.c
@@ -299,10 +299,10 @@ uint64_t dap_chain_uint128_to(uint128_t a_from)
     }
     return (uint64_t)a_from;
 #else
-    if (a_from.u64[0]) {
+    if (a_from.hi) {
         log_it(L_ERROR, "Can't convert balance to uint64_t. It's too big.");
     }
-    return a_from.u64[1];
+    return a_from.lo;
 #endif
 }
 
@@ -315,8 +315,9 @@ uint64_t dap_chain_uint256_to(uint256_t a_from)
 // for tests
 char *dap_chain_u256tostr(uint256_t v_256)
 {
-    char *dest = malloc(130 * sizeof(char));
-    return strcpy(dest, dap_utoa128((char[130]){}, dap_chain_uint128_from_uint256(v_256), 10));
+    //char *dest = malloc(130 * sizeof(char));
+    //return strcpy(dest, dap_utoa128((char[130]){}, dap_chain_uint128_from_uint256(v_256), 10));
+    return dap_chain_balance_print(dap_chain_uint128_from_uint256(v_256));
 }
 
 
@@ -331,21 +332,22 @@ char *dap_chain_balance_print(uint128_t a_balance)
         l_value /= 10;
     } while (l_value);
 #else
+    uint32_t l_tmp[4] = {l_value.u32.a, l_value.u32.b, l_value.u32.c, l_value.u32.d};
     uint64_t t, q;
     do {
         q = 0;
         // Byte order is 1, 0, 3, 2 for little endian
         for (int i = 1; i <= 3; ) {
-            t = q << 32 | l_value.u32[i];
+            t = q << 32 | l_tmp[i];
             q = t % 10;
-            l_value.u32[i] = t / 10;
+            l_tmp[i] = t / 10;
             if (i == 2) i = 4; // end of cycle
             if (i == 3) i = 2;
             if (i == 0) i = 3;
             if (i == 1) i = 0;
         }
         l_buf[l_pos++] = q + '0';
-    } while (l_value.u32[2]);
+    } while (l_tmp[2]);
 #endif
     int l_strlen = strlen(l_buf) - 1;
     for (int i = 0; i < (l_strlen + 1) / 2; i++) {
@@ -376,7 +378,7 @@ char *dap_chain_balance_to_coins(uint128_t a_balance)
     return l_buf;
 }
 
-const union { uint64_t u64[2]; uint32_t u32[4]; } c_pow10[DATOSHI_POW + 1] = {
+const union { uint64_t u64[2]; uint32_t u32[4]; } DAP_ALIGN_PACKED c_pow10[DATOSHI_POW + 1] = {
     { .u64 = {0,                         1ULL} },                          // 0
     { .u64 = {0,                         10ULL} },                         // 1
     { .u64 = {0,                         100ULL} },                        // 2
@@ -421,11 +423,7 @@ const union { uint64_t u64[2]; uint32_t u32[4]; } c_pow10[DATOSHI_POW + 1] = {
 uint128_t dap_chain_balance_scan(char *a_balance)
 {
     int l_strlen = strlen(a_balance);
-#ifdef DAP_GLOBAL_IS_INT128
-    uint128_t l_ret = 0, l_nul = 0;
-#else
-    uint128_t l_ret = {}, l_nul = {};
-#endif
+    uint128_t l_ret = uint128_0, l_nul = uint128_0;
     if (l_strlen > DATOSHI_POW + 1)
         return l_nul;
     for (int i = 0; i < l_strlen ; i++) {
@@ -443,41 +441,36 @@ uint128_t dap_chain_balance_scan(char *a_balance)
             log_it(L_WARNING, "Input number is too big");
             return l_nul;
         }
-        l_tmp = (l_tmp << 64) + c_pow10[i].u64[1] * l_digit;
-        // l_ret = dap_uint128_add(l_ret, l_tmp);
+        l_tmp = (l_tmp << 64) + (uint128_t)c_pow10[i].u64[1] * l_digit;
         SUM_128_128(l_ret, l_tmp, &l_ret);
         if (l_ret == l_nul)
             return l_nul;
 #else
         uint128_t l_tmp;
-        l_tmp.u64[0] = 0;
-        l_tmp.u64[1] = c_pow10[i].u32[2] * l_digit;
-        // l_ret = dap_uint128_add(l_ret, l_tmp);
+        l_tmp.hi = 0;
+        l_tmp.lo = (uint64_t)c_pow10[i].u32[2] * (uint64_t)l_digit;
         SUM_128_128(l_ret, l_tmp, &l_ret);
-        if (l_ret.u64[0] == 0 && l_ret.u64[1] == 0)
+        if (l_ret.hi == 0 && l_ret.lo == 0)
             return l_nul;
-        uint64_t l_mul = c_pow10[i].u32[3] * l_digit;
-        l_tmp.u64[1] = l_mul << 32;
-        l_tmp.u64[0] = l_mul >> 32;
-        // l_ret = dap_uint128_add(l_ret, l_tmp);
+        uint64_t l_mul = (uint64_t)c_pow10[i].u32[3] * (uint64_t)l_digit;
+        l_tmp.lo = l_mul << 32;
+        l_tmp.hi = l_mul >> 32;
         SUM_128_128(l_ret, l_tmp, &l_ret);
-        if (l_ret.u64[0] == 0 && l_ret.u64[1] == 0)
+        if (l_ret.hi == 0 && l_ret.lo == 0)
             return l_nul;
-        l_tmp.u64[1] = 0;
-        l_tmp.u64[0] = c_pow10[i].u32[0] * l_digit;
-        //l_ret = dap_uint128_add(l_ret, l_tmp);
+        l_tmp.lo = 0;
+        l_tmp.hi = (uint64_t)c_pow10[i].u32[0] * (uint64_t)l_digit;
         SUM_128_128(l_ret, l_tmp, &l_ret);
-        if (l_ret.u64[0] == 0 && l_ret.u64[1] == 0)
+        if (l_ret.hi == 0 && l_ret.lo == 0)
             return l_nul;
-        l_mul = c_pow10[i].u32[1] * l_digit;
+        l_mul = (uint64_t)c_pow10[i].u32[1] * (uint64_t)l_digit;
         if (l_mul >> 32) {
             log_it(L_WARNING, "Input number is too big");
             return l_nul;
         }
-        l_tmp.u64[0] = l_mul << 32;
-        //l_ret = dap_uint128_add(l_ret, l_tmp);
+        l_tmp.hi = l_mul << 32;
         SUM_128_128(l_ret, l_tmp, &l_ret);
-        if (l_ret.u64[0] == 0 && l_ret.u64[1] == 0)
+        if (l_ret.hi == 0 && l_ret.lo == 0)
             return l_nul;
 #endif
     }
@@ -486,11 +479,7 @@ uint128_t dap_chain_balance_scan(char *a_balance)
 
 uint128_t dap_chain_coins_to_balance(char *a_coins)
 {
-#ifdef DAP_GLOBAL_IS_INT128
-    uint128_t l_ret = 0, l_nul = 0;
-#else
-    uint128_t l_ret = {}, l_nul = {};
-#endif
+    uint128_t l_ret = uint128_0, l_nul = uint128_0;
     if (strlen(a_coins) > DATOSHI_POW + 2) {
         log_it(L_WARNING, "Incorrect balance format - too long");
         return l_nul;
diff --git a/modules/net/dap_chain_node_cli_cmd.c b/modules/net/dap_chain_node_cli_cmd.c
index 75e348ad4ef6424351e4790cf25de256a8574429..1501362a3e9153ccbd704a5cd70863da455f243a 100644
--- a/modules/net/dap_chain_node_cli_cmd.c
+++ b/modules/net/dap_chain_node_cli_cmd.c
@@ -3255,7 +3255,7 @@ int com_token_emit(int a_argc, char ** a_argv, char ** a_str_reply)
     // Emission value
     if(dap_chain_node_cli_find_option_val(a_argv, arg_index, a_argc, "-emission_value", &str_tmp)) {
         // l_emission_value = strtoull(str_tmp, NULL, 10);
-        l_emission_value = GET_256_FROM_128(dap_strtou128(str_tmp, NULL, 10)); 
+        l_emission_value = GET_256_FROM_128(dap_chain_balance_scan(str_tmp)); 
     }
 
     if( EQUAL_256(l_emission_value, uint256_0) ) {
diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c
index 7fb56397a1f65f2911732a3eb67ff22b72b94d63..accf1657ecf370c428e75e960008ddf9deb441c6 100644
--- a/modules/net/dap_chain_node_cli_cmd_tx.c
+++ b/modules/net/dap_chain_node_cli_cmd_tx.c
@@ -1256,8 +1256,8 @@ static char* dap_db_history_token_list(dap_chain_t * a_chain, const char *a_toke
                             char *l_addr = dap_chain_addr_to_str(&l_token->header_public.premine_address);
                             char * l_balance = dap_chain_balance_to_coins(l_token->header_public.total_supply);
                             dap_string_append_printf(l_str_out,
-                                    " total_supply: %.0Lf(%s), flags: 0x%x\n, premine_supply: %s, premine_address '%s'\n",
-                                    dap_chain_datoshi_to_coins(l_token->header_public.total_supply),
+                                    " total_supply: %s(%s), flags: 0x%x\n, premine_supply: %s, premine_address '%s'\n",
+                                    dap_chain_balance_to_coins(l_token->header_public.total_supply),
                                     dap_chain_balance_print(l_token->header_public.total_supply),
                                     l_token->header_public.flags,
                                     dap_chain_balance_print(l_token->header_public.premine_supply),
@@ -1417,8 +1417,8 @@ static char* dap_db_history_filter(dap_chain_t * a_chain, dap_ledger_t *a_ledger
                                 char *l_addr = dap_chain_addr_to_str(&l_token->header_public.premine_address);
                                 char * l_balance = dap_chain_balance_to_coins(l_token->header_public.total_supply);
                                 dap_string_append_printf(l_str_out,
-                                        " total_supply: %.0Lf(%s), flags: 0x%x\n, premine_supply: %s, premine_address '%s'\n",
-                                        dap_chain_datoshi_to_coins(l_token->header_public.total_supply),
+                                        " total_supply: %s(%s), flags: 0x%x\n, premine_supply: %s, premine_address '%s'\n",
+                                        dap_chain_balance_to_coins(l_token->header_public.total_supply),
                                         dap_chain_balance_print(l_token->header_public.total_supply),
                                         l_token->header_public.flags,
                                         dap_chain_balance_print(l_token->header_public.premine_supply),