3个版本 (破坏性更新)

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

#8 in #described


corda-rpc 中使用

Apache-2.0

68KB
2K SLoC

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

Build status Coverage status License: Apache 2.0

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

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

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

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

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,您可以在此处找到该版本的具体规范。尽管名称相同,但由OASIS标准化的AMQP 1.0与0.9.1协议有显著区别。本库旨在提供一种通用(非Corda专用)的协议客户端实现。

如上所述,当前库尚未达到该目标。虽然它提供了严格需要的部分协议的健壮版本,用于与代理开始交换消息,但许多部分缺失或不完整。尽管如此,提供的构建块(特别是基于Rust强大的serde框架的序列化和反序列化)在许多情况下应能轻松填补缺失的部分。

oasis-amqp-macros:辅助宏

Documentation Crates.io

oasis-amqp库的实现由一个过程宏支持,该宏为任何类型定义推导出所需的serde::Deserializeoasis_amqp::Described实现。

依赖项

~4–13MB
~139K SLoC