Alert Source Discuss
🚧 Stagnant Standards Track: ERC

ERC-5505: EIP-1155 资产支持的 NFT 扩展

扩展 EIP-1155 以支持资产支持的 NFT 的关键操作

Authors liszechung (@liszechung)
Created 2022-08-18
Discussion Link https://ethereum-magicians.org/t/eip-draft-erc1155-asset-backed-nft-extension/10437
Requires EIP-1155

摘要

为了提出使用 EIP-1155 标准的资产支持、碎片化项目的智能合约接口的扩展,以便总收购成为可能。本提案侧重于实物资产,其中总收购应该能够发生。

动机

当有人想要收购整个资产时,碎片化的、资产支持的 NFT 面临困难。 例如,如果有人想把一个碎片化的资产带回家,他需要购买所有的 NFT 片段,这样他才能成为 100% 的所有者。 但是,由于在像 Ethereum 这样的开放环境中,有人试图进行全面收购是公开可见的,因此他无法这样做。 卖家会趁机设定不合理的高价,从而阻碍收购。 或者在其他情况下,NFT 由密钥丢失的钱包拥有,因此所有权永远不会是完整的。 我们需要一种方法来实现潜在的总收购。

规范

本文档中的关键词“MUST”、“MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、“RECOMMENDED”、“MAY”和“OPTIONAL”应按照 RFC 2119 中的描述进行解释。

符合 EIP-1155 的合约可以实现此 EIP,以添加功能来支持总收购。

// 设置任何收购者触发强制出售所需的百分比
// 同时设置支付代币以结算收购

function setForcedSaleRequirement(
	uint128 requiredBP,
	address erc20Token
) public onlyOwner

// 设置收购剩余 NFT 的单价(100% - requiredBP)
// 建议使用在达到 requiredBP 之前的某个时间段内的加权平均价格
// emit ForcedSaleSet

function setForcedSaleTWAP(
	uint256 amount
) public onlyOwner

// 收购者存入 remainingQTY*TWAP
// emit ForcedSaleFinished
// 在此之后,收购者是整个资产的新所有者

function execForcedSale (
	uint256 amount
) public external payable

// 销毁所有 NFT 并收集资金
// emit ForcedSaleClaimed

function claimForcedSale()
public

event ForcedSaleSet(
	bool isSet
)
event ForceSaleClaimed(
	uint256 qtyBurned,
	uint256 amountClaimed,
	address claimer
)

基本原理

原生 ETH 通过 Wrapped Ether EIP-20 支持。 在设置 forcedSale 之后,剩余的 NFT 元数据应更新以反映 NFT 的价值最多为先前设置的 TWAP 价格。

安全注意事项

考虑的主要安全风险包括

  • forcedSale 的执行仅由合约所有者在治理提案之后执行。 如果存在任何治理攻击,则 forcedSale TWAP 价格可能会在特定时间被操纵。 使用此扩展的治理结构应考虑添加一个理事会来保障 forcedSale 的公平性。
  • 当执行 forcedSale 时,支付代币被存入合约账户。 然后,这些代币将等待少数持有人在销毁 NFT 时提取。 可能存在潜在的安全风险。

版权

版权和相关权利通过 CC0 放弃。

Citation

Please cite this document as:

liszechung (@liszechung), "ERC-5505: EIP-1155 资产支持的 NFT 扩展 [DRAFT]," Ethereum Improvement Proposals, no. 5505, August 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-5505.