# [ERC5409] ERC1155形式のNFTの保有者を確認する仕組みを理解しよう！

> ERC5409は、ERC1155に「ownerOf」という新しい関数を追加して、ERC1155トークンにも「非代替性」を持たせることを目的としています。

- URL: https://cardene.dev/articles/c05da5321c8a37d79fdd
- 公開日: 2025-04-05
- 更新日: 2025-04-05
- トピック: Blockchain
- タグ: ethereum, solidity, smartcontract, ブロックチェーン

## はじめに

『DApps開発入門』という本や色々記事を書いているかるでねです。

https://amzn.asia/d/gxvJ0Pw

今回は、ERC1155の保有者を確認する仕組みを提案している**ERC5409**についてまとめていきます！

:::message
以下にまとめられているものを翻訳・要約・補足しながらまとめていきます。
:::

https://eips.ethereum.org/EIPS/eip-5409

他にも様々なEIPについてまとめています。

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4

## 概要

**ERC5409**は、**ERC1155**に「`ownerOf`」という新しい関数を追加して、**ERC1155**トークンにも「非代替性」を持たせることを目的としています。
通常、非代替トークン（NFT）の代表的な規格は**ERC721**ですが、**ERC721**は柔軟性が低いという課題があります。
**ERC5409**では、**ERC1155**の効率性や柔軟性を保ったまま、**ERC721**のように「**このトークンは誰が所有しているのか？**」を簡単に確認できるようにします。

## 動機

**ERC1155&&では、あるトークンが「**本当に1つしか存在しないユニークなもの（＝非代替）**」なのか、それとも複数人が持てる「**代替可能なもの**」なのかを、外部からは判別できません。
トークンの発行数（`supply`）が「`1`」かどうかを確認する手段が標準では用意されておらず、仮に1であっても誰が所有しているのかを直接確認する方法がありません。

**ERC1155**の仕様内では、「**トークンIDを工夫して非代替トークンを表現する**」といった方法も紹介されていますが、標準的な手法ではなく、**ERC721**の`ownerOf`のようにシンプルではありません。

今回の提案で`ownerOf`関数を追加すれば、特定のトークンが「**誰のものか**」をコントラクトを通して確認できるようになります。
これにより、所有者がそのトークンにメタデータを紐づけたり、所有情報を活用するような新しいユースケースにも対応できるようになります。

## 仕様

**ERC5409**では、**ERC1155**に新しく`ownerOf`という関数を導入します。
これは、トークンの所有者アドレスを取得するための関数です。

```js:IERC1155OwnerOf.sol
interface IERC1155OwnerOf {
    /// @notice NFTの所有者を取得する
    /// @dev アドレスがゼロ（0x0）の場合は、存在しないか、供給数が1を超えている（＝NFTではない）ことを意味します
    /// @param tokenId NFTのID
    /// @return 所有者アドレス
    function ownerOf(uint256 tokenId) external view returns (address);
}
```

また、`supportsInterface`関数において `0x6352211e` を渡した場合、必ず `true` を返す必要があります。

## 補足

この`ownerOf`関数は、対象のトークンが存在しない場合や、NFTでない場合（例えば供給数が1以上あるような代替可能トークンの場合）でも、エラーを投げずにゼロアドレス（`0x0`）を返します。

これにより、呼び出し側のコントラクトやアプリケーションが「**このトークンは誰のものか？**」という確認をする時に、例外処理を気にせず安全に扱えるようになります。

例えば、**ERC721**では所有者が存在しない場合にエラーが返されることがありますが、すべての**ERC721**実装が必ずそうなる保証はありません。
そのため、今回の仕様ではあえて例外を出さず、常にアドレスを返す形式としています。
この設計によって、**ERC721**に近い使い方をしつつも、安全で扱いやすい形を実現しています。

## 引用

Ronan Sandford (@wighawag), "ERC-5409: EIP-1155 Non-Fungible Token extension [DRAFT]," Ethereum Improvement Proposals, no. 5409, July 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-5409.

## 最後に

今回は「ERC1155の保有者を確認する仕組みを提案している**ERC5409**」についてまとめてきました！
いかがだったでしょうか？

質問などがある方は以下のTwitterのDMなどからお気軽に質問してください！

[Twitter @cardene777](https://twitter.com/cardene777)

他の媒体でも情報発信しているのでぜひ他も見ていってください！

https://chaldene.net/

https://zenn.dev/heku

https://cardene.substack.com/

https://mirror.xyz/0xcE77b9fCd390847627c84359fC1Bc02fC78f0e58

https://cardene.notion.site/ERC-EIP-2a03fa3ea33d43baa9ed82288f98d4a9?pvs=4
