接触以太坊后估计没有人不熟悉Gavin Wood这个人。

所以对于开发人员来说,比起大家耳熟能详的v神(Vitalik Buterin),更重要的人是实际上撑起整个以太坊世界的灵魂人物Gavin Wood。更何况很多山寨币实际上就是在以太坊的模型上修修改改,所以在我看来Gavin Wood是撑起了当前半个区块链世界的人。而Gavin Wood 离开了以太坊之后,开启的一个新项目叫做Polkadot(波卡),这个项目的目的就是跨链,为了把各个割裂的区块链孤岛能够联系一起。虽然目前有很多的项目都号称自己在做跨链,但是目前在我看来唯一在推进,逻辑上是可推理,之后可能成功的跨链项目就只有波卡能够成功。

而Gavin Wood 在开发的波卡的过程中,经过不断地思考,认为其实区块链发展这几年,大家做的很多事情都是相同的。那么在以往的软件开发中,当大家发现大家都在做相同的事情的时候,就会将这件事情进行抽象,然后造“轮子”,将这些高层次的东西做封装,成为“开发框架”,将背后复杂的基础设施都封装起来,而使用这个“框架”的开发人员,就可以更加专注于自己的业务逻辑,而不必花费大量的精力去造“轮子”去完成那些每个链都要做的异界事情。Gavin Wood 在开发波卡的中途先暂停了波卡的开发,将波卡及以太坊已有的成果进行抽象,命名为substrate作为区块链开发的基础框架,并把全部精力都转移到了substrate开发中。所以“substrate”就是区块链世界的第一个“轮子”。

另一方面,在软件开发领域或者互联网领域,大家其实都发现了占据了框架的地位实际上一定程度上占据了这个领域开发的生态,更何况对于跨链来说,当大家的链都比较同质化后,跨链会更加的方便。现在大家都把跨链当作区块链下一个引爆点,而跨链的属性界定了做“跨链”的人基本上只能一家独大,成为垄断地位。而接入跨链的链越多,这个跨链就越垄断(因为大家使用跨链就是为了在不同的链之间兑换代币,能换的代币越多,使用这个跨链的人就越多,生态就越集中),而Gavin Wood 提供的substrate框架又能解决大部分链都在重复解决的问题,所以大家就更倾向于使用substrate开发自己的链。这样就会在“用户-链-跨链”这个三角关系中将三方的利益绑定在一起,互惠互利,共同进步。

现在一个明显的例子就是,使用目前Paritytech项目方(就是Gavin Wood 目前主导的公司) 本来开发的Parity客户端(目前相当收欢迎的rust以太坊客户端),已经很轻易的使用 substrate 重新实现了一份以太坊。而且 paritytech 还实现了一些其他的区块链的一些核心模块,比如 Ada 的 Ouroboros 等等。所以其实只要 paritytech 愿意,可以很快的使用substrate 框架实现 Ada,及其他区块链。

我目前加入了“链池基金会 ChainPool Foundation”,作为核心开发参与了“因特链 ChainX” 项目:

https://chainx.org/

这个项目作为第一个跟随着substrate发展,并使用substrate作为框架进行开发的区块链。所以目前我已经累计了一定的substrate开发经验。

那么接下来我的专栏主题就转移到substrate的一些分享上。

substrate因为目前还在一直的开发迭代中,大概三周后会发布1.0版本,所以目前连官方的文档都相当稀少。想要学习substrate基本上只能参照源码。想要学习substrate的框架,其实它的开发模型基本上是基于以太坊的模型之下演变而来,所以必须要具备一定的以太坊基础才可。而另一方面substrate使用的是rust这门语言开发。这门语言目前还算是比较小众,接触的人不多,而且也以比较高的学习曲线所闻名(虽然我觉得还好)。所以要上手substrate对于普通的开发人员来说还是有一定的门槛的。

所以本专栏以后的substrate相关的文章也将作为substrate中文相关资料。

基础准备

那么要学习使用substrate开发需要具备什么呢:

  1. 学习rust
  2. 学习ethereum

学习rust我是跟随这个专栏学习的,因为之前也有一些Haskell的基础,所以学习rust没有花太多的时间,大概1-2周?

https://zhuanlan.zhihu.com/rust-lang

Rust在我看来主要需要的C++基础,然后再稍微接触一些函数式的相关概念就足够了。我现在觉得写Rust跟爽,以后所有C++/Java的开发场景我觉得都可以使用Rust替换。

而Ethereum的基础知识本来我是准备在专栏慢慢更新的,不过现在看来这个要推后了。那么我建议的还是参照我以前的文章, 学习一个比较老版本的Ethereum,有一些基础组件的基础概念也就差不多了。

那么在具备了Rust和Ethereum的基础知识之后,就可以开始学习substrate了。

之后的文章以substrate为主。