マルチシグラムダコントラクトは、このタイプを使用している sp.lambda
ため、スマートコントラクトプログラミングの大きな飛躍です。 これにより、コントラクトのデプロイ時に事前に決定されていない任意の関数を実行する可能性が導入されます。 主なコンポーネントの詳細な概要は次のとおりです。
初期パラメータ: コントラクトは、プロポーザルの提案と署名を許可されているメンバーのリストと、プロポーザルの実行に必要な最小数の署名で初期化__init__
されます()。 これらはコントラクトのストレージ()、self.data
契約を運用するための参照レコードを作成します。
提案機能: この機能は propose
、新しい提案を作成するのに役立ちます。 メンバーは、コントラクトで実行させたいラムダ関数 (任意の操作で構成される) を送信できます。 これらの提案はデータ構造に格納され big_map
、各提案には一意の識別子が割り当てられます。
署名機能: この関数は sign
、提案の承認を容易にします。 メンバーは、提案を支持するために署名することができます。 これらの署名は、一意のプロポーザル識別子とともに添付され、別の big_map
.
Execute Function: この関数は execute
、コントラクトの操作の核心を表します。 プロポーザルが必要な数の署名を集めた場合、メンバーはこの関数を呼び出して提案されたラムダ関数を実行し、コントラクトのストレージに適用できます。
マルチシグラムダコントラクトは、DAO(分散型自律組織)、複数の所有者を持つウォレットサービス、複雑なDeFiプロトコルなど、複雑で柔軟、かつ潜在的に動的な制御構造を必要とするシナリオに適した、幅広い汎用性を提供します。
このコントラクトでは、複数のシグネチャを持つ任意のラムダ関数を実行する必要があります。 ラムダ関数の送信と署名の概念を紹介します。 その機能を分析してみましょう。
submit_lambda: この関数を使用すると、メンバーはラムダ関数をコントラクトに送信できます。 これは基本的に、マルチシグの承認を必要とするコントラクト操作を提案しています。 SmartPy IDE の右側のパネルでは、ラムダ関数の送信が成功すると、送信者のアドレスからコントラクトのアドレスへの新しいトランザクションが開始されます。
vote_lambda: この関数を使用すると、メンバーは送信されたラムダ関数に賛成票 (署名) を投じることができます。 投票後、IDEパネルに、メンバーのアドレスからコントラクトのアドレスへの新しいトランザクションが表示されます。
MultisigAction Contractは、民主的な投票メカニズムをスマートコントラクトの領域に導きます。 このモデルでは、メンバーは特定のアクションを提案し、投票し、クォーラムに達したときに実行します。 この契約は、人間のコンセンサスと自動化された契約実行を独自に組み合わせたもので、契約の行動を民主的に管理します。
この契約のコアコンポーネントは次のとおりです。
初期パラメータ: Lambda コントラクトと同様に、MultisigAction コントラクトは初期化中にメンバーのリストと必要な投票数を受け取ります。
提案アクション関数: この関数は、新しい提案を追加するのに役立ちます。 メンバーは、コントラクトで事前定義されたアクションを送信し、一意の識別子に関連付けることができます。 これらの提案されたアクションは、 big_map
.
投票アクション関数: この関数は、提案されたアクションに賛成票を投じるように設計されています。 投票はプロポーザルの一意の識別子に関連付けられ、個別の big_map
.
アクション実行関数: この機能は、提案が十分な票を獲得したときに機能します。 メンバーは、この関数を呼び出して、提案されたアクションを実行できます。
MultisigAction Contractは、メンバーがリソースの割り当てやプロトコルの変更に投票するDAOなど、個人のグループが特定のコントラクトアクションについてコンセンサスを得る必要がある状況に最適です。
submit_proposal:新しいアクションを提案するプロセスです。 この例のコンテキストでは、メンバーがコントラクトに新しい署名者を追加することを提案しています。
この操作を SmartPy IDE で実行すると、IDE の右側のパネルに新しいトランザクションが作成されているのがわかります。 トランザクションの概要には、送信者(提案メンバーのアドレス)と受信者(契約のアドレス)が示されます。 次のようになります。
ここで、「OK」ステータスは、プロポーザルが正常に送信されたことを示しています。
vote_proposal: 次のステップは、提案に投票することです。 この機能を使用すると、既存の署名者は、前の手順で提出された提案に投票できます。
署名者 1 が提案に投票すると、署名者 1 が送信者、契約書が受信者となる新しいトランザクションが表示されます。 署名者 2 が提案に投票すると、同様のトランザクションがログに記録されます。
これらのトランザクションは、署名者 1 と署名者 2 の両方が提案に正常に投票したことを示します。
MultisigViewコントラクトは、民主的なコンセンサスの概念を継承していますが、事前定義されたコントラクトアクションではなく、任意のバイトに適用します。 このコントラクトは、アクションの実行をすぐに引き起こすことなく、バイトとして表されるデータに対してコンセンサスを達成できる道を開きます。
この契約の主な構成要素は次のとおりです。
初期パラメータ: 以前のコントラクトと同様に、MultisigView コントラクトは、メンバーのリストと必要な投票数を示す番号で初期化されます。
提案書提出機能:この関数を使用すると、メンバーは任意のバイトの形式で新しい提案を導入できます。 バイトは、バイト自体によってインデックス付けされた a big_map
に格納され、一意のプロポーザル識別子を表します。
提案の投票機能: この機能により、メンバーは提案を承認できます。 投票は、プロポーザルの一意のバイト識別子にリンクされた別の big_map
で追跡されます。
Is Voted関数:この機能はオンチェーンビューで、提案が必要な票を獲得したかどうかを確認します。 プロポーザルの投票ステータスを示すブール値を返します。
MultisigView Contractは、バイトがハッシュ化された契約、証明、または集団承認を必要とするその他の形式のデータを表すことができる暗号化アプリケーションのように、スマートコントラクトが承認された提案の記録を保持する必要がある場合に特に役立ちます。
マルチシグラムダコントラクトは、このタイプを使用している sp.lambda
ため、スマートコントラクトプログラミングの大きな飛躍です。 これにより、コントラクトのデプロイ時に事前に決定されていない任意の関数を実行する可能性が導入されます。 主なコンポーネントの詳細な概要は次のとおりです。
初期パラメータ: コントラクトは、プロポーザルの提案と署名を許可されているメンバーのリストと、プロポーザルの実行に必要な最小数の署名で初期化__init__
されます()。 これらはコントラクトのストレージ()、self.data
契約を運用するための参照レコードを作成します。
提案機能: この機能は propose
、新しい提案を作成するのに役立ちます。 メンバーは、コントラクトで実行させたいラムダ関数 (任意の操作で構成される) を送信できます。 これらの提案はデータ構造に格納され big_map
、各提案には一意の識別子が割り当てられます。
署名機能: この関数は sign
、提案の承認を容易にします。 メンバーは、提案を支持するために署名することができます。 これらの署名は、一意のプロポーザル識別子とともに添付され、別の big_map
.
Execute Function: この関数は execute
、コントラクトの操作の核心を表します。 プロポーザルが必要な数の署名を集めた場合、メンバーはこの関数を呼び出して提案されたラムダ関数を実行し、コントラクトのストレージに適用できます。
マルチシグラムダコントラクトは、DAO(分散型自律組織)、複数の所有者を持つウォレットサービス、複雑なDeFiプロトコルなど、複雑で柔軟、かつ潜在的に動的な制御構造を必要とするシナリオに適した、幅広い汎用性を提供します。
このコントラクトでは、複数のシグネチャを持つ任意のラムダ関数を実行する必要があります。 ラムダ関数の送信と署名の概念を紹介します。 その機能を分析してみましょう。
submit_lambda: この関数を使用すると、メンバーはラムダ関数をコントラクトに送信できます。 これは基本的に、マルチシグの承認を必要とするコントラクト操作を提案しています。 SmartPy IDE の右側のパネルでは、ラムダ関数の送信が成功すると、送信者のアドレスからコントラクトのアドレスへの新しいトランザクションが開始されます。
vote_lambda: この関数を使用すると、メンバーは送信されたラムダ関数に賛成票 (署名) を投じることができます。 投票後、IDEパネルに、メンバーのアドレスからコントラクトのアドレスへの新しいトランザクションが表示されます。
MultisigAction Contractは、民主的な投票メカニズムをスマートコントラクトの領域に導きます。 このモデルでは、メンバーは特定のアクションを提案し、投票し、クォーラムに達したときに実行します。 この契約は、人間のコンセンサスと自動化された契約実行を独自に組み合わせたもので、契約の行動を民主的に管理します。
この契約のコアコンポーネントは次のとおりです。
初期パラメータ: Lambda コントラクトと同様に、MultisigAction コントラクトは初期化中にメンバーのリストと必要な投票数を受け取ります。
提案アクション関数: この関数は、新しい提案を追加するのに役立ちます。 メンバーは、コントラクトで事前定義されたアクションを送信し、一意の識別子に関連付けることができます。 これらの提案されたアクションは、 big_map
.
投票アクション関数: この関数は、提案されたアクションに賛成票を投じるように設計されています。 投票はプロポーザルの一意の識別子に関連付けられ、個別の big_map
.
アクション実行関数: この機能は、提案が十分な票を獲得したときに機能します。 メンバーは、この関数を呼び出して、提案されたアクションを実行できます。
MultisigAction Contractは、メンバーがリソースの割り当てやプロトコルの変更に投票するDAOなど、個人のグループが特定のコントラクトアクションについてコンセンサスを得る必要がある状況に最適です。
submit_proposal:新しいアクションを提案するプロセスです。 この例のコンテキストでは、メンバーがコントラクトに新しい署名者を追加することを提案しています。
この操作を SmartPy IDE で実行すると、IDE の右側のパネルに新しいトランザクションが作成されているのがわかります。 トランザクションの概要には、送信者(提案メンバーのアドレス)と受信者(契約のアドレス)が示されます。 次のようになります。
ここで、「OK」ステータスは、プロポーザルが正常に送信されたことを示しています。
vote_proposal: 次のステップは、提案に投票することです。 この機能を使用すると、既存の署名者は、前の手順で提出された提案に投票できます。
署名者 1 が提案に投票すると、署名者 1 が送信者、契約書が受信者となる新しいトランザクションが表示されます。 署名者 2 が提案に投票すると、同様のトランザクションがログに記録されます。
これらのトランザクションは、署名者 1 と署名者 2 の両方が提案に正常に投票したことを示します。
MultisigViewコントラクトは、民主的なコンセンサスの概念を継承していますが、事前定義されたコントラクトアクションではなく、任意のバイトに適用します。 このコントラクトは、アクションの実行をすぐに引き起こすことなく、バイトとして表されるデータに対してコンセンサスを達成できる道を開きます。
この契約の主な構成要素は次のとおりです。
初期パラメータ: 以前のコントラクトと同様に、MultisigView コントラクトは、メンバーのリストと必要な投票数を示す番号で初期化されます。
提案書提出機能:この関数を使用すると、メンバーは任意のバイトの形式で新しい提案を導入できます。 バイトは、バイト自体によってインデックス付けされた a big_map
に格納され、一意のプロポーザル識別子を表します。
提案の投票機能: この機能により、メンバーは提案を承認できます。 投票は、プロポーザルの一意のバイト識別子にリンクされた別の big_map
で追跡されます。
Is Voted関数:この機能はオンチェーンビューで、提案が必要な票を獲得したかどうかを確認します。 プロポーザルの投票ステータスを示すブール値を返します。
MultisigView Contractは、バイトがハッシュ化された契約、証明、または集団承認を必要とするその他の形式のデータを表すことができる暗号化アプリケーションのように、スマートコントラクトが承認された提案の記録を保持する必要がある場合に特に役立ちます。