diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c
index 3187d5384b045dd4aa7e1cfc865808a44bf97759..140a22e8cdb33b3751d7e5251c4b34d5e6fc924a 100644
--- a/modules/common/dap_chain_datum_token.c
+++ b/modules/common/dap_chain_datum_token.c
@@ -236,22 +236,24 @@ size_t dap_chain_datum_emission_get_size(uint8_t *a_emission_serial)
     return l_ret;
 }
 
-dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(uint8_t *a_emission_serial, size_t *a_emission_size)
+dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(byte_t *a_emission_serial, size_t *a_emission_size)
 {
     assert(a_emission_serial);
     assert(a_emission_size);
     dap_chain_datum_token_emission_t *l_emission;
     if (((dap_chain_datum_token_emission_t *)a_emission_serial)->hdr.version == 0) {
-        size_t l_add_size = DAP_CHAIN_DATUM_NONCE_SIZE + sizeof(uint256_t) - sizeof(uint64_t);
-        l_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, *a_emission_size + l_add_size);
+        size_t l_emission_size = *a_emission_size;
         size_t l_old_hdr_size = sizeof(struct dap_chain_emission_header_v0);
+        size_t l_add_size = sizeof(l_emission->hdr) - l_old_hdr_size;
+        l_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, l_emission_size + l_add_size);
         l_emission->hdr.version = 1;
         memcpy(l_emission, a_emission_serial, l_old_hdr_size);
-        memcpy(l_emission + l_old_hdr_size + l_add_size,
+        memcpy((byte_t *)l_emission + sizeof(l_emission->hdr),
                a_emission_serial + l_old_hdr_size,
-               *a_emission_size - l_old_hdr_size);
-        *a_emission_size += l_add_size;
+               l_emission_size - l_old_hdr_size);
+        l_emission_size += l_add_size;
+        (*a_emission_size) = l_emission_size;
     } else
-        l_emission = DAP_DUP_SIZE(a_emission_serial, *a_emission_size);
+        l_emission = DAP_DUP_SIZE(a_emission_serial, (*a_emission_size));
     return l_emission;
 }
diff --git a/modules/common/include/dap_chain_datum_token.h b/modules/common/include/dap_chain_datum_token.h
index a07829a43481f2dd261ff3f792c2218c85be9289..78f1792d2e9acda44dd233f16e52e6c8618b113c 100644
--- a/modules/common/include/dap_chain_datum_token.h
+++ b/modules/common/include/dap_chain_datum_token.h
@@ -253,5 +253,5 @@ dap_tsd_t* dap_chain_datum_token_tsd_get(dap_chain_datum_token_t * a_token,  siz
 void dap_chain_datum_token_flags_dump(dap_string_t * a_str_out, uint16_t a_flags);
 void dap_chain_datum_token_certs_dump(dap_string_t * a_str_out, byte_t * a_data_n_tsd, size_t a_certs_size);
 dap_sign_t ** dap_chain_datum_token_simple_signs_parse(dap_chain_datum_token_t * a_datum_token, size_t a_datum_token_size, size_t *a_signs_count, size_t * a_signs_valid);
-dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(uint8_t *a_emission_serial, size_t *a_emission_size);
+dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(byte_t *a_emission_serial, size_t *a_emission_size);
 size_t dap_chain_datum_emission_get_size(uint8_t *a_emission_serial);