主页EIPs
EIPsERC-5505
ERC-5505

EIP-1155 asset backed NFT extension

Extends EIP-1155 to support crucial operations for asset-backed NFTs
StagnantStandards Track: ERC
创建时间: 2022-08-18
关联 EIP: EIP-1155
liszechung (@liszechung)
社区讨论原文链接编辑
1 分钟了解
欢迎补充好内容
去提交
相关视频
欢迎补充好内容
去提交
正文

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 and related rights waived via CC0.

扩展阅读
欢迎补充好内容
去提交
相关项目
欢迎补充好内容
去提交

不想错过最新的 EIP 动态?

订阅 EIPs Fun 周刊以跟进相关更新,建⽴你与 EIP 之间的连接 ,更好地建设以太坊。

详情
支持以太坊贡献者,推动生态建设
资源
GitHub
支持社区