tx · EZhGZFSH4149Fy3nrPLU4GCdz4z87RAm2YECk439NUkp 3MsgzPCpdtPhuvCQsuy256ypXhtkqx6jKgG: -0.01400000 Waves 2020.04.07 09:10 [943490] smart account 3MsgzPCpdtPhuvCQsuy256ypXhtkqx6jKgG > SELF 0.00000000 Waves
{ "type": 13, "id": "EZhGZFSH4149Fy3nrPLU4GCdz4z87RAm2YECk439NUkp", "fee": 1400000, "feeAssetId": null, "timestamp": 1586239859368, "version": 1, "sender": "3MsgzPCpdtPhuvCQsuy256ypXhtkqx6jKgG", "senderPublicKey": "GLCpx3S456PdKjg4oPYCwDedX2YVQkiVmJrFuFUtZM5x", "proofs": [ "hTvxHr2FXaycvLamR1xLfxg5dvUyEgzivXmxrZtkoXe9dkRQ4z3Miz2CbHUKDvR1q2Qnm6KPSSShexAgPNSYnMV" ], "script": "base64:AAIDAAAAAAAAABIIARIDCgEEEgMKAQgSBAoCCAIAAAAuAAAAAAdXQVZFTEVUCQAAaAAAAAIJAABoAAAAAgAAAAAAAAAAZAAAAAAAAAAD6AAAAAAAAAAD6AAAAAAKQ09NTUlTU0lPTgkAAGkAAAACCQAAaAAAAAIAAAAAAAAAAAUFAAAAB1dBVkVMRVQAAAAAAAAAA+gAAAAACVJTQVBVQkxJQwkAAlsAAAABAgAAAY9iYXNlNjQ6TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFtcHVYY0kvbzRwSUI1eXd2OURPT0dhcFRCVXdSVmxNLzYrSDZoRmVsT1h0a3J3WS9ZSXRtUHhFRHB6N3JBZXJRUFFlOXREUEVhQXYvR25sRXp0eWJPRlhndTlEekRlOFlvTVJEMXZha2dvQWNvZ21iWTU4UUQ2S01qNUhrb1ZqL3lUTkljOXN6ajVxaElsckFkbWIzS0xMNmhRVTd5OCtKajY5QldWUHNhUWdrc3BTZGVZdGIxdEhRYzd0OTVuN09aNTZyMkE3RzMrYlFmNm5TTWtQa0FoSXJFcGJDbTU4b2lHQmN6ZFRkL0xxRlNWb3Rac2JMN1loNlNITGZuSGVEK1FnY2ZKcm5hbThPSE1HSkVKVFJYaklMZUhHamxSQ1A4b1ZwaW9IcnkxUzJ4UHg1c1Z6SW0yTU0rQ3pZZW5BR2xvMGoyNmF0QmhpVUxvVHVsd0QzcFFJREFRQUIAAAAABlNFUlZFUgkBAAAAHEBleHRyVXNlcihhZGRyZXNzRnJvbVN0cmluZykAAAABAgAAACMzTkNpRzI4TG1XeVRpZ1dHMTNFNVFudmRIQnNaRllYU1MyagAAAAATUkFORE9SQUNMRVRJTUVGUkFNRQAAAAAAAAAQ4AAAAAAOTUFYQkFMQU5DRURJRkYAAAAAAAX14QAAAAAABEJFVDEJAABoAAAAAgAAAAAAAAAAAQUAAAAHV0FWRUxFVAAAAAAEQkVUMgkAAGgAAAACAAAAAAAAAAACBQAAAAdXQVZFTEVUAAAAAARCRVQ0CQAAaAAAAAIAAAAAAAAAAAQFAAAAB1dBVkVMRVQAAAAABEJFVDgJAABoAAAAAgAAAAAAAAAACAUAAAAHV0FWRUxFVAAAAAAFQkVUMTQJAABoAAAAAgAAAAAAAAAADgUAAAAHV0FWRUxFVAAAAAAIUkFURU1VTFQAAAAAAAAAJxAAAAAABVJBVEUxAAAAAAAAAJrnAAAAAAVSQVRFMgAAAAAAAABgGAAAAAAFUkFURTMAAAAAAAAASjgAAAAABVJBVEU0AAAAAAAAADd4AAAAAAVSQVRFNQAAAAAAAAAsiAAAAAAFUkFURVMJAARMAAAAAgUAAAAFUkFURTEJAARMAAAAAgUAAAAFUkFURTIJAARMAAAAAgUAAAAFUkFURTMJAARMAAAAAgUAAAAFUkFURTQJAARMAAAAAgUAAAAFUkFURTUFAAAAA25pbAAAAAAEQkVUUwkABEwAAAACBQAAAARCRVQxCQAETAAAAAIFAAAABEJFVDIJAARMAAAAAgUAAAAEQkVUNAkABEwAAAACBQAAAARCRVQ4CQAETAAAAAIFAAAABUJFVDE0BQAAAANuaWwAAAAADElkeEdhbWVTdGF0ZQAAAAAAAAAAAAAAAAAPSWR4UGxheWVyQ2hvaWNlAAAAAAAAAAABAAAAABFJZHhQbGF5ZXJQdWJLZXk1OAAAAAAAAAAAAgAAAAAQSWR4U3RhcnRlZEhlaWdodAAAAAAAAAAAAwAAAAAMSWR4V2luQW1vdW50AAAAAAAAAAAEAAAAAApJZHhBc3NldElkAAAAAAAAAAAFAAAAAA5SRVNFUlZBVElPTktFWQIAAAAQJFJFU0VSVkVEX0FNT1VOVAAAAAAPR0FNRVNDT1VOVEVSS0VZAgAAAAkkR0FNRV9OVU0AAAAACURBUFBVUEtFWQIAAAAIJERBUFBfVVAAAAAADU1BWEJBTEFOQ0VLRVkCAAAADCRNQVhfQkFMQU5DRQAAAAAOU1RBVEVTVUJNSVRURUQCAAAACVNVQk1JVFRFRAAAAAAIU1RBVEVXT04CAAAAA1dPTgAAAAAJU1RBVEVMT1NUAgAAAARMT1NUAQAAAAhnZXRJbnRPcgAAAAIAAAADa2V5AAAAB2RlZmF1bHQDCQEAAAAJaXNEZWZpbmVkAAAAAQkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMFAAAAA2tleQUAAAAHZGVmYXVsdAEAAAAGc2V0SW50AAAAAgAAAANrZXkAAAAFdmFsdWUJAQAAAAlEYXRhRW50cnkAAAACBQAAAANrZXkFAAAABXZhbHVlAQAAAAxpbmNyZW1lbnRJbnQAAAABAAAAA2tleQkBAAAABnNldEludAAAAAIFAAAAA2tleQkAAGQAAAACCQEAAAAIZ2V0SW50T3IAAAACBQAAAANrZXkA//////////8AAAAAAAAAAAEBAAAACWNoYW5nZUludAAAAAIAAAADa2V5AAAAAmJ5CQEAAAAGc2V0SW50AAAAAgUAAAADa2V5CQAAZAAAAAIJAQAAAAhnZXRJbnRPcgAAAAIFAAAAA2tleQAAAAAAAAAAAAUAAAACYnkBAAAAFWluY3JlYXNlUmVzZXJ2ZUFtb3VudAAAAAEAAAAJd2luQW1vdW50BAAAABFuZXdSZXNlcnZlZEFtb3VudAkAAGQAAAACCQEAAAAIZ2V0SW50T3IAAAACBQAAAA5SRVNFUlZBVElPTktFWQAAAAAAAAAAAAUAAAAJd2luQW1vdW50AwkAAGYAAAACBQAAABFuZXdSZXNlcnZlZEFtb3VudAkBAAAADHdhdmVzQmFsYW5jZQAAAAEFAAAABHRoaXMJAAACAAAAAQIAAABUSW5zdWZmaWNpZW50IGZ1bmRzIG9uIERpY2UgUm9sbGVyIGFjY291bnQuIFRyYW5zYWN0aW9uIHdhcyByZWplY3RlZCBmb3IgeW91ciBzYWZldHkuBQAAABFuZXdSZXNlcnZlZEFtb3VudAEAAAAWZGVjcmVhc2VSZXNlcnZlZEFtb3VudAAAAAIAAAAGZ2FtZUlkAAAACXdpbkFtb3VudAMJAABmAAAAAgAAAAAAAAAAAAkAAGUAAAACCQEAAAAIZ2V0SW50T3IAAAACBQAAAA5SRVNFUlZBVElPTktFWQAAAAAAAAAAAAUAAAAJd2luQW1vdW50CQAAAgAAAAECAAAAQkludmFsaWQgRGljZSBSb2xsZXIgYWNjb3VudCBzdGF0ZSAtIHJlc2VydmVkIGFtb3VudCBpcyBsZXNzIHRoYW4gMAkBAAAACWNoYW5nZUludAAAAAIFAAAADlJFU0VSVkFUSU9OS0VZCQEAAAABLQAAAAEFAAAACXdpbkFtb3VudAEAAAAadmFsaWRhdGVCZXRBbmRHZXRXaW5BbW91bnQAAAACAAAACWJldEFtb3VudAAAAAxwbGF5ZXJDaG9pY2UEAAAA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Z2FtZUlkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAA3N0cgUAAAAHJG1hdGNoMAUAAAADc3RyCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAZHYW1lOiAFAAAABmdhbWVJZAIAAAALIG5vdCBmb3VuZC4CAAAAAV8BAAAADHdpblNjcmlwdFNldAAAAAYAAAAGZ2FtZUlkAAAADXBsYXllckFkZHJlc3MAAAAJd2luQW1vdW50AAAAC25ld2dhbWVEYXRhAAAADHdpbkJ5VGltZW91dAAAABFkZWNyZWFzZWRSZXNlcnZlcwQAAAAOd1NldENvbW1vbkRhdGEJAARMAAAAAgUAAAARZGVjcmVhc2VkUmVzZXJ2ZXMFAAAAA25pbAQAAAAOdFNldENvbW1vbkRhdGEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAANcGxheWVyQWRkcmVzcwUAAAAJd2luQW1vdW50BQAAAAR1bml0BQAAAANuaWwDBQAAAAx3aW5CeVRpbWVvdXQEAAAAE25ld2dhbWVEYXRhQWRqdXN0ZWQJAAEsAAAAAgkAASwAAAACBQAAAAtuZXdnYW1lRGF0YQIAAAABXwIAAAAHVElNRU9VVAQAAAAIZ2FtZURhdGEJAQAAAAlEYXRhRW50cnkAAAACBQAAAAZnYW1lSWQFAAAAE25ld2dhbWVEYXRhQWRqdXN0ZWQJAQAAAAxTY3JpcHRSZXN1bHQAAAACCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIFAAAACGdhbWVEYXRhBQAAAA53U2V0Q29tbW9uRGF0YQkBAAAAC1RyYW5zZmVyU2V0AAAAAQUAAAAOdFNldENvbW1vbkRhdGEEAAAACGdhbWVEYXRhCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAAtuZXdnYW1lRGF0YQkBAAAADFNjcmlwdFJlc3VsdAAAAAIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgUAAAAIZ2FtZURhdGEFAAAADndTZXRDb21tb25EYXRhCQEAAAALVHJhbnNmZXJTZXQAAAABBQAAAA50U2V0Q29tbW9uRGF0YQEAAAAIaXNEQXBwVXAAAAAABAAAAAlkQXBwVXBPcHQJAAQbAAAAAgUAAAAEdGhpcwUAAAAJREFQUFVQS0VZAwkBAAAACWlzRGVmaW5lZAAAAAEFAAAACWRBcHBVcE9wdAkBAAAAB2V4dHJhY3QAAAABBQAAAAlkQXBwVXBPcHQHAQAAABFtb25pdG9yTWF4QmFsYW5jZQAAAAAEAAAADW1heEJhbGFuY2VPcHQJAAQaAAAAAgUAAAAEdGhpcwUAAAANTUFYQkFMQU5DRUtFWQQAAAAKbWF4QmFsYW5jZQMJAQAAAAlpc0RlZmluZWQAAAABBQAAAA1tYXhCYWxhbmNlT3B0CQEAAAAHZXh0cmFjdAAAAAEFAAAADW1heEJhbGFuY2VPcHQAAAAAAAAAAAAEAAAAC2N1cnJCYWxhbmNlCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwMJAABmAAAAAgUAAAALY3VyckJhbGFuY2UFAAAACm1heEJhbGFuY2UFAAAAC2N1cnJCYWxhbmNlBAAAAARkaWZmCQAAZQAAAAIFAAAACm1heEJhbGFuY2UFAAAAC2N1cnJCYWxhbmNlAwkAAGYAAAACBQAAAARkaWZmBQAAAA5NQVhCQUxBTkNFRElGRgkAAAIAAAABAgAAABpkQXBwIGlzIHRlbXBvcmFyeSBkaXNhYmxlZAUAAAAKbWF4QmFsYW5jZQAAAAMAAAABaQEAAAAGZEFwcFVwAAAAAQAAAAZkQXBwVXADCQEAAAACIT0AAAACCAUAAAABaQAAAAZjYWxsZXIFAAAABlNFUlZFUgkAAAIAAAABAgAAACdPbmx5IFNlcnZlciBjYW4gbWFuYWdlIGRBcHBVcCBhdHRyaWJ1dGUDCQAAAAAAAAIJAQAAAAhpc0RBcHBVcAAAAAAFAAAABmRBcHBVcAkAAAIAAAABAgAAACpkQXBwVXAgbXVzdCBiZSBkaWZmZXJlbnQgd2l0aCBhY3R1YWwgdmFsdWUJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIFAAAACURBUFBVUEtFWQUAAAAGZEFwcFVwBQAAAANuaWwAAAABaQEAAAADYmV0AAAAAQAAAAxwbGF5ZXJDaG9pY2UEAAAABmdhbWVJZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkAwkBAAAAASEAAAABCQEAAAAIaXNEQXBwVXAAAAAACQAAAgAAAAECAAAAGURBcHAgaXMgdW5kZXIgbWFpbnRlbmFuY2UDCQEAAAAJaXNEZWZpbmVkAAAAAQkABB0AAAACBQAAAAR0aGlzBQAAAAZnYW1lSWQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAACUJldCBmb3I6IAUAAAAGZ2FtZUlkAgAAABIgd2FzIGFscmVhZHkgbWFkZS4EAAAAA3BtdAkBAAAAB2V4dHJhY3QAAAABCAUAAAABaQAAAAdwYXltZW50BAAAAA1iZXROb3RJbldhdmVzCQEAAAAJaXNEZWZpbmVkAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkBAAAAAl3aW5BbW91bnQJAQAAABp2YWxpZGF0ZUJldEFuZEdldFdpbkFtb3VudAAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAAxwbGF5ZXJDaG9pY2UDBQAAAA1iZXROb3RJbldhdmVzCQAAAgAAAAECAAAAG0JldCBhbW91bnQgbXVzdCBiZSBpbiBXYXZlcwQAAAAOcGxheWVyUHViS2V5NTgJAAJYAAAAAQgFAAAAAWkAAAAPY2FsbGVyUHVibGljS2V5BAAAAAhnYW1lRGF0YQkBAAAADmZvcm1hdEdhbWVEYXRhAAAABwUAAAAOU1RBVEVTVUJNSVRURUQFAAAADHBsYXllckNob2ljZQUAAAAOcGxheWVyUHViS2V5NTgFAAAABmhlaWdodAUAAAAJd2luQW1vdW50AgAAAAVXQVZFUwIAAAAACQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAOUkVTRVJWQVRJT05LRVkJAQAAABVpbmNyZWFzZVJlc2VydmVBbW91bnQAAAABBQAAAAl3aW5BbW91bnQJAARMAAAAAgkBAAAADGluY3JlbWVudEludAAAAAEFAAAAD0dBTUVTQ09VTlRFUktFWQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAANTUFYQkFMQU5DRUtFWQkBAAAAEW1vbml0b3JNYXhCYWxhbmNlAAAAAAkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAAhnYW1lRGF0YQUAAAADbmlsCQEAAAALVHJhbnNmZXJTZXQAAAABCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABlNFUlZFUgUAAAAKQ09NTUlTU0lPTgUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAgAAAAZnYW1lSWQAAAAHcnNhU2lnbgQAAAAIZ2FtZURhdGEJAQAAAA9leHRyYWN0R2FtZURhdGEAAAABBQAAAAZnYW1lSWQEAAAACWdhbWVTdGF0ZQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAMSWR4R2FtZVN0YXRlBAAAAAxwbGF5ZXJDaG9pY2UJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAAD0lkeFBsYXllckNob2ljZQQAAAANc3RhcnRlZEhlaWdodAkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAACGdhbWVEYXRhBQAAABBJZHhTdGFydGVkSGVpZ2h0BAAAAAl3aW5BbW91bnQJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAAMSWR4V2luQW1vdW50BAAAAA5wbGF5ZXJQdWJLZXk1OAkAAZEAAAACBQAAAAhnYW1lRGF0YQUAAAARSWR4UGxheWVyUHViS2V5NTgEAAAAB2Fzc2V0SWQJAAGRAAAAAgUAAAAIZ2FtZURhdGEFAAAACklkeEFzc2V0SWQEAAAADXBsYXllckFkZHJlc3MJAQAAABRhZGRyZXNzRnJvbVB1YmxpY0tleQAAAAEJAAJZAAAAAQUAAAAOcGxheWVyUHViS2V5NTgEAAAADHdpbkJ5VGltZW91dAkAAGYAAAACCQAAZQAAAAIFAAAABmhlaWdodAUAAAANc3RhcnRlZEhlaWdodAUAAAATUkFORE9SQUNMRVRJTUVGUkFNRQQAAAARZGVjcmVhc2VkUmVzZXJ2ZXMJAQAAABZkZWNyZWFzZVJlc2VydmVkQW1vdW50AAAAAgUAAAAGZ2FtZUlkBQAAAAl3aW5BbW91bnQDCQEAAAACIT0AAAACBQAAAAlnYW1lU3RhdGUFAAAADlNUQVRFU1VCTUlUVEVECQAAAgAAAAECAAAAJEludmFsaWQgZ2FtZSBzdGF0ZSBmb3IgcGFzc2VkIGdhbWVJZAMFAAAADHdpbkJ5VGltZW91dAQAAAAKcmFuZENob2lzZQkAAS8AAAACBQAAAAxwbGF5ZXJDaG9pY2UAAAAAAAAAAAEEAAAAC25ld2dhbWVEYXRhCQEAAAAOZm9ybWF0R2FtZURhdGEAAAAHBQAAAAhTVEFURVdPTgUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAANc3RhcnRlZEhlaWdodAUAAAAJd2luQW1vdW50AgAAAAVXQVZFUwUAAAAKcmFuZENob2lzZQkBAAAADHdpblNjcmlwdFNldAAAAAYFAAAABmdhbWVJZAUAAAANcGxheWVyQWRkcmVzcwUAAAAJd2luQW1vdW50BQAAAAtuZXdnYW1lRGF0YQUAAAAMd2luQnlUaW1lb3V0BQAAABFkZWNyZWFzZWRSZXNlcnZlcwQAAAAKcmFuZENob2lzZQkBAAAAEmdlbmVyYXRlUmFuZENob2lzZQAAAAIFAAAABmdhbWVJZAUAAAAHcnNhU2lnbgMJAQAAAAIhPQAAAAIIBQAAAAFpAAAABmNhbGxlcgUAAAAGU0VSVkVSCQAAAgAAAAECAAAAK1JlZ3VsYXIgd2l0aGRyYXcgY2FuIGJlIGRvbmUgYnkgc2VydmVyIG9ubHkDCQEAAAALaXNQbGF5ZXJXaW4AAAACBQAAAAxwbGF5ZXJDaG9pY2UFAAAACnJhbmRDaG9pc2UEAAAAC25ld2dhbWVEYXRhCQEAAAAOZm9ybWF0R2FtZURhdGEAAAAHBQAAAAhTVEFURVdPTgUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAANc3RhcnRlZEhlaWdodAUAAAAJd2luQW1vdW50AgAAAAVXQVZFUwUAAAAKcmFuZENob2lzZQkBAAAADHdpblNjcmlwdFNldAAAAAYFAAAABmdhbWVJZAUAAAANcGxheWVyQWRkcmVzcwUAAAAJd2luQW1vdW50BQAAAAtuZXdnYW1lRGF0YQUAAAAMd2luQnlUaW1lb3V0BQAAABFkZWNyZWFzZWRSZXNlcnZlcwQAAAALbmV3Z2FtZURhdGEJAQAAAA5mb3JtYXRHYW1lRGF0YQAAAAcFAAAACVNUQVRFTE9TVAUAAAAMcGxheWVyQ2hvaWNlBQAAAA5wbGF5ZXJQdWJLZXk1OAUAAAANc3RhcnRlZEhlaWdodAUAAAAJd2luQW1vdW50AgAAAAVXQVZFUwUAAAAKcmFuZENob2lzZQkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgUAAAAGZ2FtZUlkBQAAAAtuZXdnYW1lRGF0YQkABEwAAAACBQAAABFkZWNyZWFzZWRSZXNlcnZlcwUAAAADbmlsAAAAAQAAAAJ0eAEAAAAGdmVyaWZ5AAAAAAMJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5BAAAAAckbWF0Y2gwBQAAAAJ0eAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAATVHJhbnNmZXJUcmFuc2FjdGlvbgQAAAADdHR4BQAAAAckbWF0Y2gwCQAAZwAAAAIJAABlAAAAAgkBAAAADHdhdmVzQmFsYW5jZQAAAAEFAAAABHRoaXMIBQAAAAN0dHgAAAAGYW1vdW50CQEAAAAIZ2V0SW50T3IAAAACBQAAAA5SRVNFUlZBVElPTktFWQAAAAAAAAAAAAMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAUU2V0U2NyaXB0VHJhbnNhY3Rpb24EAAAAA3N0eAUAAAAHJG1hdGNoMAMJAAAAAAAAAgkBAAAACGlzREFwcFVwAAAAAAcJAAAAAAAAAgkBAAAACGdldEludE9yAAAAAgUAAAAOUkVTRVJWQVRJT05LRVkAAAAAAAAAAAAAAAAAAAAAAAAHBgcr89EV", "chainId": 84, "height": 943490, "spentComplexity": 0 } View: original | compacted Prev: H5J91m1kg9bkPMRE72Xm5Wyn5SCX9TbfGHym5aqZU15G Next: none Diff:
Old | New | Differences | |
---|---|---|---|
207 | 207 | } | |
208 | 208 | ||
209 | 209 | ||
210 | - | func aC (aD) = { | |
211 | - | let ar = size(aD) | |
212 | - | if ((ar == 0)) | |
213 | - | then throw("Parameter is empty") | |
214 | - | else if ((ar > 99)) | |
215 | - | then throw("Parameter size should be less than 100") | |
216 | - | else (((if ((10 > ar)) | |
217 | - | then "0" | |
218 | - | else "") + toString(ar)) + aD) | |
219 | - | } | |
210 | + | func aC (aD,V,aE,aF,P,aG,aH) = (((((((((((aD + "_") + V) + "_") + aE) + "_") + toString(aF)) + "_") + toString(P)) + "_") + aG) + (if ((aH == "")) | |
211 | + | then "" | |
212 | + | else ("_" + aH))) | |
220 | 213 | ||
221 | 214 | ||
222 | - | func aE (aF,V,aG,aH,P,aI,aJ) = (((((((((((aC(aF) + "_") + aC(V)) + "_") + aC(aG)) + "_") + aC(toString(aH))) + "_") + aC(toString(P))) + "_") + aC(aI)) + (if ((aJ == "")) | |
223 | - | then "" | |
224 | - | else ("_" + aC(aJ)))) | |
225 | - | ||
226 | - | ||
227 | - | func aK (S) = split({ | |
228 | - | let aL = getString(this, S) | |
229 | - | if ($isInstanceOf(aL, "String")) | |
215 | + | func aI (S) = split({ | |
216 | + | let aJ = getString(this, S) | |
217 | + | if ($isInstanceOf(aJ, "String")) | |
230 | 218 | then { | |
231 | - | let | |
232 | - | | |
219 | + | let aK = aJ | |
220 | + | aK | |
233 | 221 | } | |
234 | 222 | else throw((("Game: " + S) + " not found.")) | |
235 | 223 | }, "_") | |
236 | 224 | ||
237 | 225 | ||
238 | - | func | |
239 | - | let | |
240 | - | let | |
241 | - | if ( | |
226 | + | func aL (S,aM,P,aN,aO,aP) = { | |
227 | + | let aQ = [aP] | |
228 | + | let aR = [ScriptTransfer(aM, P, unit)] | |
229 | + | if (aO) | |
242 | 230 | then { | |
243 | - | let | |
244 | - | let | |
245 | - | ScriptResult(WriteSet( | |
231 | + | let aS = ((aN + "_") + "TIMEOUT") | |
232 | + | let aT = DataEntry(S, aS) | |
233 | + | ScriptResult(WriteSet(aT :: aQ), TransferSet(aR)) | |
246 | 234 | } | |
247 | 235 | else { | |
248 | - | let | |
249 | - | ScriptResult(WriteSet( | |
236 | + | let aT = DataEntry(S, aN) | |
237 | + | ScriptResult(WriteSet(aT :: aQ), TransferSet(aR)) | |
250 | 238 | } | |
251 | 239 | } | |
252 | 240 | ||
253 | 241 | ||
254 | - | func | |
255 | - | let | |
256 | - | if (isDefined( | |
257 | - | then extract( | |
242 | + | func aU () = { | |
243 | + | let aV = getBoolean(this, B) | |
244 | + | if (isDefined(aV)) | |
245 | + | then extract(aV) | |
258 | 246 | else false | |
259 | 247 | } | |
260 | 248 | ||
261 | 249 | ||
262 | - | func | |
263 | - | let | |
264 | - | let | |
265 | - | then extract( | |
250 | + | func aW () = { | |
251 | + | let aX = getInteger(this, C) | |
252 | + | let aY = if (isDefined(aX)) | |
253 | + | then extract(aX) | |
266 | 254 | else 0 | |
267 | - | let | |
268 | - | if (( | |
269 | - | then | |
255 | + | let aZ = wavesBalance(this) | |
256 | + | if ((aZ > aY)) | |
257 | + | then aZ | |
270 | 258 | else { | |
271 | - | let | |
272 | - | if (( | |
259 | + | let ba = (aY - aZ) | |
260 | + | if ((ba > f)) | |
273 | 261 | then throw("dApp is temporary disabled") | |
274 | - | else | |
262 | + | else aY | |
275 | 263 | } | |
276 | 264 | } | |
277 | 265 | ||
278 | 266 | ||
279 | - | @Callable( | |
280 | - | func dAppUp ( | |
267 | + | @Callable(bb) | |
268 | + | func dAppUp (bc) = if ((bb.caller != d)) | |
281 | 269 | then throw("Only Server can manage dAppUp attribute") | |
282 | - | else if (( | |
270 | + | else if ((aU() == bc)) | |
283 | 271 | then throw("dAppUp must be different with actual value") | |
284 | - | else WriteSet([DataEntry(B, | |
272 | + | else WriteSet([DataEntry(B, bc)]) | |
285 | 273 | ||
286 | 274 | ||
287 | 275 | ||
288 | - | @Callable( | |
276 | + | @Callable(bb) | |
289 | 277 | func bet (V) = { | |
290 | - | let S = toBase58String( | |
291 | - | if (!( | |
278 | + | let S = toBase58String(bb.transactionId) | |
279 | + | if (!(aU())) | |
292 | 280 | then throw("DApp is under maintenance") | |
293 | 281 | else if (isDefined(getString(this, S))) | |
294 | 282 | then throw((("Bet for: " + S) + " was already made.")) | |
295 | 283 | else { | |
296 | - | let | |
297 | - | let | |
298 | - | let P = T( | |
299 | - | if ( | |
284 | + | let bd = extract(bb.payment) | |
285 | + | let be = isDefined(bd.assetId) | |
286 | + | let P = T(bd.amount, V) | |
287 | + | if (be) | |
300 | 288 | then throw("Bet amount must be in Waves") | |
301 | 289 | else { | |
302 | - | let | |
303 | - | let | |
304 | - | ScriptResult(WriteSet([DataEntry(z, O(P)), L(A), DataEntry(C, | |
290 | + | let aE = toBase58String(bb.callerPublicKey) | |
291 | + | let aT = aC(D, V, aE, height, P, "WAVES", "") | |
292 | + | ScriptResult(WriteSet([DataEntry(z, O(P)), L(A), DataEntry(C, aW()), DataEntry(S, aT)]), TransferSet([ScriptTransfer(d, b, unit)])) | |
305 | 293 | } | |
306 | 294 | } | |
307 | 295 | } | |
308 | 296 | ||
309 | 297 | ||
310 | 298 | ||
311 | - | @Callable( | |
299 | + | @Callable(bb) | |
312 | 300 | func withdraw (S,al) = { | |
313 | - | let | |
314 | - | let | |
315 | - | let V = | |
316 | - | let | |
317 | - | let P = parseIntValue( | |
318 | - | let | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | let | |
323 | - | if (( | |
301 | + | let aT = aI(S) | |
302 | + | let aD = aT[t] | |
303 | + | let V = aT[u] | |
304 | + | let aF = parseIntValue(aT[w]) | |
305 | + | let P = parseIntValue(aT[x]) | |
306 | + | let aE = aT[v] | |
307 | + | let aG = aT[y] | |
308 | + | let aM = addressFromPublicKey(fromBase58String(aE)) | |
309 | + | let aO = ((height - aF) > e) | |
310 | + | let aP = R(S, P) | |
311 | + | if ((aD != D)) | |
324 | 312 | then throw("Invalid game state for passed gameId") | |
325 | - | else if ( | |
313 | + | else if (aO) | |
326 | 314 | then { | |
327 | 315 | let aq = take(V, 1) | |
328 | - | let | |
329 | - | | |
316 | + | let aN = aC(E, V, aE, aF, P, "WAVES", aq) | |
317 | + | aL(S, aM, P, aN, aO, aP) | |
330 | 318 | } | |
331 | 319 | else { | |
332 | 320 | let aq = ak(S, al) | |
333 | - | if (( | |
321 | + | if ((bb.caller != d)) | |
334 | 322 | then throw("Regular withdraw can be done by server only") | |
335 | 323 | else if (ap(V, aq)) | |
336 | 324 | then { | |
337 | - | let | |
338 | - | | |
325 | + | let aN = aC(E, V, aE, aF, P, "WAVES", aq) | |
326 | + | aL(S, aM, P, aN, aO, aP) | |
339 | 327 | } | |
340 | 328 | else { | |
341 | - | let | |
342 | - | WriteSet([DataEntry(S, | |
329 | + | let aN = aC(F, V, aE, aF, P, "WAVES", aq) | |
330 | + | WriteSet([DataEntry(S, aN), aP]) | |
343 | 331 | } | |
344 | 332 | } | |
345 | 333 | } | |
346 | 334 | ||
347 | 335 | ||
348 | - | @Verifier( | |
349 | - | func | |
336 | + | @Verifier(bf) | |
337 | + | func bg () = if (sigVerify(bf.bodyBytes, bf.proofs[0], bf.senderPublicKey)) | |
350 | 338 | then { | |
351 | - | let | |
352 | - | if ($isInstanceOf( | |
339 | + | let aJ = bf | |
340 | + | if ($isInstanceOf(aJ, "TransferTransaction")) | |
353 | 341 | then { | |
354 | - | let | |
355 | - | ((wavesBalance(this) - | |
342 | + | let bh = aJ | |
343 | + | ((wavesBalance(this) - bh.amount) >= G(z, 0)) | |
356 | 344 | } | |
357 | - | else if ($isInstanceOf( | |
345 | + | else if ($isInstanceOf(aJ, "SetScriptTransaction")) | |
358 | 346 | then { | |
359 | - | let bk = aL | |
360 | - | true | |
347 | + | let bi = aJ | |
348 | + | if ((aU() == false)) | |
349 | + | then (G(z, 0) == 0) | |
350 | + | else false | |
361 | 351 | } | |
362 | - | else | |
352 | + | else true | |
363 | 353 | } | |
364 | 354 | else false | |
365 | 355 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 3 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let a = ((100 * 1000) * 1000) | |
5 | 5 | ||
6 | 6 | let b = ((5 * a) / 1000) | |
7 | 7 | ||
8 | 8 | let c = fromBase64String("base64:MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmpuXcI/o4pIB5ywv9DOOGapTBUwRVlM/6+H6hFelOXtkrwY/YItmPxEDpz7rAerQPQe9tDPEaAv/GnlEztybOFXgu9DzDe8YoMRD1vakgoAcogmbY58QD6KMj5HkoVj/yTNIc9szj5qhIlrAdmb3KLL6hQU7y8+Jj69BWVPsaQgkspSdeYtb1tHQc7t95n7OZ56r2A7G3+bQf6nSMkPkAhIrEpbCm58oiGBczdTd/LqFSVotZsbL7Yh6SHLfnHeD+QgcfJrnam8OHMGJEJTRXjILeHGjlRCP8oVpioHry1S2xPx5sVzIm2MM+CzYenAGlo0j26atBhiULoTulwD3pQIDAQAB") | |
9 | 9 | ||
10 | 10 | let d = addressFromStringValue("3NCiG28LmWyTigWG13E5QnvdHBsZFYXSS2j") | |
11 | 11 | ||
12 | 12 | let e = 4320 | |
13 | 13 | ||
14 | 14 | let f = 100000000 | |
15 | 15 | ||
16 | 16 | let g = (1 * a) | |
17 | 17 | ||
18 | 18 | let h = (2 * a) | |
19 | 19 | ||
20 | 20 | let i = (4 * a) | |
21 | 21 | ||
22 | 22 | let j = (8 * a) | |
23 | 23 | ||
24 | 24 | let k = (14 * a) | |
25 | 25 | ||
26 | 26 | let l = 10000 | |
27 | 27 | ||
28 | 28 | let m = 39655 | |
29 | 29 | ||
30 | 30 | let n = 24600 | |
31 | 31 | ||
32 | 32 | let o = 19000 | |
33 | 33 | ||
34 | 34 | let p = 14200 | |
35 | 35 | ||
36 | 36 | let q = 11400 | |
37 | 37 | ||
38 | 38 | let r = [m, n, o, p, q] | |
39 | 39 | ||
40 | 40 | let s = [g, h, i, j, k] | |
41 | 41 | ||
42 | 42 | let t = 0 | |
43 | 43 | ||
44 | 44 | let u = 1 | |
45 | 45 | ||
46 | 46 | let v = 2 | |
47 | 47 | ||
48 | 48 | let w = 3 | |
49 | 49 | ||
50 | 50 | let x = 4 | |
51 | 51 | ||
52 | 52 | let y = 5 | |
53 | 53 | ||
54 | 54 | let z = "$RESERVED_AMOUNT" | |
55 | 55 | ||
56 | 56 | let A = "$GAME_NUM" | |
57 | 57 | ||
58 | 58 | let B = "$DAPP_UP" | |
59 | 59 | ||
60 | 60 | let C = "$MAX_BALANCE" | |
61 | 61 | ||
62 | 62 | let D = "SUBMITTED" | |
63 | 63 | ||
64 | 64 | let E = "WON" | |
65 | 65 | ||
66 | 66 | let F = "LOST" | |
67 | 67 | ||
68 | 68 | func G (H,I) = if (isDefined(getInteger(this, H))) | |
69 | 69 | then getIntegerValue(this, H) | |
70 | 70 | else I | |
71 | 71 | ||
72 | 72 | ||
73 | 73 | func J (H,K) = DataEntry(H, K) | |
74 | 74 | ||
75 | 75 | ||
76 | 76 | func L (H) = J(H, (G(H, -1) + 1)) | |
77 | 77 | ||
78 | 78 | ||
79 | 79 | func M (H,N) = J(H, (G(H, 0) + N)) | |
80 | 80 | ||
81 | 81 | ||
82 | 82 | func O (P) = { | |
83 | 83 | let Q = (G(z, 0) + P) | |
84 | 84 | if ((Q > wavesBalance(this))) | |
85 | 85 | then throw("Insufficient funds on Dice Roller account. Transaction was rejected for your safety.") | |
86 | 86 | else Q | |
87 | 87 | } | |
88 | 88 | ||
89 | 89 | ||
90 | 90 | func R (S,P) = if ((0 > (G(z, 0) - P))) | |
91 | 91 | then throw("Invalid Dice Roller account state - reserved amount is less than 0") | |
92 | 92 | else M(z, -(P)) | |
93 | 93 | ||
94 | 94 | ||
95 | 95 | func T (U,V) = { | |
96 | 96 | let W = size(V) | |
97 | 97 | func X (Y,Z) = if (Y) | |
98 | 98 | then true | |
99 | 99 | else (U == (Z + b)) | |
100 | 100 | ||
101 | 101 | if (!({ | |
102 | 102 | let aa = s | |
103 | 103 | let ab = size(aa) | |
104 | 104 | let ac = false | |
105 | 105 | if ((ab == 0)) | |
106 | 106 | then ac | |
107 | 107 | else { | |
108 | 108 | let ad = X(ac, aa[0]) | |
109 | 109 | if ((ab == 1)) | |
110 | 110 | then ad | |
111 | 111 | else { | |
112 | 112 | let ae = X(ad, aa[1]) | |
113 | 113 | if ((ab == 2)) | |
114 | 114 | then ae | |
115 | 115 | else { | |
116 | 116 | let af = X(ae, aa[2]) | |
117 | 117 | if ((ab == 3)) | |
118 | 118 | then af | |
119 | 119 | else { | |
120 | 120 | let ag = X(af, aa[3]) | |
121 | 121 | if ((ab == 4)) | |
122 | 122 | then ag | |
123 | 123 | else { | |
124 | 124 | let ah = X(ag, aa[4]) | |
125 | 125 | if ((ab == 5)) | |
126 | 126 | then ah | |
127 | 127 | else { | |
128 | 128 | let ai = X(ah, aa[5]) | |
129 | 129 | throw("List size exceed 5") | |
130 | 130 | } | |
131 | 131 | } | |
132 | 132 | } | |
133 | 133 | } | |
134 | 134 | } | |
135 | 135 | } | |
136 | 136 | })) | |
137 | 137 | then throw("Bet amount is not valid") | |
138 | 138 | else if ((parseInt(V) == unit)) | |
139 | 139 | then throw("Invalid player's choice") | |
140 | 140 | else if (if ((1 > W)) | |
141 | 141 | then true | |
142 | 142 | else (W > 5)) | |
143 | 143 | then throw("Invalid dices count in player's choice") | |
144 | 144 | else { | |
145 | 145 | let aj = (U - b) | |
146 | 146 | ((aj * r[(W - 1)]) / l) | |
147 | 147 | } | |
148 | 148 | } | |
149 | 149 | ||
150 | 150 | ||
151 | 151 | func ak (S,al) = { | |
152 | 152 | let am = rsaVerify(SHA256, toBytes(S), al, c) | |
153 | 153 | if (!(am)) | |
154 | 154 | then throw("Invalid RSA signature") | |
155 | 155 | else { | |
156 | 156 | let an = (toInt(sha256(al)) % 6) | |
157 | 157 | let ao = if ((0 > an)) | |
158 | 158 | then (-1 * an) | |
159 | 159 | else an | |
160 | 160 | toString(ao) | |
161 | 161 | } | |
162 | 162 | } | |
163 | 163 | ||
164 | 164 | ||
165 | 165 | func ap (V,aq) = { | |
166 | 166 | let ar = size(V) | |
167 | 167 | func as (Y,Z) = if (Y) | |
168 | 168 | then true | |
169 | 169 | else if ((ar >= Z)) | |
170 | 170 | then (take(drop(V, (Z - 1)), 1) == aq) | |
171 | 171 | else false | |
172 | 172 | ||
173 | 173 | let at = [1, 2, 3, 4, 5] | |
174 | 174 | let au = size(at) | |
175 | 175 | let av = false | |
176 | 176 | if ((au == 0)) | |
177 | 177 | then av | |
178 | 178 | else { | |
179 | 179 | let aw = as(av, at[0]) | |
180 | 180 | if ((au == 1)) | |
181 | 181 | then aw | |
182 | 182 | else { | |
183 | 183 | let ax = as(aw, at[1]) | |
184 | 184 | if ((au == 2)) | |
185 | 185 | then ax | |
186 | 186 | else { | |
187 | 187 | let ay = as(ax, at[2]) | |
188 | 188 | if ((au == 3)) | |
189 | 189 | then ay | |
190 | 190 | else { | |
191 | 191 | let az = as(ay, at[3]) | |
192 | 192 | if ((au == 4)) | |
193 | 193 | then az | |
194 | 194 | else { | |
195 | 195 | let aA = as(az, at[4]) | |
196 | 196 | if ((au == 5)) | |
197 | 197 | then aA | |
198 | 198 | else { | |
199 | 199 | let aB = as(aA, at[5]) | |
200 | 200 | throw("List size exceed 5") | |
201 | 201 | } | |
202 | 202 | } | |
203 | 203 | } | |
204 | 204 | } | |
205 | 205 | } | |
206 | 206 | } | |
207 | 207 | } | |
208 | 208 | ||
209 | 209 | ||
210 | - | func aC (aD) = { | |
211 | - | let ar = size(aD) | |
212 | - | if ((ar == 0)) | |
213 | - | then throw("Parameter is empty") | |
214 | - | else if ((ar > 99)) | |
215 | - | then throw("Parameter size should be less than 100") | |
216 | - | else (((if ((10 > ar)) | |
217 | - | then "0" | |
218 | - | else "") + toString(ar)) + aD) | |
219 | - | } | |
210 | + | func aC (aD,V,aE,aF,P,aG,aH) = (((((((((((aD + "_") + V) + "_") + aE) + "_") + toString(aF)) + "_") + toString(P)) + "_") + aG) + (if ((aH == "")) | |
211 | + | then "" | |
212 | + | else ("_" + aH))) | |
220 | 213 | ||
221 | 214 | ||
222 | - | func aE (aF,V,aG,aH,P,aI,aJ) = (((((((((((aC(aF) + "_") + aC(V)) + "_") + aC(aG)) + "_") + aC(toString(aH))) + "_") + aC(toString(P))) + "_") + aC(aI)) + (if ((aJ == "")) | |
223 | - | then "" | |
224 | - | else ("_" + aC(aJ)))) | |
225 | - | ||
226 | - | ||
227 | - | func aK (S) = split({ | |
228 | - | let aL = getString(this, S) | |
229 | - | if ($isInstanceOf(aL, "String")) | |
215 | + | func aI (S) = split({ | |
216 | + | let aJ = getString(this, S) | |
217 | + | if ($isInstanceOf(aJ, "String")) | |
230 | 218 | then { | |
231 | - | let | |
232 | - | | |
219 | + | let aK = aJ | |
220 | + | aK | |
233 | 221 | } | |
234 | 222 | else throw((("Game: " + S) + " not found.")) | |
235 | 223 | }, "_") | |
236 | 224 | ||
237 | 225 | ||
238 | - | func | |
239 | - | let | |
240 | - | let | |
241 | - | if ( | |
226 | + | func aL (S,aM,P,aN,aO,aP) = { | |
227 | + | let aQ = [aP] | |
228 | + | let aR = [ScriptTransfer(aM, P, unit)] | |
229 | + | if (aO) | |
242 | 230 | then { | |
243 | - | let | |
244 | - | let | |
245 | - | ScriptResult(WriteSet( | |
231 | + | let aS = ((aN + "_") + "TIMEOUT") | |
232 | + | let aT = DataEntry(S, aS) | |
233 | + | ScriptResult(WriteSet(aT :: aQ), TransferSet(aR)) | |
246 | 234 | } | |
247 | 235 | else { | |
248 | - | let | |
249 | - | ScriptResult(WriteSet( | |
236 | + | let aT = DataEntry(S, aN) | |
237 | + | ScriptResult(WriteSet(aT :: aQ), TransferSet(aR)) | |
250 | 238 | } | |
251 | 239 | } | |
252 | 240 | ||
253 | 241 | ||
254 | - | func | |
255 | - | let | |
256 | - | if (isDefined( | |
257 | - | then extract( | |
242 | + | func aU () = { | |
243 | + | let aV = getBoolean(this, B) | |
244 | + | if (isDefined(aV)) | |
245 | + | then extract(aV) | |
258 | 246 | else false | |
259 | 247 | } | |
260 | 248 | ||
261 | 249 | ||
262 | - | func | |
263 | - | let | |
264 | - | let | |
265 | - | then extract( | |
250 | + | func aW () = { | |
251 | + | let aX = getInteger(this, C) | |
252 | + | let aY = if (isDefined(aX)) | |
253 | + | then extract(aX) | |
266 | 254 | else 0 | |
267 | - | let | |
268 | - | if (( | |
269 | - | then | |
255 | + | let aZ = wavesBalance(this) | |
256 | + | if ((aZ > aY)) | |
257 | + | then aZ | |
270 | 258 | else { | |
271 | - | let | |
272 | - | if (( | |
259 | + | let ba = (aY - aZ) | |
260 | + | if ((ba > f)) | |
273 | 261 | then throw("dApp is temporary disabled") | |
274 | - | else | |
262 | + | else aY | |
275 | 263 | } | |
276 | 264 | } | |
277 | 265 | ||
278 | 266 | ||
279 | - | @Callable( | |
280 | - | func dAppUp ( | |
267 | + | @Callable(bb) | |
268 | + | func dAppUp (bc) = if ((bb.caller != d)) | |
281 | 269 | then throw("Only Server can manage dAppUp attribute") | |
282 | - | else if (( | |
270 | + | else if ((aU() == bc)) | |
283 | 271 | then throw("dAppUp must be different with actual value") | |
284 | - | else WriteSet([DataEntry(B, | |
272 | + | else WriteSet([DataEntry(B, bc)]) | |
285 | 273 | ||
286 | 274 | ||
287 | 275 | ||
288 | - | @Callable( | |
276 | + | @Callable(bb) | |
289 | 277 | func bet (V) = { | |
290 | - | let S = toBase58String( | |
291 | - | if (!( | |
278 | + | let S = toBase58String(bb.transactionId) | |
279 | + | if (!(aU())) | |
292 | 280 | then throw("DApp is under maintenance") | |
293 | 281 | else if (isDefined(getString(this, S))) | |
294 | 282 | then throw((("Bet for: " + S) + " was already made.")) | |
295 | 283 | else { | |
296 | - | let | |
297 | - | let | |
298 | - | let P = T( | |
299 | - | if ( | |
284 | + | let bd = extract(bb.payment) | |
285 | + | let be = isDefined(bd.assetId) | |
286 | + | let P = T(bd.amount, V) | |
287 | + | if (be) | |
300 | 288 | then throw("Bet amount must be in Waves") | |
301 | 289 | else { | |
302 | - | let | |
303 | - | let | |
304 | - | ScriptResult(WriteSet([DataEntry(z, O(P)), L(A), DataEntry(C, | |
290 | + | let aE = toBase58String(bb.callerPublicKey) | |
291 | + | let aT = aC(D, V, aE, height, P, "WAVES", "") | |
292 | + | ScriptResult(WriteSet([DataEntry(z, O(P)), L(A), DataEntry(C, aW()), DataEntry(S, aT)]), TransferSet([ScriptTransfer(d, b, unit)])) | |
305 | 293 | } | |
306 | 294 | } | |
307 | 295 | } | |
308 | 296 | ||
309 | 297 | ||
310 | 298 | ||
311 | - | @Callable( | |
299 | + | @Callable(bb) | |
312 | 300 | func withdraw (S,al) = { | |
313 | - | let | |
314 | - | let | |
315 | - | let V = | |
316 | - | let | |
317 | - | let P = parseIntValue( | |
318 | - | let | |
319 | - | let | |
320 | - | let | |
321 | - | let | |
322 | - | let | |
323 | - | if (( | |
301 | + | let aT = aI(S) | |
302 | + | let aD = aT[t] | |
303 | + | let V = aT[u] | |
304 | + | let aF = parseIntValue(aT[w]) | |
305 | + | let P = parseIntValue(aT[x]) | |
306 | + | let aE = aT[v] | |
307 | + | let aG = aT[y] | |
308 | + | let aM = addressFromPublicKey(fromBase58String(aE)) | |
309 | + | let aO = ((height - aF) > e) | |
310 | + | let aP = R(S, P) | |
311 | + | if ((aD != D)) | |
324 | 312 | then throw("Invalid game state for passed gameId") | |
325 | - | else if ( | |
313 | + | else if (aO) | |
326 | 314 | then { | |
327 | 315 | let aq = take(V, 1) | |
328 | - | let | |
329 | - | | |
316 | + | let aN = aC(E, V, aE, aF, P, "WAVES", aq) | |
317 | + | aL(S, aM, P, aN, aO, aP) | |
330 | 318 | } | |
331 | 319 | else { | |
332 | 320 | let aq = ak(S, al) | |
333 | - | if (( | |
321 | + | if ((bb.caller != d)) | |
334 | 322 | then throw("Regular withdraw can be done by server only") | |
335 | 323 | else if (ap(V, aq)) | |
336 | 324 | then { | |
337 | - | let | |
338 | - | | |
325 | + | let aN = aC(E, V, aE, aF, P, "WAVES", aq) | |
326 | + | aL(S, aM, P, aN, aO, aP) | |
339 | 327 | } | |
340 | 328 | else { | |
341 | - | let | |
342 | - | WriteSet([DataEntry(S, | |
329 | + | let aN = aC(F, V, aE, aF, P, "WAVES", aq) | |
330 | + | WriteSet([DataEntry(S, aN), aP]) | |
343 | 331 | } | |
344 | 332 | } | |
345 | 333 | } | |
346 | 334 | ||
347 | 335 | ||
348 | - | @Verifier( | |
349 | - | func | |
336 | + | @Verifier(bf) | |
337 | + | func bg () = if (sigVerify(bf.bodyBytes, bf.proofs[0], bf.senderPublicKey)) | |
350 | 338 | then { | |
351 | - | let | |
352 | - | if ($isInstanceOf( | |
339 | + | let aJ = bf | |
340 | + | if ($isInstanceOf(aJ, "TransferTransaction")) | |
353 | 341 | then { | |
354 | - | let | |
355 | - | ((wavesBalance(this) - | |
342 | + | let bh = aJ | |
343 | + | ((wavesBalance(this) - bh.amount) >= G(z, 0)) | |
356 | 344 | } | |
357 | - | else if ($isInstanceOf( | |
345 | + | else if ($isInstanceOf(aJ, "SetScriptTransaction")) | |
358 | 346 | then { | |
359 | - | let bk = aL | |
360 | - | true | |
347 | + | let bi = aJ | |
348 | + | if ((aU() == false)) | |
349 | + | then (G(z, 0) == 0) | |
350 | + | else false | |
361 | 351 | } | |
362 | - | else | |
352 | + | else true | |
363 | 353 | } | |
364 | 354 | else false | |
365 | 355 |
github/deemru/w8io/c3f4982 61.84 ms ◑