#ord #wallet #ordinal #docs #order #index #transaction

bin+lib tmi-ord

为 tmi 提供序数/卫星追踪(基于 ord◉)

13 个版本

0.18.3 2024 年 4 月 29 日
0.1.12 2024 年 7 月 6 日
0.1.10 2024 年 5 月 4 日
0.1.2 2024 年 4 月 30 日

#1678 in 魔法豆

CC0 许可证

4MB
35K SLoC

ord

ord 是一个索引、区块浏览器和命令行钱包。它是一个没有保证的实验性软件。有关更多详细信息,请参阅 LICENSE

序数理论赋予了 satoshis 钱币价值,使其可以像古董一样收集和交易。

序数是 satoshis 的序列号,按照挖掘的顺序分配,并在交易中保持不变。

有关文档和指南,请参阅 文档

有关分配和转移算法的技术描述,请参阅 BIP

有关当前优先问题,请参阅 项目板

加入 Discord 服务器 与其他序数爱好者聊天。

捐赠

Ordinals 是开源并由社区资助的。当前 ord 的主要维护者是 raphjaph。Raph 在 ord 上的工作完全由捐赠资助。如果您可以的话,请考虑捐赠!

捐赠地址是 bc1qguzk63exy7h5uygg8m2tcenca094a8t464jfyvrmr0s6wkt74wls3zr5m3

这个地址是 4 个多签钱包中的 2 个,由 raphjapherinrodarmorordinally 持有密钥。

收到的比特币将用于资助 ord 的维护和开发,以及 ordinals.com 的托管费用。

感谢您捐款!

钱包

ord 依赖于 Bitcoin Core 进行私钥管理和交易签名。这带来了一些必须理解的影响,以便安全地使用 ord 钱包命令。

  • Bitcoin Core 不了解铭文并且不执行 sat 控制。使用 bitcoin-cli 命令和 RPC 调用与 ord 钱包可能会造成铭文丢失。

  • ord 钱包 命令会自动加载通过 --name 选项提供的 ord 钱包,默认为 'ord'。请注意,运行 ord 钱包 命令后,可能会加载 ord 钱包。

  • 由于 ord 可以访问您的 Bitcoin Core 钱包,因此不应将 ord 与包含大量资金的钱包一起使用。请将序数和基数钱包分开。

预 alpha 钱包迁移

Alpha ord 钱包与 ord 旧版本创建的钱包不兼容。要迁移,请使用旧钱包中的 ord 钱包发送,将 sats 和铭文发送到新钱包生成的地址,使用 ord 钱包接收

安装

ord 用 Rust 编写,可以从 源代码 构建。预构建的二进制文件可在 发布页面 上找到。

您可以使用以下命令从命令行安装最新预构建的二进制文件:

curl --proto '=https' --tlsv1.2 -fsLS https://ordinals.com/install.sh | bash -s

安装 ord 后,您应该在命令行上能够运行 ord --version

构建

在 Linux 上,从源代码构建 ord 时需要 libssl-dev

在基于 Debian 的 Linux 发行版中,包括 Ubuntu

sudo apt-get install pkg-config libssl-dev build-essential

在基于 Red Hat 的 Linux 发行版中

yum install -y pkgconfig openssl-devel
yum groupinstall "Development Tools"

您还需要 Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

克隆 ord 仓库

git clone https://github.com/ordinals/ord.git
cd ord

要构建 ord 的特定版本,首先检出该版本

git checkout <VERSION>

最后,实际构建 ord

cargo build --release

构建完成后,ord 二进制文件可在 ./target/release/ord 找到。

ord 需要 1.76.0 或更高版本的 rustc。运行 rustc --version 确保您有此版本。运行 rustup update 以获取最新稳定版本。

Docker

可以使用以下命令构建 Docker 镜像

docker build -t ordinals/ord .

Homebrew

ord 可在 Homebrew 上找到

brew install ord

Debian 软件包

要构建 .deb 软件包

cargo install cargo-deb
cargo deb

贡献

如果您希望贡献,有一些事情可能会有所帮助。我们在代码库中非常重视适当的测试,分为三个广泛的类别:单元、集成和模糊。单元测试通常可以在文件底部的 mod 块中的 tests 块中找到。如果您添加或修改了函数,请也添加相应的测试。集成测试尝试通过执行二进制文件的子命令来测试端到端功能。那些可以在 tests 目录中找到。我们不做很多模糊测试,但我们如何做的基本结构可以在 fuzz 目录中找到。

我们强烈推荐安装just,以便更容易地运行测试。要运行我们的CI测试套件,您将执行以下操作:

just ci

这对应以下命令:

cargo fmt -- --check
cargo test --all
cargo test --all -- --ignored

请查看justfile,以了解更多有用的配方(命令)。这里有一些额外的例子:

just fmt
just fuzz
just doc
just watch ltest --all

如果测试失败或卡住,您可能需要在运行测试前或在您的shell配置中运行ulimit -n 1024来增加最大打开文件数。

我们还尝试遵循TDD(测试驱动开发)的方法,这意味着我们使用测试来了解代码。由于这个原因,测试必须快速运行,以便在做出更改、运行测试和查看结果之间的反馈循环很小。为了实现这一点,我们在test-bitcoincore-rpc中创建了一个模拟的比特币核心实例。

同步

ord需要与带有-txindex的同步bitcoind节点来构建萨托希位置的索引。ord通过RPC与bitcoind通信。

如果bitcoind由同一用户在本地运行,且没有额外的配置,ord应通过从bitcoind的datadir读取.cookie文件并使用默认RPC端口连接来自动找到它。

如果bitcoind不在主网上,不是由同一用户运行,有一个非默认的datadir或端口,您需要向ord传递额外的标志。有关详细信息,请参阅ord --help

bitcoind RPC认证

ord会对bitcoind进行RPC调用,这通常需要一个用户名和密码。

默认情况下,ord会在由bitcoind创建的cookie文件中查找用户名和密码。

可以使用--cookie-file配置cookie文件路径。

ord --cookie-file /path/to/cookie/file server

或者,可以在命令行中为ord提供用户名和密码

ord --bitcoin-rpc-username foo --bitcoin-rpc-password bar server

使用环境变量

export ORD_BITCOIN_RPC_USERNAME=foo
export ORD_BITCOIN_RPC_PASSWORD=bar
ord server

或在配置文件中

bitcoin_rpc_username: foo
bitcoin_rpc_password: bar

日志记录

ord使用env_logger。设置RUST_LOG环境变量以开启日志记录。例如,运行服务器并显示info级别日志消息及以上。

$ RUST_LOG=info cargo run server

新版本

发布提交信息使用以下模板

Release x.y.z

- Bump version: x.y.z → x.y.z
- Update changelog
- Update changelog contributor credits
- Update dependencies

翻译

为了翻译文档,我们使用mdBook i18n helper

有关帮助,请参阅mdbook-i18n-helpers使用指南

添加新的翻译有些复杂,因此请随时开始翻译并提交一个pull request,即使您的翻译不完整。

请参阅这个提交以了解添加新翻译的示例。维护者将帮助您将其集成到我们的构建系统中。

要开始新的翻译

  1. 安装mdbookmdbook-i18n-helpersmdbook-linkcheck

    cargo install mdbook mdbook-i18n-helpers mdbook-linkcheck
    
  2. 生成一个名为messages.pot的新pot文件

    MDBOOK_OUTPUT='{"xgettext": {"pot-file": "messages.pot"}}'
    mdbook build -d po
    
  3. msgmerge 上运行 XX.po,其中 XX 是你要翻译成语言的两位字母 ISO-639 代码。这将使用最新英文版本的文本更新 po 文件。

    msgmerge --update po/XX.po po/messages.pot
    
  4. 未翻译的部分在 #, fuzzy 中标记,位于 XX.po。用翻译后的文本编辑 msgstr 字符串。

  5. 执行 mdbook 命令以重新构建文档。对于 ISO-639 代码为 zh 的中文。

    mdbook build docs -d build
    MDBOOK_BOOK__LANGUAGE=zh mdbook build docs -d build/zh
    mv docs/build/zh/html docs/build/html/zh
    python3 -m http.server --directory docs/build/html --bind 127.0.0.1 8080
    
  6. 如果一切看起来都很好,提交 XX.po 并在 GitHub 上打开一个拉取请求。其他更改的文件应从拉取请求中排除。

依赖项

~65–100MB
~2M SLoC