Wasmd 0.30 リリース

Dec 20 2022
年末発売!2022 年は、良くも悪くも多くの点で波乱に富んだ年でした。Wasmd の素晴らしいリリースで締めくくってはいかがでしょうか? レビューして優先順位を付ける必要のあるコミュニティからの多数の機能リクエストがありました。Wasmd v0.30 では、この年末のリリースでそれらの多くを取得できたことを発表できてうれしく思います。

年末発売!

UnsplashのAaron Burdenによる写真

2022 年は、良くも悪くも多くの点で波乱に富んだ年でした。Wasmd の素晴らしいリリースで締めくくってはいかがでしょうか?

レビューして優先順位を付ける必要のあるコミュニティからの多数の機能リクエストがありました。Wasmd v0.30 では、この年末のリリースでそれらの多くを取得できたことを発表できてうれしく思います。

いつものように、このリリースを可能にしてくれたすべての貢献者に感謝します!

概要 (TLDR)

Wasmd v0.30 には、通常のバグ修正と改善に加えて、コミュニティから強く要求された変更がかなり含まれていました。

  • Authz モジュールの統合
  • Interchain-accounts v0.2.4 で IBC を v4.2.0 にアップグレード
  • 開発者ガイドとベスト プラクティスを追加
  • Bump Go の最小値を 1.19 に
  • 政府提案の保存とインスタンス化
  • 政府の投票により、より大きな wasm バイトコードをアップロードできるようにする
  • AcceptListStargateQuerier の導入
  • クリエイターの住所で契約を取得する
  • インスタンス化許可をサポート > 政府ストアのチェーン許可

Authz モジュールの統合

authz モジュールは、別のアカウント (被付与者) に承認を付与し、元のアカウント (付与者) に代わってチェーンでアクションを実行するための Cosmos-SDK モジュールです。

これは、許可操作にのみ必要なプライベート アカウント キーを保護するのに特に役立ちますが、その後は被付与者キーを使用できます。これは、付与者の秘密鍵へのアクセスが制限されている組織またはプロセス構造に一致させるのにも役立ちます。

付与された承認には、付与者のアカウントで実行されるため、多くの権限が伴います。したがって、アクションの範囲を制限する特定の authz 拡張機能が他のモジュールに存在します。たとえば、銀行で。転送可能なトークンの合計量であるオーソリゼーションが定義されています。

authz モジュールには、メッセージ タイプを受け入れる一般的な承認が付属しています。これは、wasmd を含むすべての Cosmos モジュールで機能します。ここでの問題は、wasm コントラクトが通常多くの操作をサポートしており、きめの細かいアクセス制御ができないことです。

wasmd Authorization 拡張機能は、より細かいレベルのアクセス制御をサポートするために構築されました。フィルターは、実行および移行時にコントラクト メッセージに一致するように定義できます。Wasmd は最初のイテレーションで次のフィルターを備えています。

AllowAllMessagesFilter — コントラクト メッセージに一致するワイルドカード

AcceptedMessageKeysFilter — コントラクト メッセージは、キーが 1 つだけの json オブジェクトとして解釈されます。このキーは、受け入れられるように受け入れリストに設定できます。たとえば、`withdraw, delegate` が設定されている場合、`{“withdraw": {}}` および `{“delegate":{}}` メッセージは許可されますが、`{“sent":{}}` は許可されません。キーはリストにありません。

AcceptedMessagesFilter — このフィルターは、コントラクト メッセージに関する仮定を行いません。それらは純粋なバイナリ データとして解釈され、比較されます。フォーマットの小さな変更はすでに重要です。たとえば、{"withdraw":{}}設定されたコントラクト メッセージは{"withdraw":{}}whileである必要があり{"withdraw":{} }、拒否されます (スペースに注意してください)。

ただし、このフィルターの利点は、オブジェクト キーの後のデータも含まれていることです。たとえば、次の{"vote":"yes"}ように変更することはできません{"vote":"no"}

wasmd Authorization 拡張機能のもう 1 つの要素は制限です。操作は付与者アカウントの範囲で実行されるため、銀行残高に完全にアクセスできます。付与者は、これを制限して制御を維持することに関心があります。たとえば、{"withdraw":{}} オペレーションは、残高へのアクセスを必要としませんが、{"delegate":{}} オペレーションはそうする必要があります。さまざまなユースケースをサポートするために、フィルターで設定できる次の制限があります。

MaxCallsLimit — コントラクト グラントを使用できる回数を定義します。グラント アカウントからのトークン転送は許可されません。

MaxFundsLimit — 使用するトークン予算を設定します。呼び出し回数に制限はありません。

CombinedLimit — トークンの予算と実行できる回数を設定する

制限は、付与の実行ごとに更新されます。制限が経過すると、承認は終了し、削除されます。

参考文献:

https://github.com/cosmos/cosmos-sdk/tree/main/x/authz

Interchain-accounts v0.2.4 で IBC を v4.2.0 にアップグレード

このアップグレードには、IBC プロトコル ハンドシェイクと手数料ミドルウェア モジュール、interchain-accounts v0.2.4 が含まれ、ibctesting パッケージが更新されます。

参考文献:

https://github.com/CosmWasm/wasmd/issues/960

https://github.com/cosmos/ibc-go/blob/v4.2.0/CHANGELOG.md

https:///the-interchain-foundation/moving-relayer-incentives-on-chain-fee-middleware-fee-grant-and-budget-modules-b6a13eced375

開発者ガイドとベスト プラクティスを追加します。

コーディング ガイドラインが更新され、経験豊富な開発者だけでなく初心者も簡単に自分自身を見つけて方向付けできるようになりました。ベスト プラクティスも追加されました。新しく更新されたガイドは次の場所にあります。

Bump Go の最小値を 1.19 に

cosmos-SDK に従うために、Go の最小バージョンが 1.19 に引き上げられました。これにより、Go 1.18/19 が混在するチェーンでのコンセンサスの問題も防止されます。

参考文献:

https://github.com/CosmWasm/wasmd/issues/1041

政府提案の保存とインスタンス化

以前のバージョンでは、wasm (ストア) のアップロードとコントラクトのインスタンス化には、2 つの別個の政府提案が必要でした。

現在、両方のステップを 1 つとして実行できる新しい政府提案タイプがあります。

そのため、組織のオーバーヘッドが減り、提案書の作成に依存することが少なくなりました。(インスタンス化する前にストアをスケジュールして実行する必要があるため)

参考文献:

https://github.com/CosmWasm/wasmd/issues/785

政府の投票により、より大きな wasm バイトコードをアップロードできるようになりました。

以前は wasm のサイズを 800 KB に制限していましたが、チェーンのグローバルな制限を上げることは望ましくない可能性があるため、これはほとんどのコントラクトにとって妥当でした。政府の契約がこの機能を果たし、通常の Tx が 800 KB のままであると同時に最大 4 MB の wasm サイズを許可することが提案されました。

参考文献:

アクセプト リスト スターゲイト クエリアの導入

Stargate クエリは、"Stargate" 汎用 protobuf 形式を介してシステム状態をクエリするための強力な汎用拡張ポイントです。このチェーンを使用すると、流動性プールのように、不可知論的なデータをコントラクトによってクエリできます。

この機能は、返された状態が決定論的ではなく、コンセンサスを破る過去に多くの問題を引き起こしました。この承認リストを追加して、すべてのチェーンが独自のホワイトリストを簡単に構成できるようにしました。多くのフォークを維持したり、潜在的にバグを導入したりする必要はありません。Osmosis はカスタム モジュールでこれを有効にするために分岐し、他のチェーンも同様の機能を求めていました。

ただし、accept-list は、チェーン アーキテクトが維持およびサポートしたい個々の Stargate クエリのサポートを (自己責任で) 追加する方法です。現在、デフォルトの accept-list は空です。有効にするクエリ タイプを追加するには、チェーンの Go コードに変数を設定する必要があります。

参考文献:

https://github.com/CosmWasm/wasmd/issues/904

クリエイターの住所で契約を取得する

以前のバージョンでは、コード ID のすべてのコントラクト インスタンスを取得するクエリがありました。一般的な使用例は、アドレス x によって作成されたすべてのコントラクト インスタンスを提供することです。

このリリースの時点で、これがサポートされるようになり、より優れた UX が可能になります。

参考文献:

https://github.com/CosmWasm/wasmd/issues/998

インスタンス化許可をサポート > 政府ストアのチェーン許可

これは、許可されたチェーンでインスタンスを作成することでもあります。

以前のバージョンでは、ストア wasm コードと、コードのインスタンス化設定に関する構成の更新が必要でした。現在、このリリースでは、ストア政府の提案により、適切なインスタンス化許可がすでに設定されています。

これにより、政府のワークフローが改善され、提案が 1 つ節約されます

参考文献:

https://github.com/CosmWasm/wasmd/issues/1020

参加する

あなたが見るもののように?Twitter で世界に知らせるか、Discord でのディスカッションに参加してください。今後の CosmWasm Academy コホートについて通知を受けるには、medium で私たちをフォローするか、http://academy.cosmwasm.com、スキルをレベルアップできます。

そして、今年最後のコミュニティ コールをチェックしてください。12 月 20 日火曜日午後 6 時 (CET) に多くのエキサイティングな発表が行われ、早期の洞察と質問のスペースが提供されます。

議題: https://github.com/CosmWasm/cosmwasm/issues/1548