你好,我是不羁,一名程序员,带你玩转EOS智能合约开发。如果你对EOS智能合约感兴趣,欢迎关注我的专栏。
简介:这几天Fibos火了,于是我忍不住了看了下这个项目,于是就有了本文,跟大家分享一下我对这个项目的一些小看法。
Fibos想解决什么问题
其实Fibos的解决的痛点是针对于EOS开发智能合约难的问题而提出来的。EOS智能合约采用C++开发,C++语言相对来说是一门比较难掌握的语言。
于是Fibos想给EOS加上javascript的支持,希望能让javascript的开发者也能开发智能合约。
初看的时候,我以为fibos给EOS提供了一个可以把javascript转化为wasm的支持工具,能让开发者使用javascript开发出可以部署在EOS上面的智能合约。然而,细看之后,发现Fibos自己是一个独立的链。
Fibos提供的解决方案
为了能实现开发者能用javascript开发智能合约,同时拥有EOS的能力,Fibos选择对EOS进行代码分叉(荆凯有篇文章介绍了什么是代码分叉),就是说,Fibos在EOS的代码基础上,引入了javascript的一个运行时环境(具体采用的是fibjs,类似于node),然后它在EOS和fibjs之间,做了一个javascript调用C接口的中间层。这部分正是Fibos所做的主要工作,上层的EOS和上层的fibjs都是别的项目。
Fibos的壁垒
Fibos项目,在技术上,主要是实现一个javascript和C互操作的中间层,这部分确实有一定的技术壁垒,需要一定的技术功底,但并没有太大的难度。
我很好奇Fibos为什么为使用不出名的fibjs作为javascript的runtime,于是我翻了下github,这才发现,原来Fibos的创始人响马是fibjs的主力开发。这就难怪会使用fibjs了。
另外一个壁垒,可能是文档了和营销了;是的,你没看错,文档和营销,这两点Fibos确实做的不错,虽然说这个壁垒也不搞,很多人都会,但很少有项目把文档和营销都做的好不错的。那些空气项目,经常是只有营销没有文档的。
Fibos上的bancor算法
其实我挺纳闷的,为什么好多宣传Fibos的文案都重点提这个bancor算法,这就是根据余额调整兑换比例的算法吗?如此简单的一个东西,值得大肆渲染吗?
细想一下,其实也不难理解,大部分人都是不懂技术的。EOS的RAM大涨大跌让bancor
算法出了名,虽然很多人不知道这是个什么东东,但一想到bancor
就很容易和EOS Ram的市场行情联系在一起了,就很容易把散户们引来了。也就是说,大肆渲染 bancor是Fibos营销的手段。
为什么不渲染 javascript的运行时环境和EOS的结合呢?其实,这个真没什么好宣传的,不懂技术的人看不懂这是个什么鬼;而技术大牛又很可能会嗤之以鼻。所以,与其宣扬技术本身,不如宣扬它可以让javascript开发者开发智能合约这个点;也确实,如果不是很资深的开发者,可能会觉得javascript运行时很神秘,这个点说不定可以吸引一部分javascript开发者。
为了让javascript和EOS结合,Fibos是最佳方案吗
我个人比较反感为了一点小功能就搞代码分叉的行为。所以我对Fibos的方案是有一点抵触的,当然我仍希望它能活的好。
Fibos的方案,虽然可以用javascript写智能合约了,但却只能部署在Fibos上,不能给EOS社区带来任何益处。
其实,如果目标只是单纯想用javascript写EOS上的智能合约,没有必要搞一个代码分叉出来,只需要提供一套工具链,实现javascript到wasm的转换就可以了。其实这部分工作国外已经有解决方案了,正在实验阶段了,比如assemblyscript,这是个可以把TypeScript
代码转换为wasm的工具,而TypeScript正是javascript的超集。
BM当初选择webassemly而没有选择javascript,其实是有诸多好处的,比如:
- 性能
- 通用性,可以把其他的语言转换为wasm,只要能转换为wasm的语言都可以写智能合约
- 安全性,webassembly提供一个智能合约的安全运行时环境,即便某个智能合约有内存泄漏的问题,也不会影响到其他智能合约。
当然第3条,javascript也能满足;第1条,javascript勉强满足,但比wasm还是差不少;第二条,javascript就很难胜任了,其实也是有工具可以把C转化为javascript的了,但其运行的性能真的是比wasm差了太多。
Fibos的未来
综合上面的分析,我个人对Fibos持谨慎观望态度,未来几个月内不会参与,看后期开发者的情况。
不管怎么说,毕竟是中国人,而且是程序员发起的项目,希望Fibos能好。
网友评论