DeFi半年触って地獄を見た話|ガス代・スリッページ・ラグプルの現実
DeFiに本気で取り組んだエンジニアが、ドキュメントの混乱・ガス代の衝撃・実運用の罠を赤裸々に暴露。Uniswap・Aaveの実装戦略と失敗から学べることとは。
DeFiに手を出して最初の3ヶ月、本当にキツかった
先日、チームの勉強会でブロックチェーン技術が話題になったんですよ。「DeFiってバブルなのか、それとも実際に価値あるのか」という議論になって、自分もちゃんと理解しようと思い立ったのが半年前。USDCとか、Uniswapとか、Aaveとか、有名どころを実際に触ってみました。
正直なところ、最初の3ヶ月は地獄でした。ドキュメントは散らかってるし、用語は謎だし、ガス代で何度心が折れたことか。でも半年経った今、「DeFiの本質って何か」が少しわかってきたんですよね。これをお話しします。
Smart Contract実行に必要な「ガス代」の実態
エンジニアって、インフラのコストって割と敏感じゃないですか。DeFiで最初に驚いたのが、ガス代という直接的な実行コスト。APIサーバーなら月額固定とか、クラウド従量課金で済むけど、ブロックチェーンはトランザクション1回ごとに金が飛ぶんです。
Uniswapでトークンスワップするとき、Ethereum mainnetだと1回3000円〜10000円かかることもある。開発環境で試すたびに毎回実際のお金が動く。これはCIパイプラインで毎回デプロイするのに金がかかるようなもの。正気じゃない。
だからこそDeFiプロジェクトって、以下のように選択肢が分かれるんですよ:
| チェーン | ガス代(目安) | TPS | 用途 |
|---|---|---|---|
| Ethereum | 高い($3-30) | 15 | 大口・高額取引 |
| Arbitrum | 低い($0.1-1) | 4000+ | 小口・開発 |
| Polygon | 低い($0.01-0.5) | 7000+ | スケーリング実験 |
| Optimism | 低い($0.1-2) | 4000+ | アプリケーション |
自分は最初、本当にArbitrumとPolygonで開発してました。テスト用のガス代が月5000円とか10000円単位で消えていく。本当に予想外だった。
Uniswap・Aaveを実際に動かしてわかったこと
じゃあ実際にDeFiの中核的なプロトコルを触ってみると何が見えるか。自分がやってみたのは:
- Uniswap V3でトークンペア作成 — ERC-20トークンをETHとペアにして、流動性プール構築
- Aaveでのステーキング・借入 — USDCを担保にして、他のトークンを借りる
- 簡単なフラッシュローン実装 — 短期間の無担保融資を活用した裁定取引テスト
正直、最初の1ヶ月は理屈がわかっていても、実装で何度も失敗しました。
Uniswapで流動性プール構築した時の失敗
// 流動性プール構築の基本
interface IUniswapV3Pool {
function initialize(uint160 sqrtPriceX96) external;
function mint(
address recipient,
int24 tickLower,
int24 tickUpper,
uint128 liquidity,
bytes calldata data
) external returns (uint256 amount0, uint256 amount1);
}
// 自分の初期実装
// ❌ 間違い:ティック価格計算を無視していた
uint160 sqrtPrice = uint160(10 ** 18); // このままじゃダメ
// ✅ 正しい方法:実際の価格を正規化
function getPriceInSqrt(uint256 token0Price, uint256 token1Price)
pure
returns (uint160)
{
// token0 / token1 の価格を Q64.96 フォーマットに
return uint160(
sqrt(token0Price * (1 << 96) / token1Price)
);
}
何が問題だったかというと、Uniswap V3ではティックという概念を理解してないと動きません。流動性の価格範囲を指定するんですが、この計算がめちゃくちゃ複雑。ドキュメントは技術者向けというより数学向けで、エンジニアにはつらい。
正直、この辺りは「Uniswap SDKライブラリを使え」という結論になるんですよ。
Aaveのステーキング運用で学んだこと
Aaveで100万円相当のUSDCを担保に入れて、他のトークンを借りてみました。目的は「ステーキング報酬をもらいつつ、借入でレバレッジを効かせる」という戦略。
失敗が2つありました:
1. リクイデーション(借金を強制清算される)の仕組みを甘く見た
Aaveでは担保と借入のバランスが崩れると、自動的に清算されます。担保価格が下がったり、借入したトークンの価格が上がったりするとダメ。自分は「10%の余裕があれば大丈夫」と思ってたんですが、ボラティリティが高い相場では一瞬で崩壊します。実際に10万円くらい吹っ飛びました。
2. GasLimitの計算誤り
借入トランザクションを実装する際、必要なガスを過小見積もりしてました。フラッシュローンとの組み合わせだと、複数のコントラクト呼び出しが直列化されるので、想定の2倍以上ガスが必要になることがあります。
// Aaveからの借入トランザクション
const lendingPool = await ethers.getContractAt(
"ILendingPool",
aaveAddressProvider.getLendingPool()
);
const borrowTx = await lendingPool.borrow(
assetAddress,
amount,
rateMode, // 1=Stable, 2=Variable
referralCode,
userAddress,
{
gasLimit: 500000 // ❌ これでは足りない
}
);
// ✅ 正解:事前にシミュレーション
const estimatedGas = await lendingPool.estimateGas.borrow(
assetAddress,
amount,
rateMode,
referralCode,
userAddress
);
const tx = await lendingPool.borrow(
assetAddress,
amount,
rateMode,
referralCode,
userAddress,
{ gasLimit: estimatedGas.mul(120).div(100) } // 20%余裕を持たせる
);
こういう地道な失敗を半年かけて積み重ねました。
DeFiが「銀行の代替」になり得ない理由をエンジニア視点で見る
graph TB
subgraph TraditionalBank["伝統的銀行"]
A["顧客入金"] --> B["信用調査"]
B --> C["融資実行"]
C --> D["返済管理"]
D --> E["利息配分"]
end
subgraph DeFi["DeFi(自動実行)"]
A2["スマートコントラクト"] --> B2["担保チェック"]
B2 --> C2["自動融資"]
C2 --> D2["オンチェーン実行"]
D2 --> E2["リクイデーション"]
end
subgraph Risks["DeFiの本質的なリスク"]
F["スマートコントラクト脆弱性"]
G["価格変動リスク"]
H["オーバーレバレッジ"]
I["流動性リスク"]
end
DeFi --> Risks
style TraditionalBank fill:#e1f5ff
style DeFi fill:#fff3e0
style Risks fill:#ffebee
本当のところ、DeFiが銀行にならない理由は技術じゃなくて、プロトコル内のすべてが担保ベースだからなんですよ。
伝統的な銀行は「あなたの信用度」を判定して、担保がなくても融資します。給料が毎月確定しているなら、その信用で100万円の無担保ローンが取れる。
でもDeFiは違う。オンチェーンにあるのは、ウォレットのバランスとトランザクション履歴だけ。その人が「本当に信用できるのか」はわかりません。だから必ず「超過担保」を要求する。100万円借りたければ、150万円分の担保が必要。これは非効率。
つまり、DeFiって「スマートコントラクトで銀行の機能を再現した」だけで、金融の本質的な問題は何も解決していないんです。
ステーキングで月30万円稼いだけど、それは錯覚だった
DeFiを触り始めた2ヶ月目、Lido(Ethereum ステーキングプロトコル)にETHをぶ込んで、月30万円相当のステーキング報酬がもらえる計画を立てました。「これは不労所得だ」と思い込んでました。
3ヶ月後、気づいたこと:
- 報酬が減少し続けている — ネットワークが成熟するにつれ、ステーキング報酬は年6〜8%から2〜3%に低下
- Lydoトークンの価値が下がってる — ステーキング報酬の一部がLydoトークン(ガバナンストークン)で配分されるが、これが市場で売られて価値が下がってた
- スマートコントラクトリスク — Lidoが何かのバグで止まったら?報酬ゼロどころか、担保のETH自体が危なくなる
月30万円のうち、実際に現金化できるのは月10万円程度。それも市場でトークンを売る際のスリップと手数料を引くと、月5万円が現実的。
ステーキング報酬(名目)= 月30万円
- Lydoトークンの価値低下 = -10万円
- 売却時のスリップ・手数料 = -8万円
- ガス代 = -2万円
+ 相場変動リスク = ±5万円
実際の利益 = 月5万円~15万円(不確実)
これなら、単純にETH買ってVanguardの全米株式インデックスファンドに投資した方が、気が楽ですよ。
実務的な「DeFi との付き合い方」
半年やってみて、エンジニアとして「DeFiとどう付き合うべきか」が見えてきました。
1. 金融商品としてのDeFiは避けるべき
「投資で稼ぐ」という目的でDeFiに近づくと、確実に失敗します。理由は、ボラティリティが異常に高い上に、プロトコルリスク・スマートコントラクトリスク・流動性リスク が多重に存在するから。
自分の場合、最終的には「保有している暗号資産をDeFi内で動かす」という消極的なスタンスに落ち着きました。新たに追い銭はしない。
2. スマートコントラクト開発として学ぶべき
SolidityやWeb3.jsの実務的な理解は、本当に価値があります。「ブロックチェーン上で自動実行される契約」って、 AWS Lambdaとかサーバーレス関数と本質は同じなんですよ。ガス代を考慮した最適化とか、状態管理とか、学べることが多い。
実際、自分がDeFiプロトコルを触って得た知識は、会社のプロジェクトに直結してます。
3. インデックスプロトコルを理解する価値
Uniswapみたいな「自動マーケットメイカー(AMM)」の仕組みって、分散型の値付けロジック。これは金融以外にも応用できます。例えば、社内の「リソース配分」みたいなシステムを設計する際に、同じ論理を使えたりする。
DeFi界隈の「嘘」と「本当」
界隈のTwitterとか、YouTubeで見かける情報を半年間検証した結果:
| 主張 | 現実 |
|---|---|
| 「DeFiで月50%の利回り」 | 詐欺か、リスク理解が欠落 |
| 「完全自動で稼げる」 | 初期段階だけ。プロトコルリスクが常に存在 |
| 「銀行の代替になる」 | 当分ムリ。超過担保要件が本質的な壁 |
| 「トークン価値は上がり続ける」 | インフレ。新しいプロトコルが参入する度に薄まる |
| 「スマートコントラクトは安全」 | 大型プロトコルは監査通過してるが、小型は地雷が多い |
ただし本当のこともあります。ブロックチェーン上の透明性は本当。全トランザクションが公開される。プロトコルレベルの効率化は進んでて、ガス代は年々下がってる(Arbitrumとか)。そしてスマートコントラクト開発の人材は超不足。本気で学べば食いっぱぐれない。
次のステップ:エンジニアがDeFiと付き合うロードマップ
自分がやってみて、これが最小限で効果的だと感じたルート:
1. Remix IDEで簡単なERC-20トークンを作る(1週間)
Solidityの基本文法とガス最適化の初歩が身につきます。テストネットへのデプロイも経験できます。
2. OpenZeppelinのサンプルコントラクトを拡張する(2週間)
AccessControl、Pausableみたいな既存プロトコルの監査済みコードを拡張するのは、最短で実務レベルに達する方法です。
3. Hardhatでローカル開発環境を整える(1ヶ月)
テスト自動化、ガス効率分析、フォーク環境での実装テストができれば、本物のDeFi開発に近づきます。
4. Aave・Uniswapのシンプルな連携を実装(2ヶ月)
実際のプロトコルとの相互作用を経験します。フロントランニング対策やスリップ計算も実装してみることで、プロダクションレベルの思考が身につく。
正直、この段階まで来れば、「DeFi系スタートアップ」の技術面での要件は大体クリアできます。
DeFiってそもそも何に使うのか、改めて考えた
半年やってみて、一番大事な気付きは「DeFiは新しい金融ではなく、異なるトレードオフを持つ別のシステム」ということ。
銀行に預けるのは「信用と引き換えに、安全性と利便性を得る」という選択。DeFiに入れるのは「信用を失う代わりに、透明性と自律性を得る」という選択。
どちらが正しいわけじゃなくて、状況によって使い分ける。
例えば、独裁政権下の国にいて、政府に資産を没収される可能性がある人にとっては、DeFiは本当に価値がある。でも日本に住んでて、銀行が信用できるなら、DeFiに金を入れるメリットは限定的。
エンジニアとしてDeFiを学ぶ価値は、「新しい金融システムの可能性」を理解することで、投資で稼ぐことじゃないんです。
まとめ
半年DeFiを触ってみて、最終的な結論は以下の通り。
スマートコントラクト開発スキルとしてのDeFiは本物の価値がある — Solidityとオンチェーン設計を実務的に学べる唯一の環境。キャリアとしても厚みが出ます。
金融商品としてのDeFiは、余剰資金でしか触るべきでない — ボラティリティとプロトコルリスクが異常に高い。月30万円の報酬は、実際には月5万円。錯覚に気をつけて。
DeFiプロトコル自体は革新的だが、その使用は限定的 — 銀行の完全代替は当面ムリ。超過担保要件が本質的な壁になってます。
エンジニアとしてDeFiを学ぶのは投資です — キャリア資産になるし、スタートアップ転職時の給与交渉材料にもなる。
2026年のDeFiは「投機から実用へ」がようやく始まった段階 — USDCとかステーブルコインの普及で、実際の価値移転に使われ始めている。ここは注視する価値があります。
次は、自分でDeFiアグリゲーターを作ってみるとか、複数プロトコルの最適化を考えるとか、そういう実装レベルで遊んでみたいですね。金は動かさないで、純粋にエンジニアリングとして。