2745 : m_allow_mismatched_daemon_version(
false)
2746 , m_refresh_progress_reporter(*
this)
2748 , m_auto_refresh_enabled(
false)
2749 , m_auto_refresh_refreshing(
false)
2750 , m_in_manual_refresh(
false)
2751 , m_current_subaddress_account(0)
2763 boost::bind(&simple_wallet::set_daemon,
this, _1),
2764 tr(USAGE_SET_DAEMON),
2765 tr(
"Set another daemon to connect to."));
2767 boost::bind(&simple_wallet::save_bc,
this, _1),
2768 tr(
"Save the current blockchain data."));
2770 boost::bind(&simple_wallet::refresh,
this, _1),
2771 tr(
"Synchronize the transactions and balance."));
2773 boost::bind(&simple_wallet::show_balance,
this, _1),
2774 tr(USAGE_SHOW_BALANCE),
2775 tr(
"Show the wallet's balance of the currently selected account."));
2777 boost::bind(&simple_wallet::show_incoming_transfers,
this, _1),
2778 tr(USAGE_INCOMING_TRANSFERS),
2779 tr(
"Show the incoming transfers, all or filtered by availability and address index.\n\n" 2781 "Amount, Spent(\"T\"|\"F\"), \"frozen\"|\"locked\"|\"unlocked\", RingCT, Global Index, Transaction Hash, Address Index, [Public Key, Key Image] "));
2783 boost::bind(&simple_wallet::show_payments,
this, _1),
2785 tr(
"Show the payments for the given payment IDs."));
2787 boost::bind(&simple_wallet::show_blockchain_height,
this, _1),
2788 tr(
"Show the blockchain height."));
2789 m_cmd_binder.
set_handler(
"transfer", boost::bind(&simple_wallet::transfer,
this, _1),
2791 tr(
"Transfer <amount> to <address>. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs in the ring signature. Multiple payments can be made at once by adding URI_2 or <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
2793 boost::bind(&simple_wallet::locked_transfer,
this, _1),
2794 tr(USAGE_LOCKED_TRANSFER),
2795 tr(
"Transfer <amount> to <address> and lock it for <lockblocks> (max. 1000000). If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs in the ring signature. Multiple payments can be made at once by adding URI_2 or <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
2797 boost::bind(&simple_wallet::locked_sweep_all,
this, _1),
2798 tr(USAGE_LOCKED_SWEEP_ALL),
2799 tr(
"Send all unlocked balance to an address and lock it for <lockblocks> (max. 1000000). If the parameter \"index=<N1>[,<N2>,...]\" or \"index=all\" is specified, the wallet sweeps outputs received by those or all address indices, respectively. If omitted, the wallet randomly chooses an address index to be used. <priority> is the priority of the sweep. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used."));
2801 boost::bind(&simple_wallet::sweep_unmixable,
this, _1),
2802 tr(
"Send all unmixable outputs to yourself with ring_size 1"));
2803 m_cmd_binder.
set_handler(
"sweep_all", boost::bind(&simple_wallet::sweep_all,
this, _1),
2804 tr(USAGE_SWEEP_ALL),
2805 tr(
"Send all unlocked balance to an address. If the parameter \"index=<N1>[,<N2>,...]\" or \"index=all\" is specified, the wallet sweeps outputs received by those or all address indices, respectively. If omitted, the wallet randomly chooses an address index to be used. If the parameter \"outputs=<N>\" is specified and N > 0, wallet splits the transaction into N even outputs."));
2807 boost::bind(&simple_wallet::sweep_below,
this, _1),
2808 tr(USAGE_SWEEP_BELOW),
2809 tr(
"Send all unlocked outputs below the threshold to an address."));
2811 boost::bind(&simple_wallet::sweep_single,
this, _1),
2812 tr(USAGE_SWEEP_SINGLE),
2813 tr(
"Send a single output of the given key image to an address without change."));
2821 boost::bind(&simple_wallet::sign_transfer,
this, _1),
2822 tr(USAGE_SIGN_TRANSFER),
2823 tr(
"Sign a transaction from a file. If the parameter \"export_raw\" is specified, transaction raw hex data suitable for the daemon RPC /sendrawtransaction is exported."));
2825 boost::bind(&simple_wallet::submit_transfer,
this, _1),
2826 tr(
"Submit a signed transaction from a file."));
2828 boost::bind(&simple_wallet::set_log,
this, _1),
2830 tr(
"Change the current log detail (level must be <0-4>)."));
2832 boost::bind(&simple_wallet::account,
this, _1),
2834 tr(
"If no arguments are specified, the wallet shows all the existing accounts along with their balances.\n" 2835 "If the \"new\" argument is specified, the wallet creates a new account with its label initialized by the provided label text (which can be empty).\n" 2836 "If the \"switch\" argument is specified, the wallet switches to the account specified by <index>.\n" 2837 "If the \"label\" argument is specified, the wallet sets the label of the account specified by <index> to the provided label text.\n" 2838 "If the \"tag\" argument is specified, a tag <tag_name> is assigned to the specified accounts <account_index_1>, <account_index_2>, ....\n" 2839 "If the \"untag\" argument is specified, the tags assigned to the specified accounts <account_index_1>, <account_index_2> ..., are removed.\n" 2840 "If the \"tag_description\" argument is specified, the tag <tag_name> is assigned an arbitrary text <description>."));
2842 boost::bind(&simple_wallet::print_address,
this, _1),
2844 tr(
"If no arguments are specified or <index> is specified, the wallet shows the default or specified address. If \"all\" is specified, the wallet shows all the existing addresses in the currently selected account. If \"new \" is specified, the wallet creates a new address with the provided label text (which can be empty). If \"label\" is specified, the wallet sets the label of the address specified by <index> to the provided label text."));
2846 boost::bind(&simple_wallet::print_integrated_address,
this, _1),
2847 tr(USAGE_INTEGRATED_ADDRESS),
2848 tr(
"Encode a payment ID into an integrated address for the current wallet public address (no argument uses a random payment ID), or decode an integrated address to standard address and payment ID"));
2850 boost::bind(&simple_wallet::address_book,
this, _1),
2851 tr(USAGE_ADDRESS_BOOK),
2852 tr(
"Print all entries in the address book, optionally adding/deleting an entry to/from it."));
2854 boost::bind(&simple_wallet::save,
this, _1),
2855 tr(
"Save the wallet data."));
2857 boost::bind(&simple_wallet::save_watch_only,
this, _1),
2858 tr(
"Save a watch-only keys file."));
2860 boost::bind(&simple_wallet::viewkey,
this, _1),
2861 tr(
"Display the private view key."));
2863 boost::bind(&simple_wallet::spendkey,
this, _1),
2864 tr(
"Display the private spend key."));
2866 boost::bind(&simple_wallet::seed,
this, _1),
2867 tr(
"Display the Electrum-style mnemonic seed"));
2869 boost::bind(&simple_wallet::set_variable,
this, _1),
2870 tr(USAGE_SET_VARIABLE),
2871 tr(
"Available options:\n " 2873 " Set the wallet's seed language.\n " 2874 "always-confirm-transfers <1|0>\n " 2875 " Whether to confirm unsplit txes.\n " 2876 "print-ring-members <1|0>\n " 2877 " Whether to print detailed information about ring members during confirmation.\n " 2878 "store-tx-info <1|0>\n " 2879 " Whether to store outgoing tx info (destination address, payment ID, tx secret key) for future reference.\n " 2880 "default-ring-size <n>\n " 2881 " Set the default ring size (obsolete).\n " 2882 "auto-refresh <1|0>\n " 2883 " Whether to automatically synchronize new blocks from the daemon.\n " 2884 "refresh-type <full|optimize-coinbase|no-coinbase|default>\n " 2885 " Set the wallet's refresh behaviour.\n " 2886 "priority [0|1|2|3|4]\n " 2887 " Set the fee to default/unimportant/normal/elevated/priority.\n " 2888 "confirm-missing-payment-id <1|0> (obsolete)\n " 2889 "ask-password <0|1|2 (or never|action|decrypt)>\n " 2890 " action: ask the password before many actions such as transfer, etc\n " 2891 " decrypt: same as action, but keeps the spend key encrypted in memory when not needed\n " 2892 "unit <ETN|cent>\n " 2893 " Set the default Electroneum (sub-)unit.\n " 2894 "min-outputs-count [n]\n " 2895 " Try to keep at least that many outputs of value at least min-outputs-value.\n " 2896 "min-outputs-value [n]\n " 2897 " Try to keep at least min-outputs-count outputs of at least that value.\n " 2898 "merge-destinations <1|0>\n " 2899 " Whether to merge multiple payments to the same destination address.\n " 2900 "confirm-backlog <1|0>\n " 2901 " Whether to warn if there is transaction backlog.\n " 2902 "confirm-backlog-threshold [n]\n " 2903 " Set a threshold for confirm-backlog to only warn if the transaction backlog is greater than n blocks.\n " 2904 "refresh-from-block-height [n]\n " 2905 " Set the height before which to ignore blocks.\n " 2906 "auto-low-priority <1|0>\n " 2907 " Whether to automatically use the low priority fee level when it's safe to do so.\n " 2908 "segregate-pre-fork-outputs <1|0>\n " 2909 " Set this if you intend to spend outputs on both Electroneum AND a key reusing fork.\n " 2910 "key-reuse-mitigation2 <1|0>\n " 2911 " Set this if you are not sure whether you will spend on a key reusing Electroneum fork later.\n" 2912 "subaddress-lookahead <major>:<minor>\n " 2913 " Set the lookahead sizes for the subaddress hash table.\n " 2914 " Set this if you are not sure whether you will spend on a key reusing Electroneum fork later.\n " 2915 "segregation-height <n>\n " 2916 " Set to the height of a key reusing fork you want to use, 0 to use default."));
2918 boost::bind(&simple_wallet::encrypted_seed,
this, _1),
2919 tr(
"Display the encrypted Electrum-style mnemonic seed."));
2921 boost::bind(&simple_wallet::rescan_spent,
this, _1),
2922 tr(
"Rescan the blockchain for spent outputs."));
2924 boost::bind(&simple_wallet::get_tx_key,
this, _1),
2925 tr(USAGE_GET_TX_KEY),
2926 tr(
"Get the transaction key (r) for a given <txid>."));
2928 boost::bind(&simple_wallet::set_tx_key,
this, _1),
2929 tr(USAGE_SET_TX_KEY),
2930 tr(
"Set the transaction key (r) for a given <txid> in case the tx was made by some other device or 3rd party wallet."));
2932 boost::bind(&simple_wallet::check_tx_key,
this, _1),
2933 tr(USAGE_CHECK_TX_KEY),
2934 tr(
"Check the amount going to <address> in <txid>."));
2936 boost::bind(&simple_wallet::get_tx_proof,
this, _1),
2937 tr(USAGE_GET_TX_PROOF),
2938 tr(
"Generate a signature proving funds sent to <address> in <txid>, optionally with a challenge string <message>, using either the transaction secret key (when <address> is not your wallet's address) or the view secret key (otherwise), which does not disclose the secret key."));
2940 boost::bind(&simple_wallet::check_tx_proof,
this, _1),
2941 tr(USAGE_CHECK_TX_PROOF),
2942 tr(
"Check the proof for funds going to <address> in <txid> with the challenge string <message> if any."));
2944 boost::bind(&simple_wallet::get_spend_proof,
this, _1),
2945 tr(USAGE_GET_SPEND_PROOF),
2946 tr(
"Generate a signature proving that you generated <txid> using the spend secret key, optionally with a challenge string <message>."));
2948 boost::bind(&simple_wallet::check_spend_proof,
this, _1),
2949 tr(USAGE_CHECK_SPEND_PROOF),
2950 tr(
"Check a signature proving that the signer generated <txid>, optionally with a challenge string <message>."));
2952 boost::bind(&simple_wallet::get_reserve_proof,
this, _1),
2953 tr(USAGE_GET_RESERVE_PROOF),
2954 tr(
"Generate a signature proving that you own at least this much, optionally with a challenge string <message>.\n" 2955 "If 'all' is specified, you prove the entire sum of all of your existing accounts' balances.\n" 2956 "Otherwise, you prove the reserve of the smallest possible amount above <amount> available in your current account."));
2958 boost::bind(&simple_wallet::check_reserve_proof,
this, _1),
2959 tr(USAGE_CHECK_RESERVE_PROOF),
2960 tr(
"Check a signature proving that the owner of <address> holds at least this much, optionally with a challenge string <message>."));
2962 boost::bind(&simple_wallet::show_transfers,
this, _1),
2963 tr(USAGE_SHOW_TRANSFERS),
2965 tr(
"Show the incoming/outgoing transfers within an optional height range.\n\n" 2967 "In or Coinbase: Block Number, \"block\"|\"in\", Time, Amount, Transaction Hash, Payment ID, Subaddress Index, \"-\", Note\n" 2968 "Out: Block Number, \"out\", Time, Amount*, Transaction Hash, Payment ID, Fee, Destinations, Input addresses**, \"-\", Note\n" 2969 "Pool: \"pool\", \"in\", Time, Amount, Transaction Hash, Payment Id, Subaddress Index, \"-\", Note, Double Spend Note\n" 2970 "Pending or Failed: \"failed\"|\"pending\", \"out\", Time, Amount*, Transaction Hash, Payment ID, Fee, Input addresses**, \"-\", Note\n\n" 2971 "* Excluding change and fee.\n" 2972 "** Set of address indices used as inputs in this transfer."));
2974 boost::bind(&simple_wallet::export_transfers,
this, _1),
2975 tr(
"export_transfers [in|out|all|pending|failed|coinbase] [index=<N1>[,<N2>,...]] [<min_height> [<max_height>]] [output=<filepath>]"),
2976 tr(
"Export to CSV the incoming/outgoing transfers within an optional height range."));
2978 boost::bind(&simple_wallet::unspent_outputs,
this, _1),
2979 tr(USAGE_UNSPENT_OUTPUTS),
2980 tr(
"Show the unspent outputs of a specified address within an optional amount range."));
2982 boost::bind(&simple_wallet::rescan_blockchain,
this, _1),
2983 tr(USAGE_RESCAN_BC),
2984 tr(
"Rescan the blockchain from scratch. If \"hard\" is specified, you will lose any information which can not be recovered from the blockchain itself."));
2986 boost::bind(&simple_wallet::set_tx_note,
this, _1),
2987 tr(USAGE_SET_TX_NOTE),
2988 tr(
"Set an arbitrary string note for a <txid>."));
2990 boost::bind(&simple_wallet::get_tx_note,
this, _1),
2991 tr(USAGE_GET_TX_NOTE),
2992 tr(
"Get a string note for a txid."));
2994 boost::bind(&simple_wallet::set_description,
this, _1),
2995 tr(USAGE_SET_DESCRIPTION),
2996 tr(
"Set an arbitrary description for the wallet."));
2998 boost::bind(&simple_wallet::get_description,
this, _1),
2999 tr(USAGE_GET_DESCRIPTION),
3000 tr(
"Get the description of the wallet."));
3002 boost::bind(&simple_wallet::status,
this, _1),
3003 tr(
"Show the wallet's status."));
3005 boost::bind(&simple_wallet::wallet_info,
this, _1),
3006 tr(
"Show the wallet's information."));
3008 boost::bind(&simple_wallet::sign,
this, _1),
3010 tr(
"Sign the contents of a file."));
3012 boost::bind(&simple_wallet::verify,
this, _1),
3014 tr(
"Verify a signature on the contents of a file."));
3016 boost::bind(&simple_wallet::export_key_images,
this, _1),
3017 tr(USAGE_EXPORT_KEY_IMAGES),
3018 tr(
"Export a signed set of key images to a <filename>."));
3020 boost::bind(&simple_wallet::import_key_images,
this, _1),
3021 tr(USAGE_IMPORT_KEY_IMAGES),
3022 tr(
"Import a signed key images list and verify their spent status."));
3024 boost::bind(&simple_wallet::hw_key_images_sync,
this, _1),
3025 tr(USAGE_HW_KEY_IMAGES_SYNC),
3026 tr(
"Synchronizes key images with the hw wallet."));
3028 boost::bind(&simple_wallet::hw_reconnect,
this, _1),
3029 tr(USAGE_HW_RECONNECT),
3030 tr(
"Attempts to reconnect HW wallet."));
3032 boost::bind(&simple_wallet::export_outputs,
this, _1),
3033 tr(USAGE_EXPORT_OUTPUTS),
3034 tr(
"Export a set of outputs owned by this wallet."));
3036 boost::bind(&simple_wallet::import_outputs,
this, _1),
3037 tr(USAGE_IMPORT_OUTPUTS),
3038 tr(
"Import a set of outputs owned by this wallet."));
3040 boost::bind(&simple_wallet::show_transfer,
this, _1),
3041 tr(USAGE_SHOW_TRANSFER),
3042 tr(
"Show information about a transfer to/from this address."));
3044 boost::bind(&simple_wallet::change_password,
this, _1),
3045 tr(
"Change the wallet's password."));
3047 boost::bind(&simple_wallet::payment_id,
this, _1),
3048 tr(USAGE_PAYMENT_ID),
3049 tr(
"Generate a new random full size payment id (obsolete). These will be unencrypted on the blockchain, see integrated_address for encrypted short payment ids."));
3051 boost::bind(&simple_wallet::print_fee_info,
this, _1),
3052 tr(
"Print the information about the current fee and transaction backlog."));
3053 m_cmd_binder.
set_handler(
"prepare_multisig", boost::bind(&simple_wallet::prepare_multisig,
this, _1),
3054 tr(
"Export data needed to create a multisig wallet"));
3055 m_cmd_binder.
set_handler(
"make_multisig", boost::bind(&simple_wallet::make_multisig,
this, _1),
3056 tr(USAGE_MAKE_MULTISIG),
3057 tr(
"Turn this wallet into a multisig wallet"));
3059 boost::bind(&simple_wallet::finalize_multisig,
this, _1),
3060 tr(USAGE_FINALIZE_MULTISIG),
3061 tr(
"Turn this wallet into a multisig wallet, extra step for N-1/N wallets"));
3062 m_cmd_binder.
set_handler(
"exchange_multisig_keys",
3063 boost::bind(&simple_wallet::exchange_multisig_keys,
this, _1),
3064 tr(USAGE_EXCHANGE_MULTISIG_KEYS),
3065 tr(
"Performs extra multisig keys exchange rounds. Needed for arbitrary M/N multisig wallets"));
3067 boost::bind(&simple_wallet::export_multisig,
this, _1),
3068 tr(USAGE_EXPORT_MULTISIG_INFO),
3069 tr(
"Export multisig info for other participants"));
3071 boost::bind(&simple_wallet::import_multisig,
this, _1),
3072 tr(USAGE_IMPORT_MULTISIG_INFO),
3073 tr(
"Import multisig info from other participants"));
3075 boost::bind(&simple_wallet::sign_multisig,
this, _1),
3076 tr(USAGE_SIGN_MULTISIG),
3077 tr(
"Sign a multisig transaction from a file"));
3079 boost::bind(&simple_wallet::submit_multisig,
this, _1),
3080 tr(USAGE_SUBMIT_MULTISIG),
3081 tr(
"Submit a signed multisig transaction from a file"));
3082 m_cmd_binder.
set_handler(
"export_raw_multisig_tx",
3083 boost::bind(&simple_wallet::export_raw_multisig,
this, _1),
3084 tr(USAGE_EXPORT_RAW_MULTISIG_TX),
3085 tr(
"Export a signed multisig transaction to a file"));
3087 boost::bind(&simple_wallet::mms,
this, _1),
3089 tr(
"Interface with the MMS (Multisig Messaging System)\n" 3090 "<subcommand> is one of:\n" 3091 " init, info, signer, list, next, sync, transfer, delete, send, receive, export, note, show, set, help\n" 3092 " send_signer_config, start_auto_config, stop_auto_config, auto_config\n" 3093 "Get help about a subcommand with: help mms <subcommand>, or mms help <subcommand>"));
3095 boost::bind(&simple_wallet::mms,
this, _1),
3097 tr(
"Initialize and configure the MMS for M/N = number of required signers/number of authorized signers multisig"));
3099 boost::bind(&simple_wallet::mms,
this, _1),
3101 tr(
"Display current MMS configuration"));
3103 boost::bind(&simple_wallet::mms,
this, _1),
3104 tr(USAGE_MMS_SIGNER),
3105 tr(
"Set or modify authorized signer info (single-word label, transport address, Electroneum address), or list all signers"));
3107 boost::bind(&simple_wallet::mms,
this, _1),
3109 tr(
"List all messages"));
3111 boost::bind(&simple_wallet::mms,
this, _1),
3113 tr(
"Evaluate the next possible multisig-related action(s) according to wallet state, and execute or offer for choice\n" 3114 "By using 'sync' processing of waiting messages with multisig sync info can be forced regardless of wallet state"));
3116 boost::bind(&simple_wallet::mms,
this, _1),
3118 tr(
"Force generation of multisig sync info regardless of wallet state, to recover from special situations like \"stale data\" errors"));
3120 boost::bind(&simple_wallet::mms,
this, _1),
3121 tr(USAGE_MMS_TRANSFER),
3122 tr(
"Initiate transfer with MMS support; arguments identical to normal 'transfer' command arguments, for info see there"));
3124 boost::bind(&simple_wallet::mms,
this, _1),
3125 tr(USAGE_MMS_DELETE),
3126 tr(
"Delete a single message by giving its id, or delete all messages by using 'all'"));
3128 boost::bind(&simple_wallet::mms,
this, _1),
3130 tr(
"Send a single message by giving its id, or send all waiting messages"));
3132 boost::bind(&simple_wallet::mms,
this, _1),
3133 tr(USAGE_MMS_RECEIVE),
3134 tr(
"Check right away for new messages to receive"));
3136 boost::bind(&simple_wallet::mms,
this, _1),
3137 tr(USAGE_MMS_EXPORT),
3138 tr(
"Write the content of a message to a file \"mms_message_content\""));
3140 boost::bind(&simple_wallet::mms,
this, _1),
3142 tr(
"Send a one-line message to an authorized signer, identified by its label, or show any waiting unread notes"));
3144 boost::bind(&simple_wallet::mms,
this, _1),
3146 tr(
"Show detailed info about a single message"));
3148 boost::bind(&simple_wallet::mms,
this, _1),
3150 tr(
"Available options:\n " 3151 "auto-send <1|0>\n " 3152 " Whether to automatically send newly generated messages right away.\n "));
3153 m_cmd_binder.
set_handler(
"mms send_message_config",
3154 boost::bind(&simple_wallet::mms,
this, _1),
3155 tr(USAGE_MMS_SEND_SIGNER_CONFIG),
3156 tr(
"Send completed signer config to all other authorized signers"));
3158 boost::bind(&simple_wallet::mms,
this, _1),
3159 tr(USAGE_MMS_START_AUTO_CONFIG),
3160 tr(
"Start auto-config at the auto-config manager's wallet by issuing auto-config tokens and optionally set others' labels"));
3162 boost::bind(&simple_wallet::mms,
this, _1),
3163 tr(USAGE_MMS_STOP_AUTO_CONFIG),
3164 tr(
"Delete any auto-config tokens and abort a auto-config process"));
3166 boost::bind(&simple_wallet::mms,
this, _1),
3167 tr(USAGE_MMS_AUTO_CONFIG),
3168 tr(
"Start auto-config by using the token received from the auto-config manager"));
3170 boost::bind(&simple_wallet::print_ring,
this, _1),
3171 tr(USAGE_PRINT_RING),
3172 tr(
"Print the ring(s) used to spend a given key image or transaction (if the ring size is > 1)\n\n" 3174 "Key Image, \"absolute\", list of rings"));
3176 boost::bind(&simple_wallet::set_ring,
this, _1),
3178 tr(
"Set the ring used for a given key image, so it can be reused in a fork"));
3180 boost::bind(&simple_wallet::unset_ring,
this, _1),
3181 tr(USAGE_UNSET_RING),
3182 tr(
"Unsets the ring used for a given key image or transaction"));
3184 boost::bind(&simple_wallet::save_known_rings,
this, _1),
3185 tr(USAGE_SAVE_KNOWN_RINGS),
3186 tr(
"Save known rings to the shared rings database"));
3188 boost::bind(&simple_wallet::blackball,
this, _1),
3189 tr(USAGE_MARK_OUTPUT_SPENT),
3190 tr(
"Mark output(s) as spent so they never get selected as fake outputs in a ring"));
3192 boost::bind(&simple_wallet::unblackball,
this, _1),
3193 tr(USAGE_MARK_OUTPUT_UNSPENT),
3194 tr(
"Marks an output as unspent so it may get selected as a fake output in a ring"));
3196 boost::bind(&simple_wallet::blackballed,
this, _1),
3197 tr(USAGE_IS_OUTPUT_SPENT),
3198 tr(
"Checks whether an output is marked as spent"));
3200 boost::bind(&simple_wallet::freeze,
this, _1),
3202 tr(
"Freeze a single output by key image so it will not be used"));
3204 boost::bind(&simple_wallet::thaw,
this, _1),
3206 tr(
"Thaw a single output by key image so it may be used again"));
3208 boost::bind(&simple_wallet::frozen,
this, _1),
3210 tr(
"Checks whether a given output is currently frozen by key image"));
3212 boost::bind(&simple_wallet::net_stats,
this, _1),
3213 tr(USAGE_NET_STATS),
3214 tr(
"Prints simple network stats"));
3216 boost::bind(&simple_wallet::welcome,
this, _1),
3218 tr(
"Prints basic info about Electroneum for first time users"));
3220 boost::bind(&simple_wallet::version,
this, _1),
3222 tr(
"Returns version information"));
3224 boost::bind(&simple_wallet::help,
this, _1),
3226 tr(
"Show the help section or the documentation about a <command>."));
static const char * tr(const char *str)
void set_handler(const std::string &cmd, const callback &hndlr, const std::string &usage="", const std::string &description="")