Uniswap v2 LPトークン: 残高の裏にあるプール資産を確認
LPトークンの枚数は、構成資産のどちらかの数量ではありません。ペアの総供給量と準備金を使い、1つのポジションを正しい単位で記録します。
Uniswap v2のLPトークン残高が表すのは、特定のプールの持分であり、その中のどちらかのトークンの数量ではありません。 読み取り専用の会計スナップショットでは、自分のLP残高をペアのLP総供給量で割り、その比率を記録済みの各準備金に掛けます。各準備金をトークンアドレスと小数点の桁数に対応させてください。
これにより、既存のポジションを記述できます。引き出し数量の保証でも、利益計算でも、流動性を引き出す指示でもありません。ウォレットの UNI-V2 という行は出発点にすぎません。多くの異なるペアがこの表示名を使っています。
LP残高を解釈する前にペアを特定する
Uniswapのv2プールの説明では、流動性の提供者に発行されるトークンを説明しています。公式のLPトークン実装は、ペアを問わず同じ名前とシンボルを使います。そのため、シンボルだけでは保有分がどの資産を表すかを特定できません。
把握している流動性取引、または既に信頼しているプロトコル画面から、ネットワークとペアのコントラクトの完全なアドレスを確認します。公式v2デプロイ一覧でファクトリーを確かめ、対象トークンがそのファクトリーのペアと一致するか確認してください。名前の模倣や見慣れたメソッドを持つコントラクトは、公式デプロイの証拠にはなりません。
このv2実装では、ペアのコントラクトがLPトークンのコントラクトも兼ねます。準備金の数値を使う前に、token0() と token1() のアドレスを読み取ります。reserve0 は token0 に、reserve1 は token1 に対応します。別の画面のティッカーの並び順で2つの数量を割り当てないでください。
この手順の対象は通常のUniswap v2ペアに限ります。フォーク、運用型のボールト、集中流動性のポジションでは会計方法が異なる場合があります。Uniswap v3のポジションNFTには、このLP供給量の計算ではなく、そのポジション固有の記録が必要です。
同じ時点にそろえた数量を集める
LPを直接保有している場合、確認済みのペアとトークンのコントラクトから次を読み取ります。
| 読み取り・項目 | 意味 | 維持する単位 |
|---|---|---|
ペアの balanceOf(account) |
このアカウントが保有するLPトークン | LP単位 |
ペアの totalSupply() |
発行済みLPトークンの総量 | 同じLP単位 |
ペアの getReserves() |
両側の記録済み準備金 | トークンの生の整数値 |
ペアの token0() と token1() |
2つの資産を識別するアドレス | 完全なアドレス |
| 各トークンのdecimals | 生の準備金数量の換算桁数 | それぞれ固有の桁数 |
すべての読み取りを同じブロックで行うのが望ましい方法です。ツールが最新状態を個別に読む機能しか持たない場合は、各時刻を保存し、比較に不整合の可能性があると記録してください。呼び出しの間の取引、入金、引き出しで入力値が変わる場合があります。
LP残高と総供給量は同じ桁数で扱う必要があります。2つの生のLP整数値を割っても、正しく表示単位に直した2つのLP数量を割っても比率は求められます。生の整数値と表示単位の数値を混ぜてはいけません。準備金の出力には、構成トークンそれぞれのdecimalsを別々に使います。トークンの小数点ガイドで換算を説明しています。メタデータが不明なら未解決のままにし、18を既定値にしないでください。
持分率を大きくするために、ロックされたLPや他の理由で利用できないLPを、報告された総供給量から差し引かないでください。この計算に使うのは、推測した流通量ではなく、コントラクトの発行済み供給量です。供給量がゼロ、または必須の読み取りが失敗した場合は計算を止め、不足する入力を記録します。
ラベルを付けたスナップショットで計算する
既に読みやすい単位へ換算した、仮のペアを考えます。発行量は500 LPトークン、自分のアカウントの直接保有量は5 LPトークンです。記録済み準備金はトークンAが80単位、トークンBが24000単位です。架空の数量であり、実際のプールや価格の見積もりではありません。
LPの比率は 5 / 500 = 0.01、つまり 1% です。記録済み準備金に掛けると、次のようになります。
- トークンA:
80 * 0.01 = 0.8単位。 - トークンB:
24000 * 0.01 = 240単位。
結果は、その時点で準備金換算の0.8 Aと240 Bに相当する、1つのLPポジションの記録です。5 Aと5 Bではなく、準備金数量はドル価格でもありません。Bをステーブルコインと仮定する必要もありません。
LPトークンの表示価値と、その同じ構成資産数量の価値を、別々の保有資産として足さないでください。プール外で独立して保有するトークンは別の残高です。ダッシュボードが既にLPの内訳を構成資産に展開している場合は、手動で追加する前に含まれる範囲を確認します。
これは運用成績の測定とも異なります。現在の準備金持分からは、当初の入金数量、その後の資金移動、費用、元の資産を単に保有し続けた場合の価値は分かりません。その別の問いはインパーマネントロスとの比較で扱います。
引き出し数量を保証できない理由を理解する
ペアの実装は、準備金を実際のトークン残高とは別に記録します。burnの計算は残高を使い、総供給量を選ぶ前にプロトコル手数料用のLPトークンを発行する場合があります。整数除算によって計算数量も丸められます。そのため、以前の記録済み準備金の一定割合を、流動性引き出し取引で届く正確な数量として示してはいけません。
取引時の状態は観測時と異なる場合があります。トークン固有の送金ルールも受取数量に影響します。別途取引を決めた場合には、プロトコルの現時点の引き出し見積もりと条件を使ってください。この確認作業の一環としてLPトークンをペアへ直接送ったり、低水準のburn関数を呼び出したりしないでください。
準備金数量は既にプールの記録済み状態を反映しています。手数料収入の見積もりをさらに足すと、価値を二重に計上する可能性があります。このガイドは手数料の払い出し、将来の利回り、現在のプロトコル手数料率を計算しません。
保管先にも別の境界があります。LPをステーキングやボールトに預けた場合、ウォレットの直接の balanceOf はゼロでも、サービス側には自分の権利が記録されていることがあります。把握している入金とサービス独自の会計を確認します。サービスのLP残高全体を自分に割り当てず、換算ルールを確認せずに単純なウォレット計算をボールトの受領証トークンへ流用しないでください。
再確認できる記録を保存する
以下の手順は、2026年10月28日に確認した公開文書とソースコードに基づきます。この記事のために実際のウォレットやプールで試験したものではありません。
- ポジションを検証する。 信頼できるプロトコルの記録から、ネットワーク、ペア、ファクトリー、アカウント、両方の構成トークンのアドレスを記録します。
- LPの保管場所を特定する。 ウォレットでの直接保有と、ステーキング、ボールト、その他の保管記録を区別します。
- 整合したスナップショットを集める。 LP残高、発行済みLP供給量、両準備金、トークンとの対応、小数点の桁数を、ブロックまたは観測時刻とともに保存します。
- 入力が使える場合だけ計算する。 同じ単位のLPを割り、比率を両方の準備金へ別々に掛けます。十分な精度を保ち、掛け算の前に比率をゼロへ丸めないでください。
- 結果にラベルを付け、重複を一度確認する。 準備金に基づく会計上の概算と明記し、保管先と欠損データの注記を残し、別のポートフォリオ行が既に同じポジションを表していないか確認します。
これらの公開情報の読み取りに、ウォレット署名、承認、リカバリーフレーズは不要です。資金移動の要求はこの手順の範囲外です。保有するペア、準備金数量が表すもの、スナップショットと引き出し見積もりが異なる理由を説明できれば、有用な結果です。未解決の項目は不明のままにし、表示の欠落を正確な残高へ置き換えないでください。
よくある質問
1 LPトークンはプールの両側のトークンを1枚ずつ意味しますか?
いいえ。LPトークンは、特定のペアに対する比例的な持分です。その枚数を、同じ時点のそのペアのLP総供給量および準備金の数量と比較する必要があります。
LP残高を総供給量で割れば、引き出し数量が正確に分かりますか?
いいえ。これは会計用の、ある時点での比率です。実際のburnはトークン残高を使い、プロトコル手数料用の発行で供給量が変わる場合があります。状態の変化、整数の丸め、トークンの動作も受取数量に影響します。
ウォレットのLP残高がゼロなら、ポジションがない証拠ですか?
いいえ。LPトークンをステーキングや保管用のコントラクトに預けている場合があります。権利を判断する前に、そのサービスの記録と把握している入金を確認してください。残高の読み取り失敗は不明であり、ゼロではありません。