Only this pageAll pages
Powered by GitBook
1 of 29

jp

Loading...

Loading...

ここからスタート

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

報酬

Loading...

Loading...

Loading...

ステーキングプール

Loading...

Loading...

選択およびガバナンス

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

リソース

Loading...

Loading...

Loading...

Loading...

外部リンク

🖥️インターフェイス

dydx.communityでのガバナンス、報酬、およびステーキングの拠点

ガバナンス

アクティブなおよび過去のガバナンス提案を表示でき、アクティブなガバナンス提案を選択できます。

DYDXおよびstkDYDXの保有者は、権限および選択権の提案という2種類のガバナンス権限が付与されます。ダッシュボードを通じて、ユーザーは提案および選択権限を表示し、他のアドレスに委任できます。

ステーキング

ユーザーはDYDXをステーキングすることで、ステーキング報酬を獲得できます。

取引報酬

ユーザーは、レイヤ2取引所での取引活動を通じて獲得した報酬を表示できます。取引の報酬は、エポックスケジュールに従い、28日ごとに提供されます。

ポートフォリオ&請求DYDX

ユーザーは、DYDXの保有、請求可能DYDX、ステーク済みのDYDX、および出金可能DYDXの集計ビューを確認できます。

ユーザーは、現在流通しているDYDXトークンの供給および毎日の提供を確認できます。ユーザーは利用可能なすべてのDYDX報酬を請求できます。DYDXトークンは、2021年9月8日午後3時(協定世界時:UTC)頃以降に移動可能になります。

ガバナンス、報酬、およびステーキングのインターフェースは、から利用可能です。

dydx.community

🚧制限

$ethDYDX、$wethDYDX、およびdYdX v3の使用に関する制限。

$ethDYDXおよび$wethDYDXは、米国およびその他の禁止されている管轄区域ではご利用いただけません。 お客様が米国その他の禁止地域に居住しているか、法人化している、または本社を置く場合、$ethDYDXおよび$wethDYDXの提供の受け取りや$ethDYDXおよび$wethDYDXの取引は許可されていません。

👋紹介

ethDYDXトークンおよびガバナンスの概要。

$ethDYDXと$wethDYDXは、ユーザー体験の向上につながるdYdX v3の将来の成長と分散化を促進するために設計されたガバナンスと報酬に関する強固なエコシステムを実現します。

ラップされたイーサリアムDYDX($wethDYDX)は、ユーザーがとインタラクションしたときに得られるethDYDXのラップバージョンです。 wethDYDXトークンと、イーサリアムからdYdX v4オープンソースソフトウェア(「dYdXチェーン」)へのethDYDXの潜在的な移行の詳細は、をご覧ください。

wethDYDXスマートコントラクト
こちら

🪙報酬基金

報酬基金の概要

2023年11月18日、dYdXコミュニティは、報酬基金で発生したethDYDX残高をイーサリアムからdYdXチェーンに橋渡しすることをで決定しました。ブリッジされると、DYDXはdYdXコミュニティによってdYdXチェーンのガバナンス投票を通じて使用できるようになります。

dYdXチェーン報酬財務省の詳細については、をご覧ください。

投票
こちら
報酬の獲得&請求、または提案の選択
提案のステータスを追跡し、変更についての選択
提案および選択権限の委任
報酬を受け取るための取引
報酬の請求

📊取引報酬

取引報酬プログラムの概要。

FAQ

取引報酬の対象となったのは、どのような方々ですか?

dYdX v3のすべてのトレーダーは、取引報酬として$ethDYDXを受け取る資格がありました。

2023年11月23日、dYdXコミュニティは、取引報酬の残りの金額(dYdX v3の権利未確定の$ethDYDX)をdYdXチェーンに移行することを投票で決定しました。 DYDXは、に登録され、dYdXチェーンで取引報酬として配布されます。

dYdXチェーン取引報酬に関する詳細は、をご覧ください。

取引報酬プログラムでどのくらい$ethDYDXを獲得できたのか知ることはできますか?

過去のエポックからの報酬は、でご覧いただけます**。**

報酬基金ベスター
dYdXチェーン報酬基金ベスター(dydx1wxje320an3karyc6mjw4zghs300dmrjkwn7xtk)
こちら
dydx.community/history/rewards

dYdX v3ウインドダウン

dYdX Trading、Inc.は、2024年10月28日にdYdX v3のサポートを終了しました。

ただし、dYdXチェーン、、およびdYdXチェーンAPIのユーザーは影響を受けません。

これを受け、dYdX Foundationの目的に基づき、dYdX v3の終了がdYdX v3のガバナンスやethDYDXおよびwethDYDXトークン保有者に与える影響に関するをご用意しました。

http://dydx.trade
よくある質問

⏳エポック

エポックシステムの概要

すべての報酬およびステーキング契約は、エポックと呼ばれる28日間サイクルで運営されます。新しいエポックは、現在のエポックが終了すると自動的に開始されます。

各エポックの終了時に、以下のことが発生します。

  • 終了エポックの流動性ステーキングプールにおいて請求された出金は、出金される可能性があります。

  • 終了エポックの安全ステーキングプールにおいて請求された出金は、出金される可能性があります。

エポック
開始日(UTC)
終了日(UTC)
日数
累計年数

0

2021年8月3日午後3時

2021年8月31日午後3時

28

0.08

1

2021年8月31日午後3時

2021年9月28日午後3時

28

0.15

2

2021年9月28日午後3時

2021年10月26日午後3時

28

0.23

3

2021年10月26日午後3時

2021年11月23日午後3時

28

0.31

4

2021年11月23日午後3時

2021年12月21日午後3時

28

0.38

5

2021年12月21日午後3時

2022年1月18日午後3時

28

0.46

6

2022年1月18日午後3時

2022年2月15日午後3時

28

0.54

7

2022年2月15日午後3時

2022年3月15日午後3時

28

0.61

8

2022年3月15日午後3時

2022年4月12日午後3時

28

0.69

9

2022年4月12日午後3時

2022年5月10日午後3時

28

0.77

10

2022年5月10日午後3時

2022年6月7日午後3時

28

0.84

11

2022年6月7日午後3時

2022年7月5日午後3時

28

0.92

12

2022年7月5日午後3時

2022年8月2日午後3時

28

1.00

13

2022年8月2日午後3時

2022年8月30日午後3時

28

1.07

14

2022年8月30日午後3時

2022年9月27日午後3時

28

1.15

15

2022年9月27日午後3時

2022年10月25日午後3時

28

1.23

16

2022年10月25日午後3時

2022年11月22日午後3時

28

1.30

17

2022年11月22日午後3時

2022年12月20日午後3時

28

1.38

18

2022年12月20日午後3時

2023年1月17日午後3時

28

1.46

19

2023年1月17日午後3時

2023年2月14日午後3時

28

1.53

20

2023年2月14日午後3時

2023年3月14日午後3時

28

1.61

21

2023年3月14日午後3時

2023年4月11日午後3時

28

1.69

22

2023年4月11日午後3時

2023年5月9日午後3時

28

1.76

23

2023年5月9日午後3時

2023年6月6日午後3時

28

1.84

24

2023年6月6日午後3時

2023年7月4日午後3時

28

1.92

25

2023年7月4日午後3時

2023年8月1日午後3時

28

1.99

26

2023年8月1日午後3時

2023年8月29日午後3時

28

2.07

27

2023年8月29日午後3時

2023年9月26日午後3時

28

2.15

28

2023年9月26日午後3時

2023年10月24日午後3時

28

2.22

29

2023年10月24日午後3時

2023年11月21日午後3時

28

2.30

30

2023年11月21日午後3時

2023年12月19日午後3時

28

2.38

31

2023年12月19日午後3時

2024年1月16日午後3時

28

2.45

32

2024年1月16日午後3時

2024年2月13日午後3時

28

2.53

33

2024年2月13日午後3時

2024年3月12日午後3時

28

2.61

34

2024年3月12日午後3時

2024年4月9日午後3時

28

2.68

35

2024年4月9日午後3時

2024年5月7日午後3時

28

2.76

36

2024年5月7日午後3時

2024年6月4日午後3時

28

2.84

37

2024年6月4日午後3時

2024年7月2日午後3時

28

2.92

38

2024年7月2日午後3時

2024年7月30日午後3時

28

2.99

39

2024年7月30日午後3時

2024年8月27日午後3時

28

3.07

40

2024年8月27日午後3時

2024年9月24日午後3時

28

3.15

41

2024年9月24日午後3時

2024年10月22日午後3時

28

3.22

42

2024年10月22日午後3時

2024年11月19日午後3時

28

3.30

43

2024年11月19日午後3時

2024年12月17日午後3時

28

3.38

44

2024年12月17日午後3時

2025年1月14日午後3時

28

3.45

45

2025年1月14日午後3時

2025年2月11日午後3時

28

3.53

46

2025年2月11日午後3時

2025年3月11日午後3時

28

3.61

47

2025年3月11日午後3時

2025年4月8日午後3時

28

3.68

48

2025年4月8日午後3時

2025年5月6日午後3時

28

3.76

49

2025年5月6日午後3時

2025年6月3日午後3時

28

3.84

50

2025年6月3日午後3時

2025年7月1日午後3時

28

3.91

51

2025年7月1日午後3時

2025年7月29日午後3時

28

3.99

52

2025年7月29日午後3時

2025年8月26日午後3時

28

4.07

53

2025年8月26日午後3時

2025年9月23日午後3時

28

4.14

54

2025年9月23日午後3時

2025年10月21日午後3時

28

4.22

55

2025年10月21日午後3時

2025年11月18日午後3時

28

4.30

56

2025年11月18日午後3時

2025年12月16日午後3時

28

4.37

57

2025年12月16日午後3時

2026年1月13日午後3時

28

4.45

58

2026年1月13日午後3時

2026年2月10日午後3時

28

4.53

59

2026年2月10日午後3時

2026年3月10日午後3時

28

4.60

60

2026年3月10日午後3時

2026年4月7日午後3時

28

4.68

61

2026年4月7日午後3時

2026年5月5日午後3時

28

4.76

62

2026年5月5日午後3時

2026年6月2日午後3時

28

4.83

63

2026年6月2日午後3時

2026年6月30日午後3時

28

4.91

64

2026年6月30日午後3時

2026年7月28日午後3時

28

4.99

65

2026年7月28日午後3時

2026年8月25日午後3時

28

5.06

よくある質問

ブラックアウトウィンドウとは何ですか?

およびでは、プール内の資金の可用性に関する予測可能性と定期的なサイクルを提供するために、出金に対してエポックスケジュールが適用されます。エポックの終了後に、ステーカーが自己資金を出金できるようにするには、ブラックアウト・ウィンドウの前に資金をステーク解除するように請求する必要があります。ステーカーが出金を請求しない場合、ステーカーのステークされた資金は次のエポックにロールオーバーされます。

において、dYdXコミュニティは、ブラックアウト・ウィンドウの長さを14日から3日に削減することにしました。dYdXガバナンスは、指定された範囲内で、ブラックアウト・ウィンドウの変更を決定できます。最小および最大ブラックアウト・ウインドウは、それぞれ3日および46日間です。

流動性ステーキングプール
安全ステーキングプール
DIP 17
合意

📑割り当て

$ethDYDXトークンの割り当て。

割り当て

2021年8月3日、15:00:00 UTCに合計1,000,000,000$ethDYDXが鋳造され、そこから5年間アクセス可能となり始めました。 $ethDYDXの総供給量の最初の5年間の割り当ては以下のとおりです。

  • コミュニティへの50.0%(500,000,000$ethDYDX)は以下:

    • レイヤ2プロトコルで特定の取引マイルストーンを達成した過去のユーザーへの遡及マイニング報酬として7.5%(75,000,000$ethDYDX)、

  • dYdX Trading Inc.の過去の投資家への27.7%(277,295,070$ethDYDX)、

  • dYdX Trading Inc.またはdYdX Foundationの創設者、従業員、アドバイザー、コンサルタントへの15.3%(152,704,930$ethDYDX)、および

  • dYdX Trading Inc.またはdYdX Foundationの将来の従業員およびコンサルタントへの7.0%(70,000,000万$ethDYDX)。

$ethDYDXの立ち上げ以来、最初の割り当てに変更が生じたガバナンス提案がいくつかあります。現在、割り当てには以下のものが含まれます。

  • コミュニティへの50.0%(500,000,000$ethDYDX)は以下:

        • エポック30:1,054,795$ethDYDX

        • エポック31:527,398$ethDYDX

        • エポック32:0$ethDYDX

    • dYdXレイヤー2プロトコルで特定の取引マイルストーンをを達成した過去のユーザーへの遡及マイニング報酬として5.0%(50,309,197 $ethDYDX)、

      • エポック0後、未請求の24,690,803$ethDYDXが遡及マイニング報酬プログラムからコミュニティトレジャリーに送金されました。

        • エポック30:383,562$ethDYDX

        • エポック31:191,781$ethDYDX

        • エポック32:0$ethDYDX

  • dYdX Trading Inc.の過去の投資家への27.7%(277,295,070$ethDYDX)、

  • dYdX Trading Inc.またはdYdX Foundationの創設者、従業員、アドバイザー、コンサルタントへの15.3%(152,704,930$ethDYDX)、および

  • dYdX Trading Inc.またはdYdX Foundationの将来の従業員およびコンサルタントへの7.0%(7,000万$ethDYDX)。

コミュニティの割り当ては上記のように設定されていますが、$ethDYDX保有者は今後のコミュニティの割り当ての使用方法について、ガバナンスを通じて完全な管理を保有しています。

$ethDYDXの流動化供給曲線

2021年9月8日、トークンの最初の転送制限が解除されました。

以下のグラフは、インフレーションのない総流動化供給量を示しています。

よくある質問

$ethDYDXの割り当てを変更することはできますか?

a. 2023年11月21日、15:00 UTC(エポック30開始時)に、報酬を以下の値に削減する。

 i. Trading: 1,054,795
 ii. LP: 383,562

b. 2023年12月19日、15:00 UTC(エポック31開始時)に、報酬を以下の値に削減する。

 i.Trading: 527,398
 ii.LP: 191,781

c. 2024年1月161日、15:00 UTC(エポック32開始時)に、報酬を以下の値に削減する。

 i.Trading: 0
 ii.LP: 0
新しい$ethDYDXトークンは作成できますか?

ローンチから5年後、年間最大パーペチュアルインフレ率が2%になると、$ethDYDXの供給量が増加します。 2026年7月14日15:00:00 UTCから、dYdXガバナンスは、365日ごとに1回のマイニングを許可し、年間インフレ率2%まで、マイニングされる新しい$ethDYDXの最大供給量を決定できます。 2026年7月14日15:00:00 UTCから、dYdXガバナンスは、365日ごとに1回のマイニングを許可し、年間インフレ率2%まで、マイニングされる新しい$ethDYDXの最大供給量を決定できます。

投資家、既存および将来の従業員、コンサルタントに発行される$ethDYDXのロックアップとは何ですか?

$ethDYDXトークンの初期割り当ての一部は、dYdX Trading Inc.の過去の投資家、dYdX Trading Inc.またはdYdX Foundationの創設者、従業員、アドバイザー、コンサルタント、およびdYdX Trading Inc.またはdYdX Foundationの将来の従業員およびコンサルタントのために確保されています。

修正に従い、トークンは以下のように転送制限から解除されます。

  • 2023年12月1日に30%。

  • 2024年1月1日から2024年6月1日までの月間分割払いで40%。

  • 2024年7月1日から2025年6月1日までの月間分割払いで20%。および、

  • 2025年7月1日から2026年6月1日までの月間分割払いで10%。

上記の日付はすべてUTC時間帯を参照するものと解釈されることに注意してください。

dYdX Trading Inc.とdYdX Foundationのさまざまな創設者、従業員、アドバイザー、コンサルタントも、修正で規定される移動制限スケジュールを遵守するものとします。

すべての従業員やコンサルタントにも、さまざまな権利確定スケジュールが適用され、結果として$ethDYDXに対する権利を失ってしまう場合があります。従業員またはコンサルタントによる$ethDYDXの受け取りは、現在または将来的にも、dYdXプロトコルに関するサービスまたはその他のプロトコルに利益をもたらす可能性のあるサービスの提供に基づくものではありません。代わりに、従業員とコンサルタントは、dYdX Trading Inc.またはdYdX Foundation、または他の関係者のみに利益をもたらすサービスに対して$ethDYDXを受け取ることができます。

$ethDYDXのロックアップにかかわらず、dYdX Trading Inc.またはdYdX Foundationの投資家、および元従業員またはコンサルタントは、$ethDYDXを使用して、dYdXプロトコルに関する提案の作成、投票権の委任、またはdYdXプロトコルに関する提案投票をすることができます。dYdX Trading Inc.またはdYdX Foundationの現在の従業員およびコンサルタントは、当初は提案や投票への参加はできませんが、将来的には可能になります。dYdXトレーディングまたはdYdX Foundationの現在の従業員およびコンサルタントは、投票の結果に影響を与えることを試みずに投票権を委任できます。

すべての投資家は、dYdX財団との契約により施行される移動制限を遵守する必要があります。dYdXトレーディングとdYdX財団はウォレットアドレスを追跡し、その制限に違反して移動されたかどうかを判断します。

dYdX Foundationでは、これらの要件を遵守しない投資家に対して法的措置をとることを表明しています。

🔋流動性モジュール

流動性ステーキングプールの概要

流動性モジュール報酬の割り当てから残りのethDYDXはすべて、dYdXチェーンコミュニティトレジャリーに移行されました。

ステーキング概要

現在、流動性ステーキングプールでステーキングされた$USDCへの報酬は提供されていません。

USDCのステーキング解除および出金

ブラックアウト・ウィンドウの間は、出金をリクエストすることができません。

FAQ

ブラックアウト・ウィンドウとは何ですか?

ブラックアウト・ウィンドウとは、ユーザーが、ステーキングされた$USDCの出金をリクエストすることができない期間です。ブラックアウト・ウィンドウの期間中、requestWithdrawal関数を呼び出すことはできません。この期間は、エポックの最後の3日間として初期設定されているものです。新しいエポックは、28日ごとに開始されます。つまり、ユーザーは所定のエポック終了の3日前までであれば次のエポックの出金をリクエストすることができます。

🤝コミュニティトレジャリー

コミュニティトレジャリーの概要

💼提案ライフサイクル

dYdX改善提案(DIP)ライフサイクルの概要

提案ステージ

以下では、コンセプトの開始および定義から実際の実装までのdYdX v3ガバナンスプロセスがどのように進むかを説明する、あらかじめ準備した草案を概説します。これらのプロセスは、dYdXコミュニティからのフィードバックに応じて変更される場合があります。

以下のフローチャートは、提案を審査する最初の提案ステージです。

0.フォーラムディスカッション

1.(オフチェーン)DRCの作成

少なくとも、DRCには以下のものを含める必要があります。

  • DRCの短い、簡潔なタイトル

  • 提案の短い、簡潔な説明

  • DRCの理論的根拠(例:存在理由)

  • フォーラムポストのタイトルには、DRC:DRCの短いタイトルが含まれる必要があります。例:DRC:新マーケットリクエスト

  • コミュニティのメンバーがオフチェーンの改善の投票のために使用できるコミュニティ調査

2.DRCディスカッションおよびフィードバック

ガバナンスフォーラムに掲載されると、DRCをさらに改善するため、すべての質問やコメントに対処し、考慮に入れなければなりません。

3。 DRCスナップショット投票

スナップショットでの投票には2つの目的があります:1つは将来におけるオンチェーンDIPのセンチメントのシグナリング、もう1つはオフチェーン制御された変数についての拘束力ある投票です。

オフチェーンDRCで非常に大まかな合意が得られると、1万ガバナンストークン以上の提案権を持つコミュニティメンバーはスナップショットでDRCに対してオフチェーン投票を作成できます。当社では、通常の勤務時間中に可視性を高めるために、dYdXコミュニティに対して月曜日にスナップショット投票を行うことを推奨しています。

スナップショットは、ユーザーがセンチメントオフチェーンを伝えることができるシンプルな投票インターフェースです。 スナップショット投票は、投票に使用されるアドレスの投票権に基づいて加重されます。

センチメントのシグナリングに関連するスナップショット投票では、提案者は以下を提供する必要があります:

  • DRCの詳細、

  • 投票システム、

  • 投票期間(投票の開始日から終了日までの4日間を設定)、

  • 投票遅延 - 6,570ブロック(13.2秒のブロックタイムに基づくと約1日)先のスナップショットブロック番号。 スナップショットブロック番号は、投票権を有するコミュニティメンバーの状態をロックします。スナップショットブロック番号の以前からトークンを保有するトークン保有者には、投票する資格があります。ガバナンストークン保有者は、各アドレスの投票権のスナップショット以前に、投票遅延によりトークンの取得、投票権の委任、ウォレット間のトークンの移動に必要な時間が付与されます。 ウォレット間の移動は、$ethDYDXと$wethDYDXにのみ適用されることにご注意ください。

オンチェーンでのスマートコントラクトコールが必要でない意思決定の場合、特に取引および流動性プロバイダーの報酬公式の変更については、スナップショットの投票は拘束力を有する最終投票とみなされます。提案者は上記の要件を含め、以下の内容の提供が必要です:

  • 二者択一のオプション(明確化のためアドレスは提案への賛成または反対のいずれかを投票します)。

スナップショットの投票の結果、以下の条件を満たす場合、dYdX Trading Inc.は提案された変更を実行します。

  • 最小クォーラム(少なくとも100万ガバナンストークン)、最小クォーラムは意思決定の分散化に貢献し、一方的な意思決定から保護します。また、

  • 最小投票差(少なくとも67%が提案に賛成していなければなりません)も同様です。最小投票差は、賛否が大きく割れる提案をふるいにかけ、さらなる議論が必要な場合を判断する助けとなります。

dYdX Trading Inc.はスナップショットの投票で決定された変更について、最長1エポック(28日間)の実行猶予期間を有します。

注:提案および投票は署名済みメッセージとしてIPFSに保存され、コモンウェルスポータルを介して入手できます。

4.(オンチェーン)DIPの作成

ラフコンセンサスに達すると、提案の種類について十分な提案権を保有するコミュニティのメンバーによって、オンチェーンDIPが提出される可能性があります。スマートコントラクト呼び出しを通じてオンチェーンDIPが開始されます。提案は、スナップショットでのオフチェーンDIP投票の賛成結果に基づく必要があり、提案ごとに最大10アクションまで、1つまたは複数のアクションで構成できます。

DIPの作成は、アカウントに必要な保有/委任された最小トークンの数が対象となります。提案作成時に、タイムロックでの実行管理者を指定する必要があります。初期のパラメータは以下のとおりです(ガバナンスによって変更できます)。

パラメータ
説明
短いタイムロックでの実行管理者
Merkle-Pauserの実行管理者
長いタイムロックでの実行管理者
Starkwareの実行管理者

提案のしきい値

提案作成に保有/委任された最小トークン

総供給量の0.5%

総供給量の0.5%

総供給量の2%

総供給量の0.5%

5.(オンチェーン)DIPの投票

オンチェーンDIPが作成された後、提案は投票遅延によって定義された期間に保留中の状態に入ります。現在、6,570ブロックまたは約1日間(ブロックごとに13.2秒)です。言い換えれば、DIP作成から1日後にユーザーのスナップショットが記録され、その時点で、提案はアクティブ状態に移行します。

投票遅延後、投票期間がアクティブになります。投票期間は、提案の種類によって異なります。

以下のグラフは、DIP状態フローチャートを示しています。

DIPがオンチェーンで作成された後、投票遅延、投票期間、最小投票数、および最小投票差が対象となります。初期のパラメータは以下のとおりです。

パラメータ
説明
短いタイムロックでの実行管理者
Merkle-Pauserの実行管理者
長いタイムロックでの実行管理者
Starkwareの実行管理者

投票遅延(投票開始までの待機期間)

提案の送信後、提案の投票前に待機するイーサリアムブロック数

6,570ブロック

6,570ブロック

6,570ブロック

6,570ブロック

投票期間*

提案が投票可能である場合の投票期間

4日間

2日間

10日間

4日間

最小クォーラム

DIP提案が審査を通過する場合の最小賛成票

総供給量の2%

総供給量の1%

総供給量の10%

総供給量の2%

投票差

DIP提案が通るために必要な賛成・反対の差

総供給量の0.5%

総供給量の0.5%

総供給量の10%

総供給量の0.5%

*13.2秒のブロックタイムに基づくタイミング。

投票遅延はガバナンスによってのみ変更できますが、最小限および最大限の遅延(包含)の間の値に限ります。投票期間、最小クォーラム、投票差は変更できません。

6.提案のキュー追加および実行

DIPが通過すると、任意のアドレスがキューメソッドを呼び出すことで提案をタイムロックのキューに移動できるようになります。DIPは、審査通過した場合にのみキューに追加することができます。

パラメータ
説明
短いタイムロックでの実行管理者
Merkle-Pauserの実行管理者
長いタイムロックでの実行管理者
Starkwareの実行管理者

タイムロック遅延*

提案が通過してキューに入った後、実行までのタイムロックによる遅延(待機期間)

2日間

0日間

7日間

2〜9日間

実行猶予期間*

提案が実行可能になるまでの期間ががあり、その間に実行する必要があります。

7日間

7日間

7日間

7日間

最小タイムロック遅延期間*

提案実行までの最小遅延時間(キュー追加後)

1日間

0日間

5日間

4日間

最大タイムロック遅延期間*

提案執行までの最大遅延時間(キュー追加後)

7日間

1日間

21日間

21日間

*13.2秒のブロックタイムに基づくタイミング。

投票期間が終了し、提案が成功すると、誰でもタイムロックの遅延を開始するためにキューを呼び出すことができます。

Starkwareの優先タイムロックの執行管理者は、9日間のタイムロック遅延のうち7日間を優先期間とします。これは、9日間経過以降は誰でも提案を執行できますが、2〜9日間(優先期間)の間はStarkwareが提案を執行するオプションを有していることを意味します。

実際に稼働すると以下のようになります。

  • 0~2日目:誰も実行できません

  • 2~9日目:Starkwareのみ実行できます

  • 9日目:誰でも実行できます

7.(オプション)提案のキャンセル

DIPライフサイクルのいずれの時点でも、提案者はDIPをキャンセルできます。現在のブロックで十分なプロポジションパワーがない場合、提案は執行前に誰でもキャンセルできます。

FAQ

投票遅延の目的は何ですか?

投票遅延とは、提案が送信された後、投票が開始されるまで待機する必要がある期間を指します。この期間は、イーサリアムのブロック数で計算されます。

投票権は、提案が提出される前または提案の投票遅延中に完全にアドレスに委任する必要があります。

現在、投票遅延は6,570ブロックに設定されており、約1日間です。提案作成時に、現在のブロック番号にこの値が追加されます。

将来的に、dYdXガバナンスは投票遅延を増加または減少させることを投票で決定する可能性があります。投票遅延の増加には明確な利点がありますが、日和見主義的なエッジケースによる悪用など、潜在的な悪影響をもたらしてしまう可能性があります。

提案のしきい値の目的は何ですか?

$ethDYDXおよび$wethDYDXは自由に取引可能な資産であるため、マーケット購入を通じて誰でもガバナンスの買収ができるようになってしまいます。とはいえ、悪意のある投票を強制的に通過させようとすると、短いタイムロックの場合には最小500万ガバナンストークン、長いタイムロックの場合には2,000万ガバナンストークンが必要になります。完全に不可能ではないかもしれませんが、この金額は、価格の変動を考慮すると、攻撃による純利益よりも法外に高額となり、より多くのコストがかかってしまいます。

グループが何らかの形で悪意のある買収を行った場合、タイムロックの遅延により、影響を受けた関係者はプロトコルから資産を出金する時間が与えられます。これは、プロトコルをフォークする機会であり、残りの善良な関係者によって実行される可能性が高いパスとなります。

🗳️選択プロセス

投票プロセスの概要

dYdX v3は、ガバナンストークンの保有者と委任者によって管理およびアップグレードされます。

提案権および投票権

各ガバナンストークンと関連付けられた2つの権限があります。

  • 提案権により、提案の作成および維持ができるようになります。

  • 投票権は、既存の提案に賛成または反対の投票を行うために使用されます。

ガバナンストークンの保有者は、所定のブロックにおける所有および委任されたトークンの合計に比例してガバナンス権限を受け取ります。

提案権 = $ethDYDXトークンからの提案権 +

$wethDYDXトークンからの提案権 +

$stkDYDXトークンからの提案権 +

委任者として受け取った$ethDYDXトークンからの提案権 +

委任者として受け取った$wethDYDXトークンからの提案権 +

委任者として受け取った$stkDYDXトークンからの提案権 -

委任された$ethDYDXからの提案権 -

委任された$wethDYDXからの提案権 -

委任された$stkDYDXからの提案権

``

投票権 = $ethDYDXトークンからの投票権 +

$wethDYDXトークンからの投票権 +

$stkDYDXトークンからの投票権 +

委任者として受け取った$ethDYDXトークンからの投票権 +

委任者として受け取った$wethDYDXトークンからの投票権 +

委任者として受け取った$stkDYDXトークンからの投票権 -

委任された$ethDYDXからの投票権 -

委任された$wethDYDXからの投票権 -

委任された$stkDYDXからの投票権

FAQ

投票するにはどうすればよいですか?

dYdXガバナンスに参加するには、ガバナンストークンを所有しているか、委任される必要があります。 トランザクション費用をカバーするには、ETHが必要です。

トークンを保有している、またはトークンを委任されており、アクティブな提案がある場合は、dYdXガバナンスで投票する準備が整っています。

投票するには、提案ページに移動し、アクティブな提案をクリックします。

どのように委任しますか?

dYdXガバナンスでは、保有者は選択したアドレスに投票権を委任できます。誰でもガバナンストークンを所有することなく、委任を受け取ることで、dYdXガバナンスに参加できます。ユーザーは一度に1つのアドレスに委任することができ、委任者の投票カウントに追加された投票数は、ユーザーの口座におけるガバナンストークンの残高に相当します。送信者が再度委任をするか、またはガバナンストークンを譲渡するまで、投票権は現在のブロック以降に委任されます。

トークン保有者は、ガバナンスポータルを通じて、またはプログラムにより、トークンに関連するガバナンス権限の1つまたは両方について、委任することを選択できます。委任された権限を受け取ったユーザーは、委任された権限を別の委任者に譲渡することはできません。

トークン保有者は、提案権および投票権を異なるアドレスに委任することができます。ただし、部分的に委任することはできず、権限は100%または0%のいずれかとなります。

トークンをウォレットアドレスに委任する方法:

  • 「委任」をクリック

  • 委任したい権限の種類を選択

  • 投票権および/または提案権を委任したい第三者のウォレットアドレスを入力します。権限を委任しても、トークンは譲渡されません

ガバナンストークンの委任および委任を解除する場合、ユーザーはイーサリアムのガス代(手数料)を負担する必要があります。

投票した後に、自分の投票内容を変更することはできますか?

投票がオンチェーンで実行されると、投票内容の変更はできません。

投票の進行中にガバナンストークンを譲渡することはできますか?

はい。

自分の投票にトークンを追加することはできますか?

DIPがオンチェーンで提出されると、現在のトークン保有者のスナップショットが取得されます。ユーザーは、スタートブロックの前にガバナンストークンを所有する必要があります。

⛏️レトロアクティブマイニング報酬

遡及マイニング報酬プログラムの概要。

トークン提供額の5.0%(50,309,197 $ethDYDX)は、dYdX v3で特定の取引マイルストーンを完了したdYdXプロトコルの過去ユーザーに分配されました。ただし、米国を含む$ethDYDXが許可されていない国や地域に所在するユーザーを除きます。当初、dYdXプロトコルで過去のユーザーのために、初期トークン供給の7.50%(7500万$ethDYDX)が予約されましたが、未請求の遡及マイニング報酬は、エポック0の終了時にコミュニティトレジャリーに送金されました。

目的

  • 過去の使用状況に基づき、遡及報酬にてdYdXの過去ユーザーへ報酬を支払う。

  • dYdXの過去ユーザーにdYdX v3でのトレードを促進する。

概要

dYdX v3の成功は、過去3年間にdYdX v3およびその前身でトレードを進めてきた何千ものコミュニティメンバーによる成果の賜物です。

$ethDYDXは、**2021年7月26日午前0時(UTC)**に終了するスナップショットに基づき、dYdXプロトコルのすべての過去ユーザー(米国を含むethDYDXが許可されていない国や地域に所在するユーザーを除きます)に割り当てられています。すべてのdYdXプロトコルにおけるユーザーの過去の活動を考慮した5つの割り当て階層がありました。

ユーザーはエポック0の終わりまでクレームマイルストーンに到達することができました。すべての不労所得は没収され、自動的にコミュニティトレジャリーに分配されました。遡及マイニング報酬で獲得した$ethDYDXトークンは、最初の移動制限期間の解除後から永続的に請求可能となります。

FAQ

どのような人が遡及報酬の対象になるのでしたか?

レイヤー2またはレイヤー1のdYdXプロトコル(パーペチュアル、マージン、スポット)での取引、またはdYdXの借入/供給プールに資金を入金したdYdXの過去のユーザーは、遡及報酬を通じて$ethDYDXを受け取る資格があります。 ただし、米国または他の禁止された管轄区域の居住者、または本拠を置く企業は、制限により、遡及マイニングから除外されます。 さらに、将来のエアドロップを推測するボットのアクティビティに関連するアカウントも除外されます。 すべての遡及報酬の割り当ては、最終的かつ変更できません。

クレームマイルストーンに到達しなかった場合はどうなりますか?

ユーザーは、dYdX v3で特定のターゲットボリュームティア取引パーペチュアルを満たして、$ethDYDXトークンの完全な割り当てを請求する必要があります。 遡及報酬は、ターゲットボリュームと直線的に獲得されます。つまり、ユーザーのクレームマイルストーンが5,000ドルで、2,500ドルしか取引しない場合、報酬の50%しか請求できません。 エポック0の終了時に未請求の$ethDYDXはすべて喪失し、自動的にコミュニティトレジャリーに振り替えられました。

請求済み$ethDYDXの遡及報酬はいつから出金および送金できますか?

最初の転送制限期間が解除された後、遡及マイニング報酬で獲得した$ethDYDXトークンは、請求および送金が可能になりました。 これは、2021年9月8日、エポック0の終了から8日後の15:00:00 UTC頃に発生しました。 ユーザーは、獲得した$ethDYDXトークンを請求、出金、送金、または委任できるようになりました。

流動性プロバイダーの報酬

FAQ

🏗️アーキテクチャ

ガバナンスアーキテクチャのハイレベルな概要

概要

$ethDYDX、$stkDYDX、および$wethDYDX(「ガバナンストークン」)は、dYdX v3の変更について提案および投票する権利を保有者に付与します。dYdXのガバナンスは、AAVEガバナンスコントラクトに基づいており、ガバナンストークンの保有に基づいた投票をサポートします。

提案は、提案の種類に基づき、所定のしきい値および賛成票の割合にて審査を通過する必要があります。

ガバナンストークンの投票および提案権限により、ガバナンストークン保有者は、ガバナンストークン提案に提案および投票できます。 ガバナンストークンの保有者は、そのような権限を他のイーサリアムアドレスに委任する場合があることにご注意ください。

dYdXガバナンスの中核には、以下のように8つのスマートコントラクトがあります。

  • $ethDYDX、$stkDYDX、および$wethDYDXトークンコントラクト:時間的に異なるブロックにおける各アドレスの投票権に関するスナップショットを保持しています。

  • セーフティモジュールのコントラクト:$ethDYDXトークンをステークし、ポジションをトークン化し、報酬を獲得するためのロジックが含まれています。セーフティモジュールにステークされたトークンは、完全なガバナンス権を保有します。

  • ガバナーコントラクト:提案を追跡し、タイムロックでのスマートコントラクトを通じて提案を実行できます。

  • タイムロックコントラクト:ガバナンス投票で選択されたトランザクションにおけるキューの追加や、キャンセル、実行ができます。提案での機能は、タイムロックコントラクトによって開始されます。遅延および猶予期間の満了前に、キューに追加されたトランザクションを実行できます。

  • 優先タイムロックコントラクト:タイムロックコントラクトと同じですが、優先度コントローラーが優先期間(タイムロックの遅延終了の7日前)以内にトランザクションを執行することが可能になります。

dYdXのオンチェーン・ガバナンスでは、以下のことを可能にします。

  • 承認された実行管理者コントラクトによって実行される提案への投票

  • 提案の開始時に保有されているトークンのスナップショット

  • 投票権および提案権の個別委任

  • 提案、定足数、および投票差分権限を含むガバナンス基準値の設定

  • 投票のカウント方法の変更(ガバナーコントラクトの「ガバナンス戦略」スマートコントラクトアドレスの変更によって)

提案の種類

提案の期間および実行に影響を与えるパラメータが異なる4種類の提案があります。例えば、ガバナンスのコンセンサスに影響を与える重要な提案では、投票時間の増加や投票差の増大を必要とするものの、プロトコルパラメータのみに影響を与える提案では、投票時間の短縮および迅速な実行が可能となります。 実行管理者は、各種類の提案について検証する必要があります。

短いタイムロックでの実行管理者

短いタイムロックでの執行管理者は以下の事象を管理します。

  • 流動性モジュール、セーフティモジュール、Merkleディストリビューターモジュールなどのインセンティブコントラクト

  • 報酬およびコミュニティ基金における資金

  • 新しいトークンを発行する

  • セーフティモジュールを除くすべてのプロキシコントラクト

  • Starkプロキシコントラクトにおける監視者の役割

Starkwareの優先タイムロックの執行管理者

Starkwareの優先度タイムロック実行者は、StarkExパーペチュアルエクスチェンジコントラクトを管理し、dYdX v3を構成する提案を実行します。 Starkwareは、「優先度コントローラー」の役割を保持しており、7日間の優先期間で提案の実行をトリガーできます。 Starkwareは、「優先度コントローラー」の役割を保持しており、7日間の優先期間で提案の実行をトリガーできます。

長いタイムロックでの実行管理者

長いタイムロックでの実行管理者は、ガバナンスのコンセンサスに影響を与えるdYdX v3の一部を一般的に変更する提案を実行できます。

Merkle-pauserの実行管理者

Merkle-pauserの実行管理者は、Merkleルートをフリーズする提案を実行できます。これは各ユーザーの累積報酬残高によって定期的に更新され、提案されたルートが適切でないか悪意がある場合に、新しい報酬を時間の経過に応じてユーザーに提供できるようにします。また、スタークプロキシコントラクトによる強制取引リクエストを拒否することもできます。

最初のタイムロックでのパラメータは、以下のとおりです。

dYdXコミュニティトレジャリー支出提案の構築に関するテクニカルガイド

ethDYDXをコミュニティトレジャリーから宛先アドレスに送り込む方法に関する技術的な、ステップバイステップガイド。

Reverieは、dYdX_ガバナンスコントラクト_リポジトリに、$ethDYDXをプルリクエスト(PR)を通じてコミュニティトレジャリーから送り込むガバナンス提案を提出するための、包括的な技術的ガイドをまとめました。

予備要件

プルリクエスト(PR)の完了に先立ち、以下のステップを完了する必要があります:

  1. **宛先アドレス:**宛先アドレスは、事前に生成する必要があります。宛先アドレスがマルチシグの場合、マルチシグウォレットを作成する必要があります。

  2. **GitHub口座:**リポジトリをフォークするためのGitHubアカウントです。

  3. **送金額(オプション):**希望される場合、リクエストされた送金額は、PRに先駆けて確立されています。ただし、概金額を使用する場合、承認前に最終ステップとして設定できます。

  4. **DIP IPFSハッシュ(オプション):**金額がわかっている場合、DIPは最終的に決定され、IPFSにプッシュし、ハッシュを生成する必要があります。ただし、金額が確定していない場合は、承認前の最終段階として設定することが可能です。

提案の構築

2. リポジトリをクローンし、[username]を自分自身に変更してください。

3. 構成変数

src/config/index.tsに、テストのために使用されるconfigSchema定数に2つの新しい変数を追加します。以下のコードブロックで、**「PROPOSAL_NAME」と「PROPOSAL」**フィールドを、送信する提案の名前に変更します。

src/deploy-config/base-config.tsに、config定数に宛先アドレスと金額を新しい変数として追加します:

注:金額は、ERC20標準あたり10 ^ 18に乗じる必要があります。金額がまだわからない場合、一時金額を使用できます(例: 10 → 10000000000000000000)

src/lib/constants.tsに、他のリポジトリで承認されたDIPを参照するIPFSハッシュ変数を追加します:

注:DIPがまだ公開されていない場合は、テスト用に仮の値(例:‘0x0000000000000000000000000000000000000000000000000000000000000000’)\を使用することができます。

4.提案コード

_src/migrations_で、proposal → proposal-name.tsにちなんで名前を付けた新しいファイルを作成し、以下のコードを入力します:

a. 上部に必要なインポートを追加します:

b. インポート以下の提案名を使用して新しい関数を作成し、以下のコードを2つのユニークな変数で追加します:

  • destinationAddress → これは、資金を受け取るアドレスです

  • deployConfig.PROPOSAL_FUNDING_AMOUNT → これは、私たちが以前に作成した変数です。これは、送金する金額を決定します

5. デプロイメントタスク

提案が作成されると、提案を送信するために必要なトランザクションとコールデータを生成するデプロイメントを書くことができます。

_tasks/deployment_で、提案コード → proposal-name.tsに使用する同じ名前の新しいファイルを作成し、以下のコードで入力します:

a. 以下の変数で必要なインポートを追加します:

DIP_NUMBER_IPFS_HASH → これは、lib/constantsに追加する変数です

createProposalNameProposal → これは、/src/migrations/proposal-nameで作成した関数です

b. hardhatタスクを作成し、タスクの開始\行に提案情報を入力しますdeploy:proposal-name:のproposal-nameに置き換え、「Proposal Description」の簡単な説明に置き換えます。

最後の行は、提案コードからインポートした関数を呼び出すため、その調整が必要です。

6. テストの構築

コードをデプロイメントする準備ができたので、提案を中心にいくつかのテストを構築します。テストは、ローカルとメインネットフォークを使用して、オンチェーンで実行される提案をシミュレートします。

a. 提案テストの追加

test/migrationsに、proposal name → proposal-name.tsで新しいファイルをもう一度追加し、以下のコードを含めます:

  • 提案関数を含め、必要なインポートを追加します:

createProposalNameProposal → これは、/src/migrations/proposal-nameで作成した関数です。\

MOCK_PROPOSAL_IPFS_HASH → テストのためにモックハッシュを使用します。

  • テスト関数を以下のステップで追加します:

    • fundProposalNameViaProposal → この関数を作成し、提案名に一致する名前を変更します。

    • destinationAddress → 宛先名にマッチするようにラベル付けします。

    • deployConfig.PROPOSAL_FUNDING_AMOUNT → これは、base-configファイルからの変数に置き換えられます。

    • FUND_PROPOSAL_NAME_PROPOSAL_ID → これは、_config/index.ts_で作成した変数です。

    • createProposalNameProposal → 上記の関数を使用するためにインポートしました。

    • fundProposalNameViaNoProposal → この関数を作成し、提案名に一致する名前を変更します。

\以下のコードを通じて、これらの変数すべてを提案名と既存の変数に置き換えます。

b. テストスクリプトにテスト関数を追加する

test/migrations/deploy-contracts-for-test.tsに、上記の関数を追加します:

  • 作成した関数をインポートする

  • 一般的なテスト関数 → executeProposalNameProposalForTestを作成し、両方の関数にテストを追加し、提案に一致する名前を置き換えます。

  • また、これまで作成した設定変数TEST_PROPOSAL_NAME_TRUST_WITH_PROPOSALと、deployConfigからPROPOSAL_NAME_ADDRESSを呼び出します。

c. テストヘルパーにコントラクトを追加する

test/helpers/get-deployed-contracts-for-test.tsに、上記の関数を追加し、メインネットフォークテストでテストが実行されるようにします。

  • executeProposalNameProposalForTest関数をマイグレーションファイルからインポートします。

  • getDeployedContractsForTest()関数に関数を追加します:

d. 最終テストファイル

最後に、モック提案の後、IPFSハッシュとマルチシグの残高のテストを追加し、すべてが予想通りに終了するようにします。

test/miscに、「proposal name labelled → proposal-name-proposal.spec.ts(提案名ラベル付き → 提案名-提案.spec.ts)」と書かれた新しいファイルを追加し、これらの2つのテストを記入します。

  1. IPFSハッシュは、DIP_NUMBER_IPFS_HASHを通じてlibからインポートします。

  2. ProposalNameIdを使用して、次のproposalId番号をハードコードします。

  3. 提案ハッシュは、定数ハッシュでチェックします。

  4. PROPOSAL_NAME_ADDRESSをチェックし、PROPOSAL_FUNDING_AMOUNTの残高が予想されているかどうか確認します。

注:このアドレスにdYdXがすでに存在する場合、テストに合格する残高にハードコードする必要があります。

7. PRの送信

これらのコード変更がすべて行われ、ローカルに保存されたら、フォークされたリポジトリにコミットし、dYdXリポジトリにPRを開くことができます。

a. コマンドラインを通じて変更をコミットする

b.dYdXリポジトリにPRを送信する

c. リポジトリマネージャーからのレビューと承認を待つ

🔐セーフティモジュール

セーフティステーキングプールの概要

流動性モジュール報酬の割り当てから残りのethDYDXはすべて、dYdXチェーンコミュニティトレジャリーに移行されました。

DYDXのステーキング解除&出金

ステーカーはエポック終了後のethDYDXの出金を可能にするため、エポック終了の少なくとも3日前**(ブラックアウト・ウィンドウ)**までに資金の出金をリクエストする必要があります。ステーカーが出金をリクエストしない場合、ステーキングされた$ethDYDXは次のエポックにロールオーバーされます。

ブラックアウトウィンドウの間は、出金をリクエストすることができません。

FAQ

ブラックアウトウィンドウとは何ですか?

ブラックアウト・ウィンドウとは、ユーザーが、$stkDYDXの出金をリクエストすることができない期間です。ブラックアウト・ウィンドウの期間中、requestWithdrawal関数を呼び出すことはできません。この期間は、エポックの最後の3日間として初期設定されているものです。新しいエポックは、28日ごとに開始されます。つまり、ユーザーは所定のエポック終了の3日前までであれば次のエポックの出金をリクエストすることができます。

取引報酬の計算式に基づく25.0%(250,000,000$

に基づく7.5%(75,000,000$ethDYDX)、

への5.0%(50,000,000$ethDYDX)、

に$USDCをステーキングするユーザーへの2.5%(25,000,000$ethDYDX)、

に$ethDYDXをステーキングするユーザーへの2.5%(25,000,000$ethDYDX)、

に基づく14.5%(144,693,506$ethDYDX)、

とでは、dYdXコミュニティは取引報酬を合計230万$ethDYDX削減することを投票で決定しました。(DIP 16から958,904$ethDYDX、DIP 20から1,294,520$ethDYDX)。230万$ethDYDXは、報酬基金に計上され、によってdYdXコミュニティが利用できるようになります。

では、dYdXコミュニティは取引報酬をdYdX v3上のエポック30-32から⅓に削減し、以下の値にすることを投票で決定しました。

に基づく3.3%(32,794,525$ethDYDX)、

において、dYdXコミュニティは流動性プロバイダー報酬をエポックあたり1,150,685$ethDYDXから、50%削減のエポックあたり575,343$ethDYDXに変更することを投票で決定しました。余ったエポックあたり575,342$ethDYDXは報酬基金に計上され、によってdYdXコミュニティが利用できるようになります。

では、dYdXコミュニティは流動性プロバイダー報酬をdYdX v3上のエポック30-32から⅓に削減し、以下の値にすることを投票で決定しました。

へ26.1%(261,133,225$ethDYDX)、

に$USDCをステーキングするユーザーへの0.6%(5,779,608$ethDYDX)、

において、dYdXコミュニティは$USDCのステーキングに関連する報酬を0に設定することをしました。これまで$USDCステーカーに配布された383,562$ethDYDXは報酬基金に加算され、によってdYdXコミュニティが利用できるようになります。

に$ethDYDXをステーキングするユーザーへの0.5%(5,289,939$ethDYDX)、

において、dYdXコミュニティは$ethDYDXのステーキングに関連する報酬を0に設定することをしました。これまで$ethDYDXステーカーに配布された383,562$ethDYDXは、報酬基金に計上され、によってdYdXコミュニティが利用できるようになります。

はい。dYdXコミュニティはを変更できます。これまでのところ、dYdXコミュニティはいくつかのガバナンス提案において、DYDXの排出量を削減することを投票で決定しています。

において、dYdXコミュニティは取引報酬を25%引き下げることをで決定しました。その結果、所定のエポックで配布される取引報酬は、エポック15において3,835,616$ethDYDXから2,876,712$ethDYDXに減少しました。残りの958,904$ethDYDXは、報酬基金に加算され、によってdYdXコミュニティが利用できるようになります。

において、dYdXコミュニティは$USDCのステーキングに関連する報酬を0に設定することをしました。これまで$USDCステーカーに配布された383,562$ethDYDXは報酬基金に加算され、によってdYdXコミュニティが利用できるようになります。

において、dYdXコミュニティは$ethDYDXのステーキングに関連する報酬を0に設定することをしました。これまで$DYDXステーカーに配布された383,562$ethDYDXは、報酬基金に計上され、によってdYdXコミュニティが利用できるようになります。

において、dYdXコミュニティは、流動性プロバイダー報酬を、エポックあたり1,150,685$ethDYDXから、50%削減のエポックあたり575,343$ethDYDXに変更することをしました。余ったエポックあたり575,342$ethDYDXは報酬基金に計上され、によってdYdXコミュニティが利用できるようになります。

において、dYdXコミュニティは取引報酬およびLP報酬をdYdX v3上のエポック30-32から⅓に削減しすることを以下のように投票で決定しました。

2023年1月25日、dYdX Foundationは、投資家$ethDYDXトークンの初期リリース日を2023年12月1日に延期する修正を。 この修正では、初期ロック解除日以降の段階的なロック解除スケジュールは変更されませんでした。

流動性ステーキングプールは、2022年9月29日現在、アクティブではありません。において、dYdXコミュニティは、流動性ステーキングプール報酬を毎秒0に設定することにより、流動性ステーキングプールと借入プールを事実上終了させることをで決定しました。

dYdXチェーンコミュニティトレジャリーに関する詳細は、をご覧ください。

エポックの終了後にステーカーが$USDCを出金できるようにするには、ステーカーは終了の遅くとも****3日(ブラックアウトウィンドウ)前までに出金をリクエストする必要があります。ステーカーが出金をリクエストしない場合、ステーキングされた$USDCは次のエポックにロールオーバーされます。

ステーキングプールから$USDCを出金するにはどうすればよいですか?どのくらいかかりますか?

エポック終了後に$USDCを引き出すためには、エポック終了の3日前までに$USDCのステーキングの解除を申請する必要があります。ステーカーが出金をリクエストしない場合、ステーキングされた$USDCは次のエポックにロールオーバーされます。

$USDCを出金するには、ユーザーは次のエポックに対するrequestWithdrawal関数を呼び出します。現在のエポックでは、ユーザーの資金はステーキングされたままとなり、出金できません。次のエポックから資金は「非アクティブ」となり、出金が可能になります。

次のエポックでは、ユーザーはwithdrawStake関数を呼び出して出金するので、アクティブな$USDCを特定のアドレスに引き出すことができます。ユーザーは、出金する非アクティブな資金の額を指定するか、`withdrawMaxStake`関数を呼び出して、非アクティブな資金をすべて出金することができます。eth_callで最大値を検索してwithdrawStake()を呼び出すよりも、withdrawMaxStake関数の方がガス効率が低くなります。

流動性プールへの$USDCのステーキングを解除するには、以下の手順に従います。

  • ****にアクセスします

  • 「リクエスト」をクリックします

  • プールからの出金リクエストをする$USDC額を入力し、「出金リクエスト」をクリックします。$USDCのステーキングを解除するには、ガス代(手数料)がかかります。

  • ステーカーは、現在のエポックが終了する遅くとも3日(ブラックアウト・ウィンドウ)前までに$USDCのステーキングを解除すると、次のエポックから$USDCを出金することが可能になります。

2023年11月18日、dYdXコミュニティは、コミュニティ基金で発生したethDYDX残高をイーサリアムからdYdXチェーンに橋渡しすることをで決定しました。ブリッジされると、DYDXはdYdXコミュニティによってdYdXチェーンのガバナンス投票を通じて使用できるようになります。

dYdXチェーンコミュニティトレジャリーに関する詳細は、をご覧ください。

dYdXガバナンスプロセスは のガバナンスフォーラムにおいて推進され、dYdX改善提案(「DIP」)を通じて承認されます。

でホストされているdYdXのガバナンスフォーラムでは、誰もが任意のトピックについてサインアップおよびスレッドの設定ができます。コミュニティのメンバーは、メールアドレスまたはイーサリアムウォレットを使用して登録する必要があります。

オフチェーンでdYdXコメントリクエスト(DRC)の作成はガバナンスの改善プロセスの最初のステップです。 には誰でも参加し、オフチェーンでのDRCの作成や改善について議論することができます。

DRCを作成するには、を使用してください(Githubで利用可能です)。DRCは最終DIP素案のすべての情報をカバーする必要があります。

にアクセス

$ethDYDXの請求にあたり、過去ユーザーは最初の28日間のエポック(エポック0)において、のマイルストーンを以下のとおりに達成する必要があります。

dYdXコミュニティは、流動性プロバイダー報酬の終了をで2024年1月16日に決定しました。 流動性プロバイダー報酬の割り当てから残りのethDYDXはすべて、dYdXチェーンコミュニティトレジャリーに移行されました。

dYdXチェーンコミュニティトレジャリーに関する詳細は、をご覧ください。

流動性プロバイダー報酬を請求するにはどうすればよいですか?

流動性プロバイダー報酬は、に表示されます。ガバナンスのユーザーインターフェースには表示されていませんが、各エポックの終了時にからガバナンスを通じて請求することが可能です。

ガバナンス戦略V2コントラクト:提案および投票に関するユーザーの相対的な権限を測定するロジックが含まれています。dYdXコミュニティは、dYdX v3ガバナンスにおける投票および提案に対して、ethDYDXと同じガバナンス機能を$wethDYDXに付与するために、ガバナンス戦略コントラクトをガバナンス戦略V2にアップグレードすることをで決定しました。

この提案を作成するには、dYdXコミュニティメンバーは、提案力の少なくとも5Mガバナンストークン(総供給の0.5%)(の)を持っている必要があります。

**提案ライフサイクル:**DRCは提案に従って掲載し、スナップショット投票が成功する必要があります。

をGitHub口座に****フォークしてください。

セーフティモジュールは、2022年11月28日以降無効化されています。において、DYDXコミュニティは、セーフティモジュールの報酬を1秒あたり0に設定することで、セーフティモジュールを事実上終了させることをで決定しました。

dYdXチェーンコミュニティトレジャリーに関する詳細は、をご覧ください。

において、DYDXコミュニティは、ブラックアウト・ウィンドウを14日間から3日間に短縮することをで決定しました。

ステーキングプールから資金を出金するにはどうすればよいですか?どのくらいかかりますか?

出金に関してはエポックのスケジュールに合わせて行われ、これにより、プールの資金の可用性に対応した予測や一定の周期での実施が可能になります。ステーカーはエポックの終了後の出金を可能にするため、エポック終了の少なくとも3日前までに出金をリクエストする必要があります。ステーカーが出金をリクエストしない場合、ステーキングされた$ethDYDXは次のエポックにロールオーバーされます。

資金を出金するには、ユーザーは、requestWithdrawal関数を呼び出し、次のエポックでの資金の出金をリクエストをします。現在のエポックでは、ユーザーの資金はステーキングされたままとなり、出金できません。次のエポックから資金は「非アクティブ」となり、出金が可能になります。

次のエポックで、ユーザーはwithdrawStake関数を呼び出して、非アクティブな資金を特定のアドレスに出金します。ユーザーは、出金する非アクティブな資金の額を指定するか、withdrawMaxStake関数を呼び出して、非アクティブな資金をすべて出金することができます。withdrawMaxStake関数は eth_call を介してmaxに問い合わせてwithdrawStake()を呼び出すよりもGas(ガス)効率が低いことに注意してください。

セーフティモジュールから$ethDYDXを出金するには、以下のステップに従ってください。

  • ****にアクセスします

  • 「リクエスト」をクリックし、プールからの出金をリクエストする$ethDYDX額を入力します。

  • 「出金のリクエスト」をクリックします。資金を出金するには、ガス代(手数料)がかかります。

  • 現在のエポック終了日の少なくとも3日前までに$ethDYDXの出金をリクエストするステーカーは、次のエポックの開始日に$ethDYDXを出金することができます。

ethDYDX)、
流動性プロバイダー報酬の計算式
コミュニティトレジャリー
流動性ステーキングプール
セーフティステーキングプール
取引報酬の計算式
DIP 16
DIP 20
ガバナンス投票
DIP 29
流動性プロバイダー報酬の計算式
DIP 24
ガバナンス投票
DIP 29
コミュニティ基金
流動性ステーキングプール
DIP 14
投票で決定
ガバナンス投票
セーフティステーキングプール
DIP 17
投票で決定
ガバナンス投票
立ち上げ時に存在するすべての報酬とプール
DIP 16
投票
ガバナンス投票
DIP 14
投票で決定
ガバナンス投票
DIP 17
投票で決定
ガバナンス投票
DIP 24
投票で決定
ガバナンス投票
DIP 29
発表しました
DIP 14
投票
こちら
エポック
https://dydx.community/dashboard/staking-pool/liquidity
投票
こちら
https://dydx.forum/
https://dydx.forum/
ガバナンスフォーラム
このテンプレート
dydx.community/dashboard
レイヤ2パーペチュアル
git clone https://github.com/[username]/governance-contracts.git
src/config/index.ts
...
const configSchema = {
	...
	FUND_PROPOSAL_NAME_PROPOSAL_ID: parseInteger({ default: null }),
	TEST_PROPOSAL_NAME_WITH_PROPOSAL: parseInteger({ default: true }),
};
...
src/deploy-config/base-config.ts
....
const config = {
	....
	
	PROPOSAL_NAME_ADDRESS = '0x...',
	PROPOSAL_FUNDING_AMOUNT = '10000000000000000000',
};
...
src/lib/constants.ts
...
// Add a link to where the hash can be found
export const DIP_NUMBER_IPFS_HASH = '0x0000000000000000000000000000000000000000000000000000000000000000';
src/migrations/proposal-name.ts
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import {
  DydxGovernor__factory,
} from '../../types';
import { getDeployConfig } from '../deploy-config';
import { getDeployerSigner } from '../deploy-config/get-deployer-address';
import { getHre } from '../hre';
import { log } from '../lib/logging';
import { waitForTx } from '../lib/util';
import { Proposal } from '../types';
src/migrations/proposal-name.ts
export async function createProposalNameProposal({
  proposalIpfsHashHex,
  dydxTokenAddress,
  governorAddress,
  shortTimelockAddress,
  communityTreasuryAddress,
  destinationAddress, // This is the address that will receive the funding
  signer,
}: {
  proposalIpfsHashHex: string,
  dydxTokenAddress: string,
  governorAddress: string,
  shortTimelockAddress: string,
  communityTreasuryAddress: string,
  destinationAddress: string,
  signer?: SignerWithAddress,
}) {
  const hre = getHre();
  const deployConfig = getDeployConfig();
  const deployer = signer || await getDeployerSigner();
  const deployerAddress = deployer.address;
  log(`Creating proposal with proposer ${deployerAddress}.\n`);
  const governor = await new DydxGovernor__factory(deployer).attach(governorAddress);
  const proposalId = await governor.getProposalsCount();
  const proposal: Proposal = [
    shortTimelockAddress,
    [communityTreasuryAddress],
    ['0'],
    ['transfer(address,address,uint256)'],
    [hre.ethers.utils.defaultAbiCoder.encode(
      ['address', 'address', 'uint256'],
      [dydxTokenAddress, destinationAddress, deployConfig.PROPOSAL_FUNDING_AMOUNT],
    )],
    [false],
    proposalIpfsHashHex,
  ];
  await waitForTx(await governor.create(...proposal));
  return {
    proposalId,
  };
}
tasks/deployment/proposal-name.ts
import { types } from 'hardhat/config';
import mainnetAddresses from '../../src/deployed-addresses/mainnet.json';
import { hardhatTask } from '../../src/hre';
import { DIP_NUMBER_IPFS_HASH } from '../../src/lib/constants';
import { createProposalNameProposal } from '../../src/migrations/proposal-name';
tasks/deployment/proposal-name.ts
hardhatTask('deploy:proposal-name', 'Proposal Description.')
  .addParam('proposalIpfsHashHex', 'IPFS hash for the uploaded DIP describing the proposal', DIP_NUMBER_IPFS_HASH, types.string)
  .addParam('dydxTokenAddress', 'Address of the deployed DYDX token contract', mainnetAddresses.dydxToken, types.string)
  .addParam('governorAddress', 'Address of the deployed DydxGovernor contract', mainnetAddresses.governor, types.string)
  .addParam('shortTimelockAddress', 'Address of the deployed short timelock Executor contract', mainnetAddresses.shortTimelock, types.string)
  .addParam('communityTreasuryAddress', 'Address of the deployed community treasury contract', mainnetAddresses.communityTreasury, types.string)
  .setAction(async (args) => {
    await createProposalNameProposal(args);
  });
test/migrations/proposal-name.ts
import BNJS from 'bignumber.js';
import { BigNumber, BigNumberish } from 'ethers';
import config from '../../src/config';
import { getDeployConfig } from '../../src/deploy-config';
import { getDeployerSigner } from '../../src/deploy-config/get-deployer-address';
import { log } from '../../src/lib/logging';
import { waitForTx } from '../../src/lib/util';
import { impersonateAndFundAccount } from '../../src/migrations/helpers/impersonate-account';
import { createProposalNameProposal } from '../../src/migrations/proposal-name';
import {
  DydxGovernor__factory,
  DydxToken__factory,
  Treasury__factory,
} from '../../types';
import { advanceBlock, increaseTimeAndMine } from '../helpers/evm';
const MOCK_PROPOSAL_IPFS_HASH = (
  '0x0000000000000000000000000000000000000000000000000000000000000000'
);
test/migrations/proposal-name.ts
export async function fundProposalNameViaProposal({
  dydxTokenAddress,
  governorAddress,
  shortTimelockAddress,
  communityTreasuryAddress,
  destinationAddress,
}: {
  dydxTokenAddress: string,
  governorAddress: string,
  shortTimelockAddress: string,
  communityTreasuryAddress: string,
  destinationAddress: string,
}): Promise<void> {
  const deployConfig = getDeployConfig();
  const deployer = await getDeployerSigner();
  const dydxToken = new DydxToken__factory(deployer).attach(dydxTokenAddress);
  const governor = new DydxGovernor__factory(deployer).attach(governorAddress);
  await fundCommunityTreasuryFromFoundationIfNecessary({
    dydxTokenAddress,
    communityTreasuryAddress,
    minTreasuryBalance: deployConfig.PROPOSAL_FUNDING_AMOUNT,
  });
  // Pick a voter with enough tokens to meet the quorum requirement.
  const voterAddress = deployConfig.TOKEN_ALLOCATIONS.DYDX_TRADING.ADDRESS;
  const voter = await impersonateAndFundAccount(voterAddress);
  const voterBalance = await dydxToken.balanceOf(voterAddress);
  if (voterBalance.lt(new BNJS('2e25').toFixed())) {
    throw new Error('Not enough votes to pass the proposal.');
  }
  // Vote on an existing proposal (can be used with mainnet forking).
  let proposalId: BigNumberish;
  if (config.FUND_PROPOSAL_NAME_PROPOSAL_ID !== null) {
    proposalId = config.FUND_PROPOSAL_NAME_PROPOSAL_ID;
  } else {
    log('Creating proposal');
    ({ proposalId } = await createProposalNameProposal({
      proposalIpfsHashHex: MOCK_PROPOSAL_IPFS_HASH,
      dydxTokenAddress,
      governorAddress,
      shortTimelockAddress,
      communityTreasuryAddress,
      destinationAddress,
      signer: voter,
    }));
    log('Waiting for voting to begin');
    for (let i = 0; i < deployConfig.VOTING_DELAY_BLOCKS + 1; i++) {
      if (i > 0 && i % 2000 === 0) {
        log('mining', i);
      }
      await advanceBlock();
    }
  }
  let proposalState = await governor.getProposalState(proposalId);
  if (proposalState !== 2) {
    throw new Error('Expected proposal to be in the voting phase.');
  }
  log('Submitting vote');
  await waitForTx(await governor.connect(voter).submitVote(proposalId, true));
  log('Waiting for voting to end');
  let minedCount = 0;
  for (; ;) {
    for (let i = 0; i < 2000; i++) {
      await advanceBlock();
      minedCount++;
    }
    log('mining', minedCount);
    proposalState = await governor.getProposalState(proposalId);
    if (proposalState !== 2) {
      break;
    }
  }
  if (proposalState !== 4) {
    throw new Error(`Expected proposal to have succeeded but state was ${proposalState}`);
  }
  log('Queueing the proposal');
  await waitForTx(await governor.queue(proposalId));
  const delaySeconds = deployConfig.SHORT_TIMELOCK_CONFIG.DELAY;
  await increaseTimeAndMine(delaySeconds);
  log('Executing the proposal');
  await waitForTx(await governor.execute(proposalId));
  log('Proposal executed');
  log('\n=== FUNDING PROPOSAL COMPLETE ===\n');
}
export async function fundProposalNameNoProposal({
  dydxTokenAddress,
  shortTimelockAddress,
  communityTreasuryAddress,
  destinationAddress,
}: {
  dydxTokenAddress: string,
  shortTimelockAddress: string,
  communityTreasuryAddress: string,
  destinationAddress: string,
}): Promise<void> {
  const deployConfig = getDeployConfig();
  const mockShortTimelock = await impersonateAndFundAccount(shortTimelockAddress);
  const communityTreasury = new Treasury__factory(mockShortTimelock).attach(
    communityTreasuryAddress,
  );
  await fundCommunityTreasuryFromFoundationIfNecessary({
    dydxTokenAddress,
    communityTreasuryAddress,
    minTreasuryBalance: deployConfig.PROPSAL_FUNDING_AMOUNT,
  });
  await waitForTx(
    await communityTreasury.transfer(
      dydxTokenAddress,
      destinationAddress,
      deployConfig.PROPOSAL_FUNDING_AMOUNT,
    ),
  );
  log('\n=== PROPOSAL FUNDING COMPLETE ===\n');
}
async function fundCommunityTreasuryFromFoundationIfNecessary({
  dydxTokenAddress,
  communityTreasuryAddress,
  minTreasuryBalance,
}: {
  dydxTokenAddress: string,
  communityTreasuryAddress: string,
  minTreasuryBalance: string,
}): Promise<void> {
  const deployConfig = getDeployConfig();
  const mockFoundation = await impersonateAndFundAccount(deployConfig.TOKEN_ALLOCATIONS.DYDX_FOUNDATION.ADDRESS);
  const dydxToken = new DydxToken__factory(mockFoundation).attach(dydxTokenAddress);
  const communityTreasuryBalance: BigNumber = await dydxToken.balanceOf(communityTreasuryAddress);
  if (communityTreasuryBalance.lt(minTreasuryBalance)) {
    // Transfer necessary funds to the treasury.
    await waitForTx(
      await dydxToken.transfer(
        communityTreasuryAddress,
        minTreasuryBalance,
      ),
    );
  }
}
test/migrations/deploy-contracts-for-test.ts
...
import { fundProposalNameNoProposal, fundProposalNameViaProposal } from './proposal-name-proposal';
...
export async function executeProposalNameProposalForTest(
  deployedContracts: AllDeployedContracts,
) {
  const deployConfig = getDeployConfig();
  if (config.TEST_PROPOSAL_NAME_TRUST_WITH_PROPOSAL) {
    await fundProposalNameViaProposal({
      dydxTokenAddress: deployedContracts.dydxToken.address,
      governorAddress: deployedContracts.governor.address,
      shortTimelockAddress: deployedContracts.shortTimelock.address,
      communityTreasuryAddress: deployedContracts.communityTreasury.address,
      destinationAddress: deployConfig.PROPOSAL_NAME_ADDRESS,
    });
  } else {
    await fundProposalNameNoProposal({
      dydxTokenAddress: deployedContracts.dydxToken.address,
      shortTimelockAddress: deployedContracts.shortTimelock.address,
      communityTreasuryAddress: deployedContracts.communityTreasury.address,
      destinationAddress: deployConfig.PROPOSAL_NAME_ADDRESS,
    });
  }
}
...
// put this above the configureForTest function
test/helpers/get-deployed-contracts-for-test.ts
...
import {
  configureForTest,
  deployContractsForTest,
  executeSafetyModuleRecoveryProposalsForTest,
  executeStarkProxyProposalForTest,
  executeGrantsProgramProposalForTest,
  executeGrantsProgramv15ProposalForTest,
  executeWindDownBorrowingPoolProposalForTest,
  executeUpdateMerkleDistributorRewardsParametersProposalForTest,
  executeWindDownSafetyModuleProposalForTest,
  executeProposalNameProposalForTest,
} from '../migrations/deploy-contracts-for-test';
test/helpers/get-deployed-contracts-for-test.ts
async function getDeployedContractsForTest(): Promise<AllDeployedContracts> {
  if (!config.isHardhat()) {
    return getAllContracts();
  }
  let deployedContracts: AllDeployedContracts;
  if (config.FORK_MAINNET) {
    deployedContracts = await getAllContracts();
  } else {
    deployedContracts = await deployContractsForTest();
    // Execute the proposals which have already been executed on mainnet.
    //
    // The proposals will be executed when running on a local test network,
    // but will not be executed when running on a mainnet fork.
    await executeSafetyModuleRecoveryProposalsForTest(deployedContracts);
    await executeStarkProxyProposalForTest(deployedContracts);
    await executeGrantsProgramProposalForTest(deployedContracts);
    await executeGrantsProgramv15ProposalForTest(deployedContracts);
    await executeWindDownBorrowingPoolProposalForTest(deployedContracts);
    await executeUpdateMerkleDistributorRewardsParametersProposalForTest(deployedContracts);
    await executeWindDownSafetyModuleProposalForTest(deployedContracts);
  }
  await executeProposalNameProposalForTest(deployedContracts);
  // Execute the proposals which have not yet been executed on mainnet.
  await configureForTest(deployedContracts);
  return deployedContracts;
}
test/misc/proposal-name-proposal.spec.ts
import { expect } from 'chai';
import { DIP_NUMBER_IPFS_HASH } from '../../src/lib/constants';
import { describeContract, TestContext } from '../helpers/describe-contract';
function init() {}
describeContract('proposal-name', init, (ctx: TestContext) => {
  it('Proposal IPFS hash is correct', async () => {
    const ProposalNameId = #;
    const proposal = await ctx.governor.getProposalById(ProposalNameId);
    expect(proposal.ipfsHash).to.equal(DIP_NUMBER_IPFS_HASH);
  });
  it('Destination receives tokens from the community treasury', async () => {
    const balance = await ctx.dydxToken.balanceOf(ctx.config.PROPOSAL_NAME_ADDRESS);
    expect(balance).to.equal(ctx.config.PROPOSAL_FUNDING_AMOUNT);
  });
});
git add .
git commit -m 'funding proposal upload'
git push
投票
こちら
dYdX API
こちら
投票
短いタイムロック投票
提案のしきい値
テンプレート
dYdXガバナンスコントラクトリポジトリ
DIP 17
投票
こちら
DIP 17
投票
dydx.community/dashboard/pools/safety

用語集

主要なガバナンス関連用語の概要。

$**ethDYDX:**dYdX v3のガバナンスと安全性の基盤を構成しているイーサリアムベースのdYdXエコシステムのネイティブアセット。 $ethDYDXは、ユーザーの投票権または提案権の重みを指定するERC-20トークンです。

$wethDYDX:$wethDYDXスマートコントラクトとインタラクションして得られる$ethDYDXのラップバージョン。 $wethDYDXは、ユーザーの投票権または提案権の重みを指定するERC-20トークンです。

**dYdX v3:**dYdXのレイヤ2パーペチュアルプロトコル。

**dYdX Foundation:**スイスのツークに本部を置く独立した基金として設立され、将来に向けてdYdXプロトコルの普及、推進を行います。

$ethDYDXトークンコントラクト:時間的に異なるブロックにおける各アドレスの投票権に関するスナップショットを保持しています。

$wethDYDXトークンコントラクト:時間的に異なるブロックにおける各アドレスの投票権に関するスナップショットを保持しています。

**DIP:**dYdXの改善提案はオンチェーンでの提案となります。

DRC:dYdXのコメントリクエストはオフチェーンの提案であり、ガバナンスの改善プロセスにおける最初のステップです。

**クォーラム:**選択が承認されるには、DYDXトークンの肯定的な最小クォーラムを達成することが必要です。クォーラムの目的は、承認された方法だけが適切な選択権者の参加を確保できるようにすることです。

**エポック:**その他のすべてのコントラクトは、エポックと呼ばれる28日間のサイクルで動作します。

**実行猶予期間:**選択後にDIP提案が実行可能になる期間で、その期間中に実行される必要があります。

ガバナンス戦略V2コントラクト:提案および投票に関するユーザーの相対的な権限を測定するロジックが含まれています。

ガバナーコントラクト:提案を追跡し、タイムロックでのスマートコントラクトを通じて提案を実行できます。

**ロングタイムロックでの実行管理者:**ロングタイムロックでの実行管理者は、ガバナンスのコンセンサスに影響を与えるプロトコルの一部について一般的に変更する提案を実行できます。

**Merkle-pauserの実行管理者:**Merkle-pauserの実行管理者は、Merkleルートをフリーズする提案を実行できます。これは各ユーザーの累積報酬残高と共に定期的に更新され、提案されたルートが適切でないか悪意がある場合には、新しい報酬を時間の経過に応じてユーザーに提供できるようにします。

**セーフティプール:**プロトコルを債務超過から保護する責任があるコンポーネントです。

ステークされたdYdXコントラクト:DYDXトークンをステークし、ポジションをトークン化し、報酬を獲得するためのロジックが含まれています。

**ショートタイムロックでの実行管理者:**ショートタイムロックでの実行管理者は、迅速な介入を必要とする報酬やインセンティブに関するコントラクト、またはコミュニティ基金に対する一般的な変更の提案を実行できます。

**Starkwareの実行管理者:**Starkwareの実行管理者は、現在Starkwareからの介入を必要とするプロトコルの一部に対する一般的な変更の提案を実行できます。

タイムロックコントラクト:ガバナンスによって選択されたトランザクションのキュー、キャンセル、実行ができます。提案におけるこのような機能は、タイムロックコントラクトによって開始されます。キューされたトランザクションは遅延後および猶予期間が経過しない間は実行できます。

**タイムロックでの遅延:**提案が承認され、キューされた後、DIP提案が実行されるまでの遅延。

**提案の基準値:**多数のスパム提案がシステムで作成されることを防ぐために、提案の前にアドレスが一定数の選択権を獲得しておく必要があります。

**提案権:**提案の作成および維持にアクセスできるトークンステーク。

**選択権:**既存の提案の選択または反対に使用される権利。

**選択遅延:**提案が作成可能になった後、選択可能になるまでの期間。少なくとも1ブロックの承認が必要で、ガバナンスは多数のトークンを借りたり、選択の提案をしたり、1ブロックすべてを選択したりする可能性があるフラッシュローン攻撃から保護されます。

**選択期間:**DIP提案が実行されると、DYDXのコミュニティメンバーは選択期間終了までに選択を行う必要があります。これはイーサリアムブロックで提案の選択が行われる期間です。

**提案の基準値:**DIP提案の作成に必要で保有/委任されている最小トークン。

**選択差:**DIPの提案が通過するためには、賛成と反対の間に差があることが必要です。

💾パラメータ

ガバナンスパラメータの概要。

ガバナンストークンの保有者は、以下の点について、即時に取り消しできない管理権限があります。

  • コミュニティ基金の割り当て

  • プロトコルに関する新しいトークンリスト

  • プロトコルのリスクパラメータ

  • 流動性ステーキングプールのマーケットメーカーへの資金割り当て

  • 流動性ステーキングプールへの新しいマーケットメーカーの追加

  • 損失が発生した場合における安全ステーキングプールの支払いの決定

  • 起動時に既存の報酬およびプールのいずれかの変更

  • ガバナンスに関するコントラクトそのもの

dYdXガバナンスは、以下のコントラクトのパラメータを管理しています。

  • 優先タイムロック

  • ガバナー

  • $ethDYDXトークン

  • トレジャリー(基金)

  • Merkleディストリビュータ

  • 流動性ステーキング

  • 安全モジュール

  • Starkプロキシ

  • Starkパーペチュアル

タイムロックでのパラメータ

ガバナーパラメータ

パラメータ
説明
価値

投票遅延

提案の作成とその提案に対する投票の間の遅延(ブロック単位で)

6,570ブロック

執行管理者の役割を追加する

新しい実行管理者を追加できるアドレス

短いタイムロック

所有者の役割

戦略変更/投票遅延/実行者の無権限化および他の役割の所有が可能

長いタイムロック

ethDYDXトークン

パラメータ
説明
価値

所有者

ミント制限後にethDYDXトークンをミントできます

短いタイムロック

報酬基金パラメータ

パラメータ
説明
価値

所有者

基金が保有するトークンの承認または移動ができます

短いタイムロック

プロキシ管理者

コントラクトのアップグレード

短いタイムロック

コミュニティ基金パラメータ

パラメータ
説明
価値

所有者

基金が保有するトークンの承認または移動ができます

短いタイムロック

プロキシ管理者

コントラクトのアップグレード

短いタイムロック

Merkleディストリビュータ

パラメータ
説明
価値

所有者の役割

報酬オラクルアドレスとIPNS名を更新することができ、すべての役割を担う管理者です。

短いタイムロック

コンフィギュレーションアップデーターの役割

報酬パラメータの設定、エポックスケジュールの変更、およびIPFSの更新期間の変更を行う場合があります。

短いタイムロック

Pauserの役割

Merkleルートの更新を一時停止できます。

Merkle-pauserのタイムロック

Unpauserの役割

Merkleルートの更新を一時停止できます。

短いタイムロック

請求オペレータの役割

ユーザーに代わって報酬を請求する場合があります。

請求プロキシ

インターバル

エポックの期間

28日間

オフセット

エポック0の開始

2021年8月3日午後3時00分(UTC)

IPNS名

報酬データが公開されるIPNS名

rewards-data.dydx.foundation

IPFSの更新期間

エポック終了後、新しいエポック取引の統計がIPNS名を用いてIPFSで利用可能になるまでの期間。

3分

プロキシ管理者

コントラクトのアップグレード

短いタイムロック

流動性ステーキング

パラメータ
説明
価値

所有者の役割

すべての役割の管理者

短いタイムロック

エポックパラメータの役割

インターバル、オフセット、ブラックアウト・ウィンドウなどのエポックパラメータを設定する場合があります。

短いタイムロック

報酬レートの役割

報酬のレートを設定する場合があります。

短いタイムロック

借入者管理者の役割

借入者の割り当てを設定し、借入を許容/制限する場合があります。

短いタイムロック

請求オペレータの役割

ユーザーに代わって報酬を請求する場合があります。

請求プロキシ

ステークオペレータの役割

ユーザーに代わってステーキングされた資金(出金実施など)を操作する場合があります。

短いタイムロック

債務オペレータの役割

借入債務およびステーカーの債務を減少させる場合があります。

短いタイムロック

インターバル

エポックの期間

28日間

オフセット

エポック0の開始

2021年8月3日午後3時00分(UTC)

ブラックアウト・ウィンドウ

ブラックアウト・ウィンドウの期間

3日間

報酬レート

ステーカーに1秒あたり報酬として割り当てられるトークン。

0

プロキシ管理者

コントラクトのアップグレード

短いタイムロック

安全モジュール

パラメータ
説明
価値

所有者の役割

すべての役割の管理者

短いタイムロック

スラッシャーの役割

ステーキングされたトークンの残高をスラッシュし、これらの資金を出金できます。

短いタイムロック

エポックパラメータの役割

インターバル、オフセット、ブラックアウト・ウィンドウなどのエポックパラメータを設定する場合があります。

短いタイムロック

報酬レートの役割

報酬のレートを設定する場合があります。

短いタイムロック

請求オペレータの役割

ユーザーに代わって報酬を請求する場合があります。

請求プロキシ

ステークオペレータの役割

ユーザーに代わってステーキングされた資金(出金実施など)を操作する場合があります。

短いタイムロック

インターバル

エポックの期間

28日間

オフセット

エポック0の開始

2021年8月3日午後3時00分(UTC)

ブラックアウト・ウィンドウ

ブラックアウト・ウィンドウの期間

3日間

報酬レート

ステーカーに1秒あたり報酬として割り当てられるトークン。

0

プロキシ管理者

コントラクトのアップグレード

長いタイムロック

Starkプロキシ

パラメータ
説明
価値

所有者の役割

ファンド+STARKキーの受取人の追加または削除、流動性ステーキングおよびスタークなパーペチュアルコントラクトに関するERC20のアローワンスの設定、強制アクションの呼び出し、およびオーナー管理者+委任管理者の役割を担うことができます。

マーケットメーカー

委任管理者の役割

借入者、取引オペレーター、出金オペレーターの役割を管理します。

マーケットメーカー

借入者の役割

流動性ステーキングコントラクトで借入関数を呼び出す場合があります。

マーケットメーカー

取引オペレーターの役割

スタークなパーペチュアルコントラクトで取引関数を呼び出す場合があります。

マーケットメーカー

出金オペレーターの役割

許可された受取人に対して借入残高を超える資金を出金する場合があります。

マーケットメーカー

保護者の役割

クローズアクションの実行、借入者が延滞債務を負っている場合の緊急アクションの実行、借入金が存在する場合のオープンアクションの制限、出金オペレーターにより外部に出金されるトークンの額の承認を行う場合があります。

短いタイムロック

拒否権監視者の役割

待機期間中にオーナーが開始した強制取引リクエストを拒否する場合があります。

Merkle-pauserのタイムロック

Starkパーペチュアル

パラメータ
説明
短いタイムロックでの実行管理者
Merkle-Pauserの実行管理者
長いタイムロックでの実行管理者
Starkwareの実行管理者

新しい資産の追加

N

N

N

Y

既存資産の構成の変更

N

N

N

Y

プロキシ管理者

N

N

N

Y

オペレータの追加

N

N

N

Y

オペレータの削除

N

N

N

Y

検証者の追加

N

N

N

Y

検証者の削除

N

N

N

Y

🏛️ガバナンスガイド

ガバナンスプロセスDRCの作成、スナップショット投票の作成、DIPの作成、スナップショット投票への投票、DIPへの投票、DIPのキューイング、DIPの実行に関するステップ・バイ・ステップの概要

dYdX Foundationは、dYdXコミュニティがdYdXのガバナンスプロセスを理解するための支援を目的として、このガイドを作成しました。このガイドでは、以下の内容についてステップ・バイ・ステップで概説しています。

このガイドで紹介されている2つの例は、DIP 2(オフチェーンの提案) - 流動性プロバイダー報酬のしきい値の引き下げ、および_DIP 3(オンチェーンの提案) - セーフティモジュールの復元_、です。

DIP 2(オフチェーンの提案) - 流動性プロバイダー報酬のしきい値の引き下げ

要約:

背景:

コミュニティには流動性プロバイダー報酬のしきい値を引き下げる動機が与えられています。これは新しいマーケットメーカーや中小規模のマーケットメーカーにdYdXプラットフォームの流動性を高めるインセンティブが与えられるためです。さらに、プラットフォームのマーケットメーカー数を増やすことでdYdXプロトコルの一層の分散化が可能になります。

ステップ1 - フォーラムディスカッション、DRCの作成(オフチェーン)、およびDRCのフィードバック

説明:

DIP 2への適用:

Discourseに投稿およびコメントする方法:

  • スレッドを選択し、コメントをスクロールし、コメントにいいねや返信をしましょう。

  • 「新しいトピック」をクリックしてトピックカテゴリを選択することで、新しいディスカッションスレッドを作成するか、DRCを投稿します。

    • DRCの簡潔で短いタイトル

    • 提案の簡潔で短い説明

    • DRCの合理的理由(例:なぜ?)

    • フォーラムポストのタイトルにはDRC:[DRCの短いタイトルを挿入](例えば、DRC:新しいマーケットリクエスト)を含めなければなりません。

    • コミュニティのメンバーがオフチェーンの改善の投票のために使用できるコミュニティ調査

ステップ2 - DRCのスナップショット投票(オフチェーン)

説明:

DIP 2への適用:

コミュニティメンバーは、Su Zhu氏のポストに関するフィードバックを提供しました。コミュニティによって以下の報酬のしきい値が提案されました:

次に、Su Zhu氏は以下のオプションが付くスナップショット投票を作成しました:

  • MMのしきい値を1%まで引き下げる

  • MMのしきい値を2.5%まで引き下げる

  • MMのしきい値を5%で維持する

スナップショット投票への投票方法:

  • アクティブなスナップショットに投票するには、スナップショットの投票がアクティブになる時点でガバナンストークンを保有しているか、またはスナップショットブロック番号以前にアドレスに委任された投票権を有している必要があります。

  • 投票を行うには、提案をクリックして「はい」または「いいえ」を選択してから「投票」をクリックします。

スナップショット投票の作成方法:

  • スナップショットの投票を作成するには、最小でも10k ガバナンストークンの保有および/または提案の作成に使用するアドレスに委任された投票権を有している必要があります。

  • スナップショットの提案は、提案ごとに最大10アクションまで、1つまたは複数のアクションで構成できます。アクションとは、提案で指定された変更を指します。

  • 提案権の最小要件である10k DYDXを満たしている場合、「新しい提案」を選択し、以下のコンテンツ要件に従って空欄に記入してください。

DRCのスナップショット投票のコンテンツ要件:

  • DRCの詳細(フォーラムディスカッションへのリンク付き)、

  • 投票システム、

  • (_13.2秒のブロックタイムに基づいて)_投票開始日と投票終了日は合計4日間に設定します。また、

  • スナップショット投票は、投票開始の1日前(~6570ブロック)前にポストされます。

拘束力のあるスナップショット投票の要件

ほとんどの意思決定においてスナップショット投票はシグナルとして機能しますが、スマートコントラクトを変更するような拘束力のある結果を得るにはオンチェーン投票が必要です。オンチェーンでのスマートコントラクトのコールが必要でない意思決定の場合、特に取引および流動性プロバイダーの報酬公式の変更については、スナップショット投票は拘束力を有する最終投票であるとみなされます。上記のコンテンツ要件に加えて、オフチェーン制御されている変数に対する拘束力ある投票としてのスナップショット投票には、以下の内容を含めなければなりません。

  • 二者択一オプション明確化のため、アドレスは提案への賛成または反対のいずれかを投票します。

  • 投票後、関連情報はIPFSに保存されます。レポートが自動的に生成され、ダウンロードできます。

ステップ3 - DIPの作成(オフチェーン提案)

説明:

DIP 2への適用:

流動性プロバイダー報酬のしきい値を引き下げるには、オンチェーンのスマートコントラクトを変更する必要はないため、プロセスはこれで完了し、変更は次のエポック期間から有効になります。

DIPの作成方法:

DIPステータス:

  • WIP - まだ開発中のDIP。

  • 提案済み - オンチェーン提案の準備ができているDIP。

  • 承認済み - dYdXコミュニティによる実装が承認されたDIP。

  • 実装済み - メインネットにリリースされたDIP。

  • 拒否 - 拒否されたDIP。

  • レビュー後、dYdX FoundationはPending-DIPブランチからマスターブランチへの変更をマージします。

この提案ではオンチェーンでのスマートコントラクト変更の必要はないため、このプロセスは完了し、変更は次のエポック期間に有効になります。

DIP 3(オンチェーン提案) - セーフティモジュールの復元

要約:

背景:

9月8日午後3時(UTC)に、$ethDYDXトークンの移動制限が解除され、dYdXセーフティモジュールへのステーキングが実質的に開始されました。ほぼ1時間にわたって、50を超えるアドレスが約157K ethDYDXをステーキングしました。デプロイメントプロセスでバグによるエラーが発生し、セーフティモジュールにステーキングしたアドレスに対してはステーキングDYDXが発行されませんでした。その結果、各ステーカーの資金がコントラクトにスタックされ、dYdXチームではdYdXガバナンスUIでのステーキングを無効化しました。

DIPの提案ライフサイクルは通常、DIPの作成まで一貫しています。DIP 3(オンチェーン)とDIP 2(オフチェーン)の主要な違いは、DIP 3ではオンチェーン投票とスマートコントラクトのデプロイメントが必要だった点にあります。フォーラムディスカッション、DRCの作成、ドラフトDIPの作成のプロセスは同じであるため、オンチェーンDIPのドラフト要件に関するステップ・バイ・ステップのディスカッションを開始します。詳細については以下のリンク先をご覧ください:

ステップ1 - オンチェーンDIPのドラフティング

説明:

DIP 3への適用:

SafetyModuleV2.solのデプロイメントコントラクトからセーフティフォルダに移動すると、提案の実行方法に関する具体的かつ詳細な記述が含まれているREADMEが表示されます。

オンチェーンDIP(WIP)のドラフト方法:

  • 新しいウォレットでDIPを作成します。デプロイメントプロセスでは環境変数としてシードフレーズを入力する必要があるため、オンチェーンDIPの作成にはワンオフウォレットを使用することを推奨します。

    • ショートタイムロック:総供給量の0.5%(提案権:5M)

    • Starkwareの実行管理者:総供給量の0.5%(提案権:5M)

    • ロングタイムロックの実行管理者:総供給量の2.0%(提案権:20M)

    • Merkle Pauserの実行管理者:総供給量の0.5%(提案権:5M)

イーサリアムと「開始」を選択します。

必要な情報を入力し、Goerli Network、「アプリの作成」の順に選択します。

「4. 構築の開始」で「最初のスマートコントラクトのデプロイを行う」を選択し、ガイドに従います。

  • 提案されたスマートコントラクトの実装をドラフトします。

  • 新しいファイル(DIP-[新しいDIP #]-ipfs-hashes.json)を選択した後、エンコードされたHashを使用していることを確認します。

ステップ2 - オンチェーンDIPの提出

説明:

コミュニティメンバーが提案されたスマートコントラクトの実装が正しいことを確認し、DIPが確定した後、そのDIPをオンチェーンで提出できます。オンチェーンDIPが作成されると、提案は投票遅延の「保留」状態に進み、それが1日間(約6,570ブロック)続きます。ユーザーのスナップショットは投票遅延後に、$ethDYDXの保有と委任された投票権を考慮して記録されます。次に、提案は「アクティブ」状態に進み、提案の種類に応じて投票期間は2〜10日間になります。提案が実行される場合、提案の種類に応じて変化する最小クォーラムと最小投票差の要件を満たす必要があります。DIPが最小クォーラム、最小投票差、投票コミュニティメンバーの多数要件を満たす場合、任意のアドレスが提案をタイムロックのキューに移動させるためのキューを呼び出すことができます。このタイムロックコントラクトは、dYdXコミュニティによって投票されたトランザクションのキュー、キャンセル、実行を行うことができます。タイムロックのキューの期間は提案の種類によって異なります。

DIP 3への適用:

ParadigmのチームがSafetyModuleV2.solのソリディティコードを決定しました。

Paradigmのチームが、ローカルとフォークされたメインネットの両方でのアップデートをシミュレートしました。その後、テストスイートが実行され、メインネットでのガバナンス提案の実行に続いて完全な機能復元が行われます。

Paradigmのチームが以下のスクリプトを実行することで、スマートコントラクトのアップデートをデプロイしました。

セーフティモジュールのリカバリーのデプロイメント

ALCHEMY_KEY=<... のエクスポート>

MNEMONIC=<... のエクスポート>

npx hardhat --network mainnet deploy:safety-module-recovery --dydx-token-address 0x92D6C1e31e14520e676a687F0a93788B716BEff5 --short-timelock-address 0x64c7d40c07EFAbec2AafdC243bF59eaF2195c6dc --rewards-treasury-address 0x639192D54431F8c816368D3FB4107Bc168d0E871

ガバナンス提案:セーフティモジュールの修正

ALCHEMY_KEY=<... のエクスポート>

MNEMONIC=<... のエクスポート>

npx hardhat --network mainnet deploy:safety-module-fix-proposal`--proposal-ipfs-hash-hex 0x...\ --governor-address 0x7E9B1672616FF6D6629Ef2879419aaE79A9018D2\ --long-timelock-address 0xEcaE9BF44A21d00E2350a42127A377Bf5856d84B\ --safety-module-address 0x65f7BA4Ec257AF7c55fd5854E5f6356bBd0fb8EC\ --safety-module-proxy-admin-address 0x6aaD0BCfbD91963Cf2c8FB042091fd411FB05b3C\ --safety-module-new-impl-address 0x...`

ガバナンス提案:セーフティモジュールの補償

ALCHEMY_KEY=<... のエクスポート>

MNEMONIC=<... のエクスポート>

npx hardhat --network mainnet deploy:safety-module-compensation-proposal --proposal-ipfs-hash-hex 0x... --dydx-token-address 0x92D6C1e31e14520e676a687F0a93788B716BEff5 --governor-address 0x7E9B1672616FF6D6629Ef2879419aaE79A9018D2 --short-timelock-address 0x64c7d40c07EFAbec2AafdC243bF59eaF2195c6dc --rewards-treasury-address 0x639192D54431F8c816368D3FB4107Bc168d0E871 --safety-module-recovery-address 0x...

このDIPは2021年11月1日、ブロック13532376で作成されました。将来の6,570ブロックの場合、DIPのステータスは「保留」です。

ethDYDXの保有者は、DIPがブロック13538946で「アクティブ」状態に移行したときに投票することができました。

最初の投票は2021年11月2日午後5時51分22秒(UTC)に行われ(ブロック13538959)、オンチェーンDIPが作成されてから6,583ブロック後でした。

ロングタイムロックに関する10日間の投票期間後、コミュニティメンバーはキューを呼び出すことで提案を7日間のタイムロック遅延に移行させることができます。DIP 3では、コミュニティメンバーがキューを呼び出すのに約3日間かかりました。

7日間のタイムロック遅延の後、DIPはオンチェーンで実行されました。

注:(1)提案はタイムロックの遅延直後に開始される7日間の期間内に実行される必要があり、(2)提案を行うアドレスはDIPが実行されるまでの間、各タイムロックコントラクトで必要な提案権の最小額を維持する必要があります(提案権は5Mまたは20M)。

オンチェーンDIPの提出方法:

    • ショートタイムロックの実行管理者:総供給量の0.5%(提案権:5M)

    • Starkwareの実行管理者:総供給量の0.5%(提案権:5M)

    • ロングタイムロックの実行管理者:総供給量の2.0%(提案権:20M)

    • Merkle Pauserの実行管理者:総供給量の0.5%(提案権:5M)

  • ガス代を支払うためのETHがウォレットにあることを確認します。

  • イーサリアムメインネットネットワークのAlchemyでアプリを作成します。

  • ドラフトしたスクリプトを実行します。

  • 提案を提出したアドレスは、提案が実行されるまでの間、各タイムロックコントラクトで必要な提案権の最小限度額を維持する必要があります。

DIPでの投票方法:

  • ガス代を支払うためのETHがウォレットにあることを確認します。

  • ショートタイムロックの実行管理者:4日間

  • Starkwareの実行管理者:4日間

  • ロングタイムロックの実行管理者:10日間

  • Merkle Pauserの実行管理者:2日間

提案をキューする方法:

成功した提案をキューすることで、タイムロックの遅延を開始することができます。

  • Ethを含む互換性のあるウォレットを使用していることを確認します。

  • キューを選択し、「proposalId」を提出します。

  • 「クリックして詳細を見る」を選択します。

  • 「入力データのデコード」を選択します。

提案の実行方法:

タイムロックの遅延後、成功した提案を実行することができます。

  • 「実行」を選択し、「proposalId」を提出します。

  • 上記の手順(「提案をキューする方法」)に続いて、「proposalId」を見つけます。

  • 「payableAmount (ether)」に「0」を入力します。

基金

dYdX Foundationの概要

ミッション

dYdX Foundationの目的は、dYdXレイヤ2プロトコルの現在の実装および将来のすべての実装(dYdXレイヤ2プロトコルに関連するエコシステムを含みますが、それらに限定されません)のすべての側面をサポートし、成長させることであり、エコシステムまたはdYdXレイヤ2プロトコルの現在の実装および将来のすべての実装のすべての側面をサポートし、成長させようとする他の人々の参加を促進することです。具体的には、このマンデートによりdYdX Foundationは以下のことを行います。

  • 適切な研究開発活動およびプロジェクトの支援および資金提供

  • エコシステムおよび/またはdYdXレイヤ2プロトコルについての一般市民への奨励および啓発

  • デジタル資産の発行、受領、使用、保持(投機的な取引活動はなし)

  • ガバナンススマートコントラクトのデプロイおよびガバナンストークンの発行

  • エコシステムの利益につながるさまざまな企業、パートナー、銀行、規制当局、その他の第三者との関わり

  • 受けとった寄付金の配分、企業への参加

  • 商標、著作権、その他の知的財産権またはライセンスの取得、保有、付与

  • エコシステムおよび/またはdYdXレイヤ2プロトコルをサポートおよび促進する会議その他のイベントを主催

  • ここに記載されている目的の達成または促進に必要かつ適切であり、付随しており、または望ましい可能性があるすべてのビジネスの実行と促進、および/またはすべての取引への参加、およびその他のすべての行為の実行

dYdX Foundationでは、dYdXレイヤ2プロトコルのエコシステムおよびガバナンス関連事象の開発と成長を支援しており、dYdX Tradingのコア開発チームはdYdXレイヤ2プロトコルのオーダーブックおよびマッチングエンジンコンポーネントの分散化に焦点を当てる予定です。分散型のオーダーブックおよびマッチングエンジンによりdYdXレイヤ2プロトコルを変更できますが、dYdXレイヤ2プロトコルの機能を強化することは想定されていません。代わりに、dYdXレイヤ2プロトコルのすべての側面で検閲への耐性を生み出せる利点があります。

dYdX Foundationは利益を目的とした組織ではなく、一般的に利益を追求していません。一方、dYdX Tradingでは取引量に基づくメイカー/テイカー手数料を引き続き請求します。これにより取引の手数料をカバーし、収益を獲得し、流動性向上へのインセンティブにもなります。

dYdX Foundationは分散型ガバナンスを促進し、強力で透明性が高く、オープンで高度な金融商品をトレーダーに提供することで、dYdXレイヤー2プロトコルにおけるコミュニティ主導による成長、開発、および自立の促進をサポートします。

操作

dYdX Foundationの評議会メンバーには、アーサー・チオン、レベッカ・レティグ、およびマーカス・スピルマンがいます。これは、dYdXレイヤー2プロトコルの完全な分散化に向けた最初の重要なステップです。

マーケットメーカーのオンボーディング

dYdXチームではマーケットメーカーのオンボーディングを容易にするために、このガイドラインを作成しました。統合ステップを開始する前に、ドキュメント全体をお読みください。

dYdXが推奨するマーケットメーカーのオンボーディングフロー:

  1. 選択したイーサリアムウォレットをdYdX L2パーペチュアルプロトコルに接続してください。

  2. パーペチュアル口座に$USDCを入金します。

  3. STARKキーを生成する必要があります。これはレイヤー2で口座を識別し、ブラウザでローカルに保存されます。STARKキーではdYdXユーザーとイーサリアム口座アドレスを関連付けています。ユーザーは最初にイーサリアムキーとSTARKキーとのリンク署名リクエストを行い、その他のオペレーションが実行される前にdYdXのスマートコントラクトにSTARKキーを登録する必要があります。「STARKキーを生成」をクリックし、トランザクションに署名します。署名は無料であり、トランザクションを伴いません。STARKキーはお客様のウォレットでいつでも再作成できます。

また、プログラマティックトレーダーは以下の方法でSTARKキーペアを取得する場合があります。

STARKキーの詳細についてはこちらをご覧ください。

4.次に、APIキーが必要になりますが、これはイーサリアム署名が必要であるか、またはWeb3プロバイダーを介して取得しなければなりません。注:イーサリアム署名はAPIキーのオンボーディングおよび管理にのみ必要であり、取引には必要ありません。取引にはSTARKキーの署名が必要です。APIキーは以下の関数を使用して登録、入手できます。

登録:

入手:

_代替手段(3.および4.):_秘密鍵をオンラインで利用したくない場合、以下の手順でSTARKキーを安全に生成して必要な資金を入手できます。

a. dYdXパーペチュアル取引所からは、ウェブブラウザ内の任意の場所を右クリックし、開発者ツールをオープンする検査を選択してください。

b. アプリケーション > ローカルストレージ > https://trade.dydx.exchange に移動します。

c. STARK_KEY_PAIRSを選択し、ウォレットアドレスの横にあるドロップダウンをクリックして、STARK秘密キーを取得します。

d. API_KEY_PAIRSを選択し、ウォレットアドレスの横にあるドロップダウンをクリックしてAPIキー、共通鍵、パスフレーズを入手します。

テクニカル概要

ガバナンスアーキテクチャおよびスマートコントラクトの概要。

ガバナンスアーキテクチャの概要

dYdXのオンチェーン・ガバナンスは以下の機能をサポートしています。

  • 提案の作成および選択

  • 提案の開始時に保有しているトークンのスナップショット

  • 選択権および提案権に関する個別の委任

  • 提案数、定足数、選択の差異基準を含むガバナンス基準の設定

  • 投票のカウント方法を決定する「ガバナンス戦略V2」スマートコントラクトの置き換え

  • 以下の内容を許可する複数の実行管理者コントラクトの構成:

      1. ショートタイムロックの実行管理者による迅速なプロトコルのアップグレードおよび資金の配分。

      1. ロングタイムロックの実行管理者によるガバナンスのアップグレード。

dYdXガバナンスをサポートするスマートコントラクトは7つあります。

  • DydxTokenコントラクト:アドレスが有する選択権や任意のブロック番号での提案権に関するクエリをサポートするスナップショットを維持します。選択権と提案権に関する個別の委任をサポートします。

  • ラップイーサリアムDydxTokenコントラクト:アドレスが有する投票権や任意のブロック番号での提案権に関するクエリをサポートするスナップショットを維持します。選択権と提案権に関する個別の委任をサポートします。

  • **DydxGovernorコントラクト:**提案を追跡し、実行管理者のスマートコントラクトを通じて提案を実行することができます。

  • 実行管理者コントラクト:ガバナンスによって選択されたトランザクションのキュー、キャンセル、実行ができます。提案が承認されると、提案で指定された実行管理者コントラクトによって提案内の関数呼び出しが実行される可能性があります。キューされたトランザクションは、実行管理者コントラクトに定められている期間内に実行することが可能です。

  • ******優先タイムロック**コントラクト:タイムロックコントラクトと同じですが、優先度コントローラーが優先期間(タイムロックの遅延終了の7日前)以内にトランザクションを執行することが可能になります。

  • ガバナンス戦略V2コントラクト:投票数カウントのロジックが含まれています。現在、$ethDYDXトークン、$wethDYDXトークン、$stkDYDXからの投票数をカウントしています。 ロングタイムロックによりアップグレードできます。

  • セーフティモジュールのコントラクト:$ethDYDXトークンのステーク、ステークされたポジションのトークン化、報酬の獲得のためのロジックが含まれており、投票権、提案権、およびアンダーライングトークンの委任に関する機能を保持します。

|コントラクト | アドレス| ------------------------------------ | ------------------------------------------ | | DydxToken | 0x92D6C1e31e14520e676a687F0a93788B716BEff5 || ラップイーサリアムDydxToken | 0x46b2DeAe6eFf3011008EA27EA36b7c27255ddFA9 || DydxGovernor | 0x7E9B1672616FF6D6629Ef2879419aaE79A9018D2 || ショートタイムロックの執行管理者 | 0x64c7d40c07EFAbec2AafdC243bF59eaF2195c6dc ||ロングタイムロックの執行管理者 | 0xEcaE9BF44A21d00E2350a42127A377Bf5856d84B || Merkle-Pauserタイムロックの執行管理者 | 0xd98e7A71BacB6F11438A8271dDB2EFd7f9361F52 || Starkwareの優先タイムロックの執行管理者 | 0xa306989BA6BcacdECCf3C0614FfF2B8C668e3CaE || 報酬基金 | 0x639192D54431F8c816368D3FB4107Bc168d0E871 || 報酬基金ブリッジ | 0x8d0051943D4c72aF12D638c6b7253C71929A910A | | コミュニティ基金 | 0xE710CEd57456D3A16152c32835B5FB4E72D9eA5b || コミュニティ基金ブリッジ | 0x5D8541e3078BE7c2D773185aD8C8b9ED5105E08c | | セーフティモジュール | 0x65f7BA4Ec257AF7c55fd5854E5f6356bBd0fb8EC || ガバナンス戦略V2 | 0xc2f5F3505910Da80F0592a3Cc023881C50b16505 || 報酬基金ベスター | 0xb9431E19B29B952d9358025f680077C3Fd37292f || コミュニティ基金ベスター | 0x08a90Fe0741B7DeF03fB290cc7B273F1855767D8 || Merkleディストリビューター | 0x01d3348601968aB85b4bb028979006eac235a588 || Chainlinkアダプター | 0x99B0599952a4FD2d1A1561Fa4C010827EaD30354 || 流動性ステーキング | 0x5Aa653A076c1dbB47cec8C1B4d152444CAD91941 || 請求プロキシ | 0x0fd829C3365A225FB9226e75c97c3A114bD3199e || StarkExヘルパーガバナー | 0x0db9b3F7Dd83e29C9bece8E5e1089bA4369E694a || StarkExリムーバーガバナーV2 | 0xFCAac0F14deA11eDe11Afcb875f29130e1ad5ec0 || 報酬基金のプロキシ管理者 | 0x40D6992cbd03E0DC1c2DE9606D29Cb245E737a5d || コミュニティ基金のプロキシ管理者 | 0x9d51599A6b10f562619D8ef2EFDcA1B68aE80D03 || セーフティモジュールのプロキシ管理者 | 0x6aaD0BCfbD91963Cf2c8FB042091fd411FB05b3C || Merkleディストリビューターのプロキシ管理者 | 0x6C5cd3aD7A16Ae207D221908E6b997d9B0DcD7b0 | | 流動性ステーキングプロキシ管理者 | 0xAc5D8bCD13da463bea96c75f9085c4e40037F790 || StarkProxy [0] | 0x0b2B08AC98a1568A34208121c26F4F41a9e0FbB6 || StarkProxy [1] | 0x3e6E9EFb0A677a24F47093a22044dc5451A028cF || StarkProxy [2] | 0xCB7fa3a2F47b62293Cc2E1a4C7752fC72E49FCe2 || StarkProxy [3] | 0x16BEC2D9A010e7D8b2D576d17893C52Ddbfe4C06 | | StarkProxy [4] | 0x531F3BE462F10386D01FBeD7fAD1d20A61Ce7874 || StarkProxyのプロキシ管理者 [0] | 0xE16718eace44e0CB06b9cd164490A69A6425D1e3 || StarkProxyのプロキシ管理者 [1] | 0x78e899e576C3565C3219dbC9Ea5042A9DBed36d3 || StarkProxyのプロキシ管理者 [2] | 0x15774D4555fEfD57C9Fc8b11C8beba993eafcc13 || StarkProxyのプロキシ管理者 [3] | 0x4d9460e5C958f46a1Fe129954A069a37972f16EA || StarkProxyのプロキシ管理者 [4] | 0xfa45DCDbEc82C94082d283B62506320DB8632054 |

オープンソースコードおよび監査済みコントラクト

コアガバナンスコントラクト

DydxToken

DydxTokenコントラクトはAaveにインスパイアされました。dYdXチームによってマイナーな変更が行われました。

ABI

ラップイーサリアムDydxToken

ラップイーサリアムDydxTokenコントラクトは、DydxTokenのラップバージョンです。 ユーザーは、wethDYDXスマートコントラクトとインタラクションして、wethDYDXを取得できます。

ABI

DydxGovernor

DydxGovernorコントラクトはAaveにインスパイアされました。dYdXによってマイナーな変更が行われました。

ガバナンス戦略V2

ABI

実行管理者

実行管理者コントラクトはAaveにインスパイアされました。dYdXによってマイナーな変更が行われました。

ABI

ABI

ABI

ABI

DYDXのインセンティブコントラクト

Merkleディストリビュータ

Merkleディストリビューターのスマートコントラクトは、Merkleの残高ツリーに従って$ethDYDXトークン報酬を配布します。各ユーザーの累積報酬残高によりツリーを定期的に更新できることで、時間の経過に伴い新しい報酬をユーザーに提供できます。

提案されているMerkleルートをオラクルコントラクトによって返される最新の値に設定することで、更新が実行されます。提案されているMerkleルートは、待機期間が経過した後でアクティブにできます。待機期間中、提案されたルートが間違っているか悪意がある場合、dYdXガバナンスにはMerkleルートを凍結する機会があります。ShortTimelockExecutorでは、ルートの更新の一時停止を解除することができます。

ABI

安全モジュール

セーフティモジュールは、プロトコルのセキュリティに向けて$ethDYDXをステークするユーザーに$ethDYDX報酬を提供するステーキングプールです。

流動性モジュール

流動性モジュールは、ステーキングおよび借入のためのスマートコントラクトの集合体であり、dYdXレイヤ2取引所でのマーケット作成目的の$USDC資金の割り当てを促進します。

ステーカーは、$USDCをステーキングすることで$ethDYDX報酬を獲得します。 ステークされた資金はレピュテーションに基づき、無担保で事前に承認された特定のパートナーによって借り入れされる場合があります。資金はL2取引所でのみ使用できます。これはStarkExパーペチュアル取引所コントラクトと相互に適用されるStarkProxyコントラクトを通じて実施されます。

StarkProxy

資金調達コントラクト

ショートタイムロックでは、ガバナンスで承認されたアクションのみ実行できます。

2つの基金ベスターと基金コントラクトがあります。

各基金はガバナンスにより管理されているため、資金を任意のアドレスに移動したり、任意ののアドレスがいずれかの基金にある資金を使用することを承認したりすることができます。たとえば、ガバナンスは報酬プログラムにトークンの承認制限を設定する必要があります。

各基金ベスターは、対応する基金に関して5年間(2021年8月3日~2026年8月3日)にわたりリニアにトークンを保有します。ベスターコントラクトは配備時に不変であるため、dYdXコミュニティはベスターコントラクトの受取人を以下のアドレスに設定することに投票しました。

周辺コントラクト

Chainlink Oracle-Powered Rewards(取引および流動性プロバイダーに関する報酬)

このシステムの目標は、オラクル署名者の分散型ネットワークを通じて、dYdXレイヤ2取引所を利用してトレーダーが獲得したethDYDXトークンの報酬を計算および公開することです。配布プログラムの開始以来、各ユーザーが獲得した累積報酬を含む報酬はMerkleツリーに保存されます。各エポック、MerkleルートはMerkleDistributorV1スマートコントラクトで更新され、前回のエポックで獲得した報酬が反映されます。

当社はChainlinkオラクルシステムと統合しており、報酬データをオンチェーンで掲載します。IPNSを使用して、ChainlinkがMerkleツリーの構築に使用する取引データを掲載します。IPNSを使用することで、以前のエポックと同じIPNSリンクの下に最新のエポックの取引データを掲載できます。つまり、データの場所は変更されません。

生の取引データから適切な報酬を計算した後、ChainlinkはMerkleの報酬ツリーをIPFSに掲載します。Merkleツリーのデータを有するIPFS CIDは、そのエポックの報酬に関するMerkleツリーと共にMerkleディストリビューターコントラクトに保存されます。

以下のフローチャートは、Chainlink Oracle-Powered Rewardsのシステムアーキテクチャを示しています。

その他の資産

エポック6で、dYdXコミュニティはで投票し、マーケットメーカーのLP報酬ボリュームのしきい値を1%から0.25%に引き下げることを決定しました。エポック2でLP報酬のしきい値を5%から1%に引き下げており、それと同じプロセスでエポック6での引き下げが行われます(1%から0.25%へ)。LP報酬ボリュームのしきい値を5%から1%に引き下げるステップ・バイ・ステップの概要は以下のとおりです。

コミュニティの過半数(投票数399、$ethDYDXの86%)は、流動性プロバイダー報酬が得られるボリュームのしきい値を5%から1%に引き下げるに投票しました。マーケットメーカーが流動性プロバイダー報酬を得られるボリュームのしきい値を5%から1%に引き下げるは、DeFiance CapitalのJacob Goh氏(jteam0x)によって提出されました。エポック2のしきい値である1%を満たしたマーケットメーカーは、エポック3で流動性プロバイダー報酬を獲得する資格がありました。この提案ではオンチェーンのスマートコントラクトの変更は必要ありませんでした。

流動性プロバイダーの一環として、このプロトコルのマーケットメイクを行う流動性プロバイダーに対してエポック(28日間)ごとに115万685$ethDYDXが分配されます。報酬は、稼働時間、両方向のデプス、ビッドアスクスプレッド、およびサポートされているマーケット数の組み合わせに基づく報酬公式に基づいて分配されます。流動性プロバイダーがこの報酬プログラムの対象になるためには、前のエポックにおいて総メーカーボリュームの最小限度割合を提供する必要があります。

dYdXのコミュニティには、流動性プロバイダー報酬のしきい値に関して「即時かつ取り消し不能なコントロール」が存在します。コミュニティをコントロールするパラメータの完全なリストはをご覧ください。

次に、dYdXのガバナンスが実際にどのように機能するかについてステップ・バイ・ステップの概要を説明します。dYdXのガバナンスプロセスの詳細についてはをご覧ください。

dYdXのガバナンスプロセスは、によって推進されます。コミュニティメンバーはディスカッションスレッドにポストやコメントを行うことで、オフチェーンの大まかなコンセンサスを達成します。フォーラムディスカッションおよびDRCの作成の詳細についてはをご覧ください。\注 - 運営subDAOは、が決定した後、新しいフォーラムとしてを立ち上げました。このガイドでは以前のDRCのディスカッションに関する言及の一部において引き続きコモンウェルスを対象にしていますが、あらゆる新しいディスカッションは新たに立ち上げられたフォーラムで行う必要があります。\

Three Arrows CapitalのSu Zhu氏(zhusu)は、流動性プロバイダー報酬のしきい値を引き下げるためのを作成しました。WintermuteのEvgeny氏、KronosのBen氏、SixtantのJosh氏など、さまざまなコミュニティメンバーがディスカッションに参加し、貴重なフィードバックを提供しています。

メールアカウントでDiscourseに登録し、からdYdXコミュニティに参加してください。

DRCを作成する場合、からテンプレートに従ってください。「」の「DRCの作成」で概説しているように、DRCには少なくとも以下の内容を含めなければなりません:

コミュニティが大まかなコンセンサスを達成した後、10Kの提案権を有するコミュニティメンバーはのDRCの投票(オフチェーン)を作成できます。により、提案の作成および維持ができるようになります。スナップショットは、ユーザーがオフチェーンでセンチメントを表示できるようにする単純な投票インターフェースです。スナップショットでの投票は、投票に使用したアドレスが保有または委任しガバナンストークンの数に基づいて加重されます。スナップショット投票を行うコミュニティメンバーは、DRC、投票システム、投票開始日、投票終了日、およびスナップショットブロック番号の詳細を提供する必要があります。投票期間は5日間とし、(_13.2秒のブロックタイムに基づいて)_1日の投票遅延を経て投票を開始するものとします。投票遅延により、dYdXのコミュニティメンバーにはDRCの詳細な学習、$ethDYDXの購入、ガバナンストークンの投票権を委任するための時間が付与されます。ガバナンストークンを保有しているか、スナップショットブロック番号以前に投票権を委任されていたコミュニティメンバーは、投票権を有しています。スナップショット投票の詳細についてはをご覧ください。

- Three Arrows CapitalのSu Zhu氏、

- BitTradingのSam氏、

- Kronos/WOO NetworkのBen氏、

- WintermuteのEvgeny氏。

イーサリアムウォレットでスナップショットに登録し、からdYdXの提案をフォローしてください。

dYdXスナップショットページ - 「新しい提案の作成」ボタン
ここにスナップショットの詳細を記載し、DRCへのリンクを必ず添えてください。

(1)スナップショット投票の結果、オフチェーンパラメーター(トレード報酬やLP報酬公式の変更など)が更新される場合、および(2)コミュニティメンバーがオンチェーンスマートコントラクトの変更提案を提出したい場合、DIPを作成する必要があります。オンチェーンでのスマートコントラクトの更新が必要でない場合、スナップショット投票の結果はオフチェーンDIPで定式化され、dYdX FoundationのGithubのPending-DIPブランチにプルリクエストを通じて提出される必要があります。DIPはスナップショット投票の結果を反映する必要があります。DIPは、からご覧いただけるテンプレートに含まれる情報を指定する必要があります。

こちらのケースでは、は@Jteamdcによって執筆されました。

DIP 2のドラフト提案が完了したとき、@Jteamdcは使用中のブランチからdYdX FoundationのPending-DIPブランチに対して、****を作成しました。dYdX Foundationが提案を確認し、署名した後、Pending-DIPの変更はマスターブランチに統合されました。

DIPはスナップショットでのオフチェーンDIP投票の結果に基づく必要があり、提案ごとに最大10アクションまで、1つまたは複数のアクションで構成できます。アクションとは提案で指定された変更を指します。詳細については「」で確認できます。

Githubの口座に登録: 。

からdYdXのレポページに移動し、Github口座の下でレポをフォークします。

フォークされたDIPレポで、DIPの内容を含むディレクトリに移動します: 。

dipsフォルダを選択: 。

のdipsフォルダには、DIPテンプレートをフォローしているこれまでの提案のディレクトリが含まれています。

プロポーザルの記述を開始する前に、フォークされたブランチが最新バージョンのマスターブランチに対応していることを確認してください。DIPレポの旧バージョンを使用している場合、フォークされたバージョンが最新の変更に対応していることを確認してください。フォークされたバージョンのリベーシングについては、こちらから手順を確認できます:

を提案の情報を使用して編集します。DIPレポをフォークしていない場合、管理者ではないため、編集アイコンを選択するとマスターからのレポが自動的にフォークされます。

をフォローし、content/dips/ ディレクトリのリポジトリのフォークにDIPを追加します。以下のDIPステータスのネーミングコンベンションに従ってください。

すべてのコンテンツが正しいことを確認した後、dYdX FoundationのPending-DIPブランチに対して、作業ブランチからのプルリクエストを作成します。外部のパーティーがマスターブランチへのマージを希望する場合、IPFSジョブが失敗するため、dYdX Foundationのマスターブランチに対するこのプルリクエストは提出しないでください。一例として、のプルリクエストを使用してください。

マージ前にジョブが自動的に実行され、IPFSにDIPをアップロードします。DIPのアップロードはこちらから確認できます:

DIPは、//dips/の下に追加されます。

11月1日、セーフティモジュールのステーキングプールの機能を復元するため、ParadigmのDan Robinson氏によってオンチェーンが作成されました。コミュニティの過半数(投票者数251、約142M ethDYDX)は、セーフティモジュールの機能の復元に賛成しました。10日間の投票期間の後、コミュニティメンバーがキューを呼び出し、提案を7日間のタイムロック遅延に移動させるために3日間程度を要しました。11月20日、セーフティモジュールは復元され、クリーンな状態にリセットされました。

dYdXのセーフティモジュールは、dYdXプロトコルのバックストップに使用できる分散型資金プールをブートストラップするように設計されたステーキングコントラクトです。ユーザーは$ethDYDXをセーフティプールにステーキングし、$ステーキングDYDX(1:1)を受け取ります。$ステーキングDYDXは、$ethDYDXと同じ投票権および提案権を有するERC-20として移転されるトークン化したポジションです。ショートフォールイベントの場合、ステーキングされた$ethDYDXをスラッシュし、損失を軽減する必要があります。セーフティステーキングプールでethDYDXをステーキングするユーザーに対して、$ethDYDXのトークンサプライからその2.5%(2,500万$ethDYDX)が分配されます。セーフティステーキングプールの詳細についてはをご覧ください。

の一環として、ステーカーにエポック(28日間)ごとに383,562$ethDYDXが分配されます。報酬はステーカーに秒単位で分配されます。

dYdXのコミュニティには、セーフティモジュールのスマートコントラクトパラメータに関して「即時かつ取り消し不能なコントロール」が存在します。コミュニティをコントロールするパラメータの完全なリストはをご覧ください。

はセーフティモジュールの復元機能を提案しました。これは影響を受けたアドレスが資金を回復し、補償としてステーキングされたトークンの10%相当を受け取るというものでした。コミュニティ感情はを強く支持していましたが、長いタイムロック投票の可決に必要な100M $ethDYDXの最小投票者数を満たせなかったため、この提案は否決されました。その結果、DeFiance Capitalのジェイコブ・ゴー(jteam0x)はを作成し、影響を受けたアドレスに対し、逃した報酬分と迷惑料を補償しました。には、ステーキングされたトークンのリカバリーコントラクトのデプロイおよび影響を受けたアドレスに対するRewards Treasuryからの10%補償が含まれていました。DIPは、あまり厳格でないショートタイムロックのガバナンスパラメータによって管理されました。

dYdXのガバナンスプロセス - 。

セーフティモジュールのインシデントレポート - 。

オフチェーンのフォーラムディスカッション - 。

オフチェーンDRC -

オフチェーンDRCのスナップショット投票 -

Githubで提案されたDIP** - **

dYdXプロトコルのガバナンスに影響を与えるオンチェーンDIPのドラフティングでは、スマートコントラクトの変更の実装のための具体的なステップを概説する必要があります。コミュニティがスナップショットから大まかなコンセンサスを達成した後か、または以前に失敗したDIPの後、十分な提案権を有するコミュニティメンバーは新しいオンチェーンDIPを提出できます。提案権のしきい値、タイムロックの実行管理者、その他のガバナンスパラメータの詳細についてはをご覧ください。

この場合、はParadigmのDan Robinson氏によって執筆されました。この提案にはオンチェーンのスマートコントラクトの変更が含まれており、特定のスマートコントラクトの実装リンクも含まれていました。

READMEに含まれる提案の実装手順はこちらです:y 。

DIPの作成に必要な提案権をワンオフウォレットに委任します。から提案権を委任できます。提案権の異なるしきい値は以下のとおりで、からご覧いただけます。

Alchemyキーを作成します。Alchemyキーでは、イーサリアムとのインタラクションやスマートコントラクトのデプロイのためにイーサリアムノードを実行する必要はありません。Alchemyキーの作成ガイドはからご覧いただけます。

口座を作成した後、から設定指示に従います。

Windowsのコマンドラインからデフォルトのターミナルアプリを開くか、iTermをダウンロードします: 。

Node.jsおよびnpmのダウンロードやインストールが済んでいない場合、以下から行います: 。

Hardhatはイーサリアムソフトウェアのコンパイルおよびテストのための開発ツールです。Hardhatはこちらからインストールできます: 。

IPFSのハッシュが自動的に生成され、から入手できます。IPFSのハッシュは、ファイル名DIP-[新しいDIP #]-ipfs-hashes.jsonのdYdX Foundationのディレクトリに含まれます。

DIPはに同時にポストされました。

dYdXのガバナンスコントラクトは、0x7e9b1672616ff6d6629ef2879419aae79a9018d2: です。

DIPのデプロイはEtherscan: で確認できます。

オンチェーンでDIPが実行された時点で、 のDIPステータスは「実行済み」に更新されました。

DIPを作成するのに十分な提案権を有していることを確認します。詳細については「」をご覧ください。

アプリが作成された後、「キーを表示」をクリックしてAlchemyキー(7LOaQtguSm2kSEcFXQH88B)を入手します:

Node.jsとnpmをダウンロードおよびインストールします: 。

Hardhat: をインストールします。

ガバナンスコントラクトをチェックして、提案がオンチェーンで作成されたことを確認します: 。

DIPを以下から選ぶことで、アクティブDIPを投票することができます: 。

投票期間は提案の種類によって異なります。詳細については「」で確認できます。

Etherscanの「コントラクト」タブに移動し、「コントラクトを書く」をクリックします。ガバナンスコントラクトはをご覧ください。

「proposalId」はDIPが作成された時点で、Etherscanで確認できます: 。

Etherscanの「コントラクト」タブに移動し、「コントラクトを書く」をクリックします。ガバナンスコントラクトはをご覧ください。

dYdX Foundationは、スイスのツークに本部を置く独立した非営利財団です。dYdX Foundationの詳細については、をご覧ください。

ガバナンスコントラクトおよびステーキングプールのすべてのスマートコントラクトのソースコードは、をご覧ください。

dydx.communityでホストされているガバナンスフロントエンドのソースコードは、をご覧ください。

すべての主要な新しいスマートコントラクトは、Peckshieldによって監査されました。重要または優先度の高いセキュリティの問題は見つかりませんでした。コアガバナンスおよびトークンに関するコントラクトは、、、によって監査され、数ヶ月間メインネットで試行済みのAaveガバナンスコントラクトから派生しています。

イーサリアムベースのDYDXは、イーサリアムメインネットのにデプロイされています。

wethDYDXは、イーサリアムメインネットのにデプロイされています。

ガバナーは、イーサリアムメインネットのにデプロイされています。

ガバナンス戦略V2コントラクトは、Aaveにインスパイアされ、からアップグレードされました。

戦略はイーサリアムメインネットのにデプロイされています。

ロングタイムロックは、イーサリアムメインネットのにデプロイされています。

ショートタイムロックは、イーサリアムメインネットのにデプロイされています。

Merkleタイムロックは、イーサリアムメインネットのにデプロイされています。

Starkwareのプライオリティタイムロックは、イーサリアムメインネットのにデプロイされています。

Merkleディストリビューターのスマートコントラクトは、UniswapおよびBadgerのデザインにインスパイアされました。スマートコントラクトは、イーサリアムメインネットのにデプロイされています。

このコントラクトにより、所有者はLiquidityStakingから資金を借り、StarkPerpetualでそれらの資金を使用できます。所有者は追加資金を入金することが可能で、借入金額を超える資金は自由に出金できます。このコントラクトはStarkwareによって作成され、以前に監査およびデプロイされたコントラクトと相互に適用されます。

TreasuryVester(基金ベスター)コントラクトは、にインスパイアされました。

とはインセンティブコントラクト報酬のためのものです。

とは「一般目的」の基金資金を保有するためのものです。

において、dYdXコミュニティはとスマートコントラクトの活用に投票し、とで利用可能なethDYDXのdYdXチェーンへの移行を可能にしました。

は0x0000000000000000000000000000000000000001に帰属します。

は0x0000000000000000000000000000000000000002に帰属します。

dYdX Foundationのブランド資産は、をご覧ください****

タイムロック
スナップショット
スナップショット
オフチェーンDIP
報酬プログラム
こちら
こちら
ガバナンスフォーラム
こちら
コミュニティ投票によりコモンウェルスからDiscourseへの移行
https://dydx.forum/
Discourse
オフチェーンのフォーラムディスカッション
こちら
こちら
提案のライフサイクル
スナップショット
提案権
こちら
0.5%
1%
2.5%
5%
こちら
こちら
DIP
のプルリクエスト
DIPの作成
https://github.com/signup
こちら
https://github.com/[user_name]/dip/tree/master/content/dips
https://github.com/[user_name]/dip/tree/master/content
こちら
https://stackoverflow.com/questions/7929369/how-to-rebase-local-branch-onto-remote-master
DIPテンプレート
テンプレート
こちら
https://github.com/dydxfoundation/dip/pull/9/checks
dip
content
DIP
こちら
セーフティステーキングプール報酬
こちら
DIP 1
DIP 1 - セーフティモジュールの復旧とステーカーの回復
DIP 4 - セーフティモジュール・ステーカーの払い戻しと補償
DIP 4
https://docs.dydx.community/dydx-governance/voting-and-governance/dip-posal-lifecycle
https://dydx.foundation/blog/en/outage-1
https://commonwealth.im/dydx/posal/discussion/1743-safety-staking-pool-on-pause
https://commonwealth.im/dydx/proposal/discussion/1770-drc-incident-report-of-the-safety-module-outage-proposed-solution
https://snapshot.org/#/dydxgov.eth/proposal/QmbJ5QxHr1pyShKTDaF5DjAr6vxQn8DVxshH2fyWgzDCBn
https://github.com/dydxfoundation/dip/blob/master/content/dips/DIP-3.md
こちら
DIP
https://github.com/dydxfoundation/governance-contracts/tree/master/safet
こちら
こちら
こちら
こちら
https://iterm2.com/
https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
https://hardhat.org/tutorial/setsing-up-the-environment.html
こちら
https://dydx.community/dashboard
https://etherscan.io/txs?a=0x7e9b1672616ff6d6629ef2879419aaae79a9018d2&p=10
https://etherscan.io/tx/0x5f2472e7dfcbf50628d29c94f97a072f3c19177f66cde4cca9f376c7934af5ad
https://dydx.community/dashboard/proposal/3
DIPの作成
https://eth-mainnet.alchemyapi.io/v2/7LOaQtgusm2kSEcFXQH88B-EN_K7t_ul
https://docs.npmjs.com/downloading-and-installing-node-js-and-npm
https://hardhat.org/tutorial/setsing-up-the-environment.html
https://etherscan.io/txs?a=0x7e9b1672616ff6d6629ef2879419aaae79a9018d2&p=10
https://dydx.community/dashboard
DIPの作成
こちら
https://etherscan.io/tx/0x5f2472e7dfcbf50628d29c94f97a072f3c19177f66cde4cca9f376c7934af5ad
こちら
dydx.foundation
フォーラムディスカッション(オフチェーン)
DRCの作成(オフチェーン)
スナップショット投票の作成(オフチェーン)
スナップショット投票への投票
DIPの作成(オフチェーン)
DIPの作成(オンチェーン)
DIPへの投票(オンチェーン)
DIPのキューイング(オンチェーン)
DIPの実行(オンチェーン)
key_pair_with_y_coordinate = client.onboarding.derive_stark_key(
  # Optional if eth_private_key or web3.eth.defaultAccount was provided.
  ethereum_address='ethereumAddress',
)
api_key_response = client.api_keys.create_api_key(
# Optional if eth_private_key or web3.eth.defaultAccount was provided.
ethereum_address='0x0123...',
)
api_keys = client.private.get_api_keys()
[{"inputs":[{"internalType":"address","name":"distributor","type":"address"},{"internalType":"uint256","name":"transfersRestrictedBefore","type":"uint256"},{"internalType":"uint256","name":"transferRestrictionLiftedNoLaterThan","type":"uint256"},{"internalType":"uint256","name":"mintingRestrictedBefore","type":"uint256"},{"internalType":"uint256","name":"mintMaxPercent","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"delegatee","type":"address"},{"indexed":false,"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"DelegatedPowerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isAllowed","type":"bool"}],"name":"TransferAllowlistUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"transfersRestrictedBefore","type":"uint256"}],"name":"TransfersRestrictedBeforeUpdated","type":"event"},{"inputs":[],"name":"DELEGATE_BY_TYPE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DELEGATE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EIP712_DOMAIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EIP712_VERSION","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_MAX_PERCENT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINT_MIN_INTERVAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_RESTRICTION_LIFTED_NO_LATER_THAN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mintingRestrictedBefore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_propositionPowerDelegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_propositionPowerSnapshots","outputs":[{"internalType":"uint128","name":"blockNumber","type":"uint128"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_propositionPowerSnapshotsCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_tokenTransferAllowlist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"_totalSupplySnapshots","outputs":[{"internalType":"uint128","name":"blockNumber","type":"uint128"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupplySnapshotsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transfersRestrictedBefore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_votingDelegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_votingSnapshots","outputs":[{"internalType":"uint128","name":"blockNumber","type":"uint128"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_votingSnapshotsCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addressesToAdd","type":"address[]"}],"name":"addToTokenTransferAllowlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"delegateByType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateByTypeBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"getDelegateeByType","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"getPowerAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"getPowerCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addressesToRemove","type":"address[]"}],"name":"removeFromTokenTransferAllowlist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"transfersRestrictedBefore","type":"uint256"}],"name":"updateTransfersRestrictedBefore","outputs":[],"stateMutability":"nonpayable","type":"function"}]
[{"inputs":[{"internalType":"contract ERC20","name":"tokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"bytes","name":"accAddress","type":"bytes"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"}],"name":"Bridge","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"delegator","type":"address"},{"indexed":true,"internalType":"address","name":"delegatee","type":"address"},{"indexed":false,"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"DelegateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"DelegatedPowerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DELEGATE_BY_TYPE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DELEGATE_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DYDX_TOKEN","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EIP712_DOMAIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EIP712_VERSION","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_nextAvailableBridgeId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_propositionPowerDelegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_propositionPowerSnapshots","outputs":[{"internalType":"uint128","name":"blockNumber","type":"uint128"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_propositionPowerSnapshotsCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_votingDelegates","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"_votingSnapshots","outputs":[{"internalType":"uint128","name":"blockNumber","type":"uint128"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_votingSnapshotsCounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"accAddress","type":"bytes"},{"internalType":"bytes","name":"memo","type":"bytes"}],"name":"bridge","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"}],"name":"delegate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"delegateByType","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegatee","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"expiry","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"delegateByTypeBySig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"delegator","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"getDelegateeByType","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"getPowerAtBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"enum IGovernancePowerDelegationERC20.DelegationType","name":"delegationType","type":"uint8"}],"name":"getPowerCurrent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
[{"inputs":[{"internalType":"address","name":"dydxToken","type":"address"},{"internalType":"address","name":"stakedDydxToken","type":"address"},{"internalType":"address","name":"wrappedEthereumDydxToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"DYDX_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKED_DYDX_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WRAPPED_ETHEREUM_DYDX_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getPropositionPowerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getTotalPropositionSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getTotalVotingSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getVotingPowerAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]
[{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"minimumDelay","type":"uint256"},{"internalType":"uint256","name":"maximumDelay","type":"uint256"},{"internalType":"uint256","name":"propositionThreshold","type":"uint256"},{"internalType":"uint256","name":"voteDuration","type":"uint256"},{"internalType":"uint256","name":"voteDifferential","type":"uint256"},{"internalType":"uint256","name":"minimumQuorum","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"CancelledAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"},{"indexed":false,"internalType":"bytes","name":"resultData","type":"bytes"}],"name":"ExecutedAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"QueuedAction","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_QUORUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_HUNDRED_WITH_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSITION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTE_DIFFERENTIAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"cancelTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getMinimumPropositionPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"votingSupply","type":"uint256"}],"name":"getMinimumVotingPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"actionHash","type":"bytes32"}],"name":"isActionQueued","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalOverGracePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalPassed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"isPropositionPowerEnough","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isQuorumValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isVoteDifferentialValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateCreatorOfProposal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateProposalCancellation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
[{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"minimumDelay","type":"uint256"},{"internalType":"uint256","name":"maximumDelay","type":"uint256"},{"internalType":"uint256","name":"propositionThreshold","type":"uint256"},{"internalType":"uint256","name":"voteDuration","type":"uint256"},{"internalType":"uint256","name":"voteDifferential","type":"uint256"},{"internalType":"uint256","name":"minimumQuorum","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"CancelledAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"},{"indexed":false,"internalType":"bytes","name":"resultData","type":"bytes"}],"name":"ExecutedAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"QueuedAction","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_QUORUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_HUNDRED_WITH_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSITION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTE_DIFFERENTIAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"cancelTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getMinimumPropositionPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"votingSupply","type":"uint256"}],"name":"getMinimumVotingPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"actionHash","type":"bytes32"}],"name":"isActionQueued","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalOverGracePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalPassed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"isPropositionPowerEnough","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isQuorumValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isVoteDifferentialValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateCreatorOfProposal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateProposalCancellation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
[{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"minimumDelay","type":"uint256"},{"internalType":"uint256","name":"maximumDelay","type":"uint256"},{"internalType":"uint256","name":"propositionThreshold","type":"uint256"},{"internalType":"uint256","name":"voteDuration","type":"uint256"},{"internalType":"uint256","name":"voteDifferential","type":"uint256"},{"internalType":"uint256","name":"minimumQuorum","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"CancelledAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"},{"indexed":false,"internalType":"bytes","name":"resultData","type":"bytes"}],"name":"ExecutedAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"QueuedAction","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_QUORUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_HUNDRED_WITH_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSITION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTE_DIFFERENTIAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"cancelTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getMinimumPropositionPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"votingSupply","type":"uint256"}],"name":"getMinimumVotingPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"actionHash","type":"bytes32"}],"name":"isActionQueued","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalOverGracePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalPassed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"isPropositionPowerEnough","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isQuorumValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isVoteDifferentialValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateCreatorOfProposal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateProposalCancellation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
[{"inputs":[{"internalType":"address","name":"admin","type":"address"},{"internalType":"uint256","name":"delay","type":"uint256"},{"internalType":"uint256","name":"gracePeriod","type":"uint256"},{"internalType":"uint256","name":"minimumDelay","type":"uint256"},{"internalType":"uint256","name":"maximumDelay","type":"uint256"},{"internalType":"uint256","name":"priorityPeriod","type":"uint256"},{"internalType":"uint256","name":"propositionThreshold","type":"uint256"},{"internalType":"uint256","name":"voteDuration","type":"uint256"},{"internalType":"uint256","name":"voteDifferential","type":"uint256"},{"internalType":"uint256","name":"minimumQuorum","type":"uint256"},{"internalType":"address","name":"priorityExecutor","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"CancelledAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"},{"indexed":false,"internalType":"bytes","name":"resultData","type":"bytes"}],"name":"ExecutedAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"NewAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"delay","type":"uint256"}],"name":"NewDelay","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"NewPendingAdmin","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"priorityPeriod","type":"uint256"}],"name":"NewPriorityPeriod","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isPriorityController","type":"bool"}],"name":"PriorityControllerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"target","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"signature","type":"string"},{"indexed":false,"internalType":"bytes","name":"data","type":"bytes"},{"indexed":false,"internalType":"uint256","name":"executionTime","type":"uint256"},{"indexed":false,"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"QueuedAction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"indexed":false,"internalType":"bool","name":"isUnlockedForExecution","type":"bool"}],"name":"UpdatedActionPriorityStatus","type":"event"},{"inputs":[],"name":"GRACE_PERIOD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAXIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MINIMUM_QUORUM","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ONE_HUNDRED_WITH_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PROPOSITION_THRESHOLD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTE_DIFFERENTIAL","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VOTING_DURATION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"cancelTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"executeTransaction","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"getMinimumPropositionPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"votingSupply","type":"uint256"}],"name":"getMinimumVotingPowerNeeded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPriorityPeriod","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"actionHash","type":"bytes32"}],"name":"hasPriorityStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"actionHash","type":"bytes32"}],"name":"isActionQueued","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isPriorityController","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalOverGracePeriod","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isProposalPassed","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"isPropositionPowerEnough","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isQuorumValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"uint256","name":"proposalId","type":"uint256"}],"name":"isVoteDifferentialValid","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"signature","type":"string"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"executionTime","type":"uint256"},{"internalType":"bool","name":"withDelegatecall","type":"bool"}],"name":"queueTransaction","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"delay","type":"uint256"}],"name":"setDelay","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newPendingAdmin","type":"address"}],"name":"setPendingAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"priorityPeriod","type":"uint256"}],"name":"setPriorityPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"actionHash","type":"bytes32"},{"internalType":"bool","name":"isUnlockedForExecution","type":"bool"}],"name":"setTransactionPriorityStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isPriorityController","type":"bool"}],"name":"updatePriorityController","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateCreatorOfProposal","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IDydxGovernor","name":"governance","type":"address"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"blockNumber","type":"uint256"}],"name":"validateProposalCancellation","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"address","name":"_admin","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_logic","type":"address"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"initialize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}]
https://github.com/dydxfoundation/governance-contracts
こちら
CertiK
Certora
Peckshield
0x92D6C1e31e14520e676a687F0a93788B716BEff5
0x46b2deae6eff3011008ea27ea36b7c27255ddfa9
0x7E9B1672616FF6D6629Ef2879419aaE79A9018D2
ガバナンス戦略
0xc2f5F3505910Da80F0592a3Cc023881C50b16505
0xEcaE9BF44A21d00E2350a42127A377Bf5856d84B
0xEcaE9BF44A21d00E2350a42127A377Bf5856d84B
0xd98e7A71BacB6F11438A8271dDB2EFd7f9361F52
0xa306989BA6BcacdECCf3C0614FfF2B8C668e3CaE
0x01d3348601968aB85b4bb028979006eac235a588
StarkPerpetual
Uniswap
報酬基金ベスター
報酬基金
コミュニティ基金ベスター
コミュニティ基金
DIP29
報酬基金ブリッジ
コミュニティ基金ブリッジ
コミュニティ基金
報酬基金
報酬基金ベスター
コミュニティ基金ベスター
こちら
DIPのステージ
投票権を行使して投票する
投票権および提案権の委任
スマートコントラクト・アーキテクチャ
最初のタイムロックでのパラメータ
https://forums.dydx.community/proposal/discussion/1805-reduce-market-maker-incentives/
https://forums.dydx.community/proposal/discussion/1805-reduce-market-maker-incentives/
https://snapshot.org/#/dydxgov.eth/proposal/QmXtS7CGVX7C5v2JdcJpsqWAeZrStQcogSQpP6zzhzwLmN
https://snapshot.org/#/dydxgov.eth
https://snapshot.org/#/dydxgov.eth/proposal/QmXtS7CGVX7C5v2JdcJpsqWAeZrStQcogSQpP6zzhzwLmN
https://github.com/jteamdc/dip/blob/master/content/dips/DIP-2.md
https://github.com/dydxfoundation/dip/pulls
https://github.com/dydxfoundation/dip
https://github.com/dydxfoundation/dip/tree/master/content/dips
https://github.com/dydxfoundation/DIP/blob/master/DIP-X.md
https://github.com/dydxfoundation/dip/pull/9
https://github.com/dydxfoundation/dip/blob/master/content/dips/DIP-3.md
https://github.com/dydxfoundation/governance-contracts/tree/master/contracts/safety
https://github.com/dydxfoundation/governance-contracts/tree/master/contracts/safety
https://github.com/dydxfoundation/governance-contracts/tree/master/contracts/safety
https://docs.alchemy.com/alchemy/introduction/getting-started
https://docs.alchemy.com/alchemy/introduction/getting-started
https://github.com/dydxfoundation/dip/tree/master/content/ipfs-dips
https://github.com/dydxfoundation/dip/blob/master/content/ipfs-dips/DIP-3-Ipfs-hashes.json
https://github.com/dydxfoundation/governance-contracts/blob/master/contracts/safety/v2/SafetyModuleV2.sol
https://dydx.community/dashboard
https://dydx.community/dashboard
https://etherscan.io/tx/0x5f2472e7dfcbf50628d29c94f97a072f3c19177f66cde4cca9f376c7934af5ad
https://etherscan.io/tx/0xc3d0ace92be4ac3da40dc17f45a573d4dbd83d31f7a95733071de883ded67a4f
https://etherscan.io/tx/0x3402372aa549d2270a6b5d4f84884ae2bfec6922fc808703b47d53b27d288c81
https://etherscan.io/tx/0xfd332147899fd3ef1db62f262ffae92bbd7d18a5ed4e142eb0407a173dbf0453
https://dashboard.alchemyapi.io/
https://dashboard.alchemyapi.io/apps/xogmjmlex8tlmr95
https://etherscan.io/address/0x7e9b1672616ff6d6629ef2879419aae79a9018d2#writeContract
https://etherscan.io/tx/0x5f2472e7dfcbf50628d29c94f97a072f3c19177f66cde4cca9f376c7934af5ad
https://etherscan.io/tx/0x5f2472e7dfcbf50628d29c94f97a072f3c19177f66cde4cca9f376c7934af5ad
https://etherscan.io/tx/0x5f2472e7dfcbf50628d29c94f97a072f3c19177f66cde4cca9f376c7934af5ad
https://etherscan.io/address/0x7e9b1672616ff6d6629ef2879419aae79a9018d2#writeContract
https://etherscan.io/address/0x7e9b1672616ff6d6629ef2879419aae79a9018d2#writeContract
赤い点線はコントラクトがアップグレード可能であることを示しています
赤い点線はコントラクトがアップグレード可能であることを示しています
赤い点線はコントラクトがアップグレード可能であることを示しています
赤い点線はコントラクトがアップグレード可能であることを示しています
流動性モジュールの図
赤い点線はコントラクトがアップグレード可能であることを示しています