BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

xDeFi Labs: イーサリアムガスのあらゆる側面

星球君的朋友们
Odaily资深作者
この記事は約2979文字で、全文を読むには約5分かかります
xDeFi&Labs はどのようにガスを最適化しますか?
AI要約
xDeFi&Labs はどのようにガスを最適化しますか?

副題

1. イーサリアムブロックチェーンガスの消費ロジック: GasPrice と GasLimit

ETHブロックチェーンシステム上では、どのような操作を行う場合でも、gasPriceとgaslimitは支払わなければならない価格であり、操作時に理解する必要があります。

1wei = 10^-18 eth (eth のネイティブ最小単位) であるため、gasPrice の単位は gwei であることがよくあります。 1gwei = 10^9wei = 10^-9eth、これは、ブロック内のパッケージ化されたトランザクション リソースをめぐって競争するたびに、eth で操作したいすべての人が取得する値です。つまり、最も高い価格のものがそれをパックします。それ以外の場合は、梱包することはできません。

Eth のブロックは、2017 年末の 1CO マニアと 2020 年初めの 312 クラッシュの間に 2 回の一時的な「フルブロック」を経験しました。ユーザーが多く、見積額が低すぎてパッケージ化できない 一定期間後に取引が失敗したが、2019年にERC-20USDTが普及し、2020年にUniswapが普及したため、通常のフルブロックにつながった(ガス消費量の合計 GasLimit が、ブロックが耐えられる 12,500,000 を超えています。

副題

2. Solidity プログラミング計算レベルでより低いガスを確保する方法

Solidity の記述スタイルは JavaScript に似ており、具体的な実行レベルは EVM で実行可能なオペコードへのコンパイルに依存します。ガスを節約するためにどのような種類のオペコードにコンパイルされるかに関係なく、少なくとも Solidity レベルでは、できるだけ多くのガスを節約する機会を見つけることができます。

整数の計算的思考

Solidity には IEEE-754 で定義された浮動小数点数がありません。この種の浮動小数点数計算は、もともと CPU レジスタ設計をガイドしていました。「普遍的、決定論的、一貫性のある」というコンセンサスにより、最も一般的なデータ型は uint256 です。そして、最初に整数を使用して小数をシミュレートし、次に浮動小数点数の動作をシミュレートしますが、全体として、プログラマは整数の考え方を持っている必要があります。

便利な数学ライブラリがあると仮定すると、数学ライブラリの乗算と除算は依然としてそのような低コストの演算を呼び出すことによって行われるため、a.div(2) は実際には a>>1 ほど高速ではないことがわかります。

幸いなことに、eth 開発の先駆者 (openzeppelin、gnosis、バランサーなど) は、他の人が使用できるようにプロジェクトを実装する過程で、四則演算、べき乗抽出、指数対数演算などの数学ライブラリをいくつか作成しました。 。

四則演算以外の計算方法をわかりやすく紹介します。Webリンク

B 計算の複雑さを理解していない限り、ループを避ける

for ループの 2 番目の条件が空であるなど、ループ条件が開いている場合や、while 文で条件が true と判断される場合、ループ本体内の計算のガス消費量を見積もることができなくなりやすくなります。これにより、ガス消費量が許容できなくなります。または、Metamask (およびその他のツール) が、gasLimit を正しく推定できなくなり、eth コントラクト呼び出しが失敗します。

さらに、ソリッドティコントラクトの作成に特に精通している科学者が数学に少しの労力を費やすことができる場合は、「Hacker's Delight」を参照することをお勧めします。これは、数学ライブラリを理解するのに役立つだけでなく、コードガスを簡素化するのにも役立ちます消費。たとえば、コンピューター開発の過程で、ニュートン法への Thor 3 アルゴリズムの適用が見られました。Webリンクこのアルゴリズムは依然として IEEE-754 標準浮動小数点数に対してのみ有効ですが、堅牢性においては、暴力的な計算を損失が非常に小さいアルゴリズムに削減するプロのアルゴリズム オプティマイザーが常に存在します。副題

によると

によるとWebリンク手がかりを踏まえると、イーサリアムイエローペーパーには料金の内訳が詳しく記載されています。

この記事では、Gtxdatazero と Gtxdatanonzero のコストの違いについて説明していますが、この主な違いのロジックは次のとおりです: アドレスが契約か一般人による転送であるかに関係なく、e 番目のアドレスの 00 が多くなる (0 はペアで表示されることに注意してください)。 -out アドレスを使用すると、ガス料金が多かれ少なかれ 0.4 ~ 5% 節約されます。

また、EVM上のさまざまな操作に対応したオペレーションコードを参考に、高ガス操作を極力避け、低ガス操作でSolidityコードを構築することもできます。

一般の人にとって、0x00 で始まるアドレスを取得するのは非常に簡単で、最も実用的なツールの 1 つは次のとおりです。Webリンク副題

4. GasToken ファミリ: もう 1 つの実用的な操作

これは、返金可能な破壊用ガスを構築する実際の事例です。

GSTとGST2は、ガス料金を返金するGsclearとGssuicideの特徴に基づいて一部の研究者によって定められ、そのうちGSTはストレージの解放(Gsclearの返金)に基づいており、GST2は契約の解放(Gssuicide)に基づいています。 GST2 の第 2 世代はより合理的になるでしょう。しかし、技術開発の過程では、実際には、GST2 が常に GST よりも有利であるとは限りません。状態ストレージの最適化が ETH 1.x 技術ルートに現れた場合、GST も同様になる可能性があります。復活の到来を告げる。

1inch CHIガストークンはGST2をベースにしており、トークンアドレスに含まれる00の数が増えていますが、1inchの商用運用が活発化しているため、この運用も徐々に広く知られるようになってきています。

副題

5. xDeFi&Labs がガスを最適化する方法

zksnarks レイヤー 2 ソリューションの監査コストの数百万ドルを考慮して、xDeFi&Labs チームは一時的に最初に製品ロジックを検証することを選択しました。

製品の最適化のプロセスでは、ユーザーのトランザクションにはすでに a**b のロジックが含まれています。ここで、b は uint256 で表される 10 進数であり、偽装された 10 進数の役割を引き受けます。金融商品設計のプロセスにおいて、プールの残高設計により、b の値を [1,49] の間の任意の小数から {1,2,3,4,6,8,12} まで素早く減らすことができます。集合を待ちます。数千から数万のガスコストを節約するための正の整数。数学ライブラリを呼び出すとき、バランサ数学ライブラリ bpow の小数部は実際には呼び出されず、bpowi のみが呼び出されます。

XDEX のトークン発行プロセス中、xDeFi&Labs は第 3 章で述べた方法に従って 0x00 アドレスの競争力を確保しました (現在、12 個のゼロが唯一実現可能な解決策であると計算されており、TokenLon、ETH2 で使用されている 11 個のゼロを超えています。 0 支払いアドレスのゼロと GST2 の 6 つのゼロは、1 インチ CHI の 12 個のゼロと一致します。

xHHalfLife の設計プロセスでは、ユーザーが権利確定口座からどれだけの収入を引き出すことができるかを確認するために、オリジナル バージョンでは循環計算方法が使用されており、極端な場合にはサイクル数にブロックの高さの違いが含まれます。 1 週間で数千から数万のブロックの高さの違いがカバーされることがわかります。各ループ本体が数百のガスを消費する場合、ユーザーがお金を引き出すと、1 つのコントラクトで数千万のガス消費が引き起こされることは明らかに受け入れられません (おそらく数百)したがって、fundStream、BalanceOf、Withdrawの3つの関数からループを削除し、**bの単純化メソッドを継続します。このとき、Keep Clearerロジックを使用し、単純化されたロジックを残します。 github コードコメントのループコード。呼び出すときは、ユーザーのエクスペリエンスを考慮して (Sushi の収入はブロックごとにジャンプします。xHalfLife コードの最初のバージョンではこれができない可能性があります)、b が 10 進数である可能性は保留されます。

DeFi
ETH
投資する
Odaily公式コミュニティへの参加を歓迎します
購読グループ:
https://t.me/Odaily_News
チャットグループ:
https://t.me/Odaily_GoldenApe
公式アカウント:
https://twitter.com/OdailyChina
記事目次
Odailyプラネットデイリーアプリをダウンロード
一部の人々にまずWeb3.0を理解させよう
IOS
Android