MarketplaceSEALED

~!█*■▫▓◇░!^$▪~$#@*@●$□●▫~&&@◆^!░▒●*╱▪$░@█#^▓◇▪█?╲▫█◇%▒◇▪▒█□#?◇▫▒

Transaction ID

Timestamp

Jul 29, 2024, 08:27:07 AM UTC
1y ago

Block Height

83,419,132

Computation

0

Execution Fee

0.00000409 FLOW

Proposerseq:449898 key:12

Authorizers

1

Transaction Summary

Marketplace

Called FungibleToken, DapperUtilityCoin, FlowUtilityToken +3 more

Script Arguments

0saleItemIDUInt64
2
1saleItemPriceUFix64
10.00000000
2saleItemCurrencyString
DUC
3expiryUInt64
1733817600000

Cadence Script

1import FungibleToken from 0xf233dcee88fe0abe
2import DapperUtilityCoin from 0xead892083b3e2c6c
3import FlowUtilityToken from 0xead892083b3e2c6c
4import NonFungibleToken from 0x1d7e57aa55817448
5import NFTStorefrontV2 from 0x4eb8a10cb9f87357
6import Basketballs from 0xeee6bdee2b2bdfc8
7transaction(saleItemID: UInt64, saleItemPrice: UFix64, saleItemCurrency: String, expiry: UInt64) {
8    let paymentReceiver: Capability<&AnyResource{FungibleToken.Receiver}>
9    let basketballsProvider: Capability<&AnyResource{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>
10    let storefront: &NFTStorefrontV2.Storefront
11    var path: PublicPath
12    var vaultType: Type
13    var saleCuts: [NFTStorefrontV2.SaleCut]
14    prepare(acct: AuthAccount) {
15        self.saleCuts = []
16        let basketballsCollectionProviderPrivatePath = /private/basketballCollectionProviderForNFTStorefront
17        self.path = /public/dapperUtilityCoinReceiver
18        self.vaultType = Type<@DapperUtilityCoin.Vault>()
19        if (saleItemCurrency == "FUT") {
20            self.path = /public/flowUtilityTokenReceiver
21            self.vaultType = Type<@FlowUtilityToken.Vault>()
22        } else if (saleItemCurrency == "DUC") {
23            self.path = /public/dapperUtilityCoinReceiver
24            self.vaultType = Type<@DapperUtilityCoin.Vault>()
25        } else {
26            panic("Did not specify a valid saleItemCurrency of FUT or DUC")
27        }
28        self.paymentReceiver = acct.getCapability<&{FungibleToken.Receiver}>(self.path)!
29        assert(self.paymentReceiver.borrow() != nil, message: "Missing or mis-typed FungibleToken receiver")
30        if !acct.getCapability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>(basketballsCollectionProviderPrivatePath)!.check() {
31            acct.link<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>(basketballsCollectionProviderPrivatePath, target: Basketballs.CollectionStoragePath)
32        }
33        self.basketballsProvider = acct.getCapability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>(basketballsCollectionProviderPrivatePath)!
34        assert(self.basketballsProvider.borrow() != nil, message: "Missing or mis-typed Basketballs.Collection provider")
35        var royaltyCut = saleItemPrice * 0.0
36        self.saleCuts.append(NFTStorefrontV2.SaleCut(
37            receiver: self.paymentReceiver,
38            amount: saleItemPrice - royaltyCut
39        ))
40        // self.saleCuts.append(NFTStorefrontV2.SaleCut(
41        //    receiver: self.royaltyReceiver,
42        //    amount: royaltyCut
43        // ))
44        
45        self.storefront = acct.borrow<&NFTStorefrontV2.Storefront>(from: NFTStorefrontV2.StorefrontStoragePath)
46            ?? panic("Missing or mis-typed NFTStorefront Storefront")
47    }
48    execute {
49        self.storefront.createListing(
50            nftProviderCapability: self.basketballsProvider,
51            nftType: Type<@Basketballs.NFT>(),
52            nftID: saleItemID,
53            salePaymentVaultType: self.vaultType,
54            saleCuts: self.saleCuts,
55            marketplacesCapability: nil,
56            customID: "",
57            commissionAmount: 0.0,
58            expiry: expiry
59        )
60    }
61}