通用 (Token)

该模块提供了多个 token 标准通用的扩展和实用程序。

ERC2981

IERC2981

use openzeppelin_token::common::erc2981::interface::IERC2981;

0x2d3414e45a8700c29f119a54b9f11dca0e29e06ddcb214018fc37340e165ed6

EIP-2981 中定义的 ERC2981 标准接口。

函数

royalty_info(token_id: u256, sale_price: u256) → (ContractAddress, u256) external

基于可能以任何交换单位计价的销售价格,返回应付多少版税以及支付给谁。版税金额以相同的交换单位计价,并且必须以该单位支付。

IERC2981Info

use openzeppelin_token::common::erc2981::interface::IERC2981Info;

接口,为发现 ERC2981 组件的状态提供外部读取功能。

函数

default_royalty() → (ContractAddress, u128, u128) external

返回此合约中所有 id 将默认采用的版税信息。

返回的元组包含:

  • t.0: 版税支付的接收者。

  • t.1: 版税分数的分子。

  • t.2: 版税分数的分母。

token_royalty(token_id: u256) → (ContractAddress, u128, u128) external

返回特定于 token 的版税信息。

返回的元组包含:

  • t.0: 版税支付的接收者。

  • t.1: 版税分数的分子。

  • t.2: 版税分数的分母。

IERC2981Admin

use openzeppelin_token::common::erc2981::interface::IERC2981Admin;

接口,提供外部管理功能来管理 ERC2981 组件的设置。

函数

set_default_royalty(receiver: ContractAddress, fee_numerator: u128) external

设置此合约中所有 id 将默认采用的版税信息。

delete_default_royalty() external

将默认版税百分比和接收者设置为零。

set_token_royalty(token_id: u256, receiver: ContractAddress, fee_numerator: u128) external

设置特定 token id 的版税信息,该信息优先于全局默认值。

reset_token_royalty(token_id: u256) external

将 token id 的版税信息重置为未设置状态。

ERC2981Component

use openzeppelin_token::common::erc2981::ERC2981Component;

扩展 IERC2981 的 ERC2981 组件。

不可变配置常量

FEE_DENOMINATOR: u128 constant

分母,用于将 _set_token_royalty_set_default_royalty 中设置的费用解释为销售价格的一部分。

validate() internal

验证合约配置的给定实现。

要求:

  • FEE_DENOMINATOR 必须大于 0。

注意:此函数由合约的初始化程序调用。

可嵌入函数

royalty_info(@self: ContractState, token_id: u256, sale_price: u256) → (ContractAddress, u256) external

基于可能以任何交换单位计价的销售价格,返回应付多少版税以及支付给谁。版税金额以相同的交换单位计价,并且应以该单位支付。

返回的元组包含:

  • t.0: 版税支付的接收者。

  • t.1: 版税支付金额。

default_royalty(@self: ContractState) → (ContractAddress, u128, u128) external

返回此合约中所有 id 将默认采用的版税信息。

返回的元组包含:

  • t.0: 版税支付的接收者。

  • t.1: 版税分数的分子。

  • t.2: 版税分数的分母。

token_royalty(self: @ContractState, token_id: u256) → (ContractAddress, u128, u128) external

返回特定于 token 的版税信息。 如果未为 token 设置特定版税信息,则返回默认值。

返回的元组包含:

  • t.0: 版税支付的接收者。

  • t.1: 版税分数的分子。

  • t.2: 版税分数的分母。

ERC2981AdminOwnableImpl

提供用于管理版税设置的管理功能,这些功能仅限于由合约所有者调用。 要求合约实现 OwnableComponent

set_default_royalty(ref self: ContractState, receiver: ContractAddress, fee_numerator: u128) external

设置此合约中所有 id 将默认采用的版税信息。

要求:

  • 调用者是合约所有者。

  • receiver 不能为零地址。

  • fee_numerator 不能大于费用分母。

delete_default_royalty(ref self: ContractState) external

将默认版税百分比和接收者设置为零。

要求:

  • 调用者是合约所有者。

set_token_royalty(ref self: ContractState, token_id: u256, receiver: ContractAddress, fee_numerator: u128) external

设置特定 token id 的版税信息,该信息优先于全局默认值。

要求:

  • 调用者是合约所有者。

  • receiver 不能为零地址。

  • fee_numerator 不能大于费用分母。

reset_token_royalty(ref self: ContractState, token_id: u256) external

将 token id 的版税信息重置为未设置状态。

要求:

  • 调用者是合约所有者。

ERC2981AdminAccessControlImpl

提供用于管理版税设置的管理功能,这些功能要求向调用者授予 ROYALTY_ADMIN_ROLE 角色。 要求合约实现 AccessControlComponent

ROYALTY_ADMIN_ROLE: felt252 constant

负责管理版税设置的管理员角色。

set_default_royalty(ref self: ContractState, receiver: ContractAddress, fee_numerator: u128) external

设置此合约中所有 id 将默认采用的版税信息。

要求:

  • 调用者必须具有 ROYALTY_ADMIN_ROLE 角色。

  • receiver 不能为零地址。

  • fee_numerator 不能大于费用分母。

delete_default_royalty(ref self: ContractState) external

将默认版税百分比和接收者设置为零。

要求:

  • 调用者必须具有 ROYALTY_ADMIN_ROLE 角色。

set_token_royalty(ref self: ContractState, token_id: u256, receiver: ContractAddress, fee_numerator: u128) external

设置特定 token id 的版税信息,该信息优先于全局默认值。

要求:

  • 调用者必须具有 ROYALTY_ADMIN_ROLE 角色。

  • receiver 不能为零地址。

  • fee_numerator 不能大于费用分母。

reset_token_royalty(ref self: ContractState, token_id: u256) external

将 token id 的版税信息重置为未设置状态。

要求:

  • 调用者必须具有 ROYALTY_ADMIN_ROLE 角色。

内部函数

initializer(ref self: ContractState, default_receiver: ContractAddress, default_royalty_fraction: u128) internal

通过设置默认版税和注册支持的接口来初始化合约。

要求:

  • default_receiver 不能为零地址。

  • default_royalty_fraction 不能大于费用分母。

  • 费用分母必须大于 0。

注意:费用分母由合约使用 不可变的组件配置 设置。

_default_royalty(self: @ContractState) → (ContractAddress, u128, u128) internal

返回此合约中所有 id 将默认采用的版税信息。

返回的元组包含:

  • t.0: 版税支付的接收者。

  • t.1: 版税分数的分子。

  • t.2: 版税分数的分母。

_set_default_royalty(ref self: ContractState, receiver: ContractAddress, fee_numerator: u128) internal

设置此合约中所有 id 将默认采用的版税信息。

要求:

  • receiver 不能为零地址。

  • fee_numerator 不能大于费用分母。

_delete_default_royalty(ref self: ContractState) internal

将默认版税百分比和接收者设置为零。

_token_royalty(self: @ContractState, token_id: u256) → (ContractAddress, u256, u256) internal

返回此合约中所有 id 将默认采用的版税信息。

返回的元组包含:

  • t.0: 版税支付的接收者。

  • t.1: 版税分数的分子。

  • t.2: 版税分数的分母。

_set_token_royalty(ref self: ContractState, token_id: u256, receiver: ContractAddress, fee_numerator: u128) internal

设置特定 token id 的版税信息,该信息优先于全局默认值。

要求:

  • receiver 不能为零地址。

  • fee_numerator 不能大于费用分母。

_reset_token_royalty(ref self: ContractState, token_id: u256) internal

将 token id 的版税信息重置为未设置状态。