MarketplaceSEALED
~!█*■▫▓◇░!^$▪~$#@*@●$□●▫~&&@◆^!░▒●*╱▪$░@█#^▓◇▪█?╲▫█◇%▒◇▪▒█□#?◇▫▒
Transaction ID
Execution Fee
0.00000409 FLOWTransaction Summary
MarketplaceCalled 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}