Skip to content

Latest commit

 

History

History
32 lines (23 loc) · 2.04 KB

README.md

File metadata and controls

32 lines (23 loc) · 2.04 KB

Introduction to ERC404A

ERC404A is a proposed enhancement to the existing ERC404 standard, specifically designed to address a notable limitation in the management of owned Non-Fungible Tokens (NFTs). The current ERC404 implementation employs a Last-In-First-Out (LIFO) approach for dealing with the array of owned NFTs. This mechanism can be suboptimal and potentially risky, especially when valuable NFTs are positioned towards the end of the array. The inflexibility of not allowing users to rearrange their NFTs poses a significant drawback in certain scenarios.

Recognizing this issue, ERC404A introduces a significant improvement through the addition of a _posSwap function. This function enables owners to exchange the positions of any two NFTs within their owned collection. This capability not only enhances the flexibility in managing the NFTs but also addresses the safety concerns associated with the fixed order of NFTs in the owner's array.

Swap Function Implementation

The _posSwap function in ERC404A allows for the exchange of positions between any two NFTs within an owner's collection. This internal function ensures that the swap operation is only permitted for NFTs owned by the same address. The implementation is as follows:

function _posSwap(uint256 id1, uint256 id2) internal virtual {
    address owner = _ownerOf[id1];
    // Check if both NFTs have the same owner and the owner is not the zero address
    if (owner != _ownerOf[id2] || owner == address(0) || id1 == id2) {
        revert InvalidSwap();
    }

    uint256 index1 = _ownedIndex[id1];
    uint256 index2 = _ownedIndex[id2];

    // Swap the NFTs within the owner's collection
    _owned[owner][index1] = id2;
    _owned[owner][index2] = id1;

    // Update the indices to reflect the swap
    _ownedIndex[id1] = index2;
    _ownedIndex[id2] = index1;
}

The _posSwap function is designed to be secure and efficient, ensuring that only the legitimate owner can rearrange their NFTs, thus improving the overall user experience and security of the ERC404 standard.