NEAR Marketplace - 我应该如何收取每笔交易的交易费?

NEAR Marketplace - How should I charge the transaction fee on each sales?

我们正在 NEAR 中建立一个市场。我们有两个用于代币和市场的智能合约。与 NEAR example.

相同

在我们的平台中,我们成功实现了以下功能:

一切正常。

现在,我们想对我们市场的每笔销售收取交易费 (2.5%)。

--

我用 Paras Marketplace 进行了一次铸造和购买测试,以观察特许权使用费和交易费用的分布。以下是测试详情:

With seller.near account, I minted an NFT in Paras Marketplace. And added 3% royalty. And listed it @1 Ⓝ for sale.

With buyer.near account, bought it with another account.

NFT 详情:

Name         : My Non-fungible token #1 
Listed Price : 1 Ⓝ
Royalty      : 3%

销售明细:

Receive (Seller)  : 0.95 Ⓝ
Royalty (Creator) : 0.03 Ⓝ
Fee (Paras)       : 0.02 Ⓝ

购买前-账户余额

buyer.near  : 50.03995 Ⓝ
seller.near : 4.896 Ⓝ

购买后(铸造后第一次销售)- 账户余额

buyer.near  : 49.03388 Ⓝ  | Difference : -1.00607 Ⓝ
seller.near : 5.82587 Ⓝ   | Difference : +0.92987 Ⓝ

# NFT 创建交易

这是 nft_create_series 笔交易。 Paras 发送 "transaction_fee": "200" 以对每次销售收取 2% 的服务费:

# NFT 买入交易

这是 buy 笔交易。 Paras收取2%服务费的地方:

问题:

我们想对每笔销售收取 2.5% 的服务费。 我们想在我们的市场合约中实施 "transaction_fee": "250" object。 如何对我们的市场做同样的事情?

您可以通过多种方式来执行此操作。我推荐的两个如下(我看到你在跟随从零到英雄的教程):

选项 A(最简单)- 在生成代币时将您的帐户存储在代币的永久版税对象中。

  • 这是最容易实现的,因为您不需要更改合同中的任何内容,您只需更改传递到 mint 版税对象中的内容。
  • 这需要您对 NFT 合约有控制权。
  • 这允许您在 出售代币的任何市场上收取版税,因为版税存储在 NFT 合约中的代币级别。
  • 这允许您指定哪个帐户应该接收版税,而不是强制市场合约存储资金。

选项 B - 在您的市场合同中调用 nft_transfer_payout 之前,从 price 中减去 2.5%目的。这将导致您的市场合同保留 2.5%,并将剩余的 97.5% 支付给相应的账户。

  • 使用这种方法,由于许多帐户都在为存储付费,因此您的合约中的资金并非全部 withdraw-able 由您所有。您应该记录收到的 $NEAR 金额,这样您就可以提取该金额,而不会意外提取太多可能通过存储存款“属于”其他人的资金。