NEAR Marketplace - 我应该如何收取每笔交易的交易费?
NEAR Marketplace - How should I charge the transaction fee on each sales?
我们正在 NEAR 中建立一个市场。我们有两个用于代币和市场的智能合约。与 NEAR example.
相同
在我们的平台中,我们成功实现了以下功能:
- 代币铸币(使用合约方式:
nft_mint
)
- 在市场上出售的代币列表(使用的合约方法:
storage_deposit
nft_approve
)
- 代币购买(使用合约方式:
offer
)
一切正常。
现在,我们想对我们市场的每笔销售收取交易费 (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 金额,这样您就可以提取该金额,而不会意外提取太多可能通过存储存款“属于”其他人的资金。
我们正在 NEAR 中建立一个市场。我们有两个用于代币和市场的智能合约。与 NEAR example.
相同在我们的平台中,我们成功实现了以下功能:
- 代币铸币(使用合约方式:
nft_mint
) - 在市场上出售的代币列表(使用的合约方法:
storage_deposit
nft_approve
) - 代币购买(使用合约方式:
offer
)
一切正常。
现在,我们想对我们市场的每笔销售收取交易费 (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 金额,这样您就可以提取该金额,而不会意外提取太多可能通过存储存款“属于”其他人的资金。