diff --git a/modules/net/dap_chain_node_cli.c b/modules/net/dap_chain_node_cli.c index 4f5651f9fecc4135564ab52acb98948ac6db05dc..3c32c1f4c5c581dfb40b954bd224bbb240328e98 100644 --- a/modules/net/dap_chain_node_cli.c +++ b/modules/net/dap_chain_node_cli.c @@ -318,8 +318,8 @@ int dap_chain_node_cli_init(dap_config_t * g_config) // Decree create command dap_cli_server_cmd_add ("decree", cmd_decree, "Work with decree", - "decree create common -net <net_name> [-chain <chain_name>] [-decree_chain <chain_name>] -certs <certs list> -<Subtype param name> <Subtype param Value>\n" - "decree create service -net <net_name> [-chain <chain_name>] [-decree_chain <chain_name>] -srv_id <service_id> -certs <certs list> -<Subtype param name> <Subtype param Value>\n" + "decree create common -net <net_name> [-chain <chain_name>] -decree_chain <chain_name> -certs <certs list> -<Subtype param name> <Subtype param Value>\n" + "decree create service -net <net_name> [-chain <chain_name>] -decree_chain <chain_name> -srv_id <service_id> -certs <certs list> -<Subtype param name> <Subtype param Value>\n" "decree sign -net <net_name> [-chain <chain_name>] -datum <datum_hash> -certs <certs_list>\n" "decree anchor -net <net_name> -chain <chain_name> -datum <datum_hash> -certs <certs_list>\n" "==Subtype Params==\n" diff --git a/modules/net/dap_chain_node_cli_cmd_tx.c b/modules/net/dap_chain_node_cli_cmd_tx.c index b828ede4a7f1704d6fe93b4be9661c0a0bb94216..74c5b6c00bf689b27ed89e8e4529457a283e06ce 100644 --- a/modules/net/dap_chain_node_cli_cmd_tx.c +++ b/modules/net/dap_chain_node_cli_cmd_tx.c @@ -1389,6 +1389,46 @@ static dap_chain_datum_anchor_t * s_sign_anchor_in_cycle(dap_cert_t ** a_certs, return a_datum_anchor; } +char *s_decree_subtype_to_str(int a_subtype) +{ + switch (a_subtype) + { + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_FEE: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_FEE"; + } + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_OWNERS: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_OWNERS"; + } + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_OWNERS_MIN: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_OWNERS_MIN"; + } + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_TON_SIGNERS_MIN: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_TON_SIGNERS_MIN"; + } + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_APPROVE: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_APPROVE"; + } + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_INVALIDATE: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_INVALIDATE"; + } + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_MIN_VALUE: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_MIN_VALUE"; + } + case DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_MIN_VALIDATORS_COUNT: + { + return "DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_STAKE_MIN_VALIDATORS_COUNT"; + } + default: return "(UNKNOWN)"; + } +} + // Decree commands handlers int cmd_decree(int a_argc, char **a_argv, char ** a_str_reply) { @@ -1513,10 +1553,10 @@ int cmd_decree(int a_argc, char **a_argv, char ** a_str_reply) return -103; } }else { - l_decree_chain = l_chain; + dap_cli_server_cmd_set_reply_text(a_str_reply, "decree requires parameter -decree_chain."); + return -105; } - dap_tsd_t *l_tsd = NULL; dap_cert_t **l_new_certs = NULL; size_t l_new_certs_count = 0, l_total_tsd_size = 0; @@ -1530,7 +1570,7 @@ int cmd_decree(int a_argc, char **a_argv, char ** a_str_reply) if (!dap_cli_server_cmd_find_option_val(a_argv, arg_index, a_argc, "-to_addr", &l_param_addr_str)){ if(!l_net->pub.decree->fee_addr) { - dap_cli_server_cmd_set_reply_text(a_str_reply, "Net fee add needed."); + dap_cli_server_cmd_set_reply_text(a_str_reply, "Net fee add needed. Use -to_addr parameter"); return -111; } }else{ @@ -1606,6 +1646,18 @@ int cmd_decree(int a_argc, char **a_argv, char ** a_str_reply) return -111; } + if (l_subtype == DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_OWNERS || + l_subtype == DAP_CHAIN_DATUM_DECREE_COMMON_SUBTYPE_OWNERS_MIN) + { + if (l_decree_chain->id.uint64 != l_chain->id.uint64){ + dap_cli_server_cmd_set_reply_text(a_str_reply, "Decree subtype %s not suppurted by chain %s", s_decree_subtype_to_str(l_subtype), l_decree_chain_str); + return -107; + } + } else if (l_decree_chain->id.uint64 == l_chain->id.uint64){ + dap_cli_server_cmd_set_reply_text(a_str_reply, "Decree subtype %s not suppurted by chain %s", s_decree_subtype_to_str(l_subtype), l_decree_chain_str); + return -107; + } + l_datum_decree = DAP_NEW_Z_SIZE(dap_chain_datum_decree_t, sizeof(dap_chain_datum_decree_t) + l_total_tsd_size); l_datum_decree->decree_version = DAP_CHAIN_DATUM_DECREE_VERSION; l_datum_decree->header.ts_created = dap_time_now();