版税

NFT 版税是一种机制,允许创作者和艺术家在其数字资产在二级市场出售时,获得该资产转售价格的一定百分比。 即使在初次销售之后,这种机制也为创作者提供了从其作品增值中继续受益的方式。

以下是 NFT 版税的工作原理:

初次销售

当 NFT 首次由创作者铸造并出售时(通常称为“初次销售”),创作者可以指定他们希望收到的销售价格的百分比作为版税。 这一百分比通常在铸造过程中在 NFT 的智能合约中设置。

二级销售

在初次销售之后,NFT 可以由其所有者在二级市场(如 NFT 市场)转售或交易。当发生二级销售时,创作者自动有权获得转售价的指定百分比(即版税)。 促成销售的平台或市场会自动扣除这部分版税,并将其转移到创作者的钱包中。

持续收益

只要 NFT 被转售,版税就为创作者提供了一条持续的收入来源。这激励艺术家和创作者生产高质量和受欢迎的数字内容,因为他们可以随着时间的推移参与其作品的增值。

透明性

NFT 中的版税是透明和可验证的。与 NFT 相关的智能合约指定了版税的百分比,并确保其在二级销售中自动执行。 这种透明性建立了创作者和买家之间的信任,因为双方都可以看到版税是如何分配的。

收藏家的利益

版税对收藏家和投资者也有利,因为他们可以确信自己对 NFT 的投资可能会随着时间的推移而增值。 知道未来转售收益的一部分将返回给原始创作者,可以增强 NFT 的感知价值。

需要注意的一点是,版税通常由诸如 OriginByte 这样的标准保证执行。它们通常由支持上市销售 NFT 的市场和交易所强制执行。 这是因为支付方式可以有所不同(不同类型的代币、其他 NFT、债务票据等),并且金额由市场自我报告。

然而,像 OriginByte 这样的标准确实为创作者提供了定义政策(OriginByte 称之为“策略”)的机制,关于如何计算和执行版税。 这为版税提供了标准化格式,并使交易所更容易收取版税。

use nft_protocol::royalty;
use nft_protocol::royalty_strategy_bps;
use ob_permissions::witness;
use std::string::{Self, String};
use sui::package;

/// 可用于创建后授权其他操作。至关重要的是,这个结构体不能随意提供给任何合约,因为它充当授权令牌。
public struct Witness has drop {}

fun init(otw: KITE, ctx: &mut TxContext) {
    let (collection, mint_cap) =
        collection::create_with_mint_cap<KITE, KiteNFT>(&otw, option::none(), ctx);
    let delegated_witness = witness::from_witness(Witness {});
     collection::add_domain(
        delegated_witness,
        &mut collection,
        display_info::new(
            string::utf8(b"Kites"),
            string::utf8(b"A NFT collection of Kites on Sui"),
        ),
    );
 
    // 定义版税
    let shares = vector[100];
    let creator = tx_context::sender(ctx);
    let shares = utils::from_vec_to_map(creator, shares);
    // 100 BPS (Basis points) == 1%
    royalty_strategy_bps::create_domain_and_add_strategy(
        delegated_witness, &mut collection, royalty::from_shares(shares, ctx), 100, ctx,
    );    

    // 确保版税能轻易被执行
    let publisher = package::claim(otw, ctx);
    let (transfer_policy, transfer_policy_cap) =
        transfer_request::init_policy<KiteNFT>(&publisher, ctx);
    royalty_strategy_bps::enforce(&mut transfer_policy, &transfer_policy_cap);
}

在上面的例子中,我们添加了 1% 的版税,该版税的 100% 支付给单个创作者(模块的部署者)。注意,在幕后, royalty_strategy_bps::create_domain_and_add_strategy 实际上是通过 collection::add_domain 以添加其他属性的方式,将版税作为属性(“域”)添加。 它还创建并通过 royalty_strategy_bps::enforce 强制执行一个特殊的转移策略。我们将在后面的 Kiosk 课程中详细介绍 TransferPolicy,因为 TransferPolicy 是 Kiosk 标准引入的一个概念。

市场如何通过 royalty_strategy_bps、TransferPolicy 和 TransferRequest 的组合来强制执行版税的具体细节超出了本课程的范围。 好奇的学习者被鼓励查看源代码(https://github.com/Origin-Byte/nft-protocol/blob/main/contracts/nft_protocol/sources/rules/royalty_strategy.move#L65),以了解这在幕后是如何真正工作的。