Defiプロジェクトを支援するための7つの実用的な契約開発のコツ

受託開発のコツ

最近、分散型取引所の開発チュートリアルを執筆している際に、いくつかの有名なプロジェクトのコード実装を参考にし、興味深い契約開発のテクニックを多く学びました。初めてDefi契約の開発に挑戦する初心者として、これらのテクニックは私にとって非常に刺激的であり、契約開発を学びたい他の友人にも役立つと信じています。

! Web3ビギナーシリーズ:Uniswapコードから学んだ契約開発のヒント

予測可能な契約アドレス

通常、デプロイされたコントラクトのアドレスはランダムに見えますが、それはnonceに関連しています。しかし、特定のシナリオでは、トランザクションの相対情報を通じてコントラクトのアドレスを推測する必要があります。これは、トランザクションの権限を判断したり、プールのアドレスを取得したりする際に非常に役立ちます。

1つの方法は、CREATE2方式を使用してコントラクトを作成し、saltパラメータを追加することで生成されるアドレスを予測可能にすることです。新しいアドレスの生成ロジックは次のとおりです: hash("0xFF", 作成者アドレス, salt, initcode)。

! Web3ビギナーシリーズ:Uniswapコードから学んだ契約開発のヒント

コールバック関数の巧妙な使い方

特定のシナリオでは、契約Aが契約Bのメソッドを呼び出し、BがAのメソッドをコールバックすることが非常に便利です。

例えば、取引時に、pool契約のswapメソッドはswapCallbackを呼び出し、実際に必要なTokenの数量を渡します。呼び出し元はコールバック内でTokenをpoolに転送し、これによりswapメソッドの安全性と完全性が確保され、煩雑な変数の記録は不要になります。

異常を用いた情報の伝達

シミュレーショントレードで必要なトークンを予測する際、コールバック関数内で特別なエラーをスローし、そのエラーをキャッチして必要な情報を解析することができます。これにより、予測のためにスワップメソッドを特別に改造する必要がなく、ロジックがよりシンプルになります。

! Web3ビギナーシリーズ:Uniswapコードから学んだ契約開発のヒント

大きな数値は精度の問題を解決します

計算に関わるシーンでは、除算操作による精度の損失を避けるために、まず96ビット左にシフトし(は2^96)を掛けることに相当し、その後に除算を行うことができます。こうすることで、オーバーフローせずに精度を保証できます。

シェア方式での収益計算

LP手数料収益を記録する必要があるシーンでは、毎回の取引ごとに各LPを記録することはできず、これには大量のGasが消費されます。株式の配当のような方法を採用し、総手数料と各単位流動性に配分される手数料のみを記録し、LPが引き出す際に保有している流動性に基づいて計算することができます。

! Web3ビギナーシリーズ:Uniswapコードから学んだ契約開発のヒント

オフチェーンストレージの補助情報

すべての情報がブロックチェーンに記録される必要はありません。取引プールのリストやプール情報などの重要でないデータは、通常のデータベースに保存し、定期的にブロックチェーンから同期することができます。これにより、パフォーマンスと効率が向上します。

契約分割とスタンダード契約の再利用

大規模プロジェクトは、契約を複数に分割するか、継承の方法で分割して維持できます。また、ERC721などの標準契約を再利用することで、開発効率を向上させることができます。

簡易版の分散型取引所を自ら開発することで、これらの技術の応用をより深く理解できるでしょう。これらの共有が皆さんに役立つことを願っています。

! Web3ビギナーシリーズ:Uniswapコードから学んだ契約開発のヒント

DEFI-6.55%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 7
  • 共有
コメント
0/400
HappyMinerUnclevip
· 08-04 03:00
これも複雑すぎるでしょう、各位マイナー、穴を受け取ってください。
原文表示返信0
SadMoneyMeowvip
· 08-03 20:33
この契約の遊び方は贅沢すぎるんじゃないかな。。
原文表示返信0
SandwichTradervip
· 08-01 04:28
壊れたが、rugsではない後の波
原文表示返信0
LayerZeroHerovip
· 08-01 03:29
dapptoolsで直接テストすることをお勧めします。ガステストの方が信頼性があります。
原文表示返信0
hodl_therapistvip
· 08-01 03:21
これらが最新の技術だと確信していますか...少し古く見えますね
原文表示返信0
NewPumpamentalsvip
· 08-01 03:11
saltのレベルはまだ達していないでしょう、兄貴。
原文表示返信0
DiamondHandsvip
· 08-01 03:10
また料理ができず学ぶことが大好き yyds
原文表示返信0
  • ピン
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)