MarketplaceSEALED

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

Transaction ID

Timestamp

Apr 17, 2024, 10:16:19 PM UTC
1y ago

Block Height

76,366,872

Computation

0

Execution Fee

0.00000778 FLOW

Proposerseq:3000 key:0

Authorizers

1

Transaction Summary

UpdatingMarketplace

Called FungibleToken, NonFungibleToken, FazeUtilityCoin +2 more

Script Arguments

Copy:
0saleItemIDUInt64
77201
1sellerCutUFix64
5.52420000
2beneficiaryCutUFix64
0.42000000
3beneficiaryAddressAddress
4taxCutUFix64
0.05580000
5taxAddressAddress

Cadence Script

1import FungibleToken from 0xf233dcee88fe0abe
2import NonFungibleToken from 0x1d7e57aa55817448
3import FazeUtilityCoin from 0x4eded0de73020ca5
4import CricketMoments from 0x4eded0de73020ca5
5import NFTStorefront from 0x4eb8a10cb9f87357
6
7transaction(saleItemID: UInt64, sellerCut: UFix64, beneficiaryCut:UFix64, beneficiaryAddress: Address, taxCut:UFix64, taxAddress:Address) {
8
9    let sellerFazeUtilityCoinReceiver: Capability<&FazeUtilityCoin.Vault{FungibleToken.Receiver}>
10    let beneficiaryFazeUtilityCoinReceiver: Capability<&FazeUtilityCoin.Vault{FungibleToken.Receiver}>
11    let taxFazeUtilityCoinReceiver: Capability<&FazeUtilityCoin.Vault{FungibleToken.Receiver}>
12    let cricketMomentsProvider: Capability<&CricketMoments.Collection{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>
13    let storefront: &NFTStorefront.Storefront
14
15    prepare(account: AuthAccount) {
16        // We need a provider capability, but one is not provided by default so we create one if needed.
17        let cricketMomentsCollectionProviderPrivatePath = CricketMoments.CollectionProviderPrivatePath
18
19        self.sellerFazeUtilityCoinReceiver = account.getCapability<&FazeUtilityCoin.Vault{FungibleToken.Receiver}>(FazeUtilityCoin.ReceiverPublicPath)!
20        self.beneficiaryFazeUtilityCoinReceiver = getAccount(beneficiaryAddress).getCapability<&FazeUtilityCoin.Vault{FungibleToken.Receiver}>(FazeUtilityCoin.ReceiverPublicPath)!
21        self.taxFazeUtilityCoinReceiver = getAccount(taxAddress).getCapability<&FazeUtilityCoin.Vault{FungibleToken.Receiver}>(FazeUtilityCoin.ReceiverPublicPath)!
22        
23        assert(self.sellerFazeUtilityCoinReceiver.borrow() != nil, message: "Missing or mis-typed seller FazeUtilityCoin receiver")
24        assert(self.beneficiaryFazeUtilityCoinReceiver.borrow() != nil, message: "Missing or mis-typed beneficiary FazeUtilityCoin receiver")
25        assert(self.taxFazeUtilityCoinReceiver.borrow() != nil, message: "Missing or mis-typed tax FazeUtilityCoin receiver")
26
27        if !account.getCapability<&CricketMoments.Collection{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>(cricketMomentsCollectionProviderPrivatePath)!.check() {
28            account.link<&CricketMoments.Collection{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>(cricketMomentsCollectionProviderPrivatePath, target: CricketMoments.CollectionStoragePath)
29        }
30
31        self.cricketMomentsProvider = account.getCapability<&CricketMoments.Collection{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>(cricketMomentsCollectionProviderPrivatePath)!
32        assert(self.cricketMomentsProvider.borrow() != nil, message: "Missing or mis-typed CricketMoments.Collection provider")
33
34        self.storefront = account.borrow<&NFTStorefront.Storefront>(from: NFTStorefront.StorefrontStoragePath)
35            ?? panic("Missing or mis-typed NFTStorefront Storefront")
36    }
37
38    execute {
39        
40        let sellerSaleCut = NFTStorefront.SaleCut(
41            receiver: self.sellerFazeUtilityCoinReceiver,
42            amount: sellerCut
43        )
44
45        let beneficiarySaleCut = NFTStorefront.SaleCut(
46            receiver: self.beneficiaryFazeUtilityCoinReceiver,
47            amount: beneficiaryCut
48        )
49
50        let taxSaleCut = NFTStorefront.SaleCut(
51            receiver: self.taxFazeUtilityCoinReceiver,
52            amount: taxCut
53        )
54
55        self.storefront.createListing(
56            nftProviderCapability: self.cricketMomentsProvider,
57            nftType: Type<@CricketMoments.NFT>(),
58            nftID: saleItemID,
59            salePaymentVaultType: Type<@FazeUtilityCoin.Vault>(),
60            saleCuts: taxCut>0.0? [sellerSaleCut, beneficiarySaleCut, taxSaleCut]:[sellerSaleCut, beneficiarySaleCut]
61        )
62    }
63}