キュービックサービス統合に関する非公式ガイド
フルノード、リモートノード、アーカイブサーバー、またはAPIを介して、既存のサービスにキュービックを統合し、さまざまな制御と複雑性を提供します。
Qsilver · 2024年2月17日
序論
既存のサービスにキュービックを統合するには、以下の4つの主要な方法があります。それぞれ異なるレベルの制御と複雑性を提供します:
- フルノードを実行:操作のためのインメモリデータに直接アクセスします。
- リモートノードを実行:必要なデータを取得するために公開フルノードにクエリを送ります。
- アーカイブサーバーを実行:すべてのキュービックデータのローカルフルアーカイブを構築します。
- キュービックAPIサーバーとインターフェース:最も簡単な方法ですが、データの可用性に対する制御は少なくなります。
番号が小さいほど、より多くの作業が必要になりますが、データの可用性に対する制御が増えます。どのレベルを選択しても、キュービックの重要な違いを理解することが重要です。
キュービックの重要な違い
金銭的価値を扱うサービスにとって、キュービックの最も重要な違いは次の2つです:
- txidが検証済みのティックに含まれていても、何もしていない可能性があります。
- アドレスの残高は、AからBへの特定のトランザクションなしで変更されることがあります。例:スマートコントラクト操作による。
これらの違いにより、キュービックの処理はアドレスの残高変更に基づいて行われるべきであり、スマートコントラクトによる変更がロジックを混乱させないようにする必要があります。
デポジットの処理
デポジットの処理を簡素化するため、通常のトランザクションを使用することが推奨されます。スマートコントラクトを使用したデポジットは無視するか、手動で処理することができます(コストをカバーするために追加料金を請求します)。
- 各ティック内のすべてのトランザクションを繰り返し処理し、顧客に属する宛先アドレスを特定します。
- これらのアドレスを残高チェックのためにフラグ付けします。
- フラグ付けされたアドレスのエンティティ情報を取得し、新しい資金を受け取ったアドレスを確認します。
- 新しい資金を受け取ったアドレスの現在のエンティティ情報を更新します。
残高の変化はtxidの失敗やスマートコントラクトによるデポジットのためにトランザクション額と一致しない場合があります。SCデポジットを無視することで、ユーザーはtxidが失敗してもSCデポジットに対してクレジットを受け取ることができます。
残高ベースのデポジット処理
この方法はより多くの帯域幅を必要とするかもしれませんが、リモートノードを介してネットワーク上で数十万のアドレスをポーリングすることで、中規模のサービスにとっては実行可能です。すべてのデポジットメソッドが適切にクレジットされることを保証し、ユーザーエクスペリエンスを向上させます。
- 各ユーザーアドレスの最新の検証済みエンティティデータを維持します。
- ポーリングループで、最新のエンティティデータを検証済みエンティティデータと比較します。
- メルクルツリーを使用して最新のエンティティデータを検証します。
- 検証された場合、検証済みエンティティデータを更新し、総デポジットの差に基づいてデポジットイベントを生成します。
引き出しの処理
少量
- 送信アドレスの検証済みエンティティデータを取得します。
- 宛先と金額に基づいて引き出しトランザクションをキューに入れます。
- outgoingAmountとcurrent outgoingAmount + 引き出し金額の予想エンティティデータを生成します。
- キューを処理し、引き出しトランザクションを作成してブロードキャストします。
- 指定されたティック後に、エンティティデータのoutgoingAmountが予想される金額に変わったかどうかを確認します。
- 変わっている場合、引き出しを完了としてマークし、キューから削除し、検証済みエンティティデータを更新します。変わっていない場合、プロセスを再試行します。
中量
- SENDMANY SCコマンドを使用して、最大25件の引き出しを1つのトランザクションにまとめます。
- 少量の場合と同じロジックを適用し、単純な送信トランザクションの代わりにSENDMANYを使用します。
- SENDMANYを使用する1つのアドレスで、毎分約100件の引き出しが可能です。
大量
- sendmanyアプリを使用して最大15,625件の支払いを送信し、約20ティックで完了します(毎分約8000件の引き出し)。
- sendmanyアプリはSENDMANY SCを三重のファンアウトで使用します。支払いは.csvファイルに指定され、合計金額を計算して特殊なアドレスに送信されます。
- 資金が届いたら、3世代(25 x 25 x 25件の支払い)で分配されます。
sendmany リポジトリ
sendmanyプログラムの詳細については、リポジトリをご覧ください:
結論
キュービックを既存のサービスに統合するには、特に金銭的トランザクションに関してデータ処理を慎重に考慮する必要があります。適切な統合方法を選択し、キュービックのユニークな側面を理解することで、サービスはさまざまな規模でデポジットと引き出しを効果的に管理できます。
Qsilverの「非公式」シリーズを読む
最新の情報については、Valis Discordに参加し、Xでフォローし、私たちのブログをブックマークしてください。