Initialization
Solidity
Section titled “Solidity”constructor() ERC721(DUTCH_AUCTION_COLLECTION_NAME, DUTCH_AUCTION_COLLECTION_SYMBOL){}public entry fun initialize(creator: &signer) { assert!(signer::address_of(creator) == @dutch_auction_address, error::permission_denied(ENOT_OWNER));
let description = string::utf8(DUTCH_AUCTION_COLLECTION_DESCRIPTION); let name = string::utf8(DUTCH_AUCTION_COLLECTION_NAME); let uri = string::utf8(DUTCH_AUCTION_COLLECTION_URI);
collection::create_unlimited_collection( creator, description, name, option::none(), uri, );}initialize 会先创建一个 collection object,后续所有 token object 都会归属于它。发布者在发布包之后,通过单独的一笔交易调用它;生产环境的模块还应加上“只执行一次”的保护(见 Aptos 上的模块)。相比 Solidity,这里仍然存在“一次性初始化”步骤,但产物不再是继承了 ERC-721 行为的合约状态机,而是一套链上的 object 结构。