3 个不稳定版本

0.2.0 2021年6月17日
0.1.1 2020年3月11日
0.1.0 2020年3月9日

#22 in #described


2 个crate使用

Apache-2.0

14KB
277

corda-rpc: 用于执行 Corda RPC 的 Rust 库

Build status Coverage status License: Apache 2.0

由于我不再在 ING 工作或在任何 Corda 相关的项目上工作,除非出现资金,否则这个 crate 很可能不会有进一步的发展 — 我可以以自由职业者的身份提供帮助。我很乐意回答有关代码及其当前状态的问题,并且我打算继续提供(被动)维护(如PR代码审查)。

Corda 是一个开源的区块链平台。为了与 Corda 节点通信,你的代码需要通过 AMQP 1.0 与节点运行的代理进行通信。该项目针对稳定 Rust,并使用基于 Tokio 的异步网络 I/O。这可能对在受限环境中(物联网)运行或在与其他原生代码接口的代码有用。

这个项目是在 ING 银行 内部编写的,当时正在处理 ValueX 项目,旨在为机构投资者创建一个数字证券分配平台。提供的功能被分为三个 crate,如下所述。

项目的当前状态可以描述为预 alpha。到目前为止,我已经努力使对 Corda 节点的简单 RPC 调用生效,并且所提供的所有内容都仅到此目的为止完整。在 network-map-snapshot 中的示例代码将按预期触发 Corda 节点的 RPC 调用并返回正确的响应。然而,这仅在应用于 Corda 节点的某些更改的情况下才有效。

corda-rpc: 专门针对 Corda RPC 的抽象

Documentation Crates.io

虽然 Corda RPC 协议建立在 AMQP 1.0 标准之上,但它定义了自己的编码方案,将序列化转换为协议,以便协议消息自描述。这个 crate 包含所需的序列化和反序列化原语的实现,并且将来将包含针对 Corda 的其他代码。理想的目标是匹配 Corda 的 CordaRPCOps 接口。

oasis-amqp: AMQP 1.0 协议的通用实现

Documentation Crates.io

“AMQP”这个名字通常用来指代由RabbitMQ和许多其他软件组件实现的协议版本0.9.1,版本0.9.1的规范。尽管名称相同,但由OASIS标准化的AMQP 1.0与0.9.1协议有很大的不同。这个软件包旨在提供一个通用的(不特定于Corda)协议客户端实现。

如上所述,该库目前还没有达到这个目标。虽然它提供了一个健壮的协议部分版本,这些部分是严格必需的,以便与代理交换消息,但许多部分缺失或不完整。尽管如此,提供的构建块(特别是基于Rust强大的serde框架的序列化和反序列化)在许多情况下应该使填充缺失的部分变得简单。

oasis-amqp-macros:辅助宏

Documentation Crates.io

oasis-amqp软件包的实现由一个过程宏支持,该宏为任何类型定义提供了所需的serde::Deserializeoasis_amqp::Described实现。

依赖关系

~1.5MB
~35K SLoC