TransactionSEALED

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

Transaction ID

Timestamp

Apr 05, 2024, 06:11:21 PM UTC
1y ago

Block Height

75,528,358

Computation

0

Execution Fee

0.00000174 FLOW

Transaction Summary

UpdatingContract Call

Called JoyrideAccounts, FungibleToken, JoyrideMultiToken +1 more

Script Arguments

Copy:
0tokenContextKeys[String]
[
  "RLY"
]
1isAdminBool
false
2playerIDString
bd645ba2-d314-462a-aa6e-f9dd65643fb0
3referralIDString
Organic

Cadence Script

1import JoyrideAccounts from 0xecfad18ba9582d4f
2import FungibleToken from 0xf233dcee88fe0abe
3import JoyrideMultiToken from 0xecfad18ba9582d4f
4import RLY from 0x231cc0dbbcffc4b7
5
6transaction(tokenContextKeys: [String], isAdmin: Bool, playerID: String, referralID: String) {
7    prepare(account: AuthAccount, adminSigner: AuthAccount) {
8        let vault = account.borrow<&JoyrideMultiToken.Vault>(from: JoyrideMultiToken.UserStoragePath)
9        if(vault == nil) {
10            // Create JRXVault for each player
11            account.save(<-JoyrideMultiToken.createEmptyVault(), to: JoyrideMultiToken.UserStoragePath)
12            account.link<&{FungibleToken.Receiver, FungibleToken.Balance}>(JoyrideMultiToken.UserPublicPath, target: JoyrideMultiToken.UserStoragePath)
13            let vaultCapability = account.link<&JoyrideMultiToken.Vault>(JoyrideMultiToken.UserPrivatePath, target: JoyrideMultiToken.UserStoragePath)!
14            let publicAccount = getAccount(account.address)
15
16            // Add Player's JRXVault in Admin's PlayerAccounts list and register VaultCapability with Admin.
17            // This requires so Admin can credit (Share profit) and withdraw on behalf of user.
18            let admin = adminSigner.borrow<&JoyrideAccounts.JoyrideAccountsAdmin>(from: /storage/JoyrideAccountsAdmin)!
19            admin.AddPlayerAccount(playerID: playerID, referralID: referralID,
20                account: publicAccount)
21            JoyrideAccounts.PlayerRegisterCapability(capability: vaultCapability)
22        }
23
24        var multiTokenVault = account.borrow<&JoyrideMultiToken.Vault>(from: JoyrideMultiToken.UserStoragePath) ?? panic("MultiTokenVault does not exist")
25        for tokenContext in tokenContextKeys {
26            switch (tokenContext) {
27                case "RLY":
28                    let vault = account.borrow<&RLY.Vault>(from: /storage/RLYVault)
29                    if(vault != nil) {
30                        if (!multiTokenVault.doesCapabilityExists(tokenIdentifier: "A.231cc0dbbcffc4b7.RLY.Vault")) {
31                            let vaultCapability = account.link<&FungibleToken.Vault>(/private/RLYVault, target: /storage/RLYVault)!
32                            multiTokenVault.registerCapability(tokenIdentifier: "A.231cc0dbbcffc4b7.RLY.Vault",capability: vaultCapability)
33                        }
34                        continue
35                    }
36                    account.save(<-RLY.createEmptyVault(), to: /storage/RLYVault)
37                    account.link<&{FungibleToken.Receiver}>(/public/RLYReceiver, target: /storage/RLYVault)
38                    account.link<&{FungibleToken.Balance}>(/public/RLYBalance, target: /storage/RLYVault)
39                    let vaultCapability = account.link<&FungibleToken.Vault>(/private/RLYVault, target: /storage/RLYVault)!
40                    multiTokenVault.registerCapability(tokenIdentifier: "A.231cc0dbbcffc4b7.RLY.Vault",capability: vaultCapability)
41            }
42        }
43
44    }
45}