tx · 7WuRXBvzJwPisSr7kXETGkqtbnPX2LbPLEFiUGWQR1of

3N5mwuqT6dXpbqwT5VKDXzGJJ6c14rKqxS7:  -0.01400000 Waves

2019.09.05 21:47 [663113] smart account 3N5mwuqT6dXpbqwT5VKDXzGJJ6c14rKqxS7 > SELF 0.00000000 Waves

{ "type": 13, "id": "7WuRXBvzJwPisSr7kXETGkqtbnPX2LbPLEFiUGWQR1of", "fee": 1400000, "feeAssetId": null, "timestamp": 1567709237036, "version": 1, "sender": "3N5mwuqT6dXpbqwT5VKDXzGJJ6c14rKqxS7", "senderPublicKey": "Gxi9GKByT2CYHqPr6ZTohMDmHRGAgE8uBM6R4QXfvtxK", "proofs": [ "5S6TTk3XZ3RVGfJ8ehtPUeBbneoU9wHRaeFh2ampqztg6MWCMsRzTV2M6tpH4xnGhMxwprvD4FNqtgzziubZSH5" ], "script": "base64:AAIDAAAAAAAAAAAAAAAPAAAAAAdSVU5OSU5HAgAAAAdSVU5OSU5HAAAAAAZDTE9TRUQCAAAABkNMT1NFRAAAAAAIQ0FOQ0VMRUQCAAAACENBTkNFTEVEAAAAAAlEQVBQT1dORVICAAAAIzNQNE5aUjZja0U4YUxDN0JvZ3I1TlhCelNpNnAxM0RRZzY3AAAAAAxPUkFDTEVXQUxMRVQCAAAAIzNQUFRyVG8zQXpSNTZON0FyemJVM0JwcTl6WU1nY2YzOU1rAAAAAA1XTFRCVVJOV0FMTEVUAgAAACMzUE12d1pmVGNWSGVmaGlLUGJ0YlY5SFBBYVVGNUtFUmpnaQAAAAAOV0FWRVNLSVRXQUxMRVQCAAAAIzNQREVFTVJVM3RCSmZmYWc3c1JQbmp3RVE4R1pHaWtVV0JpAAAAABFEQVBQQVVUSE9STldBTExFVAIAAAAjM1AySHZVRWZQUE1wOVl4eFBmZHVEVEx2bTlDa0F6TG5URW8AAAAABVdBVkVTAgAAAAVXQVZFUwAAAAAETk9ORQIAAAAETk9ORQAAAAADRkVFAAAAAAAADbugAAAAAANXTFQBAAAAIKiYa37aOZz6l7d4FzL2+P2am5Uz+13GJWQozlXTer+HAQAAAAtnZXROdW1CeUtleQAAAAEAAAADa2V5BAAAAANudW0EAAAAByRtYXRjaDAJAAQaAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAA251bQEAAAALZ2V0U3RyQnlLZXkAAAABAAAAA2tleQQAAAADc3RyBAAAAAckbWF0Y2gwCQAEHQAAAAIFAAAABHRoaXMFAAAAA2tleQMJAAABAAAAAgUAAAAHJG1hdGNoMAIAAAAGU3RyaW5nBAAAAAFhBQAAAAckbWF0Y2gwBQAAAAFhBQAAAAROT05FBQAAAANzdHIBAAAAGmdldEV4dFdBVkVTVVNEQ3VycmVuY3lSYXRlAAAAAAQAAAANb3JhY2xlQWRkcmVzcwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABBQAAAAxPUkFDTEVXQUxMRVQEAAAAFFdBVkVTVVNEQ3VycmVuY3lSYXRlBAAAAAckbWF0Y2gwCQAEGgAAAAIFAAAADW9yYWNsZUFkZHJlc3MCAAAAC3dhdmVzX3VzZF8yAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAANJbnQEAAAAAWEFAAAAByRtYXRjaDAFAAAAAWEAAAAAAAAAAAAFAAAAFFdBVkVTVVNEQ3VycmVuY3lSYXRlAAAABAAAAAFpAQAAABBzZXRDb250ZXN0U3RhdHVzAAAAAgAAAA1jb250ZXN0TnVtYmVyAAAADWNvbnRlc3RTdGF0dXMEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwMJAQAAAAIhPQAAAAIFAAAAB2FjY291bnQFAAAACURBUFBPV05FUgkAAAIAAAABAgAAACdPbmx5IGRBUFAgT3duZXIgY2FuIHNldCBDb250ZXN0IFN0YXR1cy4DAwkBAAAAAiE9AAAAAgUAAAANY29udGVzdFN0YXR1cwUAAAAIQ0FOQ0VMRUQJAQAAAAIhPQAAAAIFAAAADWNvbnRlc3RTdGF0dXMFAAAABkNMT1NFRAcJAAACAAAAAQkAASwAAAACAgAAABBJbnZhbGlkIHN0YXR1czogBQAAAA1jb250ZXN0U3RhdHVzCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAANY29udGVzdE51bWJlcgIAAAAHX3N0YXR1cwUAAAANY29udGVzdFN0YXR1cwUAAAADbmlsAAAAAWkBAAAAF3NldENvbnRlc3RDb25maWd1cmF0aW9uAAAAAAQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyBAAAABFjb250ZXN0Q3VyclN0YXR1cwkBAAAAC2dldFN0ckJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAdfc3RhdHVzBAAAABBjb250ZXN0TmV3TnVtYmVyCQAAZAAAAAIFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAAAAAAAAAAABBAAAAAdiYWxhbmNlCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwQAAAAOY29udGVzdEJldENvc3QJAABoAAAAAgkAAGkAAAACCQAAaQAAAAIFAAAAB2JhbGFuY2UAAAAAAAAAABkAAAAAAABMS0AAAAAAAAABhqADCQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAlEQVBQT1dORVIJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAA3T25seSBkQVBQIE93bmVyIGNhbiBDb25maWd1cmUgQ29udGVzdC4gQ2FsbGVyIGFjY291bnQ6IAUAAAAHYWNjb3VudAIAAAANIGRhcHAgb3duZXI6IAUAAAAJREFQUE9XTkVSAwkAAAAAAAACBQAAABFjb250ZXN0Q3VyclN0YXR1cwUAAAAHUlVOTklORwkAAAIAAAABCQABLAAAAAICAAAAQFlvdSBjYW5ub3QgY29uZmlndXJlIGEgbmV3IENvbnRlc3Qgd2hpbGUgb2xkIENvbnRlc3Qgc3RhdHVzIGlzOiAFAAAAEWNvbnRlc3RDdXJyU3RhdHVzAwkAAGYAAAACAAAAAAAF9eEABQAAAAdiYWxhbmNlCQAAAgAAAAECAAAAKEJhbGFuY2UgdG9vIGxvdywgY2Fubm90IHN0YXJ0IGEgY29udGVzdC4EAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAABkAAAAAgUAAAAGaGVpZ2h0CQAAaAAAAAIAAAAAAAAAAAYAAAAAAAAABaAJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAICAAAAFWNvbnRlc3RfY3VycmVudG51bWJlcgUAAAAQY29udGVzdE5ld051bWJlcgkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEGNvbnRlc3ROZXdOdW1iZXICAAAADV9maW5pc2hoZWlnaHQFAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABBjb250ZXN0TmV3TnVtYmVyAgAAAAdfc3RhdHVzBQAAAAdSVU5OSU5HCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAAQY29udGVzdE5ld051bWJlcgIAAAALX2JldGNvdW50ZXIAAAAAAAAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABBjb250ZXN0TmV3TnVtYmVyAgAAAAhfYmV0Y29zdAUAAAAOY29udGVzdEJldENvc3QFAAAAA25pbAAAAAFpAQAAAANiZXQAAAABAAAADWN1cnJlbmN5VmFsdWUEAAAAB2FjY291bnQJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAADcG10CQEAAAAHZXh0cmFjdAAAAAEIBQAAAAFpAAAAB3BheW1lbnQEAAAAEWNvbnRlc3RDdXJyTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABAgAAABVjb250ZXN0X2N1cnJlbnRudW1iZXIEAAAAEmNvbnRlc3RTdGFydEhlaWdodAkBAAAAC2dldE51bUJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAxfc3RhcnRoZWlnaHQEAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAANX2ZpbmlzaGhlaWdodAQAAAARY29udGVzdEN1cnJTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAASY29udGVzdEN1cnJCZXRDb3N0CQEAAAALZ2V0TnVtQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAACF9iZXRjb3N0BAAAAA1jb250ZXN0U3RhdHVzCQEAAAALZ2V0U3RyQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB19zdGF0dXMEAAAAEWFjY291bnRCZXRzTnVtYmVyCQEAAAALZ2V0TnVtQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAFfBQAAAAdhY2NvdW50AgAAAAVfYmV0cwQAAAASZXhpc3RpbmdCZXRBY2NvdW50CQEAAAALZ2V0U3RyQnlLZXkAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiZXRfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAFfCQABpAAAAAEFAAAADWN1cnJlbmN5VmFsdWUDCQAAZgAAAAIFAAAABmhlaWdodAkAAGUAAAACBQAAABNjb250ZXN0RmluaXNoSGVpZ2h0CQAAaAAAAAIAAAAAAAAAAAIAAAAAAAAABaAJAAACAAAAAQIAAAAmWW91IGNhbm5vdCBiZXQgYW55bW9yZSBhdCB0aGlzIGhlaWdodC4DCQEAAAACIT0AAAACBQAAABFjb250ZXN0Q3VyclN0YXR1cwUAAAAHUlVOTklORwkAAAIAAAABCQABLAAAAAICAAAAN0ludmFsaWQgc3RhdHVzOiB5b3UgY2Fubm90IGJldCBub3csIGNvbnRlc3Qgc3RhdHVzIGlzOiAFAAAAEWNvbnRlc3RDdXJyU3RhdHVzAwMJAQAAAAIhPQAAAAIIBQAAAANwbXQAAAAHYXNzZXRJZAUAAAADV0xUBgkBAAAAAiE9AAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAAEmNvbnRlc3RDdXJyQmV0Q29zdAkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAABdZb3UgbXVzdCBwYXkgYXQgbGVhc3Q6IAkAAaQAAAABBQAAABJjb250ZXN0Q3VyckJldENvc3QCAAAAFyBXTFQgdG8gYmV0LiBZb3UgcGFpZDogCQABpAAAAAEIBQAAAANwbXQAAAAGYW1vdW50AwMJAQAAAAIhPQAAAAIFAAAAEmV4aXN0aW5nQmV0QWNjb3VudAUAAAAETk9ORQkBAAAAAiE9AAAAAgUAAAASZXhpc3RpbmdCZXRBY2NvdW50BQAAAAdhY2NvdW50BwkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAOQW5vdGhlciB1c2VyOiAFAAAAEmV4aXN0aW5nQmV0QWNjb3VudAIAAAAeIGRpZCBiZXQgYWxyZWFkeSBvbiB0aGlzIHJhdGUuAwkAAGYAAAACBQAAABFhY2NvdW50QmV0c051bWJlcgAAAAAAAAAABQkAAAIAAAABAgAAAB9Zb3UgY2FuIGJldCBhdCBtb3N0IG9uIDUgcmF0ZXMuCQEAAAAIV3JpdGVTZXQAAAABCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiZXRfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAFfCQABpAAAAAEFAAAADWN1cnJlbmN5VmFsdWUFAAAAB2FjY291bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAAV8FAAAAB2FjY291bnQCAAAABV9iZXRzCQAAZAAAAAIFAAAAEWFjY291bnRCZXRzTnVtYmVyAAAAAAAAAAABBQAAAANuaWwAAAABaQEAAAAMY2xvc2Vjb250ZXN0AAAAAAQAAAAMY3VycmVuY3lSYXRlCQEAAAAaZ2V0RXh0V0FWRVNVU0RDdXJyZW5jeVJhdGUAAAAABAAAABFjb250ZXN0Q3Vyck51bWJlcgkBAAAAC2dldE51bUJ5S2V5AAAAAQIAAAAVY29udGVzdF9jdXJyZW50bnVtYmVyBAAAABF3aW5uaW5nQmV0QWNjb3VudAkBAAAAC2dldFN0ckJ5S2V5AAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEYmV0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAABXwkAAaQAAAABBQAAAAxjdXJyZW5jeVJhdGUEAAAAE2NvbnRlc3RGaW5pc2hIZWlnaHQJAQAAAAtnZXROdW1CeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAANX2ZpbmlzaGhlaWdodAQAAAAHYWNjb3VudAkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAdiYWxhbmNlCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwQAAAARY29udGVzdEN1cnJTdGF0dXMJAQAAAAtnZXRTdHJCeUtleQAAAAEJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwQAAAAMV0xUU2hhcmVCdXJuCQAAaQAAAAIJAABoAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAANXTFQAAAAAAAAAAFUAAAAAAAAAAGQDCQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAlEQVBQT1dORVIJAAACAAAAAQIAAAAiT25seSBkQVBQIE93bmVyIGNhbiBDbG9zZSBDb250ZXN0LgMJAABmAAAAAgUAAAATY29udGVzdEZpbmlzaEhlaWdodAUAAAAGaGVpZ2h0CQAAAgAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAACWFjY291bnQ6IAUAAAAHYWNjb3VudAIAAAApOiBDYW5ub3QgY2xvc2UgdGhlIGNvbnRlc3QgYmVmb3JlIGhlaWdodDoJAAGkAAAAAQUAAAATY29udGVzdEZpbmlzaEhlaWdodAMJAQAAAAIhPQAAAAIFAAAAEWNvbnRlc3RDdXJyU3RhdHVzBQAAAAdSVU5OSU5HCQAAAgAAAAEJAAEsAAAAAgIAAAAiQ2Fubm90IGNsb3NlIGEgY29udGVzdCBpbiBzdGF0dXM6IAUAAAARY29udGVzdEN1cnJTdGF0dXMDCQEAAAACIT0AAAACBQAAABF3aW5uaW5nQmV0QWNjb3VudAUAAAAETk9ORQQAAAAPV0xUU2hhcmVSZXZlbnVlCQAAaQAAAAIJAABoAAAAAgkAA+sAAAACBQAAAAR0aGlzBQAAAANXTFQAAAAAAAAAAAUAAAAAAAAAAGQEAAAACldBVkVTUHJpemUJAABpAAAAAgkAAGgAAAACCQEAAAAMd2F2ZXNCYWxhbmNlAAAAAQUAAAAEdGhpcwAAAAAAAAAAYwAAAAAAAAAAZAQAAAALd2luVHJhbnNmZXIJAQAAAAtUcmFuc2ZlclNldAAAAAEJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABBQAAABF3aW5uaW5nQmV0QWNjb3VudAUAAAAKV0FWRVNQcml6ZQUAAAAEdW5pdAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADCQEAAAAHZXh0cmFjdAAAAAEJAQAAABFhZGRyZXNzRnJvbVN0cmluZwAAAAEFAAAADE9SQUNMRVdBTExFVAUAAAAPV0xUU2hhcmVSZXZlbnVlBQAAAANXTFQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABBQAAAA5XQVZFU0tJVFdBTExFVAUAAAAPV0xUU2hhcmVSZXZlbnVlBQAAAANXTFQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABBQAAABFEQVBQQVVUSE9STldBTExFVAUAAAAPV0xUU2hhcmVSZXZlbnVlBQAAAANXTFQJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwkBAAAAB2V4dHJhY3QAAAABCQEAAAARYWRkcmVzc0Zyb21TdHJpbmcAAAABBQAAAA1XTFRCVVJOV0FMTEVUBQAAAAxXTFRTaGFyZUJ1cm4FAAAAA1dMVAUAAAADbmlsCQEAAAAMU2NyaXB0UmVzdWx0AAAAAgkBAAAACFdyaXRlU2V0AAAAAQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAdfc3RhdHVzBQAAAAZDTE9TRUQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3dpbm5lcgUAAAARd2lubmluZ0JldEFjY291bnQJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAANX2N1cnJlbmN5cmF0ZQUAAAAMY3VycmVuY3lSYXRlCQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAABl9wcml6ZQUAAAAKV0FWRVNQcml6ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAApfd2x0YnVybmVkBQAAAAxXTFRTaGFyZUJ1cm4FAAAAA25pbAUAAAALd2luVHJhbnNmZXIJAQAAAAhXcml0ZVNldAAAAAEJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAHX3N0YXR1cwUAAAAGQ0xPU0VECQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAAB193aW5uZXIFAAAAEXdpbm5pbmdCZXRBY2NvdW50CQAETAAAAAIJAQAAAAlEYXRhRW50cnkAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAIY29udGVzdF8JAAGkAAAAAQUAAAARY29udGVzdEN1cnJOdW1iZXICAAAADV9jdXJyZW5jeXJhdGUFAAAADGN1cnJlbmN5UmF0ZQkABEwAAAACCQEAAAAJRGF0YUVudHJ5AAAAAgkAASwAAAACCQABLAAAAAICAAAACGNvbnRlc3RfCQABpAAAAAEFAAAAEWNvbnRlc3RDdXJyTnVtYmVyAgAAAAZfcHJpemUAAAAAAAAAAAAJAARMAAAAAgkBAAAACURhdGFFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACAgAAAAhjb250ZXN0XwkAAaQAAAABBQAAABFjb250ZXN0Q3Vyck51bWJlcgIAAAAKX3dsdGJ1cm5lZAUAAAAMV0xUU2hhcmVCdXJuBQAAAANuaWwAAAABAAAAAnR4AQAAAAZ2ZXJpZnkAAAAABAAAAAckbWF0Y2gwBQAAAAJ0eAMDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAFFNldFNjcmlwdFRyYW5zYWN0aW9uBgkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAA9EYXRhVHJhbnNhY3Rpb24JAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABdJbnZva2VTY3JpcHRUcmFuc2FjdGlvbgYGW0jMVw==", "chainId": 84, "height": 663113, "spentComplexity": 0 } View: original | compacted Prev: 3XoVZ8MtkJErTNwkhHJuv77QgWTAsYo2sDNqZ8N5r75E Next: 4ZW4decPtHH24tmgt9KJDR8fdVnRYLZ77HdTbfhU6gnh Diff:
OldNewDifferences
77
88 let CANCELED = "CANCELED"
99
10-let DAPPOWNER = "3N5mwuqT6dXpbqwT5VKDXzGJJ6c14rKqxS7"
10+let DAPPOWNER = "3P4NZR6ckE8aLC7Bogr5NXBzSi6p13DQg67"
1111
12-let ORACLEWALLET = "3NAcoeWdUTWn8csXJPG47v1Fjtjcfqxb5tu"
12+let ORACLEWALLET = "3PPTrTo3AzR56N7ArzbU3Bpq9zYMgcf39Mk"
1313
14-let WLTBURNWALLET = "3MpCbDDjkSrfS1XkPpm71iZj5DQ1RpBRRht"
14+let WLTBURNWALLET = "3PMvwZfTcVHefhiKPbtbV9HPAaUF5KERjgi"
1515
16-let WAVESKITWALLET = "3MqPpbWPRsZFoT9X74qWocU4BpypGEPhiCn"
16+let WAVESKITWALLET = "3PDEEMRU3tBJffag7sRPnjwEQ8GZGikUWBi"
1717
18-let DAPPAUTHORNWALLET = "3N1xQeQcsrY8Urm4RdrmL2dfoZAP4ULpH1S"
18+let DAPPAUTHORNWALLET = "3P2HvUEfPPMp9YxxPfduDTLvm9CkAzLnTEo"
1919
2020 let WAVES = "WAVES"
2121
2323
2424 let FEE = 900000
2525
26-let WLT = base58'7KAXNTswj6947a6cVpGhVrh1utWpLcjwf8AFpWCtuMT7'
26+let WLT = base58'CM8J4Z9HW3MdKgTxrpf3WYauXfjdu1zZKg19AGTicEYe'
2727
2828 func getNumByKey (key) = {
2929 let num = match getInteger(this, key) {
4444 NONE
4545 }
4646 str
47- }
48-
49-
50-func getContestStatus () = {
51- let contestCurrNumber = getNumByKey("contest_currentnumber")
52- getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
53- }
54-
55-
56-func getBetAccount (betId) = {
57- let contestCurrNumber = getNumByKey("contest_currentnumber")
58- getStrByKey((((("bet_" + toString(contestCurrNumber)) + "_") + toString(betId)) + "_owner"))
5947 }
6048
6149
117105 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
118106 let contestCurrBetCost = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_betcost"))
119107 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
108+ let accountBetsNumber = getNumByKey((((("contest_" + toString(contestCurrNumber)) + "_") + account) + "_bets"))
120109 let existingBetAccount = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyValue)))
121110 if ((height > (contestFinishHeight - (2 * 1440))))
122111 then throw("You cannot bet anymore at this height.")
130119 then (existingBetAccount != account)
131120 else false)
132121 then throw((("Another user: " + existingBetAccount) + " did bet already on this rate."))
133- else WriteSet([DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyValue)), account)])
122+ else if ((accountBetsNumber > 5))
123+ then throw("You can bet at most on 5 rates.")
124+ else WriteSet([DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyValue)), account), DataEntry((((("contest_" + toString(contestCurrNumber)) + "_") + account) + "_bets"), (accountBetsNumber + 1))])
134125 }
135126
136127
147138 let WLTShareBurn = ((assetBalance(this, WLT) * 85) / 100)
148139 if ((account != DAPPOWNER))
149140 then throw("Only dAPP Owner can Close Contest.")
150- else if (if ((contestFinishHeight > height))
151- then (account != DAPPOWNER)
152- else false)
141+ else if ((contestFinishHeight > height))
153142 then throw(((("account: " + account) + ": Cannot close the contest before height:") + toString(contestFinishHeight)))
154143 else if ((contestCurrStatus != RUNNING))
155144 then throw(("Cannot close a contest in status: " + contestCurrStatus))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 3 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let RUNNING = "RUNNING"
55
66 let CLOSED = "CLOSED"
77
88 let CANCELED = "CANCELED"
99
10-let DAPPOWNER = "3N5mwuqT6dXpbqwT5VKDXzGJJ6c14rKqxS7"
10+let DAPPOWNER = "3P4NZR6ckE8aLC7Bogr5NXBzSi6p13DQg67"
1111
12-let ORACLEWALLET = "3NAcoeWdUTWn8csXJPG47v1Fjtjcfqxb5tu"
12+let ORACLEWALLET = "3PPTrTo3AzR56N7ArzbU3Bpq9zYMgcf39Mk"
1313
14-let WLTBURNWALLET = "3MpCbDDjkSrfS1XkPpm71iZj5DQ1RpBRRht"
14+let WLTBURNWALLET = "3PMvwZfTcVHefhiKPbtbV9HPAaUF5KERjgi"
1515
16-let WAVESKITWALLET = "3MqPpbWPRsZFoT9X74qWocU4BpypGEPhiCn"
16+let WAVESKITWALLET = "3PDEEMRU3tBJffag7sRPnjwEQ8GZGikUWBi"
1717
18-let DAPPAUTHORNWALLET = "3N1xQeQcsrY8Urm4RdrmL2dfoZAP4ULpH1S"
18+let DAPPAUTHORNWALLET = "3P2HvUEfPPMp9YxxPfduDTLvm9CkAzLnTEo"
1919
2020 let WAVES = "WAVES"
2121
2222 let NONE = "NONE"
2323
2424 let FEE = 900000
2525
26-let WLT = base58'7KAXNTswj6947a6cVpGhVrh1utWpLcjwf8AFpWCtuMT7'
26+let WLT = base58'CM8J4Z9HW3MdKgTxrpf3WYauXfjdu1zZKg19AGTicEYe'
2727
2828 func getNumByKey (key) = {
2929 let num = match getInteger(this, key) {
3030 case a: Int =>
3131 a
3232 case _ =>
3333 0
3434 }
3535 num
3636 }
3737
3838
3939 func getStrByKey (key) = {
4040 let str = match getString(this, key) {
4141 case a: String =>
4242 a
4343 case _ =>
4444 NONE
4545 }
4646 str
47- }
48-
49-
50-func getContestStatus () = {
51- let contestCurrNumber = getNumByKey("contest_currentnumber")
52- getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
53- }
54-
55-
56-func getBetAccount (betId) = {
57- let contestCurrNumber = getNumByKey("contest_currentnumber")
58- getStrByKey((((("bet_" + toString(contestCurrNumber)) + "_") + toString(betId)) + "_owner"))
5947 }
6048
6149
6250 func getExtWAVESUSDCurrencyRate () = {
6351 let oracleAddress = extract(addressFromString(ORACLEWALLET))
6452 let WAVESUSDCurrencyRate = match getInteger(oracleAddress, "waves_usd_2") {
6553 case a: Int =>
6654 a
6755 case _ =>
6856 0
6957 }
7058 WAVESUSDCurrencyRate
7159 }
7260
7361
7462 @Callable(i)
7563 func setContestStatus (contestNumber,contestStatus) = {
7664 let account = toBase58String(i.caller.bytes)
7765 if ((account != DAPPOWNER))
7866 then throw("Only dAPP Owner can set Contest Status.")
7967 else if (if ((contestStatus != CANCELED))
8068 then (contestStatus != CLOSED)
8169 else false)
8270 then throw(("Invalid status: " + contestStatus))
8371 else WriteSet([DataEntry((("contest_" + toString(contestNumber)) + "_status"), contestStatus)])
8472 }
8573
8674
8775
8876 @Callable(i)
8977 func setContestConfiguration () = {
9078 let account = toBase58String(i.caller.bytes)
9179 let contestCurrNumber = getNumByKey("contest_currentnumber")
9280 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
9381 let contestNewNumber = (contestCurrNumber + 1)
9482 let balance = wavesBalance(this)
9583 let contestBetCost = (((balance / 25) / 5000000) * 100000)
9684 if ((account != DAPPOWNER))
9785 then throw(((("Only dAPP Owner can Configure Contest. Caller account: " + account) + " dapp owner: ") + DAPPOWNER))
9886 else if ((contestCurrStatus == RUNNING))
9987 then throw(("You cannot configure a new Contest while old Contest status is: " + contestCurrStatus))
10088 else if ((100000000 > balance))
10189 then throw("Balance too low, cannot start a contest.")
10290 else {
10391 let contestFinishHeight = (height + (6 * 1440))
10492 WriteSet([DataEntry("contest_currentnumber", contestNewNumber), DataEntry((("contest_" + toString(contestNewNumber)) + "_finishheight"), contestFinishHeight), DataEntry((("contest_" + toString(contestNewNumber)) + "_status"), RUNNING), DataEntry((("contest_" + toString(contestNewNumber)) + "_betcounter"), 0), DataEntry((("contest_" + toString(contestNewNumber)) + "_betcost"), contestBetCost)])
10593 }
10694 }
10795
10896
10997
11098 @Callable(i)
11199 func bet (currencyValue) = {
112100 let account = toBase58String(i.caller.bytes)
113101 let pmt = extract(i.payment)
114102 let contestCurrNumber = getNumByKey("contest_currentnumber")
115103 let contestStartHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_startheight"))
116104 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
117105 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
118106 let contestCurrBetCost = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_betcost"))
119107 let contestStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
108+ let accountBetsNumber = getNumByKey((((("contest_" + toString(contestCurrNumber)) + "_") + account) + "_bets"))
120109 let existingBetAccount = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyValue)))
121110 if ((height > (contestFinishHeight - (2 * 1440))))
122111 then throw("You cannot bet anymore at this height.")
123112 else if ((contestCurrStatus != RUNNING))
124113 then throw(("Invalid status: you cannot bet now, contest status is: " + contestCurrStatus))
125114 else if (if ((pmt.assetId != WLT))
126115 then true
127116 else (pmt.amount != contestCurrBetCost))
128117 then throw(((("You must pay at least: " + toString(contestCurrBetCost)) + " WLT to bet. You paid: ") + toString(pmt.amount)))
129118 else if (if ((existingBetAccount != NONE))
130119 then (existingBetAccount != account)
131120 else false)
132121 then throw((("Another user: " + existingBetAccount) + " did bet already on this rate."))
133- else WriteSet([DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyValue)), account)])
122+ else if ((accountBetsNumber > 5))
123+ then throw("You can bet at most on 5 rates.")
124+ else WriteSet([DataEntry(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyValue)), account), DataEntry((((("contest_" + toString(contestCurrNumber)) + "_") + account) + "_bets"), (accountBetsNumber + 1))])
134125 }
135126
136127
137128
138129 @Callable(i)
139130 func closecontest () = {
140131 let currencyRate = getExtWAVESUSDCurrencyRate()
141132 let contestCurrNumber = getNumByKey("contest_currentnumber")
142133 let winningBetAccount = getStrByKey(((("bet_" + toString(contestCurrNumber)) + "_") + toString(currencyRate)))
143134 let contestFinishHeight = getNumByKey((("contest_" + toString(contestCurrNumber)) + "_finishheight"))
144135 let account = toBase58String(i.caller.bytes)
145136 let balance = wavesBalance(this)
146137 let contestCurrStatus = getStrByKey((("contest_" + toString(contestCurrNumber)) + "_status"))
147138 let WLTShareBurn = ((assetBalance(this, WLT) * 85) / 100)
148139 if ((account != DAPPOWNER))
149140 then throw("Only dAPP Owner can Close Contest.")
150- else if (if ((contestFinishHeight > height))
151- then (account != DAPPOWNER)
152- else false)
141+ else if ((contestFinishHeight > height))
153142 then throw(((("account: " + account) + ": Cannot close the contest before height:") + toString(contestFinishHeight)))
154143 else if ((contestCurrStatus != RUNNING))
155144 then throw(("Cannot close a contest in status: " + contestCurrStatus))
156145 else if ((winningBetAccount != NONE))
157146 then {
158147 let WLTShareRevenue = ((assetBalance(this, WLT) * 5) / 100)
159148 let WAVESPrize = ((wavesBalance(this) * 99) / 100)
160149 let winTransfer = TransferSet([ScriptTransfer(extract(addressFromString(winningBetAccount)), WAVESPrize, unit), ScriptTransfer(extract(addressFromString(ORACLEWALLET)), WLTShareRevenue, WLT), ScriptTransfer(extract(addressFromString(WAVESKITWALLET)), WLTShareRevenue, WLT), ScriptTransfer(extract(addressFromString(DAPPAUTHORNWALLET)), WLTShareRevenue, WLT), ScriptTransfer(extract(addressFromString(WLTBURNWALLET)), WLTShareBurn, WLT)])
161150 ScriptResult(WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winningBetAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_prize"), WAVESPrize), DataEntry((("contest_" + toString(contestCurrNumber)) + "_wltburned"), WLTShareBurn)]), winTransfer)
162151 }
163152 else WriteSet([DataEntry((("contest_" + toString(contestCurrNumber)) + "_status"), CLOSED), DataEntry((("contest_" + toString(contestCurrNumber)) + "_winner"), winningBetAccount), DataEntry((("contest_" + toString(contestCurrNumber)) + "_currencyrate"), currencyRate), DataEntry((("contest_" + toString(contestCurrNumber)) + "_prize"), 0), DataEntry((("contest_" + toString(contestCurrNumber)) + "_wltburned"), WLTShareBurn)])
164153 }
165154
166155
167156 @Verifier(tx)
168157 func verify () = match tx {
169158 case _: SetScriptTransaction|DataTransaction =>
170159 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
171160 case _: InvokeScriptTransaction =>
172161 true
173162 case _ =>
174163 true
175164 }
176165

github/deemru/w8io/873ac7e 
64.59 ms