15 个版本 (4 个重大更新)
0.4.1 | 2019年11月13日 |
---|---|
0.4.0 | 2019年11月12日 |
0.3.5 | 2019年11月8日 |
0.3.0 | 2019年10月27日 |
0.0.7 | 2019年10月23日 |
#23 在 #backward
每月25次 下载
435KB
11K SLoC
Risq - 关于在 rust 中重新实现 bisq 的可行性研究
Bisq 是一个去中心化应用程序,允许通过点对点交易协议进行比特币和其他数字资产交易。目前正在进行一个关于将交易协议升级为向后不兼容的升级的讨论,该升级将依赖交易伙伴在交易时使用 BSQ 色彩币作为抵押品。这和其他改进将被提议作为 Bisq v2 发布。由于这可能会要求重写应用程序的大部分内容,因此提出了一个问题,即是否值得从头开始而不是继承现有代码库。
此存储库代表了一个高峰,以调查重写应用程序中需要与 V1 互操作的部分的可行性和所需的工作量。
目标
为了弄清楚以下问题
- 是否可能有一个与实时 p2p 网络兼容的替代实现(即,Java <-> Rust 进程是否可以通过基于 protobuf 的协议正确通信)?
- 从这个方法中能否获得任何显著的技术优势(例如,总体复杂性降低、风险依赖性减少、更好的开发工作流程等)?
- 以替代实现达到生产就绪状态所需的工作量有多大?
- 与改编现有代码相比,作为战略方法从头开始编写 V2 是否合理?
设置
例如,对于 mac
$ curl https://sh.rustup.rs -sSf | sh
$ brew install tor
要尝试使用我们 发布管道 发布的最新版本,您可以
$ cargo install risq
$ risq help
(在此处了解更多有关管道设置的信息 这里)
或使用 make 命令进行构建/测试/运行。例如
$ make build-all
演示
使用 make build
构建项目后,二进制文件将位于 ./target/debug/risq
$ ./target/debug/risq help
USAGE:
risq [OPTIONS] <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
SUBCOMMANDS:
daemon Runs the risq p2p node [aliases: d]
help Prints this message or the help of the given subcommand(s)
offers Subcomand to interact with offers
您可以通过以下方式查看各个子命令的帮助信息
$ ./target/debug/risq help daemon
<omitted>
在启动 tor 后运行守护进程
$ make run-tor
$ ./target/debug/risq d
从种子节点引导数据需要一些时间(目前没有数据被持久化,因此每次启动守护进程都必须执行引导)。
在另一个控制台中,您可以通过以下方式检查 API 是否正在运行
$ curl localhost:7477/ping
pong
或者使用 CLI 获取开放报价(一旦引导完成)
$ ./target/debug/risq offers --market USD | wc -l
56
API
守护进程公开的 API 使用了一个 GraphQL 架构。您可以在这里了解 GraphQL 的背景。
要访问数据,您必须向 /graphql
发送带有查询作为请求体字符串的 POST
请求
curl --header "Content-Type:application/json" \
-XPOST \
--data '{ "query": "{ offers(market: \"btc_usd\") { id } }" }' \
https://127.0.0.1:7477/graphql | jq
还有一个位于 https://127.0.0.1:7477/graphiql 下的查询探索器,可以帮助您开发查询。
限制
由于这是一个概念验证,存在一些限制。
- 没有数据被持久化,因此每次运行都需要引导。
- 当前仅建立了与种子节点的一个连接。如果初始数据同步失败,则守护进程无法正确引导或加入 P2P 网络。
- 除了确认事物是活跃的之外,没有做太多努力来使输出看起来更美观或有特别的使用价值。
节点检查器
要构建和运行节点检查器,请执行以下操作
make build-with-checker
./target/debug/risq check-node 5quyxpxheyvzmb2d.onion 8000
为了与类似 Nagios
的监控工具(icinga
、sensu
等)兼容,它成功时返回 0
(Ping - Pong 成功),或者在任何错误(如建立连接、发送 ping
或从主机获取响应)发生时返回 2
。
依赖项
~38–50MB
~1M SLoC