tx · 6dEwU3mctjSEM7kmZYmu8JmbC5n96r1VzhDJymkjmuJp

3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u:  -0.01400000 Waves

2019.10.27 00:23 [737641] smart account 3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u > SELF 0.00000000 Waves

{ "type": 13, "id": "6dEwU3mctjSEM7kmZYmu8JmbC5n96r1VzhDJymkjmuJp", "fee": 1400000, "feeAssetId": null, "timestamp": 1572125063379, "version": 1, "sender": "3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u", "senderPublicKey": "BFgvNhTxuzThVrRXLX7LfTfCHVeCPDsF6JEpadKJPvox", "proofs": [ "3pMFofhN7x82MX5P4TZdsggkm2jdWaPTj6fHEoyF52dNgJiRDvGp8t93nhjqXCLNoDStv9wLRGNQyiSUTWGcCHw1" ], "script": "base64:AAIDAAAAAAAAABEIARIDCgEIEgMKAQgSAwoBCAAAACIAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAY9iYXNlNjQ6TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtT2xSQlRZRU8zSDdZOXJCbW9GUUZuNDM5MlB4MFF3MTNEc2RFaG56TUgyY2o2WTV5bVB1Q09MTU5lNXFyVXpRbDhvUkx6SUJ6RlZNWmx3VVlsMmJvc3JPSXhRYllGN1dWUVd2b1Z4RVQxWUlnRG0zTnp6T0xBNXVIN0NLTzBzbnNobU1GQ0RPWkVldzQxR2pLaDNQZ3grbmJBZ3VQOVpRUGZxU2FmRW1DM0NOLzR5RHNKcktyaVJuaVpKbzlqUy80TExzUkt3QjdIQVpIem9GOUxMN3RTWkgzaHRhTkd0YmRUa3haMVR6U1QzTWIyVlBTenNadlFEb2NYVVZPbUpPdTBvMjlhT1krR2tHL0c0UkNLMEZCV1FIRVV2QzUxVFJEUzVrOGphZDBPMU1vYmpRYzZiMThkK2Z1b1ZGZE5mWndHSCt1RnVkdFBHM1VKVGYybWt6WlFJREFRQUIAAAAAD0dBTUVTQ09VTlRFUktFWQIAAAAJJEdBTUVfTlVNAAAAAA5SRVNFUlZBVElPTktFWQIAAAAQJFJFU0VSVkVEX0FNT1VOVAAAAAAEV0JFVAEAAAAgD5uLrFpvaCc5H1Jt+IyA7GJAqs11k4f4jn5gjTii4MkAAAAADldBTExFVFdBVkVTQkVUCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUjmD063sxkBCLSiisiwOufXcqpucc4Di4AAAAAAxXQUxMRVRNQ0FGRkUJAQAAAAdBZGRyZXNzAAAAAQEAAAAAAAAAAA5TVEFURVNVQk1JVFRFRAIAAAAJU1VCTUlUVEVEAAAAAAxTVEFURVdBSVRJTkcCAAAAB1dBSVRJTkcAAAAADVNUQVRFRklOSVNIRUQCAAAACEZJTklTSEVEAAAAAA1TVEFURUNBTkNFTEVEAgAAAAhDQU5DRUxFRAAAAAALRkVFV0FWRVNCRVQAAAAAAAAAAAQAAAAACUZFRU1DQUZFRQAAAAAAAAAAAgAAAAAMSWR4R2FtZVN0YXRlAAAAAAAAAAAAAAAAAA5JZHhQbGF5ZXJBQ29p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AgUAAAAJcmVtYWluaW5nAAAAAAAAAAACBAAAAAF2CQABLwAAAAIJAAEwAAAAAgUAAAAJcmVtYWluaW5nAAAAAAAAAAACBQAAAAJubgQAAAAMdG1wUmVtYWluaW5nCQABMAAAAAIFAAAACXJlbWFpbmluZwkAAGQAAAACBQAAAAJubgAAAAAAAAAAAgQAAAAOcmVtYWluaW5nU3RhdGUJAQAAABlSZW1vdmVVbmRlcnNjb3JlSWZQcmVzZW50AAAAAQUAAAAMdG1wUmVtYWluaW5nCQAETAAAAAIFAAAAAXYJAARMAAAAAgUAAAAOcmVtYWluaW5nU3RhdGUFAAAAA25pbAkAAAIAAAABAgAAADRFbXB0eSBzdHJpbmcgd2FzIHBhc3NlZCBpbnRvIHBhcnNlTmV4dEF0dHJpYnV0ZSBmdW5jAQAAABNQYXJzZUdhbWVSYXdEYXRhU3RyAAAAAQAAAAtyYXdTdGF0ZVN0cgQAAAAJZ2FtZVN0YXRlCQEAAAASUGFyc2VOZXh0QXR0cmlidXRlAAAAAQUAAAALcmF3U3RhdGVTdHIEAAAADXBsYXllckFDaG9pY2UJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAACWdhbWVTdGF0ZQAAAAAAAAAAAQQAAAAPcGxheWVyQVB1YktleTU4CQEAAAASUGFyc2VOZXh0QXR0cmlidXRlAAAAAQkAAZEAAAACBQAAAA1wbGF5ZXJBQ2hvaWNlAAAAAAAAAAABBAAAAA5wbGF5ZXJBUGF5VHlwZQkBAAAAElBhcnNlTmV4dEF0dHJpYnV0ZQAAAAEJAAGRAAAAAgUAAAAPcGxheWVyQVB1YktleTU4AAAAAAAAAAABBAAAAA1wbGF5ZXJBUGF5QW10CQEAAAASUGFyc2VOZXh0QXR0cmlidXRlAAAAAQkAAZEAAAACBQAAAA5wbGF5ZXJBUGF5VHlwZQAAAAAAAAAAAQQAAAAGd2luQW10CQEAAAASUGFyc2VOZXh0QXR0cmlidXRlAAAAAQkAAZEAAAACBQAAAA1wbGF5ZXJBUGF5QW10AAAAAAAAAAABCQAETAAAAAIJAAGRAAAAAgUAAAAJZ2FtZVN0YXRlAAAAAAAAAAAACQAETAAAAAIJAAGRAAAAAgUAAAANcGxheWVyQUNob2ljZQAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAAD3BsYXllckFQdWJLZXk1OAAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAADnBsYXllckFQYXlUeXBlAAAAAAAAAAAACQAETAAAAAIJAAGRAAAAAgUAAAANcGxheWVyQVBheUFtdAAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAABndpbkFtdAAAAAAAAAAAAAUAAAADbmlsAQAAABNFeHRyYWN0R2FtZURhdGFMaXN0AAAAAQAAAAZnYW1lSWQEAAAACnJhd0RhdGFTdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAAGZ2FtZUlkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAA3N0cgUAAAAHJG1hdGNoMAUAAAADc3RyCQAAAgAAAAEJAAEsAAAAAgIAAAAWQ291bGRuJ3QgZmluZCBnYW1lIGJ5IAUAAAAGZ2FtZUlkCQEAAAATUGFyc2VHYW1lUmF3RGF0YVN0cgAAAAEFAAAACnJhd0RhdGFTdHIBAAAAC1R5cGVQYXltZW50AAAAAQAAAAFwAwkAAAAAAAACCAUAAAABcAAAAAdhc3NldElkCQAD7AAAAAEBAAAABBOr2TMCAAAABVdBVkVTAgAAAARXQkVUAQAAAAlUeXBlVG9rZW4AAAABAAAAAXMDCQAAAAAAAAIFAAAAAXMCAAAABVdBVkVTBQAAAAR1bml0BQAAAARXQkVUAQAAAAtTZWxlY3RDb2luQgAAAAEAAAAEY29pbgMJAAAAAAAAAgUAAAAEY29pbgIAAAADUkVEAgAAAARCTFVFAgAAAANSRUQAAAADAAAAAWkBAAAACHBsYXlDb2luAAAAAQAAAAZwYUNvaW4EAAAABmdhbWVJZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACmZlZUFzc2V0SWQJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABaQAAAApmZWVBc3NldElkBAAAAApnYW1lSWRVc2VkCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzBQAAAAZnYW1lSWQEAAAABndpbkFtdAkBAAAAGlZhbGlkYXRlQmV0QW5kRGVmaW5lV2luQW10AAAAAgUAAAAGcGFDb2luCAUAAAAHcGF5bWVudAAAAAZhbW91bnQDAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAA+wAAAABAQAAAAQTq9kzCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAARXQkVUBwkAAAIAAAABAgAAACZQYXltZW50IHNob3VsZCBiZSBpbiBXYXZlc2JldCBvciBXYXZlcwMFAAAACmZlZUFzc2V0SWQJAAACAAAAAQIAAAAxVHJhbnNhY3Rpb24ncyBmZWUgbXVzdCBiZSBpbiBXYXZlcy4gR2FtZSBhYm9ydGVkLgMFAAAACmdhbWVJZFVzZWQJAAACAAAAAQIAAAAxUGFzc2VkIGdhbWVJZCBoYWQgYmVlbiB1c2VkIGJlZm9yZS4gR2FtZSBhYm9ydGVkLgQAAAAKbmV3R2FtZU51bQkBAAAAEEluY3JlbWVudEdhbWVOdW0AAAAABAAAAA9wbGF5ZXJBUHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAdwYXlUeXBlCQEAAAALVHlwZVBheW1lbnQAAAABBQAAAAdwYXltZW50BAAAAAtnYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAACQUAAAAOU1RBVEVTVUJNSVRURUQFAAAABnBhQ29pbgUAAAAPcGxheWVyQVB1YktleTU4BQAAAAdwYXlUeXBlCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAABndpbkFtdAIAAAAAAgAAAAACAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZCQEAAAAeVmFsaWRhdGVBbmRJbmNyZWFzZVJlc2VydmVkQW10AAAAAQUAAAAGd2luQW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA9HQU1FU0NPVU5URVJLRVkFAAAACm5ld0dhbWVOdW0JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAALZ2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5XQUxMRVRXQVZFU0JFVAkAAGkAAAACCQAAaAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQFAAAABFdCRVQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAEdGhpcwAAAAAAAAehIAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAAD2FjY2VwdENoYWxsZW5nZQAAAAEAAAAGZ2FtZUlkBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACmZlZUFzc2V0SWQJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABaQAAAApmZWVBc3NldElkBAAAAAhwYXlUeXBlQgkBAAAAC1R5cGVQYXltZW50AAAAAQUAAAAHcGF5bWVudAQAAAAMZ2FtZURhdGFMaXN0CQEAAAATRXh0cmFjdEdhbWVEYXRhTGlzdAAAAAEFAAAABmdhbWVJZAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAMSWR4R2FtZVN0YXRlBAAAAAhwYXlUeXBlQQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACklkeFBheVR5cGUEAAAABnBheUFtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAJSWR4UGF5QW10AwMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQJAAPsAAAAAQEAAAAEE6vZMwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAAEV0JFVAcJAAACAAAAAQIAAAAmUGF5bWVudCBzaG91bGQgYmUgaW4gV2F2ZXNiZXQgb3IgV2F2ZXMDBQAAAApmZWVBc3NldElkCQAAAgAAAAECAAAAMVRyYW5zYWN0aW9uJ3MgZmVlIG11c3QgYmUgaW4gV2F2ZXMuIEdhbWUgYWJvcnRlZC4DCQEAAAACIT0AAAACBQAAAAhwYXlUeXBlQgUAAAAIcGF5VHlwZUEJAAACAAAAAQIAAABVUGF5bWVudCBtdXN0IGJlIG1hZGUgaW4gdGhlIHNhbWUgY3VycmVuY3kgdG9rZW4gYXMgdGhlIGJldCwgV0JFVC9XQkVUIG9yIFdBVkVTL1dBVkVTLgMJAAAAAAAAAggFAAAAB3BheW1lbnQAAAAGYW1vdW50BQAAAAZwYXlBbXQJAAACAAAAAQIAAAAnUGF5b3V0IG11c3QgYmUgZXF1YWwgdG8gdGhlIGJldCBhbW91bnQuAwkBAAAAAiE9AAAAAgUAAAAJZ2FtZVN0YXRlBQAAAA5TVEFURVNVQk1JVFRFRAkAAAIAAAABAgAAACRJbnZhbGlkIGdhbWUgc3RhdGUgZm9yIHBhc3NlZCBnYW1lSWQEAAAABnBhQ29pbgkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAADklkeFBsYXllckFDb2luBAAAAApwYVB1YktleTU4CQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAASSWR4UGxheWVyQVB1YktleTU4BAAAAAZ3aW5BbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACUlkeFdpbkFtdAQAAAAGcGJDb2luCQEAAAALU2VsZWN0Q29pbkIAAAABBQAAAAZwYUNvaW4EAAAACnBiUHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAA5uZXdHYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAACQUAAAAMU1RBVEVXQUlUSU5HBQAAAAZwYUNvaW4FAAAACnBhUHViS2V5NTgFAAAACHBheVR5cGVBBQAAAAZwYXlBbXQFAAAABndpbkFtdAUAAAAGcGJDb2luBQAAAApwYlB1YktleTU4AgAAAAAJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAADm5ld0dhbWVEYXRhU3RyBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAOV0FMTEVUV0FWRVNCRVQJAABpAAAAAgkAAGgAAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAAC0ZFRVdBVkVTQkVUAAAAAAAAAABkBQAAAARXQkVUCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABHRoaXMAAAAAAAAHoSAFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAA9jYW5jZWxDaGFsbGVuZ2UAAAABAAAABmdhbWVJZAQAAAAKZmVlQXNzZXRJZAkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAAFpAAAACmZlZUFzc2V0SWQEAAAADGdhbWVEYXRhTGlzdAkBAAAAE0V4dHJhY3RHYW1lRGF0YUxpc3QAAAABBQAAAAZnYW1lSWQEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAADElkeEdhbWVTdGF0ZQQAAAAKcGFQdWJLZXk1OAkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAAEklkeFBsYXllckFQdWJLZXk1OAQAAAAIcHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5AwUAAAAKZmVlQXNzZXRJZAkAAAIAAAABAgAAADFUcmFuc2FjdGlvbidzIGZlZSBtdXN0IGJlIGluIFdhdmVzLiBHYW1lIGFib3J0ZWQuAwkBAAAAAiE9AAAAAgUAAAAJZ2FtZVN0YXRlBQAAAA5TVEFURVNVQk1JVFRFRAkAAAIAAAABAgAAACRJbnZhbGlkIGdhbWUgc3RhdGUgZm9yIHBhc3NlZCBnYW1lSWQDCQEAAAACIT0AAAACBQAAAApwYVB1YktleTU4BQAAAAhwdWJLZXk1OAkAAAIAAAABAgAAADBQdWJsaWMga2V5IGlzIG5vdCB0aGUgc2FtZSBhcyBjaGFsbGVuZ2UgY3JlYXRpb24EAAAABnBhQ29pbgkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAADklkeFBsYXllckFDb2luBAAAAAZ3aW5BbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACUlkeFdpbkFtdAQAAAAIcGF5VHlwZUEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAApJZHhQYXlUeXBlBAAAAAZwYXlBbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACUlkeFBheUFtdAQAAAAObmV3R2FtZURhdGFTdHIJAQAAABFGb3JtYXRHYW1lRGF0YVN0cgAAAAkFAAAADVNUQVRFQ0FOQ0VMRUQFAAAABnBhQ29pbgUAAAAKcGFQdWJLZXk1OAUAAAAIcGF5VHlwZUEFAAAABnBheUFtdAUAAAAGd2luQW10AgAAAAACAAAAAAIAAAAABAAAAAZyZWZ1bmQJAABlAAAAAgUAAAAGcGF5QW10CQAAaQAAAAIJAABoAAAAAgUAAAAGcGF5QW10BQAAAAtGRUVXQVZFU0JFVAAAAAAAAAAAZAQAAAAJYWRyUmVmdW5kCQEAAAAUYWRkcmVzc0Zyb21QdWJsaWNLZXkAAAABCQABmwAAAAEFAAAACnBhUHViS2V5NTgEAAAACHJlZlRva2VuCQEAAAAJVHlwZVRva2VuAAAAAQUAAAAIcGF5VHlwZUEJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAADm5ld0dhbWVEYXRhU3RyBQAAAANuaWwJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAJYWRyUmVmdW5kBQAAAAZyZWZ1bmQFAAAACHJlZlRva2VuBQAAAANuaWwAAAAA3uMKxg==", "chainId": 84, "height": 737641, "spentComplexity": 0 } View: original | compacted Prev: GMbPSk3Z9idYFohU2phfuwYk5cgP5ku8mZqFrKAER3dx Next: FgGwVDJBxQpDRhjptLszfPEHxCo5MDtLiLDXujggxAEh Diff:
OldNewDifferences
7171
7272 func ValidateAndIncreaseReservedAmt (winAmt) = {
7373 let newReservedAmount = (ExtractReservedAmt() + winAmt)
74- let balance = wavesBalance(this)
75- if ((newReservedAmount > balance))
76- then throw("Insufficient funds on Waves Rider account. Transaction was rejected for your safety.")
77- else newReservedAmount
74+ newReservedAmount
7875 }
7976
8077
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 STATESUBMITTED = "SUBMITTED"
1717
1818 let STATEWAITING = "WAITING"
1919
2020 let STATEFINISHED = "FINISHED"
2121
2222 let STATECANCELED = "CANCELED"
2323
2424 let FEEWAVESBET = 4
2525
2626 let FEEMCAFEE = 2
2727
2828 let IdxGameState = 0
2929
3030 let IdxPlayerACoin = 1
3131
3232 let IdxPlayerAPubKey58 = 2
3333
3434 let IdxPayType = 3
3535
3636 let IdxPayAmt = 4
3737
3838 let IdxWinAmt = 5
3939
4040 let IdxPlayerBCoin = 6
4141
4242 let IdxPlayerBPubKey58 = 7
4343
4444 let IdxRandOrEmpty = 8
4545
4646 func IncrementGameNum () = {
4747 let gameNum = match getInteger(this, GAMESCOUNTERKEY) {
4848 case num: Int =>
4949 num
5050 case _ =>
5151 0
5252 }
5353 (gameNum + 1)
5454 }
5555
5656
5757 func ValidateBetAndDefineWinAmt (playerCoin,amount) = if (if ((playerCoin != "RED"))
5858 then (playerCoin != "BLUE")
5959 else false)
6060 then throw("Invalid play, change your play to RED or BLUE.")
6161 else ((((amount * 2) / 100000) * (100 - (FEEWAVESBET + FEEMCAFEE))) / 100)
6262
6363
6464 func ExtractReservedAmt () = match getInteger(this, RESERVATIONKEY) {
6565 case a: Int =>
6666 a
6767 case _ =>
6868 0
6969 }
7070
7171
7272 func ValidateAndIncreaseReservedAmt (winAmt) = {
7373 let newReservedAmount = (ExtractReservedAmt() + winAmt)
74- let balance = wavesBalance(this)
75- if ((newReservedAmount > balance))
76- then throw("Insufficient funds on Waves Rider account. Transaction was rejected for your safety.")
77- else newReservedAmount
74+ newReservedAmount
7875 }
7976
8077
8178 func FormatGameDataParam (p) = {
8279 let s = size(p)
8380 if ((s == 0))
8481 then throw("Parameter size must be greater then 0.")
8582 else if ((s > 99))
8683 then throw("Parameter size must be less then 100.")
8784 else if ((10 > s))
8885 then (("0" + toString(s)) + p)
8986 else (toString(s) + p)
9087 }
9188
9289
9390 func FormatGameDataStr (gameState,playerACoin,playerAPubKey58,payType,payAmount,winAmt,playerBCoin,playerBPubKey58,randOrEmpty) = {
9491 let fullStateStr = ((((((((((FormatGameDataParam(gameState) + "_") + FormatGameDataParam(playerACoin)) + "_") + FormatGameDataParam(playerAPubKey58)) + "_") + FormatGameDataParam(payType)) + "_") + FormatGameDataParam(toString(payAmount))) + "_") + FormatGameDataParam(toString(winAmt)))
9592 if (if (if ((playerBCoin == ""))
9693 then (playerBPubKey58 == "")
9794 else false)
9895 then (randOrEmpty == "")
9996 else false)
10097 then fullStateStr
10198 else if (if (if ((playerBCoin != ""))
10299 then (playerBPubKey58 != "")
103100 else false)
104101 then (randOrEmpty == "")
105102 else false)
106103 then (((fullStateStr + "_") + (FormatGameDataParam(playerBCoin) + "_")) + (FormatGameDataParam(playerBPubKey58) + "_"))
107104 else ((((fullStateStr + "_") + (FormatGameDataParam(playerBCoin) + "_")) + (FormatGameDataParam(playerBPubKey58) + "_")) + FormatGameDataParam(randOrEmpty))
108105 }
109106
110107
111108 func RemoveUnderscoreIfPresent (remaining) = if ((size(remaining) > 0))
112109 then drop(remaining, 1)
113110 else remaining
114111
115112
116113 func ParseNextAttribute (remaining) = {
117114 let s = size(remaining)
118115 if ((s > 0))
119116 then {
120117 let nn = parseIntValue(take(remaining, 2))
121118 let v = take(drop(remaining, 2), nn)
122119 let tmpRemaining = drop(remaining, (nn + 2))
123120 let remainingState = RemoveUnderscoreIfPresent(tmpRemaining)
124121 [v, remainingState]
125122 }
126123 else throw("Empty string was passed into parseNextAttribute func")
127124 }
128125
129126
130127 func ParseGameRawDataStr (rawStateStr) = {
131128 let gameState = ParseNextAttribute(rawStateStr)
132129 let playerAChoice = ParseNextAttribute(gameState[1])
133130 let playerAPubKey58 = ParseNextAttribute(playerAChoice[1])
134131 let playerAPayType = ParseNextAttribute(playerAPubKey58[1])
135132 let playerAPayAmt = ParseNextAttribute(playerAPayType[1])
136133 let winAmt = ParseNextAttribute(playerAPayAmt[1])
137134 [gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0]]
138135 }
139136
140137
141138 func ExtractGameDataList (gameId) = {
142139 let rawDataStr = match getString(this, gameId) {
143140 case str: String =>
144141 str
145142 case _ =>
146143 throw(("Couldn't find game by " + gameId))
147144 }
148145 ParseGameRawDataStr(rawDataStr)
149146 }
150147
151148
152149 func TypePayment (p) = if ((p.assetId == assetInfo(base58'WAVES')))
153150 then "WAVES"
154151 else "WBET"
155152
156153
157154 func TypeToken (s) = if ((s == "WAVES"))
158155 then unit
159156 else WBET
160157
161158
162159 func SelectCoinB (coin) = if ((coin == "RED"))
163160 then "BLUE"
164161 else "RED"
165162
166163
167164 @Callable(i)
168165 func playCoin (paCoin) = {
169166 let gameId = toBase58String(i.transactionId)
170167 let payment = extract(i.payment)
171168 let feeAssetId = isDefined(i.feeAssetId)
172169 let gameIdUsed = isDefined(getString(this, gameId))
173170 let winAmt = ValidateBetAndDefineWinAmt(paCoin, payment.amount)
174171 if (if ((payment.assetId != assetInfo(base58'WAVES')))
175172 then (payment.assetId != WBET)
176173 else false)
177174 then throw("Payment should be in Wavesbet or Waves")
178175 else if (feeAssetId)
179176 then throw("Transaction's fee must be in Waves. Game aborted.")
180177 else if (gameIdUsed)
181178 then throw("Passed gameId had been used before. Game aborted.")
182179 else {
183180 let newGameNum = IncrementGameNum()
184181 let playerAPubKey58 = toBase58String(i.callerPublicKey)
185182 let payType = TypePayment(payment)
186183 let gameDataStr = FormatGameDataStr(STATESUBMITTED, paCoin, playerAPubKey58, payType, payment.amount, winAmt, "", "", "")
187184 ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
188185 }
189186 }
190187
191188
192189
193190 @Callable(i)
194191 func acceptChallenge (gameId) = {
195192 let payment = extract(i.payment)
196193 let feeAssetId = isDefined(i.feeAssetId)
197194 let payTypeB = TypePayment(payment)
198195 let gameDataList = ExtractGameDataList(gameId)
199196 let gameState = gameDataList[IdxGameState]
200197 let payTypeA = gameDataList[IdxPayType]
201198 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
202199 if (if ((payment.assetId != assetInfo(base58'WAVES')))
203200 then (payment.assetId != WBET)
204201 else false)
205202 then throw("Payment should be in Wavesbet or Waves")
206203 else if (feeAssetId)
207204 then throw("Transaction's fee must be in Waves. Game aborted.")
208205 else if ((payTypeB != payTypeA))
209206 then throw("Payment must be made in the same currency token as the bet, WBET/WBET or WAVES/WAVES.")
210207 else if ((payment.amount == payAmt))
211208 then throw("Payout must be equal to the bet amount.")
212209 else if ((gameState != STATESUBMITTED))
213210 then throw("Invalid game state for passed gameId")
214211 else {
215212 let paCoin = gameDataList[IdxPlayerACoin]
216213 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
217214 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
218215 let pbCoin = SelectCoinB(paCoin)
219216 let pbPubKey58 = toBase58String(i.callerPublicKey)
220217 let newGameDataStr = FormatGameDataStr(STATEWAITING, paCoin, paPubKey58, payTypeA, payAmt, winAmt, pbCoin, pbPubKey58, "")
221218 ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
222219 }
223220 }
224221
225222
226223
227224 @Callable(i)
228225 func cancelChallenge (gameId) = {
229226 let feeAssetId = isDefined(i.feeAssetId)
230227 let gameDataList = ExtractGameDataList(gameId)
231228 let gameState = gameDataList[IdxGameState]
232229 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
233230 let pubKey58 = toBase58String(i.callerPublicKey)
234231 if (feeAssetId)
235232 then throw("Transaction's fee must be in Waves. Game aborted.")
236233 else if ((gameState != STATESUBMITTED))
237234 then throw("Invalid game state for passed gameId")
238235 else if ((paPubKey58 != pubKey58))
239236 then throw("Public key is not the same as challenge creation")
240237 else {
241238 let paCoin = gameDataList[IdxPlayerACoin]
242239 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
243240 let payTypeA = gameDataList[IdxPayType]
244241 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
245242 let newGameDataStr = FormatGameDataStr(STATECANCELED, paCoin, paPubKey58, payTypeA, payAmt, winAmt, "", "", "")
246243 let refund = (payAmt - ((payAmt * FEEWAVESBET) / 100))
247244 let adrRefund = addressFromPublicKey(toBytes(paPubKey58))
248245 let refToken = TypeToken(payTypeA)
249246 ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(adrRefund, refund, refToken)]))
250247 }
251248 }
252249
253250

github/deemru/w8io/169f3d6 
53.70 ms