跳转到内容

token_event_store - [mainnet]

此内容尚不支持你的语言。

This module provides utils to add and emit new token events that are not in token.move

use 0x1::account;
use 0x1::any;
use 0x1::event;
use 0x1::features;
use 0x1::option;
use 0x1::signer;
use 0x1::string;
use 0x3::property_map;

Structs

CollectionDescriptionMutateEvent

Event emitted when collection description is mutated

struct CollectionDescriptionMutateEvent has drop, store
Fields
creator_addr: address
collection_name: string::String
old_description: string::String
new_description: string::String

CollectionDescriptionMutate

Event emitted when collection description is mutated

#[event]
struct CollectionDescriptionMutate has drop, store
Fields
creator_addr: address
collection_name: string::String
old_description: string::String
new_description: string::String

CollectionUriMutateEvent

Event emitted when collection uri is mutated

struct CollectionUriMutateEvent has drop, store
Fields
creator_addr: address
collection_name: string::String
old_uri: string::String
new_uri: string::String

CollectionUriMutate

Event emitted when collection uri is mutated

#[event]
struct CollectionUriMutate has drop, store
Fields
creator_addr: address
collection_name: string::String
old_uri: string::String
new_uri: string::String

CollectionMaxiumMutateEvent

Event emitted when the collection maximum is mutated

struct CollectionMaxiumMutateEvent has drop, store
Fields
creator_addr: address
collection_name: string::String
old_maximum: u64
new_maximum: u64

CollectionMaximumMutate

Event emitted when the collection maximum is mutated

#[event]
struct CollectionMaximumMutate has drop, store
Fields
creator_addr: address
collection_name: string::String
old_maximum: u64
new_maximum: u64

OptInTransferEvent

Event emitted when an user opt-in the direct transfer

struct OptInTransferEvent has drop, store
Fields
opt_in: bool
True if the user opt in, false if the user opt-out

OptInTransfer

Event emitted when an user opt-in the direct transfer

#[event]
struct OptInTransfer has drop, store
Fields
account_address: address
opt_in: bool
True if the user opt in, false if the user opt-out

UriMutationEvent

Event emitted when the tokendata uri mutates

struct UriMutationEvent has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_uri: string::String
new_uri: string::String

UriMutation

Event emitted when the tokendata uri mutates

#[event]
struct UriMutation has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_uri: string::String
new_uri: string::String

DefaultPropertyMutateEvent

Event emitted when mutating the default the token properties stored at tokendata

struct DefaultPropertyMutateEvent has drop, store
Fields
creator: address
collection: string::String
token: string::String
keys: vector<string::String>
old_values: vector<option::Option<property_map::PropertyValue>>
we allow upsert so the old values might be none
new_values: vector<property_map::PropertyValue>

DefaultPropertyMutate

Event emitted when mutating the default the token properties stored at tokendata

#[event]
struct DefaultPropertyMutate has drop, store
Fields
creator: address
collection: string::String
token: string::String
keys: vector<string::String>
old_values: vector<option::Option<property_map::PropertyValue>>
we allow upsert so the old values might be none
new_values: vector<property_map::PropertyValue>

DescriptionMutateEvent

Event emitted when the tokendata description is mutated

struct DescriptionMutateEvent has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_description: string::String
new_description: string::String

DescriptionMutate

Event emitted when the tokendata description is mutated

#[event]
struct DescriptionMutate has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_description: string::String
new_description: string::String

RoyaltyMutateEvent

Event emitted when the token royalty is mutated

struct RoyaltyMutateEvent has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_royalty_numerator: u64
old_royalty_denominator: u64
old_royalty_payee_addr: address
new_royalty_numerator: u64
new_royalty_denominator: u64
new_royalty_payee_addr: address

RoyaltyMutate

Event emitted when the token royalty is mutated

#[event]
struct RoyaltyMutate has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_royalty_numerator: u64
old_royalty_denominator: u64
old_royalty_payee_addr: address
new_royalty_numerator: u64
new_royalty_denominator: u64
new_royalty_payee_addr: address

MaxiumMutateEvent

Event emitted when the token maximum is mutated

struct MaxiumMutateEvent has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_maximum: u64
new_maximum: u64

MaximumMutate

Event emitted when the token maximum is mutated

#[event]
struct MaximumMutate has drop, store
Fields
creator: address
collection: string::String
token: string::String
old_maximum: u64
new_maximum: u64

CollectionMaxiumMutate

#[event]
#[deprecated]
struct CollectionMaxiumMutate has drop, store
Fields
creator_addr: address
collection_name: string::String
old_maximum: u64
new_maximum: u64

Resources

TokenEventStoreV1

struct TokenEventStoreV1 has key
Fields
collection_uri_mutate_events: event::EventHandle<token_event_store::CollectionUriMutateEvent>
collection mutation events
collection_maximum_mutate_events: event::EventHandle<token_event_store::CollectionMaxiumMutateEvent>
collection_description_mutate_events: event::EventHandle<token_event_store::CollectionDescriptionMutateEvent>
opt_in_events: event::EventHandle<token_event_store::OptInTransferEvent>
token transfer opt-in event
uri_mutate_events: event::EventHandle<token_event_store::UriMutationEvent>
token mutation events
default_property_mutate_events: event::EventHandle<token_event_store::DefaultPropertyMutateEvent>
description_mutate_events: event::EventHandle<token_event_store::DescriptionMutateEvent>
royalty_mutate_events: event::EventHandle<token_event_store::RoyaltyMutateEvent>
maximum_mutate_events: event::EventHandle<token_event_store::MaxiumMutateEvent>
extension: option::Option<any::Any>
This is for adding new events in future

Functions

initialize_token_event_store

fun initialize_token_event_store(acct: &signer)
Implementation
fun initialize_token_event_store(acct: &signer){
if (!exists<TokenEventStoreV1>(signer::address_of(acct))) {
move_to(acct, TokenEventStoreV1 {
collection_uri_mutate_events: account::new_event_handle<CollectionUriMutateEvent>(acct),
collection_maximum_mutate_events: account::new_event_handle<CollectionMaxiumMutateEvent>(acct),
collection_description_mutate_events: account::new_event_handle<CollectionDescriptionMutateEvent>(acct),
opt_in_events: account::new_event_handle<OptInTransferEvent>(acct),
uri_mutate_events: account::new_event_handle<UriMutationEvent>(acct),
default_property_mutate_events: account::new_event_handle<DefaultPropertyMutateEvent>(acct),
description_mutate_events: account::new_event_handle<DescriptionMutateEvent>(acct),
royalty_mutate_events: account::new_event_handle<RoyaltyMutateEvent>(acct),
maximum_mutate_events: account::new_event_handle<MaxiumMutateEvent>(acct),
extension: option::none<Any>(),
});
};
}

emit_collection_uri_mutate_event

Emit the collection uri mutation event

public(friend) fun emit_collection_uri_mutate_event(creator: &signer, collection: string::String, old_uri: string::String, new_uri: string::String)
Implementation
friend fun emit_collection_uri_mutate_event(creator: &signer, collection: String, old_uri: String, new_uri: String) acquires TokenEventStoreV1 {
let event = CollectionUriMutateEvent {
creator_addr: signer::address_of(creator),
collection_name: collection,
old_uri,
new_uri,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[signer::address_of(creator)];
if (std::features::module_event_migration_enabled()) {
event::emit(
CollectionUriMutate {
creator_addr: signer::address_of(creator),
collection_name: collection,
old_uri,
new_uri,
}
);
} else {
event::emit_event<CollectionUriMutateEvent>(
&mut token_event_store.collection_uri_mutate_events,
event,
);
};
}

emit_collection_description_mutate_event

Emit the collection description mutation event

public(friend) fun emit_collection_description_mutate_event(creator: &signer, collection: string::String, old_description: string::String, new_description: string::String)
Implementation
friend fun emit_collection_description_mutate_event(creator: &signer, collection: String, old_description: String, new_description: String) acquires TokenEventStoreV1 {
let event = CollectionDescriptionMutateEvent {
creator_addr: signer::address_of(creator),
collection_name: collection,
old_description,
new_description,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[signer::address_of(creator)];
if (std::features::module_event_migration_enabled()) {
event::emit(
CollectionDescriptionMutate {
creator_addr: signer::address_of(creator),
collection_name: collection,
old_description,
new_description,
}
);
} else {
event::emit_event<CollectionDescriptionMutateEvent>(
&mut token_event_store.collection_description_mutate_events,
event,
);
}
}

emit_collection_maximum_mutate_event

Emit the collection maximum mutation event

public(friend) fun emit_collection_maximum_mutate_event(creator: &signer, collection: string::String, old_maximum: u64, new_maximum: u64)
Implementation
friend fun emit_collection_maximum_mutate_event(creator: &signer, collection: String, old_maximum: u64, new_maximum: u64) acquires TokenEventStoreV1 {
let event = CollectionMaxiumMutateEvent {
creator_addr: signer::address_of(creator),
collection_name: collection,
old_maximum,
new_maximum,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[signer::address_of(creator)];
if (std::features::module_event_migration_enabled()) {
event::emit(
CollectionMaximumMutate {
creator_addr: signer::address_of(creator),
collection_name: collection,
old_maximum,
new_maximum,
}
);
} else {
event::emit_event<CollectionMaxiumMutateEvent>(
&mut token_event_store.collection_maximum_mutate_events,
event,
);
};
}

emit_token_opt_in_event

Emit the direct opt-in event

public(friend) fun emit_token_opt_in_event(account: &signer, opt_in: bool)
Implementation
friend fun emit_token_opt_in_event(account: &signer, opt_in: bool) acquires TokenEventStoreV1 {
let opt_in_event = OptInTransferEvent {
opt_in,
};
initialize_token_event_store(account);
let token_event_store = &mut TokenEventStoreV1[signer::address_of(account)];
if (std::features::module_event_migration_enabled()) {
event::emit(
OptInTransfer {
account_address: signer::address_of(account),
opt_in,
});
} else {
event::emit_event<OptInTransferEvent>(
&mut token_event_store.opt_in_events,
opt_in_event,
);
}
}

emit_token_uri_mutate_event

Emit URI mutation event

public(friend) fun emit_token_uri_mutate_event(creator: &signer, collection: string::String, token: string::String, old_uri: string::String, new_uri: string::String)
Implementation
friend fun emit_token_uri_mutate_event(
creator: &signer,
collection: String,
token: String,
old_uri: String,
new_uri: String,
) acquires TokenEventStoreV1 {
let creator_addr = signer::address_of(creator);
let event = UriMutationEvent {
creator: creator_addr,
collection,
token,
old_uri,
new_uri,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[creator_addr];
if (std::features::module_event_migration_enabled()) {
event::emit(
UriMutation {
creator: creator_addr,
collection,
token,
old_uri,
new_uri,
});
} else {
event::emit_event<UriMutationEvent>(
&mut token_event_store.uri_mutate_events,
event,
);
};
}

emit_default_property_mutate_event

Emit tokendata property map mutation event

public(friend) fun emit_default_property_mutate_event(creator: &signer, collection: string::String, token: string::String, keys: vector<string::String>, old_values: vector<option::Option<property_map::PropertyValue>>, new_values: vector<property_map::PropertyValue>)
Implementation
friend fun emit_default_property_mutate_event(
creator: &signer,
collection: String,
token: String,
keys: vector<String>,
old_values: vector<Option<PropertyValue>>,
new_values: vector<PropertyValue>,
) acquires TokenEventStoreV1 {
let creator_addr = signer::address_of(creator);
let event = DefaultPropertyMutateEvent {
creator: creator_addr,
collection,
token,
keys,
old_values,
new_values,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[creator_addr];
if (std::features::module_event_migration_enabled()) {
event::emit(
DefaultPropertyMutate {
creator: creator_addr,
collection,
token,
keys,
old_values,
new_values,
});
} else {
event::emit_event<DefaultPropertyMutateEvent>(
&mut token_event_store.default_property_mutate_events,
event,
);
};
}

emit_token_descrition_mutate_event

Emit description mutation event

public(friend) fun emit_token_descrition_mutate_event(creator: &signer, collection: string::String, token: string::String, old_description: string::String, new_description: string::String)
Implementation
friend fun emit_token_descrition_mutate_event(
creator: &signer,
collection: String,
token: String,
old_description: String,
new_description: String,
) acquires TokenEventStoreV1 {
let creator_addr = signer::address_of(creator);
let event = DescriptionMutateEvent {
creator: creator_addr,
collection,
token,
old_description,
new_description,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[creator_addr];
if (std::features::module_event_migration_enabled()) {
event::emit(
DescriptionMutate {
creator: creator_addr,
collection,
token,
old_description,
new_description,
});
} else {
event::emit_event<DescriptionMutateEvent>(
&mut token_event_store.description_mutate_events,
event,
);
};
}

emit_token_royalty_mutate_event

Emit royalty mutation event

public(friend) fun emit_token_royalty_mutate_event(creator: &signer, collection: string::String, token: string::String, old_royalty_numerator: u64, old_royalty_denominator: u64, old_royalty_payee_addr: address, new_royalty_numerator: u64, new_royalty_denominator: u64, new_royalty_payee_addr: address)
Implementation
friend fun emit_token_royalty_mutate_event(
creator: &signer,
collection: String,
token: String,
old_royalty_numerator: u64,
old_royalty_denominator: u64,
old_royalty_payee_addr: address,
new_royalty_numerator: u64,
new_royalty_denominator: u64,
new_royalty_payee_addr: address,
) acquires TokenEventStoreV1 {
let creator_addr = signer::address_of(creator);
let event = RoyaltyMutateEvent {
creator: creator_addr,
collection,
token,
old_royalty_numerator,
old_royalty_denominator,
old_royalty_payee_addr,
new_royalty_numerator,
new_royalty_denominator,
new_royalty_payee_addr,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[creator_addr];
if (std::features::module_event_migration_enabled()) {
event::emit(
RoyaltyMutate {
creator: creator_addr,
collection,
token,
old_royalty_numerator,
old_royalty_denominator,
old_royalty_payee_addr,
new_royalty_numerator,
new_royalty_denominator,
new_royalty_payee_addr,
});
} else {
event::emit_event<RoyaltyMutateEvent>(
&mut token_event_store.royalty_mutate_events,
event,
);
};
}

emit_token_maximum_mutate_event

Emit maximum mutation event

public(friend) fun emit_token_maximum_mutate_event(creator: &signer, collection: string::String, token: string::String, old_maximum: u64, new_maximum: u64)
Implementation
friend fun emit_token_maximum_mutate_event(
creator: &signer,
collection: String,
token: String,
old_maximum: u64,
new_maximum: u64,
) acquires TokenEventStoreV1 {
let creator_addr = signer::address_of(creator);
let event = MaxiumMutateEvent {
creator: creator_addr,
collection,
token,
old_maximum,
new_maximum,
};
initialize_token_event_store(creator);
let token_event_store = &mut TokenEventStoreV1[creator_addr];
if (std::features::module_event_migration_enabled()) {
event::emit(
MaximumMutate {
creator: creator_addr,
collection,
token,
old_maximum,
new_maximum,
});
} else {
event::emit_event<MaxiumMutateEvent>(
&mut token_event_store.maximum_mutate_events,
event,
);
};
}

Specification

pragma verify = false;
pragma aborts_if_is_strict;

initialize_token_event_store

fun initialize_token_event_store(acct: &signer)
let addr = signer::address_of(acct);
include InitializeTokenEventStoreAbortsIf {creator : acct};

Adjust the overflow value according to the number of registered events

schema InitializeTokenEventStoreAbortsIf {
creator: &signer;
let addr = signer::address_of(creator);
let account = global<Account>(addr);
aborts_if !exists<TokenEventStoreV1>(addr) && !exists<Account>(addr);
aborts_if !exists<TokenEventStoreV1>(addr) && account.guid_creation_num + 9 >= account::MAX_GUID_CREATION_NUM;
aborts_if !exists<TokenEventStoreV1>(addr) && account.guid_creation_num + 9 > MAX_U64;
}
schema TokenEventStoreAbortsIf {
creator: &signer;
let addr = signer::address_of(creator);
let account = global<Account>(addr);
aborts_if !exists<Account>(addr);
aborts_if account.guid_creation_num + 9 >= account::MAX_GUID_CREATION_NUM;
aborts_if account.guid_creation_num + 9 > MAX_U64;
}

emit_collection_uri_mutate_event

public(friend) fun emit_collection_uri_mutate_event(creator: &signer, collection: string::String, old_uri: string::String, new_uri: string::String)
include InitializeTokenEventStoreAbortsIf;

emit_collection_description_mutate_event

public(friend) fun emit_collection_description_mutate_event(creator: &signer, collection: string::String, old_description: string::String, new_description: string::String)
include InitializeTokenEventStoreAbortsIf;

emit_collection_maximum_mutate_event

public(friend) fun emit_collection_maximum_mutate_event(creator: &signer, collection: string::String, old_maximum: u64, new_maximum: u64)
include InitializeTokenEventStoreAbortsIf;

emit_token_opt_in_event

public(friend) fun emit_token_opt_in_event(account: &signer, opt_in: bool)
include InitializeTokenEventStoreAbortsIf {creator : account};

emit_token_uri_mutate_event

public(friend) fun emit_token_uri_mutate_event(creator: &signer, collection: string::String, token: string::String, old_uri: string::String, new_uri: string::String)
include InitializeTokenEventStoreAbortsIf;

emit_default_property_mutate_event

public(friend) fun emit_default_property_mutate_event(creator: &signer, collection: string::String, token: string::String, keys: vector<string::String>, old_values: vector<option::Option<property_map::PropertyValue>>, new_values: vector<property_map::PropertyValue>)
include InitializeTokenEventStoreAbortsIf;

emit_token_descrition_mutate_event

public(friend) fun emit_token_descrition_mutate_event(creator: &signer, collection: string::String, token: string::String, old_description: string::String, new_description: string::String)
include InitializeTokenEventStoreAbortsIf;

emit_token_royalty_mutate_event

public(friend) fun emit_token_royalty_mutate_event(creator: &signer, collection: string::String, token: string::String, old_royalty_numerator: u64, old_royalty_denominator: u64, old_royalty_payee_addr: address, new_royalty_numerator: u64, new_royalty_denominator: u64, new_royalty_payee_addr: address)
include InitializeTokenEventStoreAbortsIf;

emit_token_maximum_mutate_event

public(friend) fun emit_token_maximum_mutate_event(creator: &signer, collection: string::String, token: string::String, old_maximum: u64, new_maximum: u64)
include InitializeTokenEventStoreAbortsIf;