运行 Joinmarket-Qt 进行 coinjoin 的操作步骤(单次或 Tumbler)

本文档提供了运行 Joinmarket-Qt 进行 coinjoin 的详细步骤,包括单次 coinjoin 和 tumbler 混币操作。内容涵盖了从二进制文件或脚本启动 GUI,配置 Bitcoin Core 连接,生成和加载钱包,发送测试交易,以及使用 tumbler 功能进行多轮混币的流程。此外,还介绍了 sweep 功能、coins 标签的使用以及导出私钥的注意事项。

运行 Joinmarket-Qt 进行 Coinjoin 的方法(单次或 Tumbler)

二进制文件或脚本

可以通过在 scripts/ 目录下执行 ./joinmarket-qt.sh,直接从 Python 脚本运行 GUI,或者,如果使用 Microsoft Windows,则运行可执行文件/二进制文件(点击这里 下载最新版本)。如果在 Linux 下按照正常安装程序操作,JoinMarketQt 的桌面条目应已添加到桌面环境的应用程序菜单中。

JoinMarket-Qt 的最新版本是 GUI 版本 33。你可以通过菜单中的 “About” 检查版本。

不需要其他文件/设置。

上面主存储库的 GitHub 提交已签名。

目录

在开始之前,请注意这里的屏幕截图使用 testnet p2sh 地址(以 '2' 开头),但默认情况下,Joinmarket 主网地址是 native segwit ('bc1'))。

操作流程

确保 Bitcoin Core 正在运行并已同步。(你的 Bitcoin Core 版本必须使用钱包支持编译)。

双击二进制文件以运行它,或者转到 /scripts 子目录并运行 joinmarket-qt.sh

最初你将看到以下错误屏幕:

...因为你与 Bitcoin Core 的 RPC 连接未设置。已在你的 Joinmarket 数据目录中创建了一个 joinmarket.cfg 文件(请参阅 这里)。如果你正在运行 Bitcoin Core,请打开它并编辑:

[BLOCKCHAIN]
rpc_user = yourusername-as-in-bitcoin.conf
rpc_password = yourpassword-as-in-bitcoin.conf
rpc_host = localhost # 默认通常是正确的
rpc_port = 8332 # 主网的默认端口

但在重新启动之前,强烈建议你进行 此处 解释的配置更改,这 可以避免可能的 RPC 错误(实际上,请阅读关于 “Configuring for Bitcoin Core” 的整个部分)。

一旦 RPC 连接正确并且你重新启动后,你将看到此起始屏幕:

请注意,“CURRENT WALLET: NONE” 表示尚未加载任何 joinmarket 钱包。假设你尚未 创建一个钱包,请执行 Wallet->Generate(否则,执行 Wallet-->Load):

此 12 个单词的列表允许你将来重新创建钱包。写下来,在任何情况下都不要 丢失它!(此助记词与所有其他 HD 钱包(如 Electrum、Trezor 等)具有相同的功能。该助记词应与 Trezor、Ledger、Electrum、Samourai 和其他一些钱包兼容)。

接下来,输入用于加密钱包的密码:

丢失此密码意味着你将无法访问此钱包文件并会造成 不便,但你仍然可以使用上面的助记词恢复币。

接下来,为你的钱包文件指定一个名称:

钱包文件将使用此名称保存在与上面提到的同一数据目录中的 wallets 目录下。

Joinmarket 钱包文件名默认为 .jmdat;这并非绝对必要,但最好 坚持该约定。

现在将自动从你的 Bitcoin Core 节点加载钱包。这可能需要几秒钟,在此期间你将看到 “Reading wallet from blockchain...”。

如果 JoinMarketQt 卡在 “Reading wallet from blockchain...” 状态,一种可能的解决方案可能是确保你已正确设置 rpc_wallet_file 如上所述。你还可以检查运行 joinmarket-qt.sh 脚本的终端,以查看其他错误消息。

由于你刚刚创建了它,因此最初它将没有任何币:

首先将一些币放入 mixdepth 0 的 “EXTERNAL” 部分的第一个地址中。一旦你的钱包中有币,它将显示如下内容 (经过一些交易后):

现在是解释 “EXTERNAL” 和 “INTERNAL” 的好时机;external 用于支付。当你想支付到钱包时,使用“new”地址以确保不重复使用地址。 在支付时,Joinmarket 将从内部和外部获取币。 “EXTERNAL” 和 “INTERNAL” 之后的长字符串是 “xpub” 密钥,可以在 某些高级方式中使用(例如,可以导出它们以允许监视帐户)。

接下来(你可以在一开始就执行此操作),看看 “Settings” 选项卡。

(这是一个 testnet/regtest 示例;你的设置在主网上看起来会有所不同)。

通过将鼠标悬停在上面的工具提示给出了所有设置的简要说明。

有很多设置,其中大多数可以保留默认值。以下是一些注意事项:

  • DAEMON 部分 - 最好现在忽略它,高级用法。

  • BLOCKCHAIN 部分 - 你在开始时进行了必要的编辑。此外,如果你选中该框,该应用程序与测试网兼容。但请注意,目前没有活跃的测试网交易平台,尽管这种情况会不时发生变化。

  • MESSAGING 部分 - 在这里你可以选择 IRC 服务器,默认的 2 个应该没问题。请注意,所有设置都是逗号分隔的列表,它们的数量必须匹配(即 所有 的 2 个条目或 所有 的 3 个条目等)。如果你想通过 Tor 连接,请使用 socks 代理选项。请参阅 joinmarket.cfg 文件中的相关注释。

  • LOGGING 部分 - 这里只有一个选项,将其保留为 INFO 或更改为 DEBUG 如果你想要详细的日志输出。

  • TIMEOUT 部分 - 保持原样(无论如何,某些选项已弃用)。

  • POLICY 部分 - 你可能想要更改 tx_fees。将鼠标悬停在设置上以获取工具提示说明。

  • GUI 部分 - 这些不是 GUI 特定的,正如名称所暗示的那样,其中一两个很重要。gaplimit 是指在放弃之前,在每个分支上搜索已使用的地址的距离;你不太可能需要更改此设置。history_file 是记录你执行的交易历史记录的纯文本文件的名称。考虑隐私影响。check_high_fee 是一项健全性检查,用于检查交易对手收取的百分比费用是否高于该百分比限制。max_mix_depth 是指你的钱包中有多少个 “mixdepths”(或帐户)。对于大多数人来说,默认值 5 就可以了。check_tx 是指在接受之前是否阻止处理并详细查看费用;这通常应该用于单次 coinjoin,但不会用于 tumbling。

接下来,我们将发送一个测试交易:

在 Coinjoins 选项卡中,选择 “Single Join” 子选项卡。

将你要发送到的地址粘贴到 Recipient address 下。

交易对手的数量可以从 4 到 20 不等(理论上,你甚至可以用 1 个交易对手进行 币币混合,但这在使用默认设置的情况下将无法工作,并且出于隐私原因不建议这样做);实际上,大于 10 的数字有时会变得有点问题,原因有很多,例如 交易费用变得很大,可能没有足够多的对手有合理的费用,消息传递延迟等。话虽如此,与 10-15 个对手加入 可以 完成,并且已经完成。但对于普通工作,我们建议在 4 到 10 之间的数字就可以了。

Mixdepth:这不是很明显,而且 重要:这是 你要从哪里花钱。如果你在 mixdepth 0 中有 2 BTC,在 mixdepth 3 中有 1 BTC,并且 你想发送 1.4 个币,你必须在此框中键入 0;Joinmarket 一次只花费一个 mixdepth 中的币,以帮助保护隐私。

Amount in BTC 或 satoshis 是接收地址 将实际收到的金额;因此不要在此处添加任何交易费用或 coinjoin 费用。

完成设置后,单击 Start。注意 你此时尚未承诺交易 (如果你没有编辑 Settings 中的 checktx 设置)。经过一段延迟(可以使用设置 order_wait_time 更改),同时你连接到 IRC 并收集订单,你最终会看到如下提示:

你会看到已选择 4 个(或你选择的任何数字)交易对手。 选择部分是随机的,部分是尽可能低的费用。显示了百分比费用:在本例中,它是 1.439 的 0.199%,即 285800 satoshis。请注意,(a) 这是一个假的测试模式交易,所以这些数字没有意义,但 (b) 这是 coinjoin 费用,它不包括 比特币交易费用,在许多情况下可能会更高。

如果你不喜欢该费用,请单击 No,交易将被中止。如果你单击 Yes, 你现在已承诺进行交易;你可以 在此之后(或实际上在此之前)单击 “Abort”,但不能保证交易在此之后不会通过。假设一切顺利,你将看到:

coinjoin 交易现已广播到区块链。

交易完成后,“Single Join”选项卡将如下所示:

你可以在 “Tx History” 选项卡中参考你之前完成的交易:

Tumbler

此操作流程仅显示了进行首次 coinjoin 的入门步骤。 主要附加功能是 “tumbler” 算法,它执行一组 coinjoin 将所有币从钱包移动到一组目的地, 具有更高的隐私度。对于基本概念,你应该从 这里 开始;这 基本 是相同的,具有一些额外的鲁棒性功能(当然,在 GUI 中)。在 “Multiple joins” 选项卡中启动,然后单击按钮 Generate Tumble Schedule。将启动一个向导:

第一步很明显(尚未实现手动)。

基本参数集,你可能 想要更改其中的一些;请参阅工具提示以获取更多信息。从第一个有币的 mixdepth 开始(0 是第一个,默认设置为 0,1,2,3,4)。你也可以在开始时在后面的 mixdepth 中拥有币,这没问题。请注意,末尾的两个费用限制以 AND 方式组合在一起 - 如果仅违反一个限制,费用将被接受。

建议你至少拥有三个目标地址。如果只有一个目的地,tumbler 算法实际上不起作用。你可以使用超过 3 个,但允许的数量取决于你通过多少个 mixdepth 进行 tumbling。选项 “address ask” 仅在命令行脚本版本中可用。

最好不要更改这些高级选项;与往常一样,如果你确实想修改它们,工具提示会提供更多信息。

完成向导后,你将在选项卡中看到一个新计划:

你将在列表中看到你的目标地址,以及很多 “INTERNAL”,这意味着发送回钱包的交易(在下一个 mixdepth 中)。单击 Run Schedule,tumbler 将开始。随着它的进行,你将看到计划的更新(特别是每个列表中的最后一个条目将从 0 更改为 txid 再到 1 完成时)。如果你阅读上面链接的 wiki 页面,你就会明白,完整的 tumbler 运行通常至少需要几个小时。

Sweeps

如果你想一次发送特定 mixdepth 中的 所有 币,正确的做法是使用 “sweep” 功能。为此,只需将“Single Join”选项卡中的“Amount”字段设置为零。该程序将在考虑到 coinjoin 和比特币交易费用后自动确定正确的输出金额。如果你尝试发送总金额,你将收到 “not enough funds” 错误。换句话说,如果你尝试在不使用此 sweep 功能的情况下发送总金额,你最终会在钱包中留下灰尘,因此请务必使用它。

Coins 选项卡

你可以使用 coins 选项卡 (a) 检查你的钱包拥有的确切 utxo,以及 (b) 冻结或解冻某些 utxo(币)以允许币控制。

后者可以通过右键单击一个 utxo 并选择 “freeze/unfreeze” 来完成(该操作会切换)。

如果你想从一个或多个特定 utxo 中花费,这会很有用。禁用(冻结)该 mixdepth 中的 其他 币。请记住,Joinmarket 永远不会 在任何类型的交易中共同花费来自不同 mixdepth(帐户)的 utxo - 它们是完全隔离的帐户。

导出私钥

通常不要尝试使用此功能。 你应该能够将钱包导入到其他一些钱包中,如上所述。 segwit 钱包已在那里实现。此处的密钥控制币(utxo),但仅根据 segwit 中的 p2sh/p2wpkh 标准;如果你将它们导入到随机钱包中,它们将不会显示任何币。

如果出于某种原因此功能仍然有用:

在钱包菜单中,选择 “Export keys”,你将看到 当前包含币的所有地址的私钥列表。 处理私钥是不可取的,即使对于有经验的比特币用户也是如此。泄露你钱包中的任何一个 BIP32 私钥理论上也会暴露整个钱包。 如果要将显示的密钥保存到文件中(再次,要非常小心), 或者可以将它们复制粘贴到其他地方。它们采用 WIF 压缩格式(在主网上以 K 或 L 开头)。

  • 原文链接: github.com/JoinMarket-Or...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
JoinMarket-Org
JoinMarket-Org
江湖只有他的大名,没有他的介绍。