Module of Collection CreatorsDomain
CreatorsDomain tracks all collection creators, used to authenticate
mutable operations on other OriginByte standard domains.
Structs
creators::CreatorsDomain<C> has store
creators::CreatorsDomain<C> has store
Fields:
| Name | Type | Description |
|---|---|---|
generator
|
witness::WitnessGenerator<C>
|
Generator responsible for issuing delegated witnesses |
creators
|
vec_set::VecSet<address>
|
Creators that have the ability to mutate standard domains |
CreatorsDomain tracks collection creators
Usage
Originbyte Standard domains will authenticate mutable operations for
transaction senders which are creators using
assert_collection_has_creator.
CreatorsDomain can additionally be frozen which will cause
assert_collection_has_creator to always fail, therefore, allowing
creators to lock in their NFT collection.
Methods
public fun empty<C>(witness: &C):
creators::CreatorsDomain<C>
public fun empty<C>(witness: &C):
creators::CreatorsDomain<C>Creates an empty CreatorsDomain object
By not attributing any Creators, nobody will ever be able to modify
Collection domains.
public fun from_address<C, W>(witness: &W, who: address):
creators::CreatorsDomain<C>
public fun from_address<C, W>(witness: &W, who: address):
creators::CreatorsDomain<C>Creates a CreatorsDomain object with only one creator
Only the single Creator will ever be able to modify Collection
domains.
public fun from_creators<C, W>(
witness: &W,
creators: vec_set::VecSet<address>,
): creators::CreatorsDomain<C>
public fun from_creators<C, W>(
witness: &W,
creators: vec_set::VecSet<address>,
): creators::CreatorsDomain<C>Creates a CreatorsDomain with multiple creators
Each attributed creator will be able to modify Collection domains.
public fun add_creator<C>(
_witness: witness::Witness<C>,
collection: &mut collection::Collection<C>,
who: address,
)
public fun add_creator<C>(
_witness: witness::Witness<C>,
collection: &mut collection::Collection<C>,
who: address,
)Attributes the given address as a creator on the Collection
Panics
Panics if creator was already attributed or CreatorsDomain is not
registered on the Collection.
public entry fun add_creator_external<C>(
collection: &mut collection::Collection<C>,
who: address,
ctx: &mut tx_context::TxContext,
)
public entry fun add_creator_external<C>(
collection: &mut collection::Collection<C>,
who: address,
ctx: &mut tx_context::TxContext,
)Attributes the given address as a creator on the Collection
Same as add_creator but as an entry function.
Panics
Panics if transaction sender is not a creator, if already attributed,
or if CreatorsDomain is not registered on the Collection.
public fun delegate<C>(
collection: &collection::Collection<C>,
ctx: &mut tx_context::TxContext,
): witness::Witness<C>
public fun delegate<C>(
collection: &collection::Collection<C>,
ctx: &mut tx_context::TxContext,
): witness::Witness<C>Create a delegated witness
Delegated witness can be used to authorize mutating operations across most OriginByte domains.
Panics
Panics if transaction sender was not a creator or CreatorsDomain was
not registered on the Collection.
public fun is_empty<C>(
domain: &creators::CreatorsDomain<C>,
): bool
public fun is_empty<C>(
domain: &creators::CreatorsDomain<C>,
): boolReturns whether CreatorsDomain has no defined creators
public fun contains_creator<C>(
domain: &creators::CreatorsDomain<C>,
who: &address,
): bool
public fun contains_creator<C>(
domain: &creators::CreatorsDomain<C>,
who: &address,
): boolReturns whether address is a defined creator
public fun borrow_creators<C>(
domain: &creators::CreatorsDomain<C>,
): &vec_set::VecSet<address>
public fun borrow_creators<C>(
domain: &creators::CreatorsDomain<C>,
): &vec_set::VecSet<address>Returns the list of creators defined on the CreatorsDomain
public fun creators_domain<C>(
collection: &collection::Collection<C>,
): &creators::CreatorsDomain<C>
public fun creators_domain<C>(
collection: &collection::Collection<C>,
): &creators::CreatorsDomain<C>Borrows CreatorsDomain from Collection
Panics
Panics if CreatorsDomain is not registered on Collection.
public fun assert_creator<C>(
domain: &creators::CreatorsDomain<C>,
who: &address,
)
public fun assert_creator<C>(
domain: &creators::CreatorsDomain<C>,
who: &address,
)Asserts that address is a creator attributed in CreatorsDomain
Panics
Panics if CreatorsDomain is not defined or address is not an
attributed creator.
public fun assert_domain<C>(
collection: &collection::Collection<C>,
)
public fun assert_domain<C>(
collection: &collection::Collection<C>,
)Asserts that CreatorsDomain is defined on the Collection
Panics
Panics if CreatorsDomain is not defined on the Collection.