通用 (Token)
该模块提供了多个 token 标准通用的扩展和实用程序。
ERC2981
IERC2981
use openzeppelin_token::common::erc2981::interface::IERC2981;
0x2d3414e45a8700c29f119a54b9f11dca0e29e06ddcb214018fc37340e165ed6
EIP-2981 中定义的 ERC2981 标准接口。
IERC2981Info
use openzeppelin_token::common::erc2981::interface::IERC2981Info;
接口,为发现 ERC2981 组件的状态提供外部读取功能。
IERC2981Admin
use openzeppelin_token::common::erc2981::interface::IERC2981Admin;
接口,提供外部管理功能来管理 ERC2981 组件的设置。
set_default_royalty(receiver: ContractAddress, fee_numerator: u128)
external
设置此合约中所有 id 将默认采用的版税信息。
ERC2981Component
use openzeppelin_token::common::erc2981::ERC2981Component;
扩展 IERC2981 的 ERC2981 组件。
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
不能大于费用分母。
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。
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
不能大于费用分母。
_token_royalty(self: @ContractState, token_id: u256) → (ContractAddress, u256, u256)
internal
返回此合约中所有 id 将默认采用的版税信息。
返回的元组包含:
-
t.0
: 版税支付的接收者。 -
t.1
: 版税分数的分子。 -
t.2
: 版税分数的分母。