TransactionSEALED
●╲▫▒╳■?^▒╳&!!╲??○░!%▓#○*@▪▓$◇#^■$@~@$■█@●■*?■■?&◆▓~╳○◆●█◆◇#●○╲%▫
Transaction ID
Execution Fee
0.00000174 FLOWPayer
Proposerseq:15 key:0
Authorizers
2Transaction 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}