Start Auction
在 Solidity 中,startAuction 通常依赖 onlyOwner,先把 NFT mint 到合约名下,再记录拍卖元数据。
Solidity
Section titled “Solidity”function startAuction(...) external onlyOwner { require(maxPrice_ >= minPrice_, "invalid prices"); require(duration_ > 0, "zero duration"); _mint(address(this), nftId_); _auctions[nftId_] = Auction(...); emit AuctionCreated(nftId_);}Move 用显式辅助函数替代 modifier:
inline fun only_owner(owner: &signer) { assert!( signer::address_of(owner) == @dutch_auction_address, error::permission_denied(ENOT_OWNER) );}之后 start_auction 主流程会显式地完成:
- 检查 owner 身份和参数合法性
- 创建 token object
- 创建 auction object
- 把拍卖资源存到该 object 下
- 发出
AuctionCreated
这里真正重要的迁移点是:授权、资产创建、状态容器创建,在 Move 里是三个分开的显式步骤,而不是 Solidity 里一个继承自合约体系的动作。