Skip to content
Snippets Groups Projects
dap_chain_node_cli_cmd.c 37.1 KiB
Newer Older
    //dap_hash((char*) tx, sizeof(tx), a_hash_fast.raw, sizeof(a_hash_fast.raw), DAP_HASH_TYPE_KECCAK);

    /*
     // create file with dap_chain_t
     dap_chain_id_t a_chain_id = {0x1};
     dap_chain_net_id_t a_chain_net_id = {0x2};
     dap_chain_shard_id_t a_shard_id = {0x3};

     dap_chain_t *a_chain = dap_chain_create(a_chain_net_id, a_chain_id, a_shard_id);
     const char * a_chain_net_name = "0x1";
     const char * a_chain_cfg_name = "chain-0";
     dap_chain_t *ch2 =  dap_chain_load_from_cfg(a_chain_net_name, a_chain_cfg_name);

     //dap_chain_net_t *l_net = dap_chain_net_by_name(net_name);
     //dap_chain_id_t *chain = l_net->pub.chains;
     */
    return tx;
}

/**
 * com_tx_create command
 *
 * Signing transaction
 */
int com_tx_create(int argc, const char ** argv, char **str_reply)
{
    // create wallet
    const char *a_wallets_path = "/opt/kelvin-node/etc";
    const char *a_wallet_name = "w1";
    dap_chain_net_id_t a_net_id = { 0x1 };
    dap_chain_sign_type_t a_sig_type = { SIG_TYPE_TESLA };
    //dap_chain_sign_type_t a_sig_type = { SIG_TYPE_PICNIC };
    //dap_chain_sign_type_t a_sig_type = { SIG_TYPE_BLISS };
    dap_chain_wallet_t *wallet = dap_chain_wallet_create(a_wallet_name, a_wallets_path, a_net_id, a_sig_type);
    dap_chain_wallet_t *wallet2 = dap_chain_wallet_open(a_wallet_name, a_wallets_path);
    //wallet = dap_chain_wallet_open(a_wallet_name, a_wallets_path);
    //dap_chain_wallet_save(wallet2);
    dap_chain_datum_tx_t *tx = create_tx("0x123");

    static bool l_first_start = true;
    if(l_first_start)
    {
        const char *l_token_name = "KLVN";
        dap_enc_key_t *l_key = dap_chain_wallet_get_key(wallet, 0);
        const dap_chain_addr_t *l_addr = dap_chain_wallet_get_addr(wallet);
        dap_chain_node_datum_tx_cache_init(l_key, l_token_name, (dap_chain_addr_t*)l_addr, 1000);
        l_first_start = false;
    }

    const dap_chain_addr_t *addr = dap_chain_wallet_get_addr(wallet);

    char *addr_str = dap_chain_addr_to_str((dap_chain_addr_t*)addr);
    const dap_chain_addr_t *addr2 = dap_chain_str_to_addr(addr_str);
    char *addr_str2 = dap_chain_addr_to_str(addr2);
    free(addr_str);

    // debug - check signing
    {
        int a_data_size = 50;
        char *a_data = "DAP (Deus Applicaions Prototypes) is free software: you can redistribute it and/or modify";


        dap_enc_key_t *a_key0 = dap_enc_key_new_generate(DAP_ENC_KEY_TYPE_SIG_BLISS, NULL, 0, NULL, 0, 0);

        dap_enc_key_t *a_key1 = dap_chain_wallet_get_key(wallet, 0);
        dap_enc_key_t *a_key2 = dap_chain_wallet_get_key(wallet2, 0);
        dap_chain_sign_t *a_chain_sign0 = dap_chain_sign_create(a_key0, a_data, a_data_size, 0);
        dap_chain_sign_t *a_chain_sign1 = dap_chain_sign_create(a_key1, a_data, a_data_size, 0);
        dap_chain_sign_t *a_chain_sign2 = dap_chain_sign_create(a_key2, a_data, a_data_size, 0);
        size_t a_chain_sign_size = dap_chain_sign_get_size(a_chain_sign1);
        int verify0 = dap_chain_sign_verify(a_chain_sign0, a_data, a_data_size);
        int verify1 = dap_chain_sign_verify(a_chain_sign1, a_data, a_data_size);
        int verify2 = dap_chain_sign_verify(a_chain_sign2, a_data, a_data_size);
        printf("a_chain_sign=%d verify=%d %d %d\n", a_chain_sign_size, verify0, verify1, verify2);
        free(a_chain_sign2);
        free(a_chain_sign1);
        free(a_chain_sign0);
        //dap_enc_key_delete(a_key2);
        dap_enc_key_delete(a_key0);
        //dap_enc_key_delete(a_key1);
    }

    if(wallet) {
        if(dap_chain_wallet_get_certs_number(wallet) > 0) {
            dap_chain_pkey_t *pk0 = dap_chain_wallet_get_pkey(wallet, 0);
            dap_enc_key_t *a_key = dap_chain_wallet_get_key(wallet, 0);
            //dap_enc_key_t *a_key1 = dap_chain_wallet_get_key(wallet, 0);
            //dap_enc_key_t *a_key2 = dap_chain_wallet_get_key(wallet2, 0);
            int res = dap_chain_datum_tx_add_sign(&tx, a_key);
            int res1 = dap_chain_datum_tx_add_sign(&tx, a_key);
            int res2 = dap_chain_datum_tx_add_sign(&tx, a_key);
            int res3 = dap_chain_datum_tx_verify_sign(tx);
        }
        dap_chain_wallet_close(wallet);
        DAP_DELETE(tx);
    }
    set_reply_text(str_reply, "com_tx_create ok");
}

/**
 * tx_verify command
 *
 * Verifing transaction
 */
int com_tx_verify(int argc, const char ** argv, char **str_reply)
{
    if(argc > 1) {
        const COMMAND *cmd = find_command(argv[1]);
        if(cmd)
        {
            if(str_reply)
                *str_reply = g_strdup(cmd->doc);
            return 1;
        }
        if(str_reply)
            set_reply_text(str_reply, "command \"%s\" not recognized", argv[1]);
        set_reply_text(str_reply, "command not defined, enter \"help <cmd name>\"");