tx · 58rFq6D2pEd9u3aceBSk6e4Ke1ejtL7oT6C1xqyirK5A

3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u:  -0.01400000 Waves

2019.10.27 01:48 [737721] smart account 3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u > SELF 0.00000000 Waves

{ "type": 13, "id": "58rFq6D2pEd9u3aceBSk6e4Ke1ejtL7oT6C1xqyirK5A", "fee": 1400000, "feeAssetId": null, "timestamp": 1572130128089, "version": 1, "sender": "3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u", "senderPublicKey": "BFgvNhTxuzThVrRXLX7LfTfCHVeCPDsF6JEpadKJPvox", "proofs": [ "2SuDeZbs6A9uZWa53Hs7UeUG1dRnmFRe5gQc5z1tok5PepfyJXJJ4RjmGCy5pePSi5st1LEgShkXymbXVJGeLNhN" ], "script": "base64:AAIDAAAAAAAAABEIARIDCgEIEgMKAQgSAwoBCAAAACMAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAY9iYXNlNjQ6TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtT2xSQlRZRU8zSDdZOXJCbW9GUUZuNDM5MlB4MFF3MTNEc2RFaG56TUgyY2o2WTV5bVB1Q09MTU5lNXFyVXpRbDhvUkx6SUJ6RlZNWmx3VVlsMmJvc3JPSXhRYllGN1dWUVd2b1Z4RVQxWUlnRG0zTnp6T0xBNXVIN0NLTzBzbnNobU1GQ0RPWkVldzQxR2pLaDNQZ3grbmJBZ3VQOVpRUGZxU2FmRW1DM0NOLzR5RHNKcktyaVJuaVpKbzlqUy80TExzUkt3QjdIQVpIem9GOUxMN3RTWkgzaHRhTkd0YmRUa3haMVR6U1QzTWIyVlBTenNadlFEb2NYVVZPbUpPdTBvMjlhT1krR2tHL0c0UkNLMEZCV1FIRVV2QzUxVFJEUzVrOGphZDBPMU1vYmpRYzZiMThkK2Z1b1ZGZE5mWndHSCt1RnVkdFBHM1VKVGYybWt6WlFJREFRQUIAAAAAD0dBTUVTQ09VTlRFUktFWQIAAAAJJEdBTUVfTlVNAAAAAA5SRVNFUlZBVElPTktFWQIAAAAQJFJFU0VSVkVEX0FNT1VOVAAAAAAEV0JFVAEAAAAgD5uLrFpvaCc5H1Jt+IyA7GJAqs11k4f4jn5gjTii4MkAAAAADldBTExFVFdBVkVTQkVUCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUjmD063sxkBCLSiisiwOufXcqpucc4Di4AAAAAAxXQUxMRVRNQ0FGRkUJAQAAAAdBZGRyZXNzAAAAAQEAAAAAAAAAAAdXQVZFTEVUCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAAAAAD6AAAAAAAAAAD6AAAAAAOU1RBVEVTVUJNSVRURUQCAAAACVNVQk1JVFRFRAAAAAAMU1RBVEVXQUlUSU5HAgAAAAdXQUlUSU5HAAAAAA1TVEFURUZJTklTSEVEAgAAAAhGSU5JU0hFRAAAAAANU1RBVEVDQU5DRUxFRAIAAAAIQ0FOQ0VMRUQAAAAAC0ZFRVdBVkVTQkVUAAAAAAAAAAAEAAAAAAlGRUVNQ0FG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BQAAAAlyZW1haW5pbmcDCQAAZgAAAAIFAAAAAXMAAAAAAAAAAAAEAAAAAm5uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAEvAAAAAgUAAAAJcmVtYWluaW5nAAAAAAAAAAACBAAAAAF2CQABLwAAAAIJAAEwAAAAAgUAAAAJcmVtYWluaW5nAAAAAAAAAAACBQAAAAJubgQAAAAMdG1wUmVtYWluaW5nCQABMAAAAAIFAAAACXJlbWFpbmluZwkAAGQAAAACBQAAAAJubgAAAAAAAAAAAgQAAAAOcmVtYWluaW5nU3RhdGUJAQAAABlSZW1vdmVVbmRlcnNjb3JlSWZQcmVzZW50AAAAAQUAAAAMdG1wUmVtYWluaW5nCQAETAAAAAIFAAAAAXYJAARMAAAAAgUAAAAOcmVtYWluaW5nU3RhdGUFAAAAA25pbAkAAAIAAAABAgAAADRFbXB0eSBzdHJpbmcgd2FzIHBhc3NlZCBpbnRvIHBhcnNlTmV4dEF0dHJpYnV0ZSBmdW5jAQAAABNQYXJzZUdhbWVSYXdEYXRhU3RyAAAAAgAAAAtyYXdTdGF0ZVN0cgAAAAR0eXBlBAAAAAlnYW1lU3RhdGUJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABBQAAAAtyYXdTdGF0ZVN0cgQAAAANcGxheWVyQUNob2ljZQkBAAAAElBhcnNlTmV4dEF0dHJpYnV0ZQAAAAEJAAGRAAAAAgUAAAAJZ2FtZVN0YXRlAAAAAAAAAAABBAAAAA9wbGF5ZXJBUHViS2V5NTgJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAADXBsYXllckFDaG9pY2UAAAAAAAAAAAEEAAAADnBsYXllckFQYXlUeXBlCQEAAAASUGFyc2VOZXh0QXR0cmlidXRlAAAAAQkAAZEAAAACBQAAAA9wbGF5ZXJBUHViS2V5NTgAAAAAAAAAAAEEAAAADXBsYXllckFQYXlBbXQJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAADnBsYXllckFQYXlUeXBlAAAAAAAAAAABBAAAAAZ3aW5BbXQJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAADXBsYXllckFQYXlBbXQA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Y3Rpb24ncyBmZWUgbXVzdCBiZSBpbiBXYXZlcy4gR2FtZSBhYm9ydGVkLgMFAAAACmdhbWVJZFVzZWQJAAACAAAAAQIAAAAxUGFzc2VkIGdhbWVJZCBoYWQgYmVlbiB1c2VkIGJlZm9yZS4gR2FtZSBhYm9ydGVkLgQAAAAKbmV3R2FtZU51bQkBAAAAEEluY3JlbWVudEdhbWVOdW0AAAAABAAAAA9wbGF5ZXJBUHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAdwYXlUeXBlCQEAAAALVHlwZVBheW1lbnQAAAABBQAAAAdwYXltZW50BAAAAAtnYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAACQUAAAAOU1RBVEVTVUJNSVRURUQFAAAABnBhQ29pbgUAAAAPcGxheWVyQVB1YktleTU4BQAAAAdwYXlUeXBlCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAABndpbkFtdAIAAAAAAgAAAAACAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZCQEAAAAeVmFsaWRhdGVBbmRJbmNyZWFzZVJlc2VydmVkQW10AAAAAQUAAAAGd2luQW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA9HQU1FU0NPVU5URVJLRVkFAAAACm5ld0dhbWVOdW0JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAALZ2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5XQUxMRVRXQVZFU0JFVAkAAGkAAAACCQAAaAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQFAAAABFdCRVQFAAAAA25pbAAAAAFpAQAAAA9hY2NlcHRDaGFsbGVuZ2UAAAABAAAABmdhbWVJZAQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAApmZWVBc3NldElkCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAAWkAAAAKZmVlQXNzZXRJZAQAAAAIcGF5VHlwZUIJAQAAAAtUeXBlUGF5bWVudAAAAAEFAAAAB3BheW1lbnQEAAAADGdhbWVEYXRhTGlzdAkBAAAAE0V4dHJhY3RHYW1lRGF0YUxpc3QAAAACBQAAAAZnYW1lSWQAAAAAAAAAAAAEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAADElkeEdhbWVTdGF0ZQQAAAAIcGF5VHlwZUEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAApJZHhQYXlUeXBlBAAAAAZwYXlBbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACUlkeFBheUFtdAMDCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAD7AAAAAEBAAAABBOr2TMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAABFdCRVQHCQAAAgAAAAECAAAAJlBheW1lbnQgc2hvdWxkIGJlIGluIFdhdmVzYmV0IG9yIFdhdmVzAwUAAAAKZmVlQXNzZXRJZAkAAAIAAAABAgAAADFUcmFuc2FjdGlvbidzIGZlZSBtdXN0IGJlIGluIFdhdmVzLiBHYW1lIGFib3J0ZWQuAwkBAAAAAiE9AAAAAgUAAAAIcGF5VHlwZUIFAAAACHBheVR5cGVBCQAAAgAAAAECAAAAVVBheW1lbnQgbXVzdCBiZSBtYWRlIGluIHRoZSBzYW1lIGN1cnJlbmN5IHRva2VuIGFzIHRoZSBiZXQsIFdCRVQvV0JFVCBvciBXQVZFUy9XQVZFUy4DCQAAAAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAGcGF5QW10CQAAAgAAAAECAAAAJ1BheW91dCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBiZXQgYW1vdW50LgMJAQAAAAIhPQAAAAIFAAAACWdhbWVTdGF0ZQUAAAAOU1RBVEVTVUJNSVRURUQJAAACAAAAAQIAAAAkSW52YWxpZCBnYW1lIHN0YXRlIGZvciBwYXNzZWQgZ2FtZUlkBAAAAAZwYUNvaW4JAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAA5JZHhQbGF5ZXJBQ29pbgQAAAAKcGFQdWJLZXk1OAkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAAEklkeFBsYXllckFQdWJLZXk1OAQAAAAGd2luQW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAlJZHhXaW5BbXQEAAAABnBiQ29pbgkBAAAAC1NlbGVjdENvaW5CAAAAAQUAAAAGcGFDb2luBAAAAApwYlB1YktleTU4CQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQQAAAAObmV3R2FtZURhdGFTdHIJAQAAABFGb3JtYXRHYW1lRGF0YVN0cgAAAAkFAAAADFNUQVRFV0FJVElORwUAAAAGcGFDb2luBQAAAApwYVB1YktleTU4BQAAAAhwYXlUeXBlQQUAAAAGcGF5QW10BQAAAAZ3aW5BbXQFAAAABnBiQ29pbgUAAAAKcGJQdWJLZXk1OAIAAAAACQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAA5uZXdHYW1lRGF0YVN0cgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAADldBTExFVFdBVkVTQkVUCQAAaQAAAAIJAABoAAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAtGRUVXQVZFU0JFVAAAAAAAAAAAZAUAAAAEV0JFVAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAR0aGlzAAAAAAAAB6EgBQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAPY2FuY2VsQ2hhbGxlbmdlAAAAAQAAAAZnYW1lSWQEAAAACmZlZUFzc2V0SWQJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABaQAAAApmZWVBc3NldElkBAAAAAxnYW1lRGF0YUxpc3QJAQAAABNFeHRyYWN0R2FtZURhdGFMaXN0AAAAAgUAAAAGZ2FtZUlkAAAAAAAAAAAABAAAAAlnYW1lU3RhdGUJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAxJZHhHYW1lU3RhdGUEAAAACnBhUHViS2V5NTgJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAABJJZHhQbGF5ZXJBUHViS2V5NTgEAAAACHB1YktleTU4CQACWAAAAAEIBQAAAAFpAAAAD2NhbGxlclB1YmxpY0tleQMFAAAACmZlZUFzc2V0SWQJAAACAAAAAQIAAAAxVHJhbnNhY3Rpb24ncyBmZWUgbXVzdCBiZSBpbiBXYXZlcy4gR2FtZSBhYm9ydGVkLgMJAQAAAAIhPQAAAAIFAAAACWdhbWVTdGF0ZQUAAAAOU1RBVEVTVUJNSVRURUQJAAACAAAAAQIAAAAkSW52YWxpZCBnYW1lIHN0YXRlIGZvciBwYXNzZWQgZ2FtZUlkAwkBAAAAAiE9AAAAAgUAAAAKcGFQdWJLZXk1OAUAAAAIcHViS2V5NTgJAAACAAAAAQIAAAAwUHVibGljIGtleSBpcyBub3QgdGhlIHNhbWUgYXMgY2hhbGxlbmdlIGNyZWF0aW9uBAAAAAZwYUNvaW4JAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAA5JZHhQbGF5ZXJBQ29pbgQAAAAGd2luQW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAlJZHhXaW5BbXQEAAAACHBheVR5cGVBCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAKSWR4UGF5VHlwZQQAAAAGcGF5QW10CQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAAlJZHhQYXlBbXQEAAAADm5ld0dhbWVEYXRhU3RyCQEAAAARRm9ybWF0R2FtZURhdGFTdHIAAAAJBQAAAA1TVEFURUNBTkNFTEVEBQAAAAZwYUNvaW4FAAAACnBhUHViS2V5NTgFAAAACHBheVR5cGVBBQAAAAZwYXlBbXQFAAAABndpbkFtdAIAAAAAAgAAAAACAAAAAAQAAAAGcmVmdW5kCQAAZQAAAAIFAAAABnBheUFtdAkAAGkAAAACCQAAaAAAAAIFAAAABnBheUFtdAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQEAAAACWFkclJlZnVuZAkBAAAAFGFkZHJlc3NGcm9tUHVibGljS2V5AAAAAQkAAZsAAAABBQAAAApwYVB1YktleTU4BAAAAAhyZWZUb2tlbgkBAAAACVR5cGVUb2tlbgAAAAEFAAAACHBheVR5cGVBCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAA5uZXdHYW1lRGF0YVN0cgUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAACWFkclJlZnVuZAUAAAAGcmVmdW5kBQAAAAhyZWZUb2tlbgUAAAADbmlsAAAAAIVIpvA=", "chainId": 84, "height": 737721, "spentComplexity": 0 } View: original | compacted Prev: FgGwVDJBxQpDRhjptLszfPEHxCo5MDtLiLDXujggxAEh Next: BMuLpmHssdbG2FuZ9K19L3Ts8cfHcFMcKpCyWvDxk5Pd Diff:
OldNewDifferences
126126 }
127127
128128
129-func ParseGameRawDataStr (rawStateStr) = {
129+func ParseGameRawDataStr (rawStateStr,type) = {
130130 let gameState = ParseNextAttribute(rawStateStr)
131131 let playerAChoice = ParseNextAttribute(gameState[1])
132132 let playerAPubKey58 = ParseNextAttribute(playerAChoice[1])
133133 let playerAPayType = ParseNextAttribute(playerAPubKey58[1])
134134 let playerAPayAmt = ParseNextAttribute(playerAPayType[1])
135135 let winAmt = ParseNextAttribute(playerAPayAmt[1])
136-[gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0]]
136+ if ((type == 0))
137+ then [gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0]]
138+ else {
139+ let playerBChoice = ParseNextAttribute(winAmt[1])
140+ let playerBPubKey58 = ParseNextAttribute(playerBChoice[1])
141+[gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0], playerBChoice[0], playerBPubKey58[0]]
142+ }
137143 }
138144
139145
140-func ExtractGameDataList (gameId) = {
146+func ExtractGameDataList (gameId,type) = {
141147 let rawDataStr = match getString(this, gameId) {
142148 case str: String =>
143149 str
144150 case _ =>
145151 throw(("Couldn't find game by " + gameId))
146152 }
147- ParseGameRawDataStr(rawDataStr)
153+ ParseGameRawDataStr(rawDataStr, type)
148154 }
149155
150156
183189 let playerAPubKey58 = toBase58String(i.callerPublicKey)
184190 let payType = TypePayment(payment)
185191 let gameDataStr = FormatGameDataStr(STATESUBMITTED, paCoin, playerAPubKey58, payType, payment.amount, winAmt, "", "", "")
186- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 250000, unit)]))
192+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET)]))
187193 }
188194 }
189195
194200 let payment = extract(i.payment)
195201 let feeAssetId = isDefined(i.feeAssetId)
196202 let payTypeB = TypePayment(payment)
197- let gameDataList = ExtractGameDataList(gameId)
203+ let gameDataList = ExtractGameDataList(gameId, 0)
198204 let gameState = gameDataList[IdxGameState]
199205 let payTypeA = gameDataList[IdxPayType]
200206 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
226232 @Callable(i)
227233 func cancelChallenge (gameId) = {
228234 let feeAssetId = isDefined(i.feeAssetId)
229- let gameDataList = ExtractGameDataList(gameId)
235+ let gameDataList = ExtractGameDataList(gameId, 0)
230236 let gameState = gameDataList[IdxGameState]
231237 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
232238 let pubKey58 = toBase58String(i.callerPublicKey)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RSAPUBLIC = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmOlRBTYEO3H7Y9rBmoFQFn4392Px0Qw13DsdEhnzMH2cj6Y5ymPuCOLMNe5qrUzQl8oRLzIBzFVMZlwUYl2bosrOIxQbYF7WVQWvoVxET1YIgDm3NzzOLA5uH7CKO0snshmMFCDOZEew41GjKh3Pgx+nbAguP9ZQPfqSafEmC3CN/4yDsJrKriRniZJo9jS/4LLsRKwB7HAZHzoF9LL7tSZH3htaNGtbdTkxZ1TzST3Mb2VPSzsZvQDocXUVOmJOu0o29aOY+GkG/G4RCK0FBWQHEUvC51TRDS5k8jad0O1MobjQc6b18d+fuoVFdNfZwGH+uFudtPG3UJTf2mkzZQIDAQAB")
55
66 let GAMESCOUNTERKEY = "$GAME_NUM"
77
88 let RESERVATIONKEY = "$RESERVED_AMOUNT"
99
1010 let WBET = base58'23vgV9p9pD83A7CFbsDEc4zjanep7UeFo4ZRS6oGorhv'
1111
1212 let WALLETWAVESBET = Address(base58'3N2tusqAtDctK8iSTXS6F9rimmftmSuwLUX')
1313
1414 let WALLETMCAFFE = Address(base58'')
1515
1616 let WAVELET = ((100 * 1000) * 1000)
1717
1818 let STATESUBMITTED = "SUBMITTED"
1919
2020 let STATEWAITING = "WAITING"
2121
2222 let STATEFINISHED = "FINISHED"
2323
2424 let STATECANCELED = "CANCELED"
2525
2626 let FEEWAVESBET = 4
2727
2828 let FEEMCAFEE = 2
2929
3030 let IdxGameState = 0
3131
3232 let IdxPlayerACoin = 1
3333
3434 let IdxPlayerAPubKey58 = 2
3535
3636 let IdxPayType = 3
3737
3838 let IdxPayAmt = 4
3939
4040 let IdxWinAmt = 5
4141
4242 let IdxPlayerBCoin = 6
4343
4444 let IdxPlayerBPubKey58 = 7
4545
4646 let IdxRandOrEmpty = 8
4747
4848 func IncrementGameNum () = {
4949 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
5050 case num: Int =>
5151 num
5252 case _ =>
5353 0
5454 }
5555 (gameNum + 1)
5656 }
5757
5858
5959 func ValidateBetAndDefineWinAmt (playerCoin,amount) = if (if ((playerCoin != "RED"))
6060 then (playerCoin != "BLUE")
6161 else false)
6262 then throw("Invalid play, change your play to RED or BLUE.")
6363 else (((((amount * 2) * WAVELET) / 100000) * (100 - (FEEWAVESBET + FEEMCAFEE))) / 100)
6464
6565
6666 func ExtractReservedAmt () = match getInteger(this, RESERVATIONKEY) {
6767 case a: Int =>
6868 a
6969 case _ =>
7070 0
7171 }
7272
7373
7474 func ValidateAndIncreaseReservedAmt (winAmt) = {
7575 let newReservedAmount = (ExtractReservedAmt() + winAmt)
7676 newReservedAmount
7777 }
7878
7979
8080 func FormatGameDataParam (p) = {
8181 let s = size(p)
8282 if ((s == 0))
8383 then throw("Parameter size must be greater then 0.")
8484 else if ((s > 99))
8585 then throw("Parameter size must be less then 100.")
8686 else if ((10 > s))
8787 then (("0" + toString(s)) + p)
8888 else (toString(s) + p)
8989 }
9090
9191
9292 func FormatGameDataStr (gameState,playerACoin,playerAPubKey58,payType,payAmount,winAmt,playerBCoin,playerBPubKey58,randOrEmpty) = {
9393 let fullStateStr = ((((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerACoin)) + "_") + FormatGameDataParam(playerAPubKey58)) + "_") + FormatGameDataParam(payType)) + "_") + FormatGameDataParam(toString(payAmount))) + "_") + FormatGameDataParam(toString(winAmt)))
9494 if (if (if ((playerBCoin == ""))
9595 then (playerBPubKey58 == "")
9696 else false)
9797 then (randOrEmpty == "")
9898 else false)
9999 then fullStateStr
100100 else if (if (if ((playerBCoin != ""))
101101 then (playerBPubKey58 != "")
102102 else false)
103103 then (randOrEmpty == "")
104104 else false)
105105 then (((fullStateStr + "_") + (FormatGameDataParam(playerBCoin) + "_")) + (FormatGameDataParam(playerBPubKey58) + "_"))
106106 else ((((fullStateStr + "_") + (FormatGameDataParam(playerBCoin) + "_")) + (FormatGameDataParam(playerBPubKey58) + "_")) + FormatGameDataParam(randOrEmpty))
107107 }
108108
109109
110110 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
111111 then drop(remaining, 1)
112112 else remaining
113113
114114
115115 func ParseNextAttribute (remaining) = {
116116 let s = size(remaining)
117117 if ((s > 0))
118118 then {
119119 let nn = parseIntValue(take(remaining, 2))
120120 let v = take(drop(remaining, 2), nn)
121121 let tmpRemaining = drop(remaining, (nn + 2))
122122 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
123123 [v, remainingState]
124124 }
125125 else throw("Empty string was passed into parseNextAttribute func")
126126 }
127127
128128
129-func ParseGameRawDataStr (rawStateStr) = {
129+func ParseGameRawDataStr (rawStateStr,type) = {
130130 let gameState = ParseNextAttribute(rawStateStr)
131131 let playerAChoice = ParseNextAttribute(gameState[1])
132132 let playerAPubKey58 = ParseNextAttribute(playerAChoice[1])
133133 let playerAPayType = ParseNextAttribute(playerAPubKey58[1])
134134 let playerAPayAmt = ParseNextAttribute(playerAPayType[1])
135135 let winAmt = ParseNextAttribute(playerAPayAmt[1])
136-[gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0]]
136+ if ((type == 0))
137+ then [gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0]]
138+ else {
139+ let playerBChoice = ParseNextAttribute(winAmt[1])
140+ let playerBPubKey58 = ParseNextAttribute(playerBChoice[1])
141+[gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0], playerBChoice[0], playerBPubKey58[0]]
142+ }
137143 }
138144
139145
140-func ExtractGameDataList (gameId) = {
146+func ExtractGameDataList (gameId,type) = {
141147 let rawDataStr = match getString(this, gameId) {
142148 case str: String =>
143149 str
144150 case _ =>
145151 throw(("Couldn't find game by " + gameId))
146152 }
147- ParseGameRawDataStr(rawDataStr)
153+ ParseGameRawDataStr(rawDataStr, type)
148154 }
149155
150156
151157 func TypePayment (p) = if ((p.assetId == assetInfo(base58'WAVES')))
152158 then "WAVES"
153159 else "WBET"
154160
155161
156162 func TypeToken (s) = if ((s == "WAVES"))
157163 then unit
158164 else WBET
159165
160166
161167 func SelectCoinB (coin) = if ((coin == "RED"))
162168 then "BLUE"
163169 else "RED"
164170
165171
166172 @Callable(i)
167173 func playCoin (paCoin) = {
168174 let gameId = toBase58String(i.transactionId)
169175 let payment = extract(i.payment)
170176 let feeAssetId = isDefined(i.feeAssetId)
171177 let gameIdUsed = isDefined(getString(this, gameId))
172178 let winAmt = ValidateBetAndDefineWinAmt(paCoin, payment.amount)
173179 if (if ((payment.assetId != assetInfo(base58'WAVES')))
174180 then (payment.assetId != WBET)
175181 else false)
176182 then throw("Payment should be in Wavesbet or Waves")
177183 else if (feeAssetId)
178184 then throw("Transaction's fee must be in Waves. Game aborted.")
179185 else if (gameIdUsed)
180186 then throw("Passed gameId had been used before. Game aborted.")
181187 else {
182188 let newGameNum = IncrementGameNum()
183189 let playerAPubKey58 = toBase58String(i.callerPublicKey)
184190 let payType = TypePayment(payment)
185191 let gameDataStr = FormatGameDataStr(STATESUBMITTED, paCoin, playerAPubKey58, payType, payment.amount, winAmt, "", "", "")
186- ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 250000, unit)]))
192+ ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET)]))
187193 }
188194 }
189195
190196
191197
192198 @Callable(i)
193199 func acceptChallenge (gameId) = {
194200 let payment = extract(i.payment)
195201 let feeAssetId = isDefined(i.feeAssetId)
196202 let payTypeB = TypePayment(payment)
197- let gameDataList = ExtractGameDataList(gameId)
203+ let gameDataList = ExtractGameDataList(gameId, 0)
198204 let gameState = gameDataList[IdxGameState]
199205 let payTypeA = gameDataList[IdxPayType]
200206 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
201207 if (if ((payment.assetId != assetInfo(base58'WAVES')))
202208 then (payment.assetId != WBET)
203209 else false)
204210 then throw("Payment should be in Wavesbet or Waves")
205211 else if (feeAssetId)
206212 then throw("Transaction's fee must be in Waves. Game aborted.")
207213 else if ((payTypeB != payTypeA))
208214 then throw("Payment must be made in the same currency token as the bet, WBET/WBET or WAVES/WAVES.")
209215 else if ((payment.amount == payAmt))
210216 then throw("Payout must be equal to the bet amount.")
211217 else if ((gameState != STATESUBMITTED))
212218 then throw("Invalid game state for passed gameId")
213219 else {
214220 let paCoin = gameDataList[IdxPlayerACoin]
215221 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
216222 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
217223 let pbCoin = SelectCoinB(paCoin)
218224 let pbPubKey58 = toBase58String(i.callerPublicKey)
219225 let newGameDataStr = FormatGameDataStr(STATEWAITING, paCoin, paPubKey58, payTypeA, payAmt, winAmt, pbCoin, pbPubKey58, "")
220226 ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
221227 }
222228 }
223229
224230
225231
226232 @Callable(i)
227233 func cancelChallenge (gameId) = {
228234 let feeAssetId = isDefined(i.feeAssetId)
229- let gameDataList = ExtractGameDataList(gameId)
235+ let gameDataList = ExtractGameDataList(gameId, 0)
230236 let gameState = gameDataList[IdxGameState]
231237 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
232238 let pubKey58 = toBase58String(i.callerPublicKey)
233239 if (feeAssetId)
234240 then throw("Transaction's fee must be in Waves. Game aborted.")
235241 else if ((gameState != STATESUBMITTED))
236242 then throw("Invalid game state for passed gameId")
237243 else if ((paPubKey58 != pubKey58))
238244 then throw("Public key is not the same as challenge creation")
239245 else {
240246 let paCoin = gameDataList[IdxPlayerACoin]
241247 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
242248 let payTypeA = gameDataList[IdxPayType]
243249 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
244250 let newGameDataStr = FormatGameDataStr(STATECANCELED, paCoin, paPubKey58, payTypeA, payAmt, winAmt, "", "", "")
245251 let refund = (payAmt - ((payAmt * FEEWAVESBET) / 100))
246252 let adrRefund = addressFromPublicKey(toBytes(paPubKey58))
247253 let refToken = TypeToken(payTypeA)
248254 ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(adrRefund, refund, refToken)]))
249255 }
250256 }
251257
252258

github/deemru/w8io/169f3d6 
54.12 ms