Erc-721

ERC 標準:可以為 NFT 設置價格上限嗎?

  • October 26, 2021

假設我想創建一個不可替代的代幣,它代表一個場地的門票。而且我不希望票販子購買門票並以更高的價格轉售這些門票。只能以相同或更低的價格轉售門票。

是否存在可以設置最高轉售價格的 ERC 標準?

如果沒有,如何實現?我現在能想到的最好的方法就是複制 ERC721 合約並修改傳輸函式。但是後來我失去了 ERC721 兼容性的所有好處……

TL; 博士

在 ERC-1155 合約中添加一個額外的函式來處理它包含的 ERC-721 代幣的發行。該函式將具有檢查發送到方法的乙太數量的邏輯。如果不夠,就mint失敗。如果夠用,mint就通過。如果它太多,mint就會發生並將額外的返還(減去 tx 費用)給所有者。

細節

您必須創建一個 ERC-1155 集合,負責鑄造 ERC-721 代幣並為價格定義自定義邏輯。任何時候mint,在 NFTtransfertransferTo被呼叫,它必須呼叫擁有它的集合來確定價格是足夠、合適還是太多。

案例

您的邏輯可能是僵化的,對價格設置硬性上限,或動態的以允許發生折扣等事件。由於您的問題含糊不清,我會稍微放縱一下。

一個集合包含許多 ERC-721 NFT,它們的屬性可能略有不同;票證將包含元數據,如_section、和。_seat``_gameId``_tokenId

這是一個新的發展領域,適合即興創作和獨特的解決方案。我鼓勵你在做這個項目時跳出框框思考。

靈活的

與傳統市場不同,您不需要交易對手來使用此模型確定價格。您獲得的資產價格由公式確定。如果我正在查看 ETH:DAI 流動性的單一來源,並且我想購買所有 ETH,我不能,因為每個購買的 ETH 都會以零作為限制以指數方式增加價格,如果任一xy達到零,則等式不起作用,我們的k價值變為零,使資產無法購買。

靜態價格

如果你想要一個完全不變的價格,收集只需要限制可以發送的最大數量的 ETH 來呼叫其中mint的 NFT 上的函式,其餘的將返回到購買賬戶。

但現在,價格並不總是一成不變的。有早鳥特價,購買許多門票的折扣(例如公司聚會),甚至在銷售不佳以填補座位後的折扣都是司空見慣的。

您可以(任意)將某物的價值鬆散地定義為:

Value = Utility + Ownership History + Future Value + Liquidity

門票的效用高,所有權歷史影響低/無影響,沒有未來價值,流動性各不相同(取決於售罄門票的數量、圍繞活動的炒作、座位數量)。與一件賣了 100 次的藝術品相比,它具有低效用、高擁有歷史、潛在的未來價值和流動性而沒有結束時間。

由於所有權歷史和未來價值對門票並不重要,我們有流動性(可用性)和需求。

Value = Availability / Demand

demand依賴於哪裡availability。您的 1155 合約將設置初始demand值,這availability取決於導致事件的集合中地址未聲明的代幣數量。

固定價格需要更少的程式碼,因為您只需在購買代幣中設置它的價值。availability不是任何等式的一部分,僅用於查看剩餘票數。

在價格波動的情況下,demand可以表示為0-1之間的浮點變數。當門票首次開始銷售時,demand從 1 開始,因為已鑄造零門票。我們可以接近零,但即使沒有門票需求,也永遠無法達到,因為這在數學上是不可能的。很可能demand會保持不變:想要去某事的人無論如何都想去某事。如果他們負擔得起,他們就會去。唯一能做的就是根據門票請求的數量按比例降低價格,這與今天的活動門票沒有什麼不同,促銷員會給予折扣以填補座位。

像這樣設置等式還可以防止價格超過銷售價格,因為您demand在控制契約中設定為 1。但是,您可以更改此設置並允許在合理範圍內進行一些轉售。如果是最後一分鐘,有時票價會上漲(黃牛與否)。也許將demand浮點值設置為略高於 1 會更有意義。

筆記

如果 NFT 由具有自定義邏輯的 1155 集合控制,您可以定義從固定價格到聯合曲線的任何類型的價格發行,或者如果在活動前幾天N仍未售出門票數量,甚至可以自動降低成本X,以便售完。

ERC721 標准定義了令牌。同樣,ERC20 標准定義了一種不同類型的代幣。它們都沒有定義代幣的銷售方式或在什麼情況下轉移——該標準只是在需要時啟用轉移。

因此,通常會創建一個單獨的銷售契約(或在 ERC20 ICO 的情況下 - 眾售契約)。在 ERC20 的情況下,過程非常簡單:最初眾籌合約持有所有待售代幣,當有人向合約發送乙太幣時,呼叫代幣合約將適當數量的代幣轉移給買方。

我不太熟悉 ERC721 代幣的銷售方式,但我想這更像是一次性銷售。所以有一個銷售契約,賣方發送代幣並說明它想要的價格。然后買家將請求的乙太幣數量發送給合約,合約呼叫 ERC721 代幣合約來轉移代幣並將乙太幣轉移給買家。

至於您的具體情況,我建議您創建一個銷售契約,該契約根本不允許以更高的價格轉售代幣。也就是說,如果賣方使用該契約——通常沒有什麼能阻止他使用他想要的任何方式出售代幣。您可以編寫代幣,使其僅允許從某個地址(賣方契約)進行轉賬和/或您可以指示您的使用者僅通過這一契約出售他們的代幣。

引用自:https://ethereum.stackexchange.com/questions/77265