ERCs
ERC-721 — Non-Fungible Token Standard
eips.ethereum.org/EIPS/eip-721
import {
balance_of,
owner_of,
transfer_from,
safe_transfer_from,
approve,
get_approved,
set_approval_for_all,
is_approved_for_all,
} from "@ethernauta/erc/721";
Core methods
| Method | Shape | Purpose |
|---|
balance_of({ owner }) | Callable<Uint256> | NFT count owned. |
owner_of({ token_id }) | Callable<Address> | Current owner. |
transfer_from({ from, to, token_id }) | Signable<Hash32> | Unsafe transfer. |
safe_transfer_from({ from, to, token_id, data? }) | Signable<Hash32> | Safe transfer (checks receiver). |
approve({ to, token_id }) | Signable<Hash32> | Per-token approval. |
get_approved({ token_id }) | Callable<Address> | Read approval. |
set_approval_for_all({ operator, approved }) | Signable<Hash32> | All-token approval. |
is_approved_for_all({ owner, operator }) | Callable<boolean> | Read operator approval. |
Extensions
| Subpath | Methods |
|---|
@ethernauta/erc/721/burnable | burn |
@ethernauta/erc/721/enumerable | total_supply, token_of_owner_by_index, token_by_index |
@ethernauta/erc/721/metadata | name, symbol, token_uri |
@ethernauta/erc/721/pausable | pause, unpause, paused |
Reading owner + metadata
import { owner_of } from "@ethernauta/erc/721";
import { token_uri } from "@ethernauta/erc/721/metadata";
const ctx = contract({ chain_id: eip155_1.chain_id, contract: collection });
const owner = await owner_of({ token_id: 1n })(ctx);
const uri = await token_uri({ token_id: 1n })(ctx);
See also