7つの契約開発の技術であなたをDEXの達人にする

robot
概要作成中

受託開発のコツ

最近、分散型取引所の開発過程で、いくつかの興味深い契約開発のテクニックを発見しました。これらのテクニックは、ある有名なDEXのコードの研究に基づいており、スマートコントラクト開発に入門したい初心者にとって非常に役立つはずです。

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

予測可能な契約アドレス

通常、デプロイされたコントラクトのアドレスはランダムに見え、予測が難しい。しかし、特定のシナリオでは、取引ペアの情報を使用してコントラクトのアドレスを導き出す必要があり、これは取引権限の判断やプールのアドレスの取得などに非常に役立つ。

CREATE2方式を使用して契約を作成するには、saltパラメータを追加することで、生成されるアドレスを予測可能にします。新しいアドレスの計算ロジックは:hash("0xFF", 作成者のアドレス, salt, initcode)です。

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

コールバック関数の巧妙な利用

特定のシーンでは、契約Aが契約Bのメソッドを呼び出し、BがAのメソッドをコールバックすることが非常に便利です。例えば、取引時にプール契約がswapCallbackをコールバックし、実際に必要なトークンの数量を渡し、呼び出し元がコールバック内でトークンを転送します。これにより、取引ロジック全体の完全性と安全性が確保されます。

例外を使用して情報を伝達する

取引を推定する際には、swapメソッドの実行をtry-catchで囲むことができます。推定は実際にTokenの交換を行わないため、エラーが発生します。コールバック内で特別なエラーをスローし、その後エラーメッセージから必要なデータを解析することができます。これにより、推定要件のためにswapメソッドを特別に改造する必要がなく、ロジックがよりシンプルになります。

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

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

価格と流動性の計算に関して、除算操作による精度の喪失を避けるために、まず96ビット左シフトを行うことができます。(は2^96)を掛けるのと同等であり、その後計算を行います。これにより、オーバーフローせずに精度を保証できます。理論的には最小単位の精度損失が依然としてありますが、実際のアプリケーションでは許容される範囲です。

シェアモードは収益を計算します

LP手数料収益を記録する際、毎回の取引で各LPに記録することはできません。これでは大量のガスを消費してしまいます。総手数料と各単位の流動性が得るべき手数料のみを記録し、LPが引き出す際に保有する流動性に基づいて引き出せる金額を計算します。株式の配当金に似た原理です。

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

オフチェーンデータストレージ

すべての情報がブロックチェーンに記録される必要はなく、ブロックチェーンから取得される必要もありません。取引プールのリストやプール情報などは、従来のデータベースに保存し、定期的にブロックチェーンから同期することができます。これにより、アクセス効率が向上し、コストが削減されます。もちろん、重要な取引は依然としてブロックチェーン上で行う必要があります。

コントラクトの分割と再利用

プロジェクトを複数の実際に展開されたコントラクトに分割したり、継承方式でコードを複数のコントラクトに分割して管理することができます。また、ERC721などの既存の標準コントラクトを活用して、開発効率を向上させることも重要です。

理論をいくら学んでも、実際に手を動かしてみることには勝りません。簡易版DEXを実現する過程を試みることで、契約開発のさまざまな技術をより深く理解できるでしょう。これらの小さなヒントがあなたのスマートコントラクト開発の道に役立つことを願っています。

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

UNI-4.47%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 8
  • 共有
コメント
0/400
CryptoGoldminevip
· 6時間前
契約は重要であり、安定がなければROIが得られません。
原文表示返信0
DecentralizedEldervip
· 7時間前
ずっとSolidityを学ぶのが難しいです
原文表示返信0
OnchainDetectivevip
· 7時間前
それは良いことです、最初にコード化してから充電してください!
原文表示返信0
HalfBuddhaMoneyvip
· 7時間前
このいくつかのテクニックを使えば、DEXの利ざやを確実に得ることができる。
原文表示返信0
GasFeeVictimvip
· 7時間前
学就一つの予測アドレス 够了
原文表示返信0
0xSleepDeprivedvip
· 7時間前
開発者必見!!まさに!!!
原文表示返信0
StrawberryIcevip
· 7時間前
開発初心者だ 基礎点を考えよう
原文表示返信0
LightningPacketLossvip
· 7時間前
また初心者がどうやって始めればいいか質問しています
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)