10个版本

0.9.1 2023年2月6日
0.9.0 2023年2月6日
0.9.0-rc.12022年12月27日
0.8.4 2022年12月25日
0.8.0-beta.22022年6月29日

#4 in #layer-2

每月44次下载
lnpbp-cli 中使用

MIT 许可证

34KB
433

RGB节点

Build Lints

crates.io unsafe forbidden MIT licensed

这是运行RGB后端的守护进程可执行文件和库的源代码。有关钱包和交易所集成,请查看其接口和来自RGB SDK的演示项目。

此存储库包含RGB节点源代码和用于钱包及服务器端开发的SDK。

节点可以作为一组守护进程运行(甚至在不同Docker容器中);一个多线程的单个进程或作为钱包应用程序中的一组管理线程。

为了进行易于测试的设置,您可以体验节点的功能,可以查看演示

设计

节点(如由LNP/BP标准协会和Pandora Core公司子公司维护的其他节点)由多个微服务组成,通过LNP ZMQ RPC接口相互通信。

节点架构

表示节点的微服务集可以运行为

  1. 桌面或服务器上的单个守护进程进程;
  2. 基于Docker的守护进程云,每个微服务一个,具有实例可伸缩性和地理分布式环境;
  3. 单个移动应用程序中的线程;
  4. 并且甚至可以不同节点在它们的服务之间结合在一起,形成一个可执行文件/移动应用程序;
  5. 所有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