93 年出生的罗超,2015 年在大学学习了四年会计后,毅然决然的选择弃坑会计,进入编程的世界。最初接触 Linux,到第一门语言 SQL 入门、经历了 Python 和 Go 后洗礼后,在 1.1.2 版本正式入门 Rust ,一直使用 Rust 到现在,并津津乐道的吹着 Rust, 真香!
什么是「漂流的江湖」
经常有大学同学问罗超:为什么好好的会计不做,要跳入码农的坑,还在坑里说 “真香”?罗超的回答朴实无华:非常简单,我被开源世界所吸引,最后变得一发不可收拾。我相信现在的选择是遵从自己内心的意愿在前行,虽然道阻且长,但按照自己的意愿来走,比随波逐流到最后变成一个印象中的路人甲好太多了。
这或许就是罗超博客「漂流的江湖」的来由。
「漂流的江湖」是罗超用 Rust 写的一个博客,写 Web 的语言不少,为什么要选用 Rust 呢?罗超说他想要写一个能够有持续维护能力的项目,在响应速度上需要有保证等好处。罗超还将这次用 Rust 写博客的经历总结了一番,分享给了开源社区里的大家。
在这篇博文中,罗超吹了一波 Rust。
CITA-CLI 和 P2P
2018 年,罗超加入了秘猿科技,在这里,罗超终于完全体会到了工程师的正常节奏,罗超可以因为不爽某个模块代码,提出修改意见和方案,然后立刻重写这个模块;也可以因为不爽某个工具,通过业余时间写一个东西,然后把老工具给干掉,然后这个新工具成为新的项目;我可以因为某些框架很难用,于是自己找几个人同事,重新实现这个框架,然后公司内部一起使用我们新写的框架,一起维护它。
罗超说:“这种开源式的开发过程,才是我喜欢的生活,思如泉涌时,coding 如有神,只要能想到,几乎所有时间都在写;思路枯竭时,也不着急,花几天时间查看各种资料,找回状态,重新出发就行了。”
上面所说的新工具就是罗超用 Rust 编写的 CITA-CLI,以及 Rust 编写的 P2P 框架。罗超说还有其他参与项目都不敢放在自己 Github 首页面板上,因为仅仅只是参与了,并不是像这两个项目一样重度参与,并且有主导作用。现在越来越觉得自己一个人的力量太过于渺小了,需要更多的人提出更多可靠的意见,并参与到这两个开源项目中,让 CITA-CLI 和 P2P 开源项目变得更有活力。
什么是 CITA-CLI:
CITA CLI 是用于开发中调试 CITA 的命令行工具。CITA-CLI 与 CITA 的关系,就像 redis-cli 和 redis。
GitHub :https://github.com/driftluo/cita-cli/blob/master/README-CN.md
什么是 P2P:
这是一个轻量、简洁、可靠、高性能、对用户友好的 P2P 框架,它的理念源于 libp2p spec,不过并没有完全依据 spec 实现,在介绍的最后,也列出了一些不兼容的地方,供参考。
GitHub:https://github.com/driftluo/p2p/blob/master/docs/introduction_zh.md
高产开源作者
罗超不仅在 GitHub 上将技术开源给社区,在用 Rust 写这些项目的一些所思所想也同样分享给社区的伙伴,而且,还是一个成体系的高产作者。
开源项目 CITA 系列:
CITA 项目是面向企业应用的联盟链,提供了白名单准入机制,将应用解耦成微服务,用以实现高可扩展性、高性能。整个项目用新兴语言 Rust 编写,是罗超非常喜欢的语言。
大家所熟知的比特币是用未使用交易輸出(UTXO)模型来表示余额状态,可以理解成财务中的流水账,虽然看似散乱,不过确实记录且维护了世界「账务」状态。以太坊以账户模型来管理世界状态,相当于每个时点都会有一个不一样的账户余额的记录。CITA 采用的是类以太坊的账户模型,并且兼容以太坊智能合约。
主项目地址:https://github.com/cryptape/cita
公共库:https://github.com/cryptape/cita-common
CITA 系列文章——开篇
CITA系列之用户接口——Jsonrpc
CITA系列之网络通信——Network
CITA系列之共识算法——BFT
CITA系列之执行器——Executor
CITA系列之核心存储——Chain
CITA系列之交易验证 —— Auth
CITA 系列之微服务联动——整体流程
CITA 系列之微服务联动 —— 同步(一)
CITA 系列之微服务联动 —— 同步(二)
开源项目 CITA-CLI 系列
2018 年 3 月某一日,罗超开发 debug 的时候,实在无法忍受 CITA 自带开发工具了,于是萌生了自己写一个对人(至少让我开发的时候舒服)友好的命令行工具的想法。在我最初的单纯想法里,这个工具必须有以下的功能:
- 必须让用户舒服、必须让用户舒服、必须让用户舒服
- 可以直接拿着 binary 运行,不依赖目录等神奇的东西
- 覆盖 RPC 接口
没错,最开始的时候,什么交互式命令行的想法是不存在的,最重要的是写出来给自己 debug 的时候稍微舒服一点,然后不要依赖一堆乱七八糟的东西。于是带着这个简单的想法, cita-cli
的开发工作在罗超的个人仓库正式开始。
CITA 的命令行工具(一)
CITA 的命令行工具(二)
CITA 的命令行工具(三)
CITA 的命令行工具(四)
开源项目 P2P 框架系列
2018 年 10 月开始,因为工作原因,开始接触 libp2p 协议,开始尝试使用该库(rust-libp2p),在摸索与提问并行之下,好不容易搭建了一个 demo 可以跑起来通信了,正当罗超欢天喜地得将 demo 封装成库,移植到 CITA 中时,碰到了一些神奇的问题,在尝试自己解决失败,求助也失败的情况下,与组内多人讨论了一个议题:“我们是否需要自己实现 P2P 网络?”
好处是显而易见的,如果出现问题,响应时间会极快,不会因为底层实现的复杂而打断项目进度,坏处也是显而易见的,CITA 团队是否有能力实现一个稳定高效的网络库,让它测试完善,并且功能与 rust-libp2p 的实现类似,易于扩展?同时如果真的实现出来了,时间成本、人工成本是否可控,如果实现了一年完成了第一个稳定版,那就没有什么意义了。终于在 11 月的时候,CITA 团队艰难地决定重新实现一个 P2P 网络库作为我们项目的网络依赖。
P2P 网络系列(一)
P2P 网络系列(二)
P2P 网络系列(三)
更开放、更热爱、更自律
说到爱好,罗超说读书学习是一个比游戏或电影更吸引他的事情,除非有强烈的出门需求,不然能宅在家里很久不出门。说到传承开源精神,罗超在过去一年参加了很多次线下开发者聚会 Dev meetup 并作为讲师先后向大家介绍「P2P 网络的思考」、「Rust 发展简介 与 CLI 的实践」。说到热爱到停不下来的 Rust 语言,罗超认为:
Rust,是一门系统级语言,表达能力却很强,在写网站的过程中,我更多的时间是在考虑前端的问题,Rust 写起来的速度是不亚于 Python 的。尽管 Rust 是一个刚刚出生的语言,生态并不是很完善,但是它依然能够 胜任许多工作 。
编译器 rustc 帮助程序员检查内存问题,并且给出的提示都 非常友好,非常详细 。
cargo 自带集成测试,单元测试,bench,脚本启动,自动生成文档等功能,让程序员 非常舒心 。
rustup 作为 Rust 的版本管理器,可以非常方便的切换 nightly/stable 版本,或者指定到对应版本,同时能够使用 rustup 对 rust 进行更新。
这次大会说什么
对于这次 RustCon Asia 大会,罗超期待已久,特别激动。作为讲师,罗超对其主题已进行多次的演练,为的就是给所有参会者带去尽可能好的听众体验。那么,他将会讲什么呢?
罗超认为 P2P 是区块链网络的基础,是不应被忽视的部分。所以这次大会上,罗超将介绍他的 P2P 项目库,从初衷到实现的过程,以及未来的发展、可能遇到的障碍。该库可能是对 Rust 生态系统的一个小补充,也希望更多的人能参与 Rust 生态建设中。
联系罗超
GitHub:https://github.com/driftluo
Blog:https://www.driftluo.com/
Email:luochaopiaoliu@gmail.com (每月浏览)
Email:driftluo@foxmail.com (每日浏览)