WavesKit-PHP Wavesブロックチェーンフレームワーク

PHPは、その開発速度と優れた移植性で気に入っています 。 これは、ポケットの問題を解決するためのツールが常に用意されている場合に非常に便利です。







国内のWaves Platformブロックチェーンと会うときに、既製のPHP用SDKが武器庫になかったときは、かなり残念でした。 まあ、私はそれを書かなければなりませんでした。







最初は、 ノードを使用してトランザクションに署名する必要がありました。 したがって、3つのアドレスを管理するには、3つのノードを起動する必要がありました...いくつかの問題は解決しましたが、悲惨な光景でした。 ノードに依存することは行き止まりであることが理解されるまで。 第一に、 APIの機能が制限されているため、第二に、速度のため(当時、ノードは非常に低速でした)。







私は2つの並行した仕事を始めました。 1つは、高速でAPIノードから完全に独立したブロックチェーンブラウザーを作成することです。 2つ目は、Waves Platformを操作するためのすべての機能を1か所に集めることです。 そのため、プロジェクトw8ioWavesKitがありました







Wavesブロックチェーンの舞台裏の最初のステップはw8ioブラウザーでした。 簡単ではありませんでしたが、すべての残高の独立した計算を記述し、元のノードの計算でエラーを見つけることも可能です(ところで、 バグバウンティプログラムは 、それらのために動作し、見つかったエラーに対して支払います)。 このトピックでw8ioブラウザーの機能について詳しく知ることができます: https ://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite







w8ioで作業する過程で、私はすでに疑問を抱いていましたが、作業が論理的に終わり、SDKの作成を開始したときに、疑問が確認されました。 最も重要な暗号を含むいくつかの機能を見つけることができませんでした。 それから、財団のために自分のレンガを作ることから始めました。 そこで生まれたのは、 base58でエンコードするためのABCode(実際には任意のアルファベットをエンコードするため)、互換性のある署名を作成およびチェックするためのCurve25519ステロイドのオプション付き)、ハッシュの1つを計算するためのBlake2b (PHP 7.2以降でのみ利用可能)など







ここでは、通常の、しかし時代遅れのインクルードファイルではなく、 作曲家に向けられた貴重なヒントについて、 Inal Kardanovに感謝する必要があります。







数か月後、 WavesKitは ベータ版を残して、標準のWavesプラットフォームのすべての機能を使用できるようになりました。 メインネットワークで利用可能なすべてのトランザクションは、5.6以降のすべての64ビットバージョンのPHPで実行される1つのパッケージのみを使用して、簡単に作成、署名、および送信できます。







WavesKitをプロジェクトに接続します。







composer require deemru/waveskit
      
      





私たちは使用します:







 use deemru\WavesKit; $wk = new WavesKit( 'T' ); $wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' ); $tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) ); $tx = $wk->ensure( $tx );
      
      





上記の例では、テストネットワーク「T」で実行されるWavesKitオブジェクトを作成します。 キーとアカウントアドレスが公開キーに基づいて自動的に計算されるシードフレーズを設定します。 次に、シードフレーズを使用して自動的に計算されたアドレスフレーズからエイリアスアドレス「test」への転送トランザクション0.00000001 Wavesを作成し、プライベートキーを使用して署名に転送し、ネットワークに送信します。 この後、トランザクションがネットワークによって正常に確認されたことを確認します。







トランザクションの処理は、txで始まる関数に集中しています 。 トランザクションでの作業の理解を深めるために、 WavesKitのドキュメントを調べるか、 継続的な統合テストの視覚的な例をすぐに参照できます







WavesKitは実際の環境で開発されたため、すでに高度な機能を備えています。 最初のキラー機能はトランザクションが失われたのではなく、確認されてネットワーク上で必要な確認数に達したという必要な信頼レベルの達成を制御する確認機能です。







もう1つの防弾メカニズムは、WavesKitがノードと通信する方法です。 温室効果の状況では、フレームワークはメインノードでのみ機能し、メインノードとの常時接続を維持しますが、エラーが発生した場合、バックアップノードに自動的に切り替えることができます。 バックアップノードの配列をインストールする場合、 setBestNode関数を呼び出して、現在の高さと応答速度の最大値によってメインノードとして最適なノードを決定できます。 次に、これに内部クエリキャッシュを追加し、ノードのユーザーと所有者の両方の注意を感じます。







最新の高度なメカニズムの1つは、 txMonitor関数です。 彼女は、リアルタイムで着信トランザクションに応答する必要性に関連して登場しました。 この関数は、ブロックチェーン内のトランザクションの処理に関連するすべてのニュアンスを完全に解決します。 これ以上の苦労はありません。コールバック関数に目的のオプションを設定し、プロセスを開始する新しいトランザクションを待つだけです。 たとえば、 私の別のVECROプロジェクトはこの関数を中心に完全に構​​築されており、プロジェクトコードで直接どのように機能するかを簡単に学ぶことができます







私はオープンソースが好きです。これは人類の最大の成果の一つです。 私は唯一の開発者であり、私のすべてのニーズが解決されたという点に達しているので、 WavesKitを使用して貢献することを勧めます。








All Articles