1. 主页
  2. 文档
  3. Monero-Doc 门罗币教程
  4. 第一章 交互
  5. 5 命令行门罗币

5 命令行门罗币

注意 一个友好的 Monero CLI 钱包能让你体验好到爆。 它是门罗币最可靠和最完整的钱包。可使用 stagenet 进行学习。

概述

命令行门罗币monero-wallet-cli

Monero 的“正式”命令行钱包。可用于 Linux,macOS 和 Windows。 钱包使用你的私人密钥,以了解你的总收支,交易历史,并辅助创建交易。 不过钱包并不存储区块链,也不直接参与 p2p 网络。 CLI 钱包是门罗币最可靠的,功能最齐全的钱包。

依赖全节点

钱包连接到全节点后,为了输出你的交易会扫描区块链,并将你的交易发送到网络。 全节点可以是本地(同一台计算机)或远程的节点。 通常,你要在与钱包相同的计算机上(或在你的家庭网络中)运行全节点。 通过 HTTP 连接并使用相应的 API。 任何离开钱包的交易都会被门罗币的隐私功能隐藏。这意味着即使连接到远程节点,纯文本 HTTP 通信本身也不是问题。 但是,连接到远程节点还有其他细微的权衡,这是另一篇文章的主题。

语法

./monero-wallet-cli [options] [command]

例子:

./monero-wallet-cli --stagenet

运行

进入门罗币的目录。 运行完整的节点并等待它与网络同步(可能需要几天时间) :

./monerod --stagenet

如果要在一个单独的终端窗口中运行:

./monero-wallet-cli --stagenet --generate-new-wallet MoneroExampleStagenetWallet

选项

帮助和版本

选项描述
–help获得可用选项。
–version将monero-wallet-cli版本显示到标准输出。 例: Monero ‘Boron Butterfly’ (v0.14.0.0-release)

选择网络

选项描述
(missing)默认情况下,钱包设定为mainnet
–stagenet在stagenet上运行。 记得用–stagenet运行你的守护进程。
–testnet在testnet上运行。 记得用–testnet运行你的守护进程。

日志

选项描述
–log-file日志文件的完整路径。
–log-level0-4:0表示最小日志记录,4表示完全跟踪,默认为0。这些是常规预设,不需要调到最高级别。 例如,即使调到0档,你也可能会看到一些最重要的INFO条目。
–max-log-file-size日志文件的软性限制(以字节为单位,大小默认为104850000bytes,刚好小于100MB)。 一旦日志文件超过该限制,monerod将使用UTC时间戳,以YYYY-MM-DD-HH-MM-SS的名字创建下一个日志文件。 在开发部署中,你可能更喜欢使用成型的解决方案,例如 logrotate。在这种情况下,请设置–max-log-file-size = 0以防止 monerod 管理日志文件。
–max-log-files限制日志文件的数量(默认为50)。最旧的日志文件会被删除。在开发部署中,你可能更喜欢使用成型的解决方案,例如logrotate。

全节点连接

钱包依赖所有非本地操作的全节点。下面的选项定义了如何连接到 monerod:

选项描述
–daemon-address以[主机:端口]使用monerod实例。例: ./monero-wallet-cli –daemon-address monero-stagenet.exan.tech:38081 –stagenet
–daemon-host在输入主机而不是localhost上使用monerod实例。
–daemon-port在输入端口而不是18081上使用monerod实例。
–daemon-login为monerod RPC API指定用户名[:密码]。它基于HTTP基础验证(Basic Auth)。请注意,默认情况下连接无加密。 只有建立安全连接(可能通过Tor,或SSH隧道或反向代理w / TLS),身份验证才有意义。
–trusted-daemon启用依赖 monerod 可信实例的命令和行为。localhost连接的默认值。在这种情况下,信任会保护你的隐私。这个选项只在你控制monerod 时使用。 可信守护进程(Trusted daemon )允许使用 rescan_spent,start_mining,import_key_images等命令,也会允许在发送交易时对可能引发攻击的瞬态问题不再警告的行为。
–untrusted-daemon禁用依赖monerod 可信实例的命令和行为。非本地主机连接的默认值( Default for a non-localhost connections)。 有关更多详细信息,请参阅 –trusted-daemon。
–do-not-relay新创建的交易不会被中继到Monero网络。相反,它将以原始十六进制格式转储到文件中。 在你想通过https://xmrchain.net/rawtx等网关发送交易时,这会非常有用。与Monero钱包相比,用Tor会更方便。
–allow-mismatched-daemon-version允许与使用不同RPC版本的 monerod 进行通信。

创造新钱包

选项描述
–generate-new-wallet创建一个新的门罗币钱包,并将其保存到文件。系统会要求你输入密码。密码用于加密钱包文件,但它与你的主要支出密钥(spend key)或助记词无关。可以用密码管理器生成一个非常强大的密码(256位比特)。 例: ./monero-wallet-cli –stagenet –generate-new-wallet $HOME/.bitmonero/stagenet/wallets/MoneroExampleStagenetWallet
–kdf-rounds关注对钱包文件的加密。钱包文件使用ChaCha流密码加密。加密密钥是根据用户提供的密码通过CryptoNight哈希算法派生的。此选项确定的是应用CryptoNight哈希计算的次数。默认为1轮哈希计算。 请注意,这与花费密钥( spend key )的生成无关。 哈希计算的轮数越多,打开钱包或发送交易等待的时间越长。但是攻击者暴力破解你钱包密码的时间也会越久。 注意:你必须记住并在每次访问钱包时提供相同的kdf轮次! 建议:不要更改默认值。最好使用密码管理器生成一个非常强大的钱包密码(256位比特)。

打开已有钱包

选项描述
–wallet-file打开已有钱包。 例: ./monero-wallet-cli –stagenet –wallet-file $HOME/.bitmonero/stagenet/wallets/MoneroExampleStagenetWallet 这仅适用于使用monero-wallet-cli,monero-wallet-gui或monero-wallet-rpc 工具生成的钱包文件。如果你有其他类型的钱包,请参阅导入选项。
–password钱包密码在这里是作为参数,而不是交互。根据需要记得escape/quote。 不推荐使用,因为密码将保留在命令历史记录中,并且也会在进程表中显示。 对于自动化首选 –password-file。 该选项还可与–generate-new-wallet 结合使用。
–password-file钱包密码在这里是作为文件,而不是交互。读取密码文件时将丢弃结尾的“\ n”字符(Trailing \n are discarded when reading the password file. )。 如果你自动化钱包的访问,这种方式会比–password更好(Prefer this over –password if you automate wallet access.)。确保密码文件与钱包文件有意义地分开,否则这种方式也就失去了安全的效果了。 该选项还可与–generate-new-wallet 结合使用。

恢复钱包

选项描述
–generate-from-device恢复/生成一个特殊钱包,以便与Ledger或Trezor等硬件设备一起使用,并将其保存到文件中。 例: ./monero-wallet-cli –stagenet –generate-from-device MoneroExampleDeviceWallet –subaddress-lookahead 5:20 这个操作只需要一次。下次你只需打开钱包。 默认情况下,该命令需要连接 Ledger 硬件。使用Trezor 硬件需添加–hw-device Trezor(预计2019年5月)。 使用默认设置最多需要25分钟。 这是因为硬件设备预生成子地址的速度很慢。为了减轻使用率–subaddress-lookahead 5:20(To mitigate use low –subaddress-lookahead 5:20)。 本地钱包不会有私人支出密钥(private spend key),也无法单独消费。 它被用作低功耗硬件设备的用户界面和桥接器。使用私密花费密钥(private spend key)的交易签名始终在硬件设备上进行。 请参阅硬件钱包设置的完整指南
–generate-from-view-key恢复仅查看版本的钱包以跟踪传入的交易,并将其保存到文件。钱包是基于**私密查看密钥(secret view key)**和标准地址创建的。查看密钥会被以十六进制的形式被复制。
–generate-from-spend-key私密花费密钥secret spend key)恢复钱包并将其保存到文件。 花费密钥会被以十六进制的形式被复制(The secret spend key is meant to be pasted as hexadecimal.)。
–restore-deterministic-wallet根据助记词secret mnemonic seed)恢复钱包。使用此功能从25字备份中恢复。 系统将要求你输入密码以加密钱包文件(恢复后)。 请注意,这不是助记词的密码。门罗币官方钱包产生的助记词是未加掩盖的。
–restore-height仅扫描指定区块高度之后的交易,默认值为0。提高该值可使钱包的恢复速度更快。最佳值应与你最初创建钱包的日期相匹配(但不能比那晚)。区块高度和日期/时间之间的映射在区块浏览器(如-https://xmrchain.net)上可用。 例如,如果你在2019年创建了钱包,请使用1730000(if you created the wallet in 2019+ use 1730000)。

Multisig 钱包

选项描述
–generate-from-multisig-keys基于多重签名密钥(multisig keys)创建标准钱包。 如果将所有多重签名密钥组合回标准钱包(当你不再需要multisig时),这会非常有用。之后钱包将控制资金。它仅支持所有密钥齐全的情况,即便多重签名方案允许更少的密钥——仅N / N,而不是N / M。
–restore-multisig-wallet从之前使用种子交互命令( seed interactive command)导出的秘密种子(secret seed)恢复多重签名钱包。这只会恢复你钱包的一部分。 其他多重签名参与者仍然需要签署交易。

配置文件

选项描述
–config-file配置文件的完整路径。请注意,这应该是使用monerod 之外的单独配置( this should be a separate config than monerod uses ),因为这些工具接受不同的选项集。

性能

选项描述
–subaddress-lookahead接收m:n,默认为50:200。 第一个值是帐户数,第二个值是每个帐户的子地址(subaddresses)数。 钱包检查付款的范围只限于最近收到的付款到第n个子地址。 如果你为一行中的n个客户生成了唯一的子地址,但他们都没有付款,就会发生这种情况。 另一方面,你设置为向前检查的子地址越多,创建钱包所需的时间就越长,因为它们必须预先计算。 除硬件钱包外,这通常不是问题。 在Ledger上,默认值50:200可能需要20多分钟(创建钱包时一次)!
–max-concurrency设置并行作业的最大线程数,默认值为0(使用CPU线程数)。

国际化

选项描述
–mnemonic-language助记词的语言。包括英语,english_old,世界语,法语,德语,意大利语,日语,lojban,葡萄牙语,俄语,西班牙语,中文。 坚持默认英语会比较好,这是迄今为止最受欢迎且经过充分测试的。 它还避免了潜在的非ASCII字符陷阱或错误。
–use-english-language-names如果你的显示屏卡住,请使用 ^C 退出,然后使用–use-english-language-names再次运行。当Monero提示在其本机字母表中显示语言名称的语言时,可能会发生这种情况。

旧版

这些选项要么是遗留的,要么很少有用。

选项描述
–non-deterministic生成旧版的非确定性钱包。 查看密钥(view key)不会由花费密钥派生。你还必须备份 .keys文件。要恢复非确定性钱包(标准地址),请使用–generate-from-keys。要完全恢复,你将需要.keys文件。
–generate-from-keys通过提供花费密钥和查看密钥以及标准地址来恢复旧版的非确定性钱包。
–shared-ringdb-dir设置共享环数据库路径。 不值再提了。
–create-address-file并无效果。无论此选项如何,都会创建* .address.txt文件。
–electrum-seed提供助记词作为–restore-deterministic-wallet的命令行选项,而非交互(instead of interactively)。 不推荐这样做,因为助记词将被保存在命令的历史记录中,并且也可以在进程列表中看到(This is not recommended b/c the seed will be saved in your command history and also visible in the process list)。
–generate-from-json你可以运行monero-wallet-rpc来使用此选项。在monero-wallet-cli中很少用到。
–tx-notify你可以运行monero-wallet-rpc来使用此选项。 在monero-wallet-cli中很少用到。

默认值Defaults

创建钱包文件并在工作目录中查找。一般很少需要这么做。 使用 — wallet-file 和类似的选项可以对其操作。 日志文件在与 monero-wallet-cli 二进制文件相同的目录中创建。 使用 — log-file 可以指定位置。

命令

命令在 monero-wallet-cli 提示符(prompt)中可以交互地使用。 你还可以通过提供一个命令行参数来运行一次性命令。但很少用到。自动化操作会更喜欢 monero-wallet-rpc(For automation prefer monero-wallet-rpc.)。 命令行钱包内置了针对单个命令的帮助——这里我们就不重复了。相反,我们将重点放在分组命令上,这样你就可以快速找到你要查找的内容。 使用 help command_name 可以了解更多信息。

帮助和版本

help #列出所有命令
help command_name #显示单个命令的帮助
version #显示 monero-wallet-cli 二进制文件的版本

开支

account #总收支; 列出有关结余的帐户

balance detail #在最近的账户中,列出带有余额的地址

管理客户

account

account new

account switch

account label

管理地址

address all

address new

address label

网络状态

status #show if synced up to the blockchain height显示是否同步到了区块链的高度

fee - show current fee-per-byte and full node's mempool (the backlog of transactions depending on the priority)显示当前的每字节收费和完整的节点记忆池(根据优先级确定的交易积压)

wallet_info #显示钱包文件路径,标准地址,类型和网络

钱包信息Secret mnemonic seed

seed #显示生成的助记词
encrypted_seed #创建助记词,你需要单独记住这些密码短语,没有这些短语就无法恢复钱包了

密钥

spendkey  #显示私密花费密钥和公开花费密钥

viewkey  #显示私密查看密钥和公开查看密钥

证明

get_reserve_proof -> check_reserve_proof #证明余额

get_spend_proof -> check_spend_proof #证明你支付了

sign <file> -> verify <filename> <address> <signature> #证明地址的所有权; 允许验证由特定 Monero 地址的所有者签名的文件

get_tx_proof -> check_tx_proof

多重签名

创建

prepare_multisig

make_multisig

finalize_multisig

更新

export_multisig_info

import_multisig_info

其他

submit_multisig

exchange_multisig_keys

export_raw_multisig_tx

交易私钥

它们允许查看(learn)和验证交易的私钥。 这对创建支付证明很有用,不过已经被 get spend proof 取代了。

get_tx_key <txid>

check_tx_key <txid> <txkey> <address>

set_tx_key <txid> <tx_key>

高级

unspent_outputs #显示未支出的列表和直方图(总余额中不可分割的部分indivisible pieces of your total balance)

export_key_images <file> -> import_key_images <file> #用来通知只可查看钱包(view-only wallet)发送出去的交易,以此计算真正的收支;通常只可查看钱包只了解收到的交易,而不是发送出去的

export_outputs <file>  #将这个钱包所拥有的一组输出导出到一个文件

挖矿

start_mining

stop_mining

捐款

donate <amount> #捐款给开发团队

不必要的或者旧版的

address_book [(add ((<address> [pid <id>])|<integrated address>) [<description possibly with whitespaces>])|(delete <index>)]

set_description [free text note] -> get_description #管理钱包的便利描述(本地信息)

save #现在会自动发生

save_bc #现在会自动发生

bc_height #显示区块链高度(已经被status取代了)

sweep_unmixable # 只适用于非常早期版本的钱包(2016年以前),将所有不可混合的输出以ring_size为10大小的方式发送给自己

我们要如何帮助您?