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.