34 个版本
0.9.2 | 2023年5月25日 |
---|---|
0.9.1 | 2023年2月6日 |
0.9.0-rc.1 | 2022年12月27日 |
0.8.1 | 2022年11月16日 |
0.2.0-beta.4 | 2020年11月30日 |
#1976 in 神奇豆子
在 3 个crate 中使用
180KB
3.5K SLoC
RGB Node
这是运行 RGB 后端的守护进程可执行文件和库的源代码。请检查其接口和 RGB SDK 的演示项目,以了解钱包和交易所集成。
此仓库包含 RGB 节点源代码和用于钱包及服务器端开发的 SDK。
节点可以作为一组守护进程运行(甚至在不同的 docker 容器中);多线程的单个进程或作为钱包应用中的一组管理线程。
为了体验节点功能,您可以查看 演示 以进行简单的测试设置。
设计
节点(如由 LNP/BP 标准协会及其子公司 Pandora Core 公司维护的其他节点)由多个微服务组成,它们通过 LNP ZMQ RPC 接口相互通信。
代表节点的微服务集可以运行为
- 桌面或服务器上的单个守护进程进程;
- 基于 docker 的守护进程云,每个微服务一个,具有实例可扩展性和地理分布式环境;
- 单个移动应用中的线程;
- 并且甚至可以将不同节点之间的服务组合成单个可执行文件/移动应用;
- 所有 P2P 通信都是端到端加密,并通过 Tor 进行。
具有相同架构并由 LNP/BP 标准协会设计和维护的其他节点包括
- LNP Node,用于运行闪电网络协议(LNP)和通用闪电通道(GLC);
- BP Node,用于索引比特币区块链(您可能将其视为更高效的 Electrum 服务器替代品)
- 冰河 - 存储或传递客户端验证数据的节点,具有守望塔功能,并用于Storm/RGB/DEX基础设施
其他第三方提供具有相同架构的节点,例如
- 密钥圈 - 用于管理私钥账户、存储和签名,支持miniscript和PSBTs
项目组织 & 架构
src/api/
- 用于消息总线的所有守护进程的LNP消息src/bin/
- 守护进程和CLI启动主进程的二进制文件src/cli/
- 基于CLAP的命令行API,与消息总线通信src/i8n/
- 向FFI公开的函数,与消息总线通信src/<name>/
- 服务/守护进程特定的代码src/stash/
- 管理RGB存储数据和其存储的守护进程;您可以通过配置文件、环境变量或命令行参数来配置它,以使用不同的存储驱动程序;src/contracts
- 支持不同形式RGB Schema(RGB-20(可互换资产)、RGB-21(收藏品/NFT)等)的高级API的守护进程;src/rgbd
- 协调存储和合同守护进程引导的守护进程
每个守护进程(更准确地说,“微服务”,因为它可以作为线程运行,而不一定是进程)或其他二进制文件(如CLI工具)都遵循相同的模块/文件名组织概念
error.rs
- 守护进程特定的错误类型;config.rs
- CLAP参数和守护进程配置数据;runtime.rs
- 管理主守护进程线程、所有ZMQ/P2P连接和套接字的单例;通过它们接收和处理消息;processor.rs
- 不依赖于外部通信/RPC的业务逻辑函数和内部状态管理;index/
、storage/
、cache/
- 存储接口和引擎;db/
- 如果需要,特定于SQL的模式和代码。
安装
最低支持的Rust编译器版本(MSRV):1.45
本地
要编译节点,请安装 cargo,然后运行以下命令
Linux
sudo apt update
sudo apt install -y build-essential cmake libpq-dev libsqlite3-dev libssl-dev libzmq3-dev pkg-config
MacOS
brew install cmake libpq sqlite pkg-config openssl zmq
两者
git clone https://github.com/LNP-BP/rgb-node.git
cd rgb-node
cargo install --all-features --bins --path .
现在,要运行节点,您可以执行
rgbd --data-dir ~/.rgb --bin-dir ~/.cargo/bin -vvvv --contract fungible
在docker中
为了构建和运行节点的docker镜像,运行
docker build -t rgb-node .
docker run --rm --name rgb_node rgb-node
使用
首先,您需要启动守护进程:rgbd -vvvv -d <data_dir> -b <bin_dir> --contract fungible
其中 bin_dir
是包含所有守护进程二进制文件的目录(通常为从代码仓库源安装后 cargo install --all-features --bins --path .
命令生成的 ~/.cargo/bin
)。
发行代币:rgb-cli -d <data_dir> -vvvv fungible issue TCKN "SomeToken" <supply>@<txid>:<vout>
接下来,列出您的代币 rgb-cli -d <data_dir> -vvvv fungible list
创建发票 rgb-cli -<data_dir> -vvvv fungible invoice <contract_id> <amount> <txid>:<vout>
,其中 <contract_id>
是最后调用返回的代币ID,且 <txid>:<vout>
必须是您控制的交易输出。
保存您将收到的绑定因子的值:在将来接受转账时需要。不要分享它!将发票字符串发送给收款人。
进行转账:这需要准备PSBT;这里我们使用示例目录中的文件 rgb-cli -<data_dir> -vvvv fungible transfer "<invoice>" test/source_tx.psbt <consignment_file> test/dest_tx.psbt -<input_utxo> [-<amount>@<change_utxo>]
注意:输入金额必须等于发票金额和找零金额的总和。
这将产生托运。将其发送给接收方。
接收方必须执行以下操作:rgb-cli -d <data_dir> -vvvv fungible accept <consignment_file> <utxo>:<vout> <blinding>
,其中 utxo
和 blinding
必须是发票生成中使用的值。
开发者指南
为了更新项目依赖项,运行 cargo update
。如果有任何依赖项更新,则 Cargo.lock
文件将被更新,以跟踪确切的包版本。
更新后,运行测试(cargo test
)并手动测试软件,以刺激从更新库中调用函数。
请参阅使用 RGB Node 的软件以获取集成示例。
如果出现任何问题,请提交问题。
使用 RGB Node 的软件
- Bitcoin Pro:发行方用于 RGB 资产发行与管理工具
- MyCitadel Bitcoin、LN 和 RGB 兼容的钱包服务,支持其他 LNP/BP 协议
依赖项
~27–38MB
~547K SLoC