EIP-1155 asset backed NFT extension
ERC-5505 is a proposed extension of the EIP-1155 standard for smart contract interfaces that would support asset-backed, fractionalized projects. The proposal aims to address the difficulty faced by fractionalized, asset-backed NFTs when someone wants to acquire the whole asset. Currently, if someone wants to acquire all NFT pieces to become the 100% owner, it is publicly visible, and sellers may take advantage by setting unreasonable high prices. Alternatively, NFTs may be owned by wallets with lost keys, making complete ownership impossible. The proposal suggests adding functionalities to support total acquisition, such as setting the percentage required for any acquirer to trigger a forced sale and the payment token to settle for the acquisition. EIP-1155 compliant contracts may implement this EIP to add these functionalities.
Video
Original
Abstract
To propose an extension of smart contract interfaces for asset-backed, fractionalized projects using the EIP-1155 standard such that total acquisition will become possible. This proposal focuses on physical asset, where total acquisition should be able to happen.
Motivation
Fractionalized, asset backed NFTs face difficulty when someone wants to acquire the whole asset. For example, if someone wants to bring home a fractionalized asset, he needs to buy all NFT pieces so he will become the 100% owner. However he could not do so as it is publicly visible that someone is trying to perform a total acquisition in an open environment like Ethereum. Sellers will take advantage to set unreasonable high prices which hinders the acquisition. Or in other cases, NFTs are owned by wallets with lost keys, such that the ownership will never be a complete one. We need a way to enable potential total acquisition.
Specification
The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in RFC 2119.
EIP-1155 compliant contracts MAY implement this EIP for adding functionalities to support total acquisition.
//set the percentage required for any acquirer to trigger a forced sale //set also the payment token to settle for the acquisition function setForcedSaleRequirement( uint128 requiredBP, address erc20Token ) public onlyOwner //set the unit price to acquire the remaining NFTs (100% - requiredBP) //suggest to use a Time Weighted Average Price for a certain period before reaching the requiredBP //emit ForcedSaleSet function setForcedSaleTWAP( uint256 amount ) public onlyOwner //acquirer deposit remainingQTY*TWAP //emit ForcedSaleFinished //after this point, the acquirer is the new owner of the whole asset function execForcedSale ( uint256 amount ) public external payable //burn ALL NFTs and collect funds //emit ForcedSaleClaimed function claimForcedSale() public event ForcedSaleSet( bool isSet ) event ForceSaleClaimed( uint256 qtyBurned, uint256 amountClaimed, address claimer )
Rationale
Native ETH is supported by via Wrapped Ether EIP-20. After forcedSale is set, the remaining NFTs metadata should be updated to reflect the NFTs are at most valued at the previously set TWAP price.
Security Considerations
The major security risks considered include
- The execution of the forcedSale is only executed by the contract owner, after a governance proposal. If there is any governance attack, the forcedSale TWAP price might be manipulated on a specific timing. The governance structure for using this extension should consider adding a council to safeguard the fairness of the forcedSale.
- Payment tokens are deposited into the contract account when forcedSale is executed. These tokens will then await the minority holders to withdraw on burning the NFT. There might be a potential security risk.
Copyright
Copyright and related rights waived via CC0.
Adopted by projects
Not miss a beat of EIPs' update?
Subscribe EIPs Fun to receive the latest updates of EIPs Good for Buidlers to follow up.
View all