この記事を読んで「貔貅の遅延」の実装原則と予防策を理解してください。
オリジナル - 毎日
著者 - 南志

トークン貔貅とは通常、特定のトークンが購入可能で販売できない状況を指し、開発者は一定期間後に LP を削除して利益を上げ、購入者を引っ張ります。遅延した貔貅は、トークンが最初に取引のためにオープンされ、その後貔貅状態になると、短期間内に取引することができます。このタイプのラグプルテクニックの場合、多くの契約検出ツールは、対応する検出機能をまだ追加していません。、悪意のある開発者にとって主要な収益方法の 1 つになりつつあります。
以下では、Odaily が ERC 20 と Uniswap の原理の簡単な概要を通じて、遅延 Pixiu がどのように実装されるかを説明します。
注: 記事内のたとえ話の一部は、理解を容易にするために完全には厳密ではありません。
ERC 20 の基本
市場に出回っているほとんどのトークンは ERC-20 標準に準拠していますが、ERC-20 とは何ですか? ChatGPT の答えは次のとおりです。
ERC-20 は、トークン コントラクトを定義するイーサリアム ブロックチェーン上のトークン標準です従わなければならない一連のルールそしてインターフェース。この規格は、送金、残高照会、他者に代わってトークンを使用する許可など、トークンの基本機能を標準化します。
ERC-20 トークン標準の主なルールと機能の一部を次に示します。
転送: ERC-20 トークンはスマート コントラクトを通じて転送でき、ユーザーは他のイーサリアム アドレスにトークンを送信できます。
残高クエリ (BalanceOf): ユーザーは、ERC-20 トークンの残高をクエリして、所有しているトークンの数を確認できます。
残高照会(BalanceOf):
実際、この関数には「クエリ」関数があるだけでなく、ユーザーが「所有」するトークンの数もこの関数によって定義されます。各トークンは「銀行」として捉えることができ、各ウォレットアドレスはトークン取引後に「銀行」から「入金カード」を取得し、各アドレスの残高(Balance)を記録することで銀行に申請することができます。残高を確認するか、取引のために銀行に資産変更リクエストを行うことができます。
注: イーサリアムはアカウントベースのモデルを採用しています。
したがって、ユーザーは本質的に自分の資産を「所有」するのではなく、「使用」できるトークンの数は関数によって「定義」されます。
つまり: [A アカウント] の X トークン残高 = アカウント A が外部で使用できる X トークンの数
注: 現実世界の銀行預金は顧客に対する銀行の負債であり、銀行が資産所有権を持っています。
移行
すべての ERC-20 トークンは転送機能を完了する必要があります。以前の台帳モデルに基づくと、転送が発生すると、アカウント A がトークンをアカウント B に「配信」するのではなく、アカウント A から差し引かれます。 X、トークン数 X がアカウント B に追加されます。
つまり、[A 口座]-X の残高と [B 口座]+X の残高を同時に取得します。
開発者は転送関数を変更して、転送数や転送先などを制限できます。
伝達関数は、ほとんどの Pixiu メカニズムの基本的なソースです。
Uniswap
前のセクションでは各トークンを「銀行」に例えましたが、ここでは Uniswap を受け入れ仲介者として理解でき、xy=k の AMM 原則を通じて 2 つのトークンを交換します。
交換手順は以下の通りです。
ユーザーはトークン A を Uniswap コントラクトに転送します
ユニスワップ意志受け取ったトークン、y=k/xを通じて返されるべきトークンを計算し、手数料を差し引きます。
Uniswap はトークン A を LP プールに転送し、トークン B を引き出します
Uniswap はトークン B をユーザーに転送します
もちろん、Uniswap には実際には複数の機能とプロセスが含まれますが、ここで理解すべき重要な点は次のとおりです。Uniswapは「受け取ったトークン」に基づいてのみ取引します, ユーザーが「振込」操作を行った時点で、金額が変更されている可能性があります。
貔貅の仕組み
このセクションでは、Pixiu のメカニズムを 2 つのカテゴリに分類します。
① 取引税が高く、ユーザーは販売トークンからのリベートを受け取れない。
② 送金できず、Uniswapで取引できなくなる。
高い取引税
このセクションでは、以下に示すように取引税を含む Meme コインの計算プロセスを示します (赤い部分のみに注目)。
取引税を計算する
ユーザーのウォレットから全額を差し引きます (BalancerOf[user] はトークン A を減らします)
開発者ウォレットやLPなどのアドレスに送金(BalancerOf[Dev]によりトークンA×税金Sが増加)
いくつかのトークンを Uniswap に転送してトークン B (トークン A×(1-S)) と交換します。
ユーザーが受け取ったトークン B の量が不十分です

前のセクションで述べたように、Uniswap は「」のみをサポートします。受け取ったトークン」が処理され、開発者はUniswapとユーザーに転送される金額を自由に変更できます。
ここで取引税率を100%に変更すると、3番目のステップ「③開発者ウォレットまたはLPなどのアドレスに送金」が実施され、ユーザーはトークンを受け取らなくなります。
転送できません
Solidity では、開発者は require を通じてトランザクションを制限できます。
開発者であれば、トークンの交換を特定のホワイトリスト アドレスに制限する、その後、ユーザーは手持ちのトークンをUniswapに送信できなくなり、2番目のステップ「②ユーザーのウォレットからお金を差し引く」でPixiuが実装され、開発者はUniswapのルーターをトークンを送信できるように設定できます。は:
ユーザーは購入すること(Uniswapがユーザーにトークンを転送する)のみが可能ですが、売ることはできません(トークンをETHなどのためにUniswapに転送できないため)。
あるいは、開発者はさまざまなパスを通じて転送制限を 0 に設定したり、トランザクション スイッチをオフにしたり、その他の操作を行うこともできますが、最終的にはすべてが「転送」の動作を制御します。
遅れた貔貅
時間 (ブロックの高さ) を制限する必要があるため、さらに遅延が発生します。
たとえば、あるトークンでは次のような制限があります。
require(block.number < _allowance)
ブロックの高さが高くなると、一定の閾値に達するとユーザーは転送できなくなり、貔貅が実現します。
また、取引件数が一定の閾値に達すると成立する貔貅もあり、このような遅延貔貅は、特定の契約セキュリティ検知ツールのチェック時に対象設定がなければ初期状態で正常に取引できるため、ユーザーを誘導することができます。罠に陥ること。
予防方法
この種の収集方法は「スワイプドッグ」で一般的であるという事実を考慮すると、購入者は効率を追求し、安全性を無視することが多く、成熟したセキュリティ会社がこの方法用の特別な検出ツールを発表した例はまだありません。そのため、Odailyはここで注意を喚起します自分の資産を守るために、特定のコーディング能力を持つ購入者も契約コードを確認し(または、ChatGPT などのツールを使用してざっと確認し)、セルペア契約に特に注意を払い、契約コードには近づかないようにする必要があります。異常なコード領域を含むプロジェクト。


