MultiChain 2.1:変数とライブラリ

ソースノード: 1587135

スマートフィルターを大幅にスマート化

本日、MultiChain開発者向けの2.1つの重要な新機能を備えたMultiChainXNUMXをリリースできることをうれしく思います。

2.0年半前、MultiChainXNUMXが導入されました スマートフィルター、トランザクションとデータを検証するためのカスタムロジックをブロックチェーンに埋め込むことができます。 スマートフィルターは、概念的には他のブロックチェーンプラットフォームによって提供される「スマートコントラクト」に似ていますが、MultiChainのより高速なトランザクションモデルに適合するように異なる設計になっています。

スマートフィルターには、トランザクションフィルターとストリームフィルターのXNUMX種類があります。 トランザクションフィルターは、入力、出力、およびメタデータを調べることにより、チェーン上のトランザクション全体を検証します。 トランザクションがフィルターを通過しない場合、ネットワーク内のすべてのノードによって拒否されます。 ストリームフィルターは、に書き込まれた個々のアイテムを検証します マルチチェーンストリーム、キー、発行元、オンチェーンまたはオフチェーンのデータをJSON、テキスト、またはバイナリ形式で確認します。 アイテムがフィルターを通過しない場合、そのアイテムは無効としてマークされ、そのデータはストリームにサブスクライブされているすべてのノードによって非表示になります。

どちらのタイプのスマートフィルターもJavaScriptで記述されており、Googleの確定バージョン内で実行されます。 V8、Chrome、Node.js、その他多くのプラットフォームを強化する超高速JavaScriptエンジン。 単純なフィルターはコーディングと理解が簡単です。たとえば、アイテムに少なくともXNUMXつのキーがあることを検証するストリームフィルターを次に示します。

function filterstreamitem() { var item=getfilterstreamitem(); // コールバック関数 if (item.keys.length2) return "At least two keys required"; }

全体として、スマートフィルターについては素晴らしいフィードバックがありましたが、さらに改善するためのXNUMXつの方法についても繰り返し耳にしました。 まず、多くのユーザーは、ブロックチェーン上にあるが、検証中のトランザクションまたはストリームアイテム内にはない情報を読み取ることができるフィルターを望んでいます。 ユースケースには、許可された国のリストの変更、外部の「オラクル」によって提供される為替レート、または特定のルールを切り替えるためのスイッチが含まれます。

次に、一部の開発者は、コードを複製せずに、複数のフィルターでJavaScript関数のセットを使用したいと考えています。 また、既存のフィルターを無効にしたり、代わりに新しいフィルターを作成したりせずに、これらの機能を更新したり、バグを修正したり、いくつかの新しい状況をカバーしたりできることも望んでいます。 たとえば、共有コードには、アプリケーション固有のロジック、JSONを検証したりPDFのコンテンツを解析したりするためのサードパーティライブラリを含めることができます。

マルチチェーン2.1 XNUMXつの新しいタイプのオンチェーンエンティティを導入します。 variables & ライブラリ、これらのニーズに答えるために。

Variables

MultiChain変数から始めましょう。 これらは通常のプログラミング言語のものと非常によく似ていますが、ブロックチェーンのひねりがあります。 ブロックチェーン上には、名前付き変数をいくつでも作成できます。 各変数には、その値の更新が許可されている動的なアドレスセットがあり、このセットはXNUMX人以上の変数管理者(デフォルトでは、変数の作成者のみ)によって管理されます。 変数はブロックチェーントランザクションで作成または更新され、単純な高レベルAPIコマンドを使用して送信できます。 または、低レベルのAPIを使用して、XNUMXつ以上の変数をアトミックに設定したり、ストリームアイテムを書き込んだり、アセットを転送したり、権限を変更したりする複雑なトランザクションを構築できます。

変数値自体には、数値、文字列、ブール値、ネストされたオブジェクト、配列など、任意のJSON構造を含めることができ、チェーン上に効率的に格納されます。 ウブジソン シリアル化形式。 もちろん、スマートフィルターは、単純なコールバック関数を使用して変数の現在の値を照会できます。 ただし、これはブロックチェーンであるため、変数の値とライターの完全な履歴も利用でき、別のコールバック関数を使用して部分的または完全に取得できます。 開発を容易にするために、これらのコールバックはアプリケーション向けAPIからも利用できます。

ライブラリ

変数のより大きな兄弟であるライブラリに移りましょう。 変数と同様に、ブロックチェーン上に任意の数の名前付きライブラリを作成できます。 しかし、ライブラリには、XNUMXつの利用可能なモードを備えた、より豊富な更新モデルがあります。 不変, インスタント, 承認の対象.

一度 不変 ライブラリが作成され、そのコードを変更することはできません。 のあるライブラリ インスタント 更新は、コードを個別に置き換えることができるアドレスのセットを使用して、変数のように変更できます。 しかし、図書館では 承認の対象 更新、更新は、ブロックチェーンのグローバル管理者の特定の割合によって承認された後にのみ適用されます。 この最後のモードは、セキュリティと柔軟性の間の大きなトレードオフを提供します。

ライブラリのコードは通常のJavaScriptで記述されており、スマートフィルターが使用するXNUMXつ以上の関数を定義します。 変数と同様に、ライブラリは特別なトランザクションで作成または更新され、APIを使用して簡単に送信されます。 スマートフィルターが作成されると、必要なライブラリがオプションのパラメーターで提供されます。 ライブラリは常にそれを必要とするフィルターのコンテキストで実行されるため、必要に応じてスマートフィルターコールバックを使用できます。 MultiChainは、ブロックチェーンに変更を加える前に、ライブラリとその更新をローカルでテスト(およびロールバック)するための広範な機能を提供します。

それを包み込む

ブロックチェーンのルールに関連するすべての機能と同様に、変数とライブラリは、MultiChain2.1のCommunityエディションとEnterpriseエディションの両方で使用できます。 私たちの開発者向けドキュメントは、新しいの詳細な説明を提供します JSON-RPC API & スマートフィルターコールバック 利用可能です。 すでに実行されているブロックチェーンで新機能を使用するには、最初にノードをMultiChain 2.1に移行してから、 アップグレード バージョン20012へのチェーンのプロトコル。

では、次は何ですか? 今後数か月にわたって、MultiChainのパフォーマンスと同時実行性を大幅な負荷がかかっているときに改善するために、詳細で集中的な内部作業に焦点を当てます。 これにより、ノードがXNUMX秒あたり数百または数千の新しいトランザクションを処理し続けている間、ノードにクエリを実行する必要があるアプリケーションの応答性が向上します。

それまでの間、MultiChainチームの全員が、ユーザーとお客様の健康と正気をXNUMX年先に願っています。 誰にとっても困難な時期であることを私たちは知っており、安全になり次第、会議や会議の通常のリズムに戻ることを楽しみにしています。

コメントを投稿してください LinkedInの上に.

タイムスタンプ:

より多くの マルチチェーン