Skip to content
Snippets Groups Projects
Unverified Commit 934711e1 authored by Aleksandr Lysikov's avatar Aleksandr Lysikov Committed by GitHub
Browse files

Merge pull request #13 from kelvinblockchain/master

master->feature2272
parents 386c4f04 c328ebef
No related branches found
No related tags found
No related merge requests found
......@@ -63,7 +63,7 @@ typedef dap_chain_atom_ptr_t* (*dap_chain_callback_atom_iter_get_first_t)(dap_ch
typedef dap_chain_atom_ptr_t* (*dap_chain_callback_atom_iter_get_next_t)(dap_chain_atom_iter_t * );
typedef void (*dap_chain_callback_atom_iter_delete_t)(dap_chain_atom_iter_t * );
typedef size_t (*dap_chain_datum_callback_datum_pool_proc_add_t)(dap_chain_t * ,dap_chain_cell_id_t, dap_chain_datum_t **, size_t );
typedef size_t (*dap_chain_datum_callback_datum_pool_proc_add_t)(dap_chain_t * , dap_chain_datum_t **, size_t );
......
......@@ -73,6 +73,28 @@ size_t dap_chain_hash_fast_to_str(dap_chain_hash_fast_t * a_hash, char * a_str,
return strlen(a_str);
}
/**
* @brief dap_chain_str_to_hash_fast_to_str
* @param a_hash_str
* @param a_hash
* @return
*/
int dap_chain_str_to_hash_fast( const char * a_hash_str, dap_chain_hash_fast_t * a_hash)
{
const size_t c_hash_str_size = sizeof(*a_hash) * 2 + 1 /*trailing zero*/+ 2 /* heading 0x */;
size_t l_hash_str_len = strlen( a_hash_str);
if ( l_hash_str_len == c_hash_str_size ){
for (size_t l_offset = 2; l_offset < c_hash_str_size ; l_offset+=2 ){
if ( ( sscanf(a_hash_str+l_offset,"%02hhx",a_hash->raw+l_offset-2) != 1) ||
( sscanf(a_hash_str+l_offset,"%02hhX",a_hash->raw+l_offset-2) != 1)
)
return -10* ((int) l_offset); // Wrong char
}
return 0;
}else // Wromg string len
return -1;
}
/**
* @brief dap_chain_addr_to_str
* @param a_addr
......
......@@ -60,13 +60,13 @@ typedef union dap_chain_cell_id{
*/
typedef union dap_chain_node_role{
enum {
ROOT_MASTER=0x00,
ROOT=0x01,
ARCHIVE=0x02,
CELL_MASTER=0x10,
MASTER = 0x20,
FULL=0xf0,
LIGHT=0xff } enums;
NODE_ROLE_ROOT_MASTER=0x00,
NODE_ROLE_ROOT=0x01,
NODE_ROLE_ARCHIVE=0x02,
NODE_ROLE_CELL_MASTER=0x10,
NODE_ROLE_MASTER = 0x20,
NODE_ROLE_FULL=0xf0,
NODE_ROLE_LIGHT=0xff } enums;
uint8_t raw[DAP_CHAIN_NODE_ROLE_SIZE];
} DAP_ALIGN_PACKED dap_chain_node_role_t;
......@@ -145,6 +145,7 @@ typedef struct dap_chain_addr{
size_t dap_chain_hash_slow_to_str(dap_chain_hash_slow_t * a_hash, char * a_str, size_t a_str_max);
size_t dap_chain_hash_fast_to_str(dap_chain_hash_fast_t * a_hash, char * a_str, size_t a_str_max);
int dap_chain_str_to_hash_fast( const char * a_hash_str, dap_chain_hash_fast_t * a_hash);
char* dap_chain_addr_to_str(const dap_chain_addr_t *a_addr);
dap_chain_addr_t* dap_chain_str_to_addr(const char *str);
......
......@@ -31,9 +31,9 @@
#define DAP_CHAIN_DATUM_VERSION 0x00
/// End section, means all the rest of the block is empty
#define dap_chain_datum_END 0x0000
#define DAP_CHAIN_DATUM_BLOCK_END 0x0000
/// Section with additional roots, for example transaction roots
#define dap_chain_datum_hashtree_roots 0x0001
#define DAP_CHAIN_DATUM_BLOCK_ROOTS 0x0001
/// Transaction header section
#define DAP_CHAIN_DATUM_TX 0x0100
......@@ -42,9 +42,9 @@
#define DAP_CHAIN_DATUM_TX_REQUEST 0x0300
/// Smart contract: DVM code section
#define DAP_CHAIN_DATUM_DVM_CODE 0x0900
#define DAP_CHAIN_DATUM_WASM_CODE 0x0900
/// Smart contract: DVM code section
#define DAP_CHAIN_DATUM_DVM_DATA 0x0901
#define DAP_CHAIN_DATUM_WASM_DATA 0x0901
/// Smart contract: EVM code section
#define DAP_CHAIN_DATUM_EVM_CODE 0x0910
......@@ -60,6 +60,17 @@
#define DAP_CHAIN_DATUM_TOKEN_DECL 0xf000
#define DAP_CHAIN_DATUM_TOKEN_EMISSION 0xf100
static const char * c_datum_type_str[]={
[DAP_CHAIN_DATUM_TX]="DATUM_TX",
[DAP_CHAIN_DATUM_TX_REQUEST]="DATUM_TX_REQUEST",
[DAP_CHAIN_DATUM_WASM_CODE]="DATUM_WASM_CODE",
[DAP_CHAIN_DATUM_WASM_DATA]="DATUM_WASM_DATA",
[DAP_CHAIN_DATUM_EVM_CODE]="DATUM_EVM_CODE",
[DAP_CHAIN_DATUM_EVM_DATA]="DATUM_EVM_DATA",
[DAP_CHAIN_DATUM_PKEY]="DATUM_PKEY",
[DAP_CHAIN_DATUM_TOKEN_DECL]="DATUM_TOKEN_DECL",
[DAP_CHAIN_DATUM_TOKEN_EMISSION]="DATUM_TOKEN_EMISSION",
};
#define DAP_CHAIN_DATUM_ID_SIZE 4
......@@ -86,6 +97,7 @@ typedef struct dap_chain_datum{
// After signs goes data block and and till the end of datum.
} DAP_ALIGN_PACKED dap_chain_datum_t;
struct dap_chain;
typedef struct dap_chain dap_chain_t;
......@@ -110,3 +122,4 @@ static inline size_t dap_chain_datum_size(dap_chain_datum_t * a_datum)
}
dap_chain_datum_t * dap_chain_datum_create(uint16_t a_type_id, const void * a_data, size_t a_data_size);
......@@ -144,7 +144,7 @@ int dap_chain_utxo_load(void)
l_datum_list = dap_list_prepend(l_datum_list, data[i]->value);
}
// sort list by time
l_datum_list = dap_list_sort(l_datum_list, (DapCompareFunc) compare_datum_items);
l_datum_list = dap_list_sort(l_datum_list, (dap_callback_compare_t) compare_datum_items);
l_list_tmp = l_datum_list;
// add datum_tx from list to utxo
while(l_list_tmp) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment