2个版本

使用旧的Rust 2015

0.1.1 2017年11月2日
0.1.0 2017年10月30日

188 in #protocol

BSD-2-Clause

38KB
600

Angel Whisper

Gitter Build Status codecov Crates.io

Angel Whisper Wire协议的开发中参考实现。截至今天,这是可用的唯一协议文档。这是对我的第一次尝试进行重构。然而,我的第一次尝试过于宽泛,所以我决定将llsd模块独立成一个crate,以允许其他语言的实现。

Angel Whisper是我尝试构建轻量级且快速的线协议,适用于物联网世界以及普通世界。然而,不保证。这个库旨在处理加密以及帧的解码/编码。这个库不处理其他任何事情,如请求路由、RPC等。计划是在这个基础上构建一个框架。

这个库根本不适合生产或开发。这意味着包括线格式在内的所有内容都可能改变。目标是到2017年底,至少有三种语言能够使用这个协议进行通信。

安装

libwhisper在crates.io上有,可以像这样包含到你的Cargo项目中:

[dependencies]
libwhisper = "0.1.0"

注意,这个库仍在开发中,公共API可能会改变。协议是稳定的。

使用

嗯...目前你用它做不了太多。现在最好的使用例子是单元测试。对此表示歉意。

下一步

我正在等待tokio稳定下来,开始工作于这个协议的服务层。理想情况下,服务层将设计得可以在tokio和旧线程之间进行交换。

开发

目前我使用taskwarrior进行任务管理,这显然对于多于一个开发者来说无法扩展。你可以在gitter或IRC上找到我。

我会问的问题

我需要帮助吗?

是的。

它安全吗?

也许,也许不。我不是密码学家,这只是为了好玩。也许有人能帮一下这个?

为什么它一开始使用secp256k1而不是Curve25519?

因为我做了一个梦,梦见我用p2p直接消息构建了以太坊钱包。因此,我最终使用secp256k1公钥作为身份。第一次尝试是使用Curve25519。经过一些讨论,我决定回到Curve25519。老实说,我不喜欢rust绑定到libsecp256k1的方式。

它支持哪些其他语言?

目前——只有rust。在不久的将来——将通过rust库支持C。下一步是Ruby,通过c库。之后是纯Kotlin实现。

为什么是Rust?你几乎根本不知道Rust!

嗯...我想通过在Rust中编写一些有趣的东西来学习Rust。一些涉及到使用Rust许多特性的东西。

为什么不使用螺旋结构?

似乎不是这项工作的正确工具。来挑战我。

为什么选择Kotlin而不是Java?

因为我更喜欢Kotlin,我有着丰富的Java经验,这让我对Kotlin产生了兴趣。

依赖项

~22MB
~162K SLoC