メインコンテンツへスキップ
Change page

ERC-4626 トークン化ボールト規格

最終更新: 2025年10月21日

はじめに

ERC-4626は、利回りボールトの技術的なパラメータを最適化し、統一するための規格です。 この規格は、ボールトに含まれる単一のERC-20トークンをどれだけ所有しているかを示すトークン化利回りボールトを作成するための標準APIを提供します。 ERC-4626はさらに、ERC-20に基づくトークン化ボールトのオプション拡張機能として、トークンの預入/引出および残高の読み取りといった基本的な機能を提供します。

利回りボールトにおけるERC-4626の役割

レンディング市場、アグリゲータ、および内部で利回りが得られるトークンは、ユーザーが様々な戦略を駆使して暗号資産トークンから最適な利回りを獲得する上で有益です。 これらの戦略はそれぞれがわずかな違いを持つため、エラーが発生しやすい場合や開発リソースを浪費してしまう場合があります。

利回りボールトのデベロッパーは、ERC-4626を活用することで、より一貫性が高く堅牢な実装パターンを実現できるため、アプリケーションとの統合にかかる作業を軽減し、様々なアプリケーションにおいて利回りを獲得できるようにするための別途の取り組みを削減することができます。

ERC-4626トークンは、EIP-4626 (opens in a new tab)で詳しく説明されています。

非同期ボールト拡張(ERC-7540)

ERC-4626は、上限までのアトミックな預け入れと償還に最適化されています。 上限に達した場合、新しい預け入れや償還は送信できません。 この制限は、ボールトとのインターフェースの前提条件として非同期アクションや遅延を伴うスマートコントラクトシステム(実世界資産プロトコル、担保不足貸付プロトコル、クロスチェーン貸付プロトコル、リキッドステーキングトークン、保険セーフティモジュールなど)ではうまく機能しません。

ERC-7540は、非同期ユースケース向けにERC-4626ボールトの有用性を拡張します。 既存のボールトインターフェース(deposit/withdraw/mint/redeem)は、非同期リクエストを要求するために完全に利用されます。

ERC-7540拡張は、ERC-7540 (opens in a new tab)で詳しく説明されています。

マルチアセットボールト拡張 (ERC-7575)

ERC-4626でサポートされていないユースケースの1つは、流動性プロバイダー(LP)トークンなどの複数の資産またはエントリーポイントを持つボールトです。 これらは、ERC-4626自体がERC-20であるという要件のために、一般的に扱いにくかったり、非準拠であったりします。

ERC-7575は、ERC-20トークンの実装をERC-4626の実装から外部化することにより、複数の資産を持つボールトのサポートを追加します。

ERC-7575拡張は、ERC-7575 (opens in a new tab)で詳しく説明されています。

前提条件

このページをよりよく理解するために、まずトークン標準ERC-20について読むことをお勧めします。

ERC-4626の関数と機能:

メソッド

asset

1function asset() public view returns (address assetTokenAddress)

この関数は、会計処理、入金、および引出のために当該ボールトが使用される原資トークンのアドレスを返します。

totalAssets

1function totalAssets() public view returns (uint256)

この関数は、当該ボールトで所有される原資産の総額を返します。

convertToShares

1function convertToShares(uint256 assets) public view returns (uint256 shares)

この関数は、提供されたassetsの量に対して、ボールトによって交換されるsharesの量を返します。

convertToAssets

1function convertToAssets(uint256 shares) public view returns (uint256 assets)

この関数は、提供されたsharesの量に対して、ボールトによって交換されるassetsの量を返します。

maxDeposit

1function maxDeposit(address receiver) public view returns (uint256 maxAssets)

この関数は、receiverにシェアをミントする1回のdeposit呼び出しで預け入れできる、原資産の最大量を返します。

previewDeposit

1function previewDeposit(uint256 assets) public view returns (uint256 shares)

この関数は、入金が現在のブロックに対してどのような影響をもたらすかをシミュレーションします。

deposit

1function deposit(uint256 assets, address receiver) public returns (uint256 shares)

この関数は、assets量の原資産トークンをボールトに預け入れ、receiversharesの所有権を付与します。

maxMint

1function maxMint(address receiver) public view returns (uint256 maxShares)

この関数は、receiverにシェアをミントする1回のmint呼び出しでミントできる、シェアの最大量を返します。

previewMint

1function previewMint(uint256 shares) public view returns (uint256 assets)

この関数は、現在のブロックにおける当該ミントの影響をシミュレーションします。

mint

1function mint(uint256 shares, address receiver) public returns (uint256 assets)

この関数は、assets量の原資産トークンを預け入れることによって、receiverに正確にshares量のボールトシェアをミントします。

maxWithdraw

1function maxWithdraw(address owner) public view returns (uint256 maxAssets)

この関数は、1回のwithdraw呼び出しでownerの残高から引き出すことができる原資産の最大量を返します。

previewWithdraw

1function previewWithdraw(uint256 assets) public view returns (uint256 shares)

この関数は、当該引き出しが現在のブロックに与える影響をシミュレーションします。

withdraw

1function withdraw(uint256 assets, address receiver, address owner) public returns (uint256 shares)

この関数は、ownerからsharesをバーンし、ボールトからreceiverへ正確にassets量のトークンを送信します。

maxRedeem

1function maxRedeem(address owner) public view returns (uint256 maxShares)

この関数は、redeem呼び出しを通じてownerの残高から償還できるシェアの最大量を返します。

previewRedeem

1function previewRedeem(uint256 shares) public view returns (uint256 assets)

この関数は、シェアの受け取りが現在のブロックに与える影響をシミュレーションします。

redeem

1function redeem(uint256 shares, address receiver, address owner) public returns (uint256 assets)

この関数は、ownerから特定のshares量を償還し、ボールトからreceiverassets量の原資産トークンを送信します。

totalSupply

1function totalSupply() public view returns (uint256)

ボールト内で流通している未償還のシェアの合計数を返します。

balanceOf

1function balanceOf(address owner) public view returns (uint256)

ownerが現在保有しているボールトシェアの合計量を返します。

インターフェースのマップ

ERC-4626インターフェースのマップ

イベント

入金イベント

mintおよびdepositメソッドを介してトークンがボールトに預け入れられる際に、MUST発行されなければなりません。

1event Deposit(
2 address indexed sender,
3 address indexed owner,
4 uint256 assets,
5 uint256 shares
6)

ここでsenderassetssharesに交換し、それらのsharesownerに転送したユーザーです。

出金イベント

預金者がredeemまたはwithdrawメソッドでボールトからシェアを引き出す際に、MUST発行されなければなりません。

1event Withdraw(
2 address indexed sender,
3 address indexed receiver,
4 address indexed owner,
5 uint256 assets,
6 uint256 shares
7)

ここでsenderは、引き出しをトリガーし、ownerが所有するsharesassetsと交換したユーザーです。 receiverは、引き出されたassetsを受け取ったユーザーです。

参考リンク

この記事は役に立ちましたか?