10 个版本
0.9.1 | 2023年2月6日 |
---|---|
0.9.0 | 2023年2月6日 |
0.9.0-rc.1 | 2022年12月27日 |
0.8.4 | 2022年12月25日 |
0.8.0-beta.2 | 2022年6月29日 |
#3 in #layer-2
在 6 个crate(3 个直接) 中使用
38KB
686 行
RGB 节点
这是运行 RGB 后端守护程序和库的源代码。有关钱包和交易所集成,请查看其接口和 RGB SDK 中的演示项目。
此存储库包含 RGB 节点源代码和钱包及服务器端开发的 SDK。
节点可以作为一组守护程序运行(甚至在不同 docker 容器中);一个多线程的单进程,或者作为钱包应用中的一组管理线程。
为了进行易于设置的测试,可以体验节点的功能,可以查看 演示。
设计
节点(如由 LNP/BP 标准协会及其子公司 Pandora Core 维护的其他节点)由多个微服务组成,通过 LNP ZMQ RPC 接口相互通信。
表示节点的微服务集可以运行为:
- 桌面或服务器上的单个守护程序进程;
- 基于 docker 的守护程序云,每个微服务一个实例,具有实例可扩展性和地理分布式环境;
- 单个移动应用中的线程;
- 甚至不同节点可以在它们的服务之间组合成单个可执行文件/移动应用;
- 所有 P2P 通信都是端到端加密的,并通过 Tor 运行。
其他使用相同架构设计并由 LNP/BP 标准协会维护的节点包括:
- LNP Node,用于运行 Lightning Network Protocol(LNP)和通用 Lightning 通道(GLC);
- BP Node,用于索引比特币区块链(你可以将其视为更高效的 Electrum 服务器替代品);
- Bifrost - 用于存储/传递客户端验证数据的节点,具有守望塔功能,并用于 Storm/RGB/DEX 基础设施;
其他第三方提供使用相同架构设计的自己的节点,例如
- Keyring,用于管理私钥账户、存储和签名,支持 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 -d <data_dir> -vvvv fungible invoice <contract_id> <amount> <txid>:<vout>
,其中 <contract_id>
是上次调用返回的令牌id,并且 <txid>:<vout>
必须是你控制的交易输出。
保存你将收到的绑定因子的值:将来接受转账时需要用到。不要分享它!将发票字符串发送给收款人。
进行转账:这需要准备PSBT;这里我们使用来自我们的示例目录的 rgb-cli -d <data_dir> -vvvv fungible transfer "<invoice>" test/source_tx.psbt <consignment_file> test/dest_tx.psbt -i <input_utxo> [-a <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协议
依赖项
~21–35MB
~480K SLoC