开源项目 写了一个 Libra 的客户端库

ylt · 2019年10月19日 · 最后由 ylt 回复于 2019年10月23日 · 1302 次阅读

Libra是facebook推出的一种数字货币,和实际的法币挂钩,在我看来是‘真实’的货币,应该可以算是M0。最近几个月尝试给Libra项目写一个ruby的客户端,最终形成了两个开源项目'casoer-ruby''libra_client_ruby'

casoer-ruby : LCS的ruby实现

A Ruby implementation of the LCS(Libra Canonical Serialization)

LCS(Libra Canonical Serialization)是Libra中采用的规范序列化协议。它可确保内存里的数据结构在序列化的时候保证字节一致性。它适用于双方想要有效比较他们独立维护的数据结构。在共识协议中,独立验证者需要就他们独立计算的状态达成一致。共识双方比较的是序列化数据的加密散列。要实现这一点,在计算时,相同数据结构的序列化必须相同。而独立验证器可能由不同的语言编写,有不同的实现代码,但是都遵循同一个规范。

libra_client_ruby : 访问Libra网络的Ruby语言API

Cient APIs for the Libra network

Libra网络采用的是protobuf+grpc的接口协议, 'libra_client_ruby'主要是对该协议的封装。安装方式很简单,标准的gem命令:

gem install libra_client

要访问Libra网络,参考下面的代码:

require 'libra_client'
client = Libra::Client.new(:testnet)
state = client.get_account_state("000000000000000000000000000000000000000000000000000000000a550c18")
state.balance           #the balance of the account
state.sequence_number   #the sequence_number of the account

在写这个库的过程中,碰到了一个难题。Ruby目前不支持SHA3系列散列算法,包括SHA3_224, SHA3_256, SHA3_384 and SHA3_512。但是Libra中使用的Hash算法是SHA3_256。 我尝试自己实现了Openssl中SHA3系列函数的Ruby移植,但是pull request没有通过,最后放弃了。

Libra客户端库的Python实现

由于python和ruby语法类似,且支持SHA3_256,所以我尝试用python重写了一遍上面的两个库。而且python的版本支持完整的客户端功能,比如交易和钱包。

A Python implementation of the LCS(Libra Canonical Serialization)

Python Language APIs for the Libra network

等ruby支持了SHA3, 也许考虑升级一些ruby的客户端。

共收到 3 条回复
afly 回复

最后更新是4年前,和最新的sha3标准不兼容。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册