tx · BMuLpmHssdbG2FuZ9K19L3Ts8cfHcFMcKpCyWvDxk5Pd

3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u:  -0.01400000 Waves

2019.10.27 01:52 [737726] smart account 3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u > SELF 0.00000000 Waves

{ "type": 13, "id": "BMuLpmHssdbG2FuZ9K19L3Ts8cfHcFMcKpCyWvDxk5Pd", "fee": 1400000, "feeAssetId": null, "timestamp": 1572130327679, "version": 1, "sender": "3MxsZUkxjngrsHn7WNd2xEbwWkUfKdmzP6u", "senderPublicKey": "BFgvNhTxuzThVrRXLX7LfTfCHVeCPDsF6JEpadKJPvox", "proofs": [ "5emyGBSqYiwNYuh6JEQDwqC9MT8iaj2iTvZDh58DKDUwDG6cfkcKTR5TcM4hBVfwrmALJb8ZWRmm8uC6V4c3JZPe" ], "script": "base64:AAIDAAAAAAAAABEIARIDCgEIEgMKAQgSAwoBCAAAACMAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAY9iYXNlNjQ6TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtT2xSQlRZRU8zSDdZOXJCbW9GUUZuNDM5MlB4MFF3MTNEc2RFaG56TUgyY2o2WTV5bVB1Q09MTU5lNXFyVXpRbDhvUkx6SUJ6RlZNWmx3VVlsMmJvc3JPSXhRYllGN1dWUVd2b1Z4RVQxWUlnRG0zTnp6T0xBNXVIN0NLTzBzbnNobU1GQ0RPWkVldzQxR2pLaDNQZ3grbmJBZ3VQOVpRUGZxU2FmRW1DM0NOLzR5RHNKcktyaVJuaVpKbzlqUy80TExzUkt3QjdIQVpIem9GOUxMN3RTWkgzaHRhTkd0YmRUa3haMVR6U1QzTWIyVlBTenNadlFEb2NYVVZPbUpPdTBvMjlhT1krR2tHL0c0UkNLMEZCV1FIRVV2QzUxVFJEUzVrOGphZDBPMU1vYmpRYzZiMThkK2Z1b1ZGZE5mWndHSCt1RnVkdFBHM1VKVGYybWt6WlFJREFRQUIAAAAAD0dBTUVTQ09VTlRFUktFWQIAAAAJJEdBTUVfTlVNAAAAAA5SRVNFUlZBVElPTktFWQIAAAAQJFJFU0VSVkVEX0FNT1VOVAAAAAAEV0JFVAEAAAAgD5uLrFpvaCc5H1Jt+IyA7GJAqs11k4f4jn5gjTii4MkAAAAADldBTExFVFdBVkVTQkVUCQEAAAAHQWRkcmVzcwAAAAEBAAAAGgFUjmD063sxkBCLSiisiwOufXcqpucc4Di4AAAAAAxXQUxMRVRNQ0FGRkUJAQAAAAdBZGRyZXNzAAAAAQEAAAAAAAAAAAdXQVZFTEVUCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAAAAAD6AAAAAAAAAAD6AAAAAAOU1RBVEVTVUJNSVRURUQCAAAACVNVQk1JVFRFRAAAAAAMU1RBVEVXQUlUSU5HAgAAAAdXQUlUSU5HAAAAAA1TVEFURUZJTklTSEVEAgAAAAhGSU5JU0hFRAAAAAANU1RBVEVDQU5DRUxFRAIAAAAIQ0FOQ0VMRUQAAAAAC0ZFRVdBVkVTQkVUAAAAAAAAAAAEAAAAAAlGRUVNQ0FG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BQAAAAlyZW1haW5pbmcDCQAAZgAAAAIFAAAAAXMAAAAAAAAAAAAEAAAAAm5uCQEAAAANcGFyc2VJbnRWYWx1ZQAAAAEJAAEvAAAAAgUAAAAJcmVtYWluaW5nAAAAAAAAAAACBAAAAAF2CQABLwAAAAIJAAEwAAAAAgUAAAAJcmVtYWluaW5nAAAAAAAAAAACBQAAAAJubgQAAAAMdG1wUmVtYWluaW5nCQABMAAAAAIFAAAACXJlbWFpbmluZwkAAGQAAAACBQAAAAJubgAAAAAAAAAAAgQAAAAOcmVtYWluaW5nU3RhdGUJAQAAABlSZW1vdmVVbmRlcnNjb3JlSWZQcmVzZW50AAAAAQUAAAAMdG1wUmVtYWluaW5nCQAETAAAAAIFAAAAAXYJAARMAAAAAgUAAAAOcmVtYWluaW5nU3RhdGUFAAAAA25pbAkAAAIAAAABAgAAADRFbXB0eSBzdHJpbmcgd2FzIHBhc3NlZCBpbnRvIHBhcnNlTmV4dEF0dHJpYnV0ZSBmdW5jAQAAABNQYXJzZUdhbWVSYXdEYXRhU3RyAAAAAgAAAAtyYXdTdGF0ZVN0cgAAAAR0eXBlBAAAAAlnYW1lU3RhdGUJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABBQAAAAtyYXdTdGF0ZVN0cgQAAAANcGxheWVyQUNob2ljZQkBAAAAElBhcnNlTmV4dEF0dHJpYnV0ZQAAAAEJAAGRAAAAAgUAAAAJZ2FtZVN0YXRlAAAAAAAAAAABBAAAAA9wbGF5ZXJBUHViS2V5NTgJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAADXBsYXllckFDaG9pY2UAAAAAAAAAAAEEAAAADnBsYXllckFQYXlUeXBlCQEAAAASUGFyc2VOZXh0QXR0cmlidXRlAAAAAQkAAZEAAAACBQAAAA9wbGF5ZXJBUHViS2V5NTgAAAAAAAAAAAEEAAAADXBsYXllckFQYXlBbXQJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAADnBsYXllckFQYXlUeXBlAAAAAAAAAAABBAAAAAZ3aW5BbXQJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAADXBsYXllckFQYXlBbXQAAAAAAAAAAAEDCQAAAAAAAAIFAAAABHR5cGUAAAAAAAAAAAAJAARMAAAAAgkAAZEAAAACBQAAAAlnYW1lU3RhdGUAAAAAAAAAAAAJAARMAAAAAgkAAZEAAAACBQAAAA1wbGF5ZXJBQ2hvaWNlAAAAAAAAAAAACQAETAAAAAIJAAGRAAAAAgUAAAAPcGxheWVyQVB1YktleTU4AAAAAAAAAAAACQAETAAAAAIJAAGRAAAAAgUAAAAOcGxheWVyQVBheVR5cGUAAAAAAAAAAAAJAARMAAAAAgkAAZEAAAACBQAAAA1wbGF5ZXJBUGF5QW10AAAAAAAAAAAACQAETAAAAAIJAAGRAAAAAgUAAAAGd2luQW10AAAAAAAAAAAABQAAAANuaWwEAAAADXBsYXllckJDaG9pY2UJAQAAABJQYXJzZU5leHRBdHRyaWJ1dGUAAAABCQABkQAAAAIFAAAABndpbkFtdAAAAAAAAAAAAQQAAAAPcGxheWVyQlB1YktleTU4CQEAAAASUGFyc2VOZXh0QXR0cmlidXRlAAAAAQkAAZEAAAACBQAAAA1wbGF5ZXJCQ2hvaWNlAAAAAAAAAAABCQAETAAAAAIJAAGRAAAAAgUAAAAJZ2FtZVN0YXRlAAAAAAAAAAAACQAETAAAAAIJAAGRAAAAAgUAAAANcGxheWVyQUNob2ljZQAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAAD3BsYXllckFQdWJLZXk1OAAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAADnBsYXllckFQYXlUeXBlAAAAAAAAAAAACQAETAAAAAIJAAGRAAAAAgUAAAANcGxheWVyQVBheUFtdAAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAABndpbkFtdAAAAAAAAAAAAAkABEwAAAACCQABkQAAAAIFAAAADXBsYXllckJDaG9pY2UAAAAAAAAAAAAJAARMAAAAAgkAAZEAAAACBQAAAA9wbGF5ZXJCUHViS2V5NTgAAAAAAAAAAAAFAAAAA25pbAEAAAATRXh0cmFjdEdhbWVEYXRhTGlzdAAAAAIAAAAGZ2FtZUlkAAAABHR5cGUEAAAACnJhd0RhdGFTdHIEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAAGZ2FtZUlkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAA3N0cgUAAAAHJG1hdGNoMAUAAAADc3RyCQAAAgAAAAEJAAEsAAAAAgIAAAAWQ291bGRuJ3QgZmluZCBnYW1lIGJ5IAUAAAAGZ2FtZUlkCQEAAAATUGFyc2VHYW1lUmF3RGF0YVN0cgAAAAIFAAAACnJhd0RhdGFTdHIFAAAABHR5cGUBAAAAC1R5cGVQYXltZW50AAAAAQAAAAFwAwkAAAAAAAACCAUAAAABcAAAAAdhc3NldElkCQAD7AAAAAEBAAAABBOr2TMCAAAABVdBVkVTAgAAAARXQkVUAQAAAAlUeXBlVG9rZW4AAAABAAAAAXMDCQAAAAAAAAIFAAAAAXMCAAAABVdBVkVTBQAAAAR1bml0BQAAAARXQkVUAQAAAAtTZWxlY3RDb2luQgAAAAEAAAAEY29pbgMJAAAAAAAAAgUAAAAEY29pbgIAAAADUkVEAgAAAARCTFVFAgAAAANSRUQAAAADAAAAAWkBAAAACHBsYXlDb2luAAAAAQAAAAZwYUNvaW4EAAAABmdhbWVJZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBAAAAAdwYXltZW50CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAACmZlZUFzc2V0SWQJAQAAAAlpc0RlZmluZWQAAAABCAUAAAABaQAAAApmZWVBc3NldElkBAAAAApnYW1lSWRVc2VkCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzBQAAAAZnYW1lSWQEAAAABndpbkFtdAkBAAAAGlZhbGlkYXRlQmV0QW5kRGVmaW5lV2luQW10AAAAAgUAAAAGcGFDb2luCAUAAAAHcGF5bWVudAAAAAZhbW91bnQDAwkBAAAAAiE9AAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAkAA+wAAAABAQAAAAQTq9kzCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkBQAAAARXQkVUBwkAAAIAAAABAgAAACZQYXltZW50IHNob3VsZCBiZSBpbiBXYXZlc2JldCBvciBXYXZlcwMFAAAACmZlZUFzc2V0SWQJAAACAAAAAQIAAAAxVHJhbnNhY3Rpb24ncyBmZWUgbXVzdCBiZSBpbiBXYXZlcy4gR2FtZSBhYm9ydGVkLgMFAAAACmdhbWVJZFVzZWQJAAACAAAAAQIAAAAxUGFzc2VkIGdhbWVJZCBoYWQgYmVlbiB1c2VkIGJlZm9yZS4gR2FtZSBhYm9ydGVkLgQAAAAKbmV3R2FtZU51bQkBAAAAEEluY3JlbWVudEdhbWVOdW0AAAAABAAAAA9wbGF5ZXJBUHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAdwYXlUeXBlCQEAAAALVHlwZVBheW1lbnQAAAABBQAAAAdwYXltZW50BAAAAAtnYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAACQUAAAAOU1RBVEVTVUJNSVRURUQFAAAABnBhQ29pbgUAAAAPcGxheWVyQVB1YktleTU4BQAAAAdwYXlUeXBlCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAABndpbkFtdAIAAAAAAgAAAAACAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAADlJFU0VSVkFUSU9OS0VZCQEAAAAeVmFsaWRhdGVBbmRJbmNyZWFzZVJlc2VydmVkQW10AAAAAQUAAAAGd2luQW10CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACBQAAAA9HQU1FU0NPVU5URVJLRVkFAAAACm5ld0dhbWVOdW0JAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAALZ2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5XQUxMRVRXQVZFU0JFVAkAAGkAAAACCQAAaAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQFAAAABFdCRVQFAAAAA25pbAAAAAFpAQAAAA9hY2NlcHRDaGFsbGVuZ2UAAAABAAAABmdhbWVJZAQAAAAHcGF5bWVudAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAApmZWVBc3NldElkCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAAWkAAAAKZmVlQXNzZXRJZAQAAAAIcGF5VHlwZUIJAQAAAAtUeXBlUGF5bWVudAAAAAEFAAAAB3BheW1lbnQEAAAADGdhbWVEYXRhTGlzdAkBAAAAE0V4dHJhY3RHYW1lRGF0YUxpc3QAAAACBQAAAAZnYW1lSWQAAAAAAAAAAAAEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAADElkeEdhbWVTdGF0ZQQAAAAIcGF5VHlwZUEJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAAApJZHhQYXlUeXBlBAAAAAZwYXlBbXQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACUlkeFBheUFtdAMDCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAD7AAAAAEBAAAABBOr2TMJAQAAAAIhPQAAAAIIBQAAAAdwYXltZW50AAAAB2Fzc2V0SWQFAAAABFdCRVQHCQAAAgAAAAECAAAAJlBheW1lbnQgc2hvdWxkIGJlIGluIFdhdmVzYmV0IG9yIFdhdmVzAwUAAAAKZmVlQXNzZXRJZAkAAAIAAAABAgAAADFUcmFuc2FjdGlvbidzIGZlZSBtdXN0IGJlIGluIFdhdmVzLiBHYW1lIGFib3J0ZWQuAwkBAAAAAiE9AAAAAgUAAAAIcGF5VHlwZUIFAAAACHBheVR5cGVBCQAAAgAAAAECAAAAVVBheW1lbnQgbXVzdCBiZSBtYWRlIGluIHRoZSBzYW1lIGN1cnJlbmN5IHRva2VuIGFzIHRoZSBiZXQsIFdCRVQvV0JFVCBvciBXQVZFUy9XQVZFUy4DCQEAAAACIT0AAAACCAUAAAAHcGF5bWVudAAAAAZhbW91bnQFAAAABnBheUFtdAkAAAIAAAABAgAAACdQYXlvdXQgbXVzdCBiZSBlcXVhbCB0byB0aGUgYmV0IGFtb3VudC4DCQEAAAACIT0AAAACBQAAAAlnYW1lU3RhdGUFAAAADlNUQVRFU1VCTUlUVEVECQAAAgAAAAECAAAAJEludmFsaWQgZ2FtZSBzdGF0ZSBmb3IgcGFzc2VkIGdhbWVJZAQAAAAGcGFDb2luCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAOSWR4UGxheWVyQUNvaW4EAAAACnBhUHViS2V5NTgJAAGRAAAAAgUAAAAMZ2FtZURhdGFMaXN0BQAAABJJZHhQbGF5ZXJBUHViS2V5NTgEAAAABndpbkFtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAJSWR4V2luQW10BAAAAAZwYkNvaW4JAQAAAAtTZWxlY3RDb2luQgAAAAEFAAAABnBhQ29pbgQAAAAKcGJQdWJLZXk1OAkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkEAAAADm5ld0dhbWVEYXRhU3RyCQEAAAARRm9ybWF0R2FtZURhdGFTdHIAAAAJBQAAAAxTVEFURVdBSVRJTkcFAAAABnBhQ29pbgUAAAAKcGFQdWJLZXk1OAUAAAAIcGF5VHlwZUEFAAAABnBheUFtdAUAAAAGd2luQW10BQAAAAZwYkNvaW4FAAAACnBiUHViS2V5NTgCAAAAAAkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAAObmV3R2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAA5XQUxMRVRXQVZFU0JFVAkAAGkAAAACCQAAaAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAALRkVFV0FWRVNCRVQAAAAAAAAAAGQFAAAABFdCRVQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAEdGhpcwAAAAAAAAehIAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAAD2NhbmNlbENoYWxsZW5nZQAAAAEAAAAGZ2FtZUlkBAAAAApmZWVBc3NldElkCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAAWkAAAAKZmVlQXNzZXRJZAQAAAAMZ2FtZURhdGFMaXN0CQEAAAATRXh0cmFjdEdhbWVEYXRhTGlzdAAAAAIFAAAABmdhbWVJZAAAAAAAAAAAAAQAAAAJZ2FtZVN0YXRlCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAMSWR4R2FtZVN0YXRlBAAAAApwYVB1YktleTU4CQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAASSWR4UGxheWVyQVB1YktleTU4BAAAAAhwdWJLZXk1OAkAAlgAAAABCAUAAAABaQAAAA9jYWxsZXJQdWJsaWNLZXkDBQAAAApmZWVBc3NldElkCQAAAgAAAAECAAAAMVRyYW5zYWN0aW9uJ3MgZmVlIG11c3QgYmUgaW4gV2F2ZXMuIEdhbWUgYWJvcnRlZC4DCQEAAAACIT0AAAACBQAAAAlnYW1lU3RhdGUFAAAADlNUQVRFU1VCTUlUVEVECQAAAgAAAAECAAAAJEludmFsaWQgZ2FtZSBzdGF0ZSBmb3IgcGFzc2VkIGdhbWVJZAMJAQAAAAIhPQAAAAIFAAAACnBhUHViS2V5NTgFAAAACHB1YktleTU4CQAAAgAAAAECAAAAMFB1YmxpYyBrZXkgaXMgbm90IHRoZSBzYW1lIGFzIGNoYWxsZW5nZSBjcmVhdGlvbgQAAAAGcGFDb2luCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAOSWR4UGxheWVyQUNvaW4EAAAABndpbkFtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAJSWR4V2luQW10BAAAAAhwYXlUeXBlQQkAAZEAAAACBQAAAAxnYW1lRGF0YUxpc3QFAAAACklkeFBheVR5cGUEAAAABnBheUFtdAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAADGdhbWVEYXRhTGlzdAUAAAAJSWR4UGF5QW10BAAAAA5uZXdHYW1lRGF0YVN0cgkBAAAAEUZvcm1hdEdhbWVEYXRhU3RyAAAACQUAAAANU1RBVEVDQU5DRUxFRAUAAAAGcGFDb2luBQAAAApwYVB1YktleTU4BQAAAAhwYXlUeXBlQQUAAAAGcGF5QW10BQAAAAZ3aW5BbXQCAAAAAAIAAAAAAgAAAAAEAAAABnJlZnVuZAkAAGUAAAACBQAAAAZwYXlBbXQJAABpAAAAAgkAAGgAAAACBQAAAAZwYXlBbXQFAAAAC0ZFRVdBVkVTQkVUAAAAAAAAAABkBAAAAAlhZHJSZWZ1bmQJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAGbAAAAAQUAAAAKcGFQdWJLZXk1OAQAAAAIcmVmVG9rZW4JAQAAAAlUeXBlVG9rZW4AAAABBQAAAAhwYXlUeXBlQQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAABmdhbWVJZAUAAAAObmV3R2FtZURhdGFTdHIFAAAAA25pbAkBAAAAC1RyYW5zZmVyU2V0AAAAAQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAlhZHJSZWZ1bmQFAAAABnJlZnVuZAUAAAAIcmVmVG9rZW4FAAAAA25pbAAAAABNhtWb", "chainId": 84, "height": 737726, "spentComplexity": 0 } View: original | compacted Prev: 58rFq6D2pEd9u3aceBSk6e4Ke1ejtL7oT6C1xqyirK5A Next: GF4Ej13qzAmXKMzo7NCNKJNLVxzyQ1LsC2UAohQTTSF3 Diff:
OldNewDifferences
212212 then throw("Transaction's fee must be in Waves. Game aborted.")
213213 else if ((payTypeB != payTypeA))
214214 then throw("Payment must be made in the same currency token as the bet, WBET/WBET or WAVES/WAVES.")
215- else if ((payment.amount == payAmt))
215+ else if ((payment.amount != payAmt))
216216 then throw("Payout must be equal to the bet amount.")
217217 else if ((gameState != STATESUBMITTED))
218218 then throw("Invalid game state for passed gameId")
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
129129 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])
136136 if ((type == 0))
137137 then [gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0]]
138138 else {
139139 let playerBChoice = ParseNextAttribute(winAmt[1])
140140 let playerBPubKey58 = ParseNextAttribute(playerBChoice[1])
141141 [gameState[0], playerAChoice[0], playerAPubKey58[0], playerAPayType[0], playerAPayAmt[0], winAmt[0], playerBChoice[0], playerBPubKey58[0]]
142142 }
143143 }
144144
145145
146146 func ExtractGameDataList (gameId,type) = {
147147 let rawDataStr = match getString(this, gameId) {
148148 case str: String =>
149149 str
150150 case _ =>
151151 throw(("Couldn't find game by " + gameId))
152152 }
153153 ParseGameRawDataStr(rawDataStr, type)
154154 }
155155
156156
157157 func TypePayment (p) = if ((p.assetId == assetInfo(base58'WAVES')))
158158 then "WAVES"
159159 else "WBET"
160160
161161
162162 func TypeToken (s) = if ((s == "WAVES"))
163163 then unit
164164 else WBET
165165
166166
167167 func SelectCoinB (coin) = if ((coin == "RED"))
168168 then "BLUE"
169169 else "RED"
170170
171171
172172 @Callable(i)
173173 func playCoin (paCoin) = {
174174 let gameId = toBase58String(i.transactionId)
175175 let payment = extract(i.payment)
176176 let feeAssetId = isDefined(i.feeAssetId)
177177 let gameIdUsed = isDefined(getString(this, gameId))
178178 let winAmt = ValidateBetAndDefineWinAmt(paCoin, payment.amount)
179179 if (if ((payment.assetId != assetInfo(base58'WAVES')))
180180 then (payment.assetId != WBET)
181181 else false)
182182 then throw("Payment should be in Wavesbet or Waves")
183183 else if (feeAssetId)
184184 then throw("Transaction's fee must be in Waves. Game aborted.")
185185 else if (gameIdUsed)
186186 then throw("Passed gameId had been used before. Game aborted.")
187187 else {
188188 let newGameNum = IncrementGameNum()
189189 let playerAPubKey58 = toBase58String(i.callerPublicKey)
190190 let payType = TypePayment(payment)
191191 let gameDataStr = FormatGameDataStr(STATESUBMITTED, paCoin, playerAPubKey58, payType, payment.amount, winAmt, "", "", "")
192192 ScriptResult(WriteSet([DataEntry(RESERVATIONKEY, ValidateAndIncreaseReservedAmt(winAmt)), DataEntry(GAMESCOUNTERKEY, newGameNum), DataEntry(gameId, gameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET)]))
193193 }
194194 }
195195
196196
197197
198198 @Callable(i)
199199 func acceptChallenge (gameId) = {
200200 let payment = extract(i.payment)
201201 let feeAssetId = isDefined(i.feeAssetId)
202202 let payTypeB = TypePayment(payment)
203203 let gameDataList = ExtractGameDataList(gameId, 0)
204204 let gameState = gameDataList[IdxGameState]
205205 let payTypeA = gameDataList[IdxPayType]
206206 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
207207 if (if ((payment.assetId != assetInfo(base58'WAVES')))
208208 then (payment.assetId != WBET)
209209 else false)
210210 then throw("Payment should be in Wavesbet or Waves")
211211 else if (feeAssetId)
212212 then throw("Transaction's fee must be in Waves. Game aborted.")
213213 else if ((payTypeB != payTypeA))
214214 then throw("Payment must be made in the same currency token as the bet, WBET/WBET or WAVES/WAVES.")
215- else if ((payment.amount == payAmt))
215+ else if ((payment.amount != payAmt))
216216 then throw("Payout must be equal to the bet amount.")
217217 else if ((gameState != STATESUBMITTED))
218218 then throw("Invalid game state for passed gameId")
219219 else {
220220 let paCoin = gameDataList[IdxPlayerACoin]
221221 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
222222 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
223223 let pbCoin = SelectCoinB(paCoin)
224224 let pbPubKey58 = toBase58String(i.callerPublicKey)
225225 let newGameDataStr = FormatGameDataStr(STATEWAITING, paCoin, paPubKey58, payTypeA, payAmt, winAmt, pbCoin, pbPubKey58, "")
226226 ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(WALLETWAVESBET, ((payment.amount * FEEWAVESBET) / 100), WBET), ScriptTransfer(this, 500000, unit)]))
227227 }
228228 }
229229
230230
231231
232232 @Callable(i)
233233 func cancelChallenge (gameId) = {
234234 let feeAssetId = isDefined(i.feeAssetId)
235235 let gameDataList = ExtractGameDataList(gameId, 0)
236236 let gameState = gameDataList[IdxGameState]
237237 let paPubKey58 = gameDataList[IdxPlayerAPubKey58]
238238 let pubKey58 = toBase58String(i.callerPublicKey)
239239 if (feeAssetId)
240240 then throw("Transaction's fee must be in Waves. Game aborted.")
241241 else if ((gameState != STATESUBMITTED))
242242 then throw("Invalid game state for passed gameId")
243243 else if ((paPubKey58 != pubKey58))
244244 then throw("Public key is not the same as challenge creation")
245245 else {
246246 let paCoin = gameDataList[IdxPlayerACoin]
247247 let winAmt = parseIntValue(gameDataList[IdxWinAmt])
248248 let payTypeA = gameDataList[IdxPayType]
249249 let payAmt = parseIntValue(gameDataList[IdxPayAmt])
250250 let newGameDataStr = FormatGameDataStr(STATECANCELED, paCoin, paPubKey58, payTypeA, payAmt, winAmt, "", "", "")
251251 let refund = (payAmt - ((payAmt * FEEWAVESBET) / 100))
252252 let adrRefund = addressFromPublicKey(toBytes(paPubKey58))
253253 let refToken = TypeToken(payTypeA)
254254 ScriptResult(WriteSet([DataEntry(gameId, newGameDataStr)]), TransferSet([ScriptTransfer(adrRefund, refund, refToken)]))
255255 }
256256 }
257257
258258

github/deemru/w8io/169f3d6 
39.29 ms