1个不稳定版本

0.0.8 2024年7月25日

3 in #runes

Download history 138/week @ 2024-07-23 10/week @ 2024-07-30

148 每月下载量
bitomc 中使用

CC0 许可证

73KB
2.5K SLoC

bitomc

bitomc 是一个索引和命令行钱包。它是一个实验性软件,无任何保证。有关详细信息,请参阅 LICENSE

BitOMC是比特币上的一个实验性元协议,它定义了一种名为“util”的动态子单位,可以适应不断变化的经济条件。目标是定义一个可信的中立计量单位,可以为比特币经济提供价格稳定性。

这个计量单位通过利率由公开市场控制,利率由两种可相互转换的资产的数量决定,即Tighten和Ease。用户根据一个常数函数转换规则在它们之间进行转换,确保相对数量反映相对价格。Tighten和Ease会随着时间的推移稳步发行,每四年减半一次。

有关该协议的技术描述,请参阅 白皮书

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

加入 Telegram群组 与BitOMC的用户交流。

钱包

bitomc 依赖于Bitcoin Core进行私钥管理和交易签名。在安全使用 bitomc 钱包命令之前,您必须了解这些影响

  • Bitcoin Core不知道Tighten和Ease runes,也不执行sat控制。使用 bitcoin-cli 命令和RPC调用与 bitomc 钱包可能导致runes丢失。

  • bitomc wallet 命令会自动加载由 --name 选项指定的 bitomc 钱包,默认为 'bitomc'。请注意,在运行 bitomc wallet 命令后,可能已加载 bitomc 钱包。

  • 由于 bitomc 可以访问您的 Bitcoin Core 钱包,因此不应用于包含大量资金的钱包。请将 runic 和 cardinal 钱包分开。

安装

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

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

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

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

构建

在 Linux 上,bitomc 在从源代码构建时需要 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

克隆 bitomc 仓库

git clone https://github.com/BitOMC/BitOMC.git
cd bitomc

要构建 bitomc 的特定版本,首先检查该版本

git checkout <VERSION>

最后,真正构建 bitomc

cargo build --release

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

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

Docker

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

docker build -t BitOMC/BitOMC .

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 以增加打开文件的最大数量,或者在您的 shell 配置中增加。

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

同步

bitomc 需要一个同步的 bitcoind 节点。 bitomc 通过 RPC 与 bitcoind 通信。

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

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

bitcoind RPC 身份验证

bitomcbitcoind 进行 RPC 调用,这通常需要一个用户名和密码。

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

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

bitomc --cookie-file /path/to/cookie/file server

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

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

使用环境变量

export BITOMC_BITCOIN_RPC_USERNAME=foo
export BITOMC_BITCOIN_RPC_PASSWORD=bar
bitomc server

或在配置文件中

bitcoin_rpc_username: foo
bitcoin_rpc_password: bar

日志记录

bitomc 使用 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

lib.rs:

与序数、刻印和符文交互的类型。

依赖项

~8.5MB
~118K SLoC