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日 |
#4 in #layer-2
每月44次下载
在 lnpbp-cli 中使用
34KB
433 行
RGB节点
这是运行RGB后端的守护进程可执行文件和库的源代码。有关钱包和交易所集成,请查看其接口和来自RGB SDK的演示项目。
此存储库包含RGB节点源代码和用于钱包及服务器端开发的SDK。
节点可以作为一组守护进程运行(甚至在不同Docker容器中);一个多线程的单个进程或作为钱包应用程序中的一组管理线程。
为了进行易于测试的设置,您可以体验节点的功能,可以查看演示。
设计
节点(如由LNP/BP标准协会和Pandora Core公司子公司维护的其他节点)由多个微服务组成,通过LNP ZMQ RPC接口相互通信。
表示节点的微服务集可以运行为
- 桌面或服务器上的单个守护进程进程;
- 基于Docker的守护进程云,每个微服务一个,具有实例可伸缩性和地理分布式环境;
- 单个移动应用程序中的线程;
- 并且甚至可以不同节点在它们的服务之间结合在一起,形成一个可执行文件/移动应用程序;
- 所有P2P通信都是端到端加密并通过Tor进行。
具有相同架构并由LNP/BP标准协会设计和维护的其他节点包括
- LNP节点,用于运行闪电网络协议(LNP)和通用闪电通道(GLC)。
- BP节点,用于索引比特币区块链(您可以将其视为更高效的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
是包含所有守护进程二进制的目录(通常为repo源码中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 兑换列表
创建发票 rgb-cli -d <data_dir> -vvvv 兑换发票 <合约_id> <数量> <txid>:<vout>
,其中 <合约_id>
是上次调用返回的令牌 ID,并且 <txid>:<vout>
必须是您控制的交易输出。
保存您将收到的绑定因子的值:在未来接受转账时需要它。请不要分享!将发票字符串发送给收款人。
执行转账:这需要准备 PSBT;在这里,我们使用示例目录中的内容 rgb-cli -d <data_dir> -vvvv 兑换转账 "<invoice>" 测试/source_tx.psbt <consignment_file> 测试/dest_tx.psbt -i <input_utxo> [-a <数量>@<change_utxo>]
注意:输入金额必须等于发票金额和找零金额的总和。
这将产生托运。将其发送给接收方。
接收方必须执行以下操作: rgb-cli -d <data_dir> -vvvv 兑换接受 <consignment_file> <utxo>:<vout> <盲化>
,其中 utxo
和 盲化
必须是发票生成中使用的值
开发者指南
为了更新项目依赖项,运行 cargo update
。如果任何依赖项更新,则 Cargo.lock
文件将更新,记录确切的包版本。
更新后,运行测试(cargo test
)并手动测试软件以激发更新库的功能调用。
请参阅 使用 RGB Node 的软件 以获取集成示例。
如果出现任何问题,请提交问题。
使用 RGB Node 的软件
- Bitcoin Pro:由发行者发行的 RGB 资产发行与管理工具
- MyCitadel:支持比特币、LN 和 RGB 的钱包服务,并支持其他 LNP/BP 协议
依赖项
~22–36MB
~509K SLoC