いいの思いついた

ぴぴーんときました。

思い返せばBaaS(Backend as a Service)ではなくPaaS(Platform as a Service)っぽいです。

正直、何言ってんだこいつ状態だと思うので、用語から説明します。

Aggregate Transaction

nem2(catapult)には、新しくAggregate Transactionという機能が提供されます。

これはいままでは一つずつ送っていたトランザクションをすべてひとまとめにして一気に送れるというすごい機能です。

Aggregate transaction

例えば交換も同時にできますから、第三者仲介なしにトラストレス交換できます。

手数料の肩代わりのようなこともできます。なーんでもできます。

 

Aggregate bonded

アグリゲートトランザクションは、例えば

この図の場合では、Aliceもチケット販売者もどちらでも先にトランザクションを作成することができます。

しかしながら、関係者全員の署名が必要となります。自分が署名してすらないのに勝手にアグリゲートトランザクションで自分の資産引き出されたら困りますからね。

ここで、nemネットワークにアナウンスする前に全員の署名を集められたら良いのですが、そうはいかないときもあります。

そのようなときは、全員分の署名が集まる前にnemネットワークにアナウンスして、署名してない人に未承認トランザクションとして通知を送ることもできます。

ですが!

Lock funds Transaction

スパム野郎から通知をむやみにおくられないようにするために、署名が全員分集まっていないアグリゲートトランザクション(これをAggregate bondedという)をアナウンスするには、あらかじめLock Funds Transactionにて、10xemを担保に出さなければならないというルールになっています。

スパムでなく、きちんと全員分の署名が無事集まれば、10xemは返されます。

WebSocket

websocketとは、まあgoogleで調べてみるとわかると思うのですが、リアルタイムで情報を更新できる通信です。nemのノードであるNISにはwebsocket通信の機能も備えられており、NISとwebsocket通信することでnemブロックチェーンの情報をリアルタイムに取得するアプリを作ることも可能です。

スマートコントラクト

スマートコントラクトとは、自動化された契約という意味です。

意味は広く、このへんでも見ればだいたいつかめます。

本題にいきます。

Ethereumはまさにスマートコントラクトのために作られたプラットフォームであり、solidityという言語でつくったコントラクトプログラムをブロックチェーンにデプロイしてコントラクトプログラムを実行させます。solidityという言語はチューリング完全であり、かなり自由が利きます。

一方nemは、スマートコントラクトするにはコードまでブロックチェーンに載せる必要はなく、既存のプログラミングの手法でスマートコントラクトをやればいいというスタンスです。なのでプログラムにバグがあっても修正しやすいというメリットを得ている一方、ブロックチェーンネイティブでできることは徴収の要求や譲渡制限などに限られています。

徴収の要求や譲渡制限などを使っているだけではスマートコントラクトをフルに発揮しているとは言い難いです。なんちゃってスマートコントラクトです。ですが、websocketによるトランザクションの監視により、なんらかのブロックチェーン上のトリガーによるリアルタイムのスマートコントラクトをすれば、理論上はEthereumのように自由なスマートコントラクトができるわけです(nem2では)。違いは、コードがブロックチェーン上にあるかないかくらいになります。

現状ではnem2にアップデートされていないこともあり、ブロックチェーン上の動作が引き金となるリアルタイムのスマートコントラクトはあまりみません。

 

そこで!

NIS WebSocket常駐のプログラムをテンプレート化して、PaaSとして提供すればよいんじゃないかというのが今日思ったことです。

スマートコントラクトのコード(これはLock funds transaction用の10xemを振り込まれることをトリガーとしてなんらかのAggregate transactionを送るコードが主だと思われる。)だけ書いてもらって、サーバやwebsocket機能、コントラクト専用秘密鍵(とコントラクトアドレス)の生成を提供するPaaSにデプロイしてもらう感じ。

どうでしょう…

カテゴリーNEM