跳到主要内容

CAT1快照生成

信息 CAT1 将在 2311760 区块高度结束其生命周期,也就是 UTC 时间 2022 年 7 月 26 日 17:00。 更多关于结束生命周期的信息可以参考 CAT2 介绍及 FAQ 本文档将向 CAT1 发行人展示如何:

  1. 生成其 CAT1 状态的快照。 这将显示 Puzzle 哈希(地址)和每个单独代币在生命周期结束高度的值
  2. 从快照中导出他们所需的数据 完成此操作后,CAT 发行人将能够继续进行代币重新发行指南

生成一个 CAT1 快照

注意: 我们推荐你跟着本节内容来生成你的 CAT1 快照。请注意这一过程肯能会需要 40 多个小时来完成。为了方便您,我们会发布一个快照供您使用。这个快照应该与你自己生成的完全相同。 本节将向您展示如何安装 CAT-addresses 工具并使用它来获取特定 CAT1 的每个硬币的 puzzle 哈希值(地址)和价值的快照。 它甚至可以获取 Chia 区块链上所有 CAT1 的信息。

危险

警告
为了使用这个工具,你需要运行一个完全同步的 Chia 全节点。 此节点必须为 1.5 或更高版本。 在继续之前,请确保在继续之前您已满足这两个要求。 以下是从主分支的源代码安装的说明:

git clone https://github.com/Chia-Network/chia-blockchain.git -b main --recurse-submodules
cd chia-blockchain
.\Install.ps1
.\venv\Scripts\Activate.ps1
chia init

(Optional) To install and run the GUI:
.\Install-gui.ps1
cd .\chia-blockchain-gui
npm run electron
提示

提示
如果您收到消息警告 WARNING: UNPROTECTED SSL FILE! 请运行:

chia init --fix-ssl-permissions
  1. 如果您还没有使用激活的虚拟环境打开终端窗口,那么:
    打开终端窗口并确保您可以直接访问 chia 命令::

    1. 进入到 chia-blockchain 目录并激活您的虚拟环境:
    .\venv\Scripts\Activate.ps1
    1. 运行以下命令:
    chia version

    如果步骤 1 成功,您应该会在输出中看到一个版本号,例如 1.4.1.dev364。 这是快照工具工作的必要条件。

  2. 在同一个终端窗口中,创建一个新目录来安装 CAT-addresses 存储库(它可以在父目录中)并运行以下命令:

    git clone https://github.com/Chia-Network/CAT-addresses.git -b main
  3. 使用本工具需要设置以下环境变量:

    1. FULL_NODE_HOSTNAME - 要调用 RPC 的全节点的主机名。 这可以是localhost

    2. DB_SOURCE_DIR - 全节点数据库在主机上的位置。

    3. START_HEIGHT - 开始创建快照的起始高度(默认值:0)。 如果您尝试获取您的 CAT 的所有记录,建议的起始高度为 1146800,即在 CAT1 上线之后。

    4. TARGET_HEIGHT - 结束快照的区块链高度(无默认值 - 必须设置)。 建议高度为 2311760,这是 CAT1 有效的最后一个区块。

    警告

    注意
    此过程可能需要 40 多个小时才能完成。 您可能希望先将TARGET_HEIGHT设置为1146900来进行测试。这将只从 100 个块中提取数据,这应该只需要几秒钟。

    为了设置这些变量,建议您将它们放入CAT-addresses项目根目录下名为.env的文件中。 该工具将自动读取此文件中的变量。 例如:

    .env
    FULL_NODE_HOSTNAME=localhost
    DB_SOURCE_DIR=C:\Users\Username\.chia\mainnet\db
    START_HEIGHT=1146800
    TARGET_HEIGHT=2311760
  4. 安装依赖项:

    python setup.py install
    备注

    注意
    结果可能包含多个警告,例如WARNING: The wheel package is not available.。 这些可以安全地忽略.

    此命令可能需要几分钟才能完成。 在最后的输出,您应该会看到类似:

    Finished processing dependencies for chia-transaction-exporter==0.1.dev55”
  5. 运行以下命令安装dotenvbackoff模块:

    pip install python-dotenv
    pip install backoff
  6. 通过运行以下内容设置数据库:

    python setup_database.py
    提示

    提示
    如果您收到诸如ModuleNotFoundError: No module named 'chia'之类的错误消息,请确保您可以从该目录运行chia命令并重试。

    如果此命令成功,那么它将输出:

    INFO:setup_database:Setting up database
    INFO:setup_database:Database setup complete
  7. 运行以下命令启动快照生成器:

    python start.py

    该命令将根据区块高度显示其进度。 如果您在.env文件中使用了建议的START_HEIGHTTARGET_HEIGHT范围,则此命令可能需要 40 多个小时才能完成。 需要这么长时间的原因是它需要逐个处理每个区块。 如果并行处理多个区块,那么结果就有可能不准确。 通过一次处理一个块,该工具将给予提供范围的正确结果。

    备注

    注意
    您只能为每个区块生成一次快照。 如果您尝试在已针对其运行的范围内运行此命令,您将收到包含以下消息的错误:

    sqlite3.IntegrityError: UNIQUE constraint failed: coin_create.coin_name

    在这种情况下,您要么需要从更高的高度开始,要么(推荐)重新开始。 跟随可选部分:数据清理部分(如下)并重试。

从快照中导出所需的数据

在使用快照填充数据库后,您可以将数据导出。

  1. 打开 taildatabase.com.

  2. 搜索您的 CAT。我们将在这个例子中使用CAT King Cole . 请记录下它的 TAIL 哈希值(Asset ID), 它列在代币标题的上方。 在这个例子中,它是:

    1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a
  3. 为您的 CAT 生成一个包含所有内层 Puzzle 哈希值和金额的 CSV 文件:

    python export.py --output-dir <OUTPUT-DIR>\<PREFIX> --tail-hash <TAIL-HASH> --coins
    样例命令
    python export.py --output-dir C:\Users\Username\Chia\CAT-addresses\results\CKC_ --tail-hash 1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a
    信息

    信息

    • <OUTPUT-DIR> - 是您选择的用于保存 CSV 文件的目录
    • <PREFIX> - 一个添加到输出文件名的字符串前缀
    • <TAIL-HASH> - 是您从 taildatabase.com 获得的 TAIL 哈希值
    • --coins - 一个可选开关,将有关单个硬币的信息添加到输出中(这可能有助于审计目的) :::

    注意
    此命令不会创建任何目录,因此请确保<OUTPUT DIR>在运行之前已经存在。 否则,您将收到 FileNotFoundError。 :::

修复 EOL 字符

此步骤对于 Windows 用户是必需的,对于 Linux/MacOS 用户则不需要。

如果您在 Windows 上运行,CSV 文件将在每行的末尾包含一个额外的 CR(回车)字符。 这将导致“代币重新发配”(下一节)失败。 首先,您必须将 CSV 文件转换为使用 UNIX 样式的行尾字符。

最简单的方法是使用 dos2unix。 这不包含在 Windows 中,因此您需要从 Sourceforge 下载它。

转换 CSV 文件的步骤:

  1. 访问SourceForge dos2unix site
  2. 点击绿色的“下载”按钮。 五秒钟后,dos2unix zip 文件将下载到您的下载文件夹
  3. 解压dos2unix zip 文件
  4. 在 Powershell 窗口中,运行:
<path to dos2unix.exe> -o <path to CSV file>

举个例子:

~\Downloads\dos2unix\bin\dos2unix.exe -o .\results\CKC_1121996b75cce3c746369aced2c8887b02b84e95592c3dc006d82a145adf349a.1658233083.183527.csv

此消息应出现在输出中:

dos2unix: converting file <CSV file> to Unix format...
  1. 要验证转换是否成功,请打开该文件。 条目之间不应有空行。

数据清理

可选:如果应用程序在运行中途退出,它只会导入区块到某一特定高度。 您可以通过运行以下命令从数据库中删除指定高度及之前的记录:

python clean.py --height <BLOCK-HEIGHT>

获取区块链上所有 CAT 的余额

可选:如果您希望获得 Chia 区块链上所有 CAT 的余额,您可以使用各种不同的选项运行

可以删除--tail-hash 标志,从而生成单个 CSV 文件的输出,其中包含 Chia 区块链上每个 CAT 的每个拼图哈希值:

python export.py --output-dir <OUTPUT-DIR>\<PREFIX>

可以添加 --coins 标志,这将添加有关单个硬币的信息:

python export.py --output-dir <OUTPUT-DIR>\<PREFIX> --coins

可以添加 --explode 标志,这将生成多个 CSV 文件,每个文件都包含一个 CAT 的拼图哈希和数量:

python export.py --output-dir <OUTPUT-DIR>\<PREFIX> --explode

您还可以同时使用 --explode--coins 标志,这将生成单独的 CSV 文件,其中也包含硬币信息。