JavascriptでTendermintベースのブロックチェーンを作れるLotionJSを試してみる

f:id:k5trismegistus:20190415110058p:plain

Cosmos SDKに続いて、LotionJSというのを試してみました。

LotionJSとは

github.com

LotionJSは

Smooth, easy blockchain apps. Powered by Tendermint consensus.

をうたっており、Cosmos SDKと同様にTendermintをベースにしたブロックチェーンを簡単に構築できるツールです。 こちらもCosmosチェーンとは相互接続できるチェーンができます。

チェーン自体はCosmos SDKでできるものと同様、チェーン組み込みの機能があるのみであとからスマートコントラクトをデプロイしていくことはできません。

Tendermintをベースにしたブロックチェーンについては下記事を参照。

www.k5trismegistus.me

では早速作ってみましょう。

Building your first app

lotionjs.com

に従って、チュートリアルをやってみます。

なんと、下のわずかなコードだけでブロックチェーンが出来上がってしまいます。

const lotion = require('lotion')

const app = lotion({
  initialState: {
    count: 0
  }
})

const transactionHandler = (state, transaction) => {
    if (state.count === transaction.nonce) {
        state.count++
    }
}

app.use(transactionHandler)

app.start().then(appInfo => console.log(appInfo.GCI))

特徴

LotionJSでもCosmos SDKと同様にブロックチェーンをステートマシンとして扱います。

しかし、こちらではアプリケーションのステートもメッセージもPlain Old Javascript Objectとなっています。 Reduxなどの(僕はReduxしか触ったことがないですが)Fluxアーキテクチャを活用したアプリケーションがあると馴染みやすいと思います。

とりあえずHello, worldレベルであれば、フレームワーク固有の知識はあまりいらないのでスタートはしやすいかなぁと感じました。 Cosmos SDKはRailsチックな感じで、ディレクトリ構造なども流儀に従う必要があります。それに比べるとだいぶ楽ですね。

また、コード量も少ないのでフレームワークのソースもすぐに読めると思います。

ドキュメントはほとんどありませんが…。