tx · Fo6g4422nH9WwGmwxpcm5VyCW3wPq3k4SMu2aEuuFg7U

3N7LWLXDtaXAyrzFjxhPPLBfV5DepLY4JQT:  -0.01700000 Waves

2022.11.03 12:37 [2300761] smart account 3N7LWLXDtaXAyrzFjxhPPLBfV5DepLY4JQT > SELF 0.00000000 Waves

{ "type": 13, "id": "Fo6g4422nH9WwGmwxpcm5VyCW3wPq3k4SMu2aEuuFg7U", "fee": 1700000, "feeAssetId": null, "timestamp": 1667468248223, "version": 2, "chainId": 84, "sender": "3N7LWLXDtaXAyrzFjxhPPLBfV5DepLY4JQT", "senderPublicKey": "Dua5JUgjDoKiGQvqvHFw2EcHUMTEH2zYWs8T2usUxu1S", "proofs": [ "Xv6PPYTbf4UEAG2zzHogzu9FtkJBysXCpHuM76GDjApmpC7xm81Koo6uPdK5JN6KYX9o1TS8URXWuTaaV2nNePZ" ], "script": "base64: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dGlvbgAAAAASa2V5X3JldmVhbER1cmF0aW9uAgAAAA5yZXZlYWxEdXJhdGlvbgAAAAAMa2V5X2Vycm9yRmVlAgAAAAhlcnJvckZlZQAAAAAOa2V5X21pbmltYWxCaWQCAAAACm1pbmltYWxCaWQAAAAAFGtleV9yZWdpc3RyYXJBZGRyZXNzAgAAABByZWdpc3RyYXJBZGRyZXNzAAAAABVrZXlfbmFtZU1pbmltYWxMZW5ndGgCAAAAEW5hbWVNaW5pbWFsTGVuZ3RoAAAAAA9rZXlfcGVyY2VudFJhdGUCAAAAC3BlcmNlbnRSYXRlAAAAABRrZXlfY29sbGVjdG9yQWRkcmVzcwIAAAAQY29sbGVjdG9yQWRkcmVzcwAAAAAMYXVjdGlvblN0YXJ0CQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAABFrZXlfaW5pdFRpbWVzdGFtcAAAAAALYmlkRHVyYXRpb24JAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAD2tleV9iaWREdXJhdGlvbgAAAAAOcmV2ZWFsRHVyYXRpb24JAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAEmtleV9yZXZlYWxEdXJhdGlvbgAAAAAPYXVjdGlvbkR1cmF0aW9uCQAAZAAAAAIFAAAAC2JpZER1cmF0aW9uBQAAAA5yZXZlYWxEdXJhdGlvbgAAAAAIZXJyb3JGZWUJAQAAABFnZXRJbnRlZ2VyT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAADGtleV9lcnJvckZlZQAAAAAKbWluaW1hbEJpZAkBAAAAEWdldEludGVnZXJPclRocm93AAAAAgUAAAAEdGhpcwUAAAAOa2V5X21pbmltYWxCaWQAAAAAEW5hbWVNaW5pbWFsTGVuZ3RoCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAABVrZXlfbmFtZU1pbmltYWxMZW5ndGgAAAAAC3BlcmNlbnRSYXRlCQEAAAARZ2V0SW50ZWdlck9yVGhyb3cAAAACBQAAAAR0aGlzBQAAAA9rZXlfcGVyY2VudFJhdGUAAAAAEHJlZ2lzdHJhckFkZHJlc3MJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwUAAAAUa2V5X3JlZ2lzdHJhckFkZHJlc3MAAAAACXJlZ2lzdHJhcgkBAAAAE3BhcnNlQWRkcmVzc09yVGhyb3cAAAABBQAAABByZWdpc3RyYXJBZGRyZXNzAAAAABBjb2xsZWN0b3JBZGRyZXNzCQEAAAAQZ2V0U3RyaW5nT3JUaHJvdwAAAAIFAAAABHRoaXMFAAAAFGtleV9jb2xsZWN0b3JBZGRyZXNzAAAAAAljb2xsZWN0b3IJAQAAABNwYXJzZUFkZHJlc3NPclRocm93AAAAAQUAAAAQY29sbGVjdG9yQWRkcmVzcwEAAAAQX2dldFJlZmVycmVyRGF0YQAAAAEAAAAMcmVmZXJyZXJOYW1lBAAAAApyZWZBZGRyZXNzCQEAAAATcGFyc2VBZGRyZXNzT3JUaHJvdwAAAAEJAQAAABBnZXRTdHJpbmdPclRocm93AAAAAgUAAAAEdGhpcwkBAAAAE2tleV9yZWZlcnJlckFkZHJlc3MAAAABBQAAAAxyZWZlcnJlck5hbWUEAAAACnJlZlBlcmNlbnQJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAAEdGhpcwkBAAAAE2tleV9yZWZlcnJlclBlcmNlbnQAAAABBQAAAAxyZWZlcnJlck5hbWUFAAAAC3BlcmNlbnRSYXRlAwMJAABmAAAAAgAAAAAAAAAAAAUAAAAKcmVmUGVyY2VudAYJAABmAAAAAgUAAAAKcmVmUGVyY2VudAAAAAAAAAAAZAkAAAIAAAABAgAAABZJbmNvcnJlY3QgcGVyY2VudCByYXRlCQAFFAAAAAIFAAAACnJlZkFkZHJlc3MFAAAACnJlZlBlcmNlbnQBAAAAGF9yZWZlcnJlclBlcmNlbnRUcmFuc2ZlcgAAAAIAAAANYmlkZGVySGFzaEtleQAAAAliaWRBbW91bnQEAAAADmJpZFJlZmVycmVyS2V5CQEAAAAMa2V5X3JlZmVycmVyAAAAAQUAAAANYmlkZGVySGFzaEtleQQAAAAPYmlkUmVmZXJyZXJOYW1lCQAEHQAAAAIFAAAABHRoaXMFAAAADmJpZFJlZmVycmVyS2V5AwkBAAAACWlzRGVmaW5lZAAAAAEFAAAAD2JpZFJlZmVycmVyTmFtZQQAAAALJHQwMzIwNzMyODIJAQAAABBfZ2V0UmVmZXJyZXJEYXRhAAAAAQkBAAAABXZhbHVlAAAAAQUAAAAPYmlkUmVmZXJyZXJOYW1lBAAAAAhyZWZlcnJlcggFAAAACyR0MDMyMDczMjgyAAAAAl8xBAAAAA9yZWZlcnJlclBlcmNlbnQIBQAAAAskdDAzMjA3MzI4MgAAAAJfMgQAAAAVcmVmZXJyZXJQZXJjZW50QW1vdW50CQAAawAAAAMFAAAACWJpZEFtb3VudAUAAAAPcmVmZXJyZXJQZXJjZW50AAAAAAAAAABkCQAFFAAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAIcmVmZXJyZXIFAAAAFXJlZmVycmVyUGVyY2VudEFtb3VudAUAAAAEdW5pdAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABBQAAAA5iaWRSZWZlcnJlcktleQUAAAADbmlsBQAAABVyZWZlcnJlclBlcmNlbnRBbW91bnQJAAUUAAAAAgUAAAADbmlsAAAAAAAAAAAAAQAAAAhjYWxjSGFzaAAAAAQAAAAEbmFtZQAAAAZhbW91bnQAAAAJYmlkU2VuZGVyAAAABnNlY3JldAkAAlgAAAABCQAK8AAAAAEJAAqMAAAAAQkAAMsAAAACCQAAywAAAAIJAADLAAAAAgkAAZsAAAABBQAAAARuYW1lCQABmgAAAAEFAAAABmFtb3VudAkAAlkAAAABBQAAAAliaWRTZW5kZXIFAAAABnNlY3JldAEAAAAJbW9kaWZpZXJzAAAAAQAAAAt2YWxpZGF0aW9ucwUAAAAEdW5pdAEAAAAHaXNBZG1pbgAAAAEAAAADaW52CQAAAAAAAAIIBQAAAANpbnYAAAAGY2FsbGVyBQAAAAR0aGlzAQAAAAlvbmx5QWRtaW4AAAABAAAAA2ludgMJAQAAAAdpc0FkbWluAAAAAQUAAAADaW52BQAAAAR1bml0CQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkAQAAABBvbmx5VmFsaWRBZGRyZXNzAAAAAQAAAAxtYXliZUFkZHJlc3MDCQEAAAAJaXNEZWZpbmVkAAAAAQkABCYAAAABBQAAAAxtYXliZUFkZHJlc3MFAAAABHVuaXQJAAACAAAAAQkAASwAAAACBQAAAAxtYXliZUFkZHJlc3MCAAAAFyBpcyBub3QgYSB2YWxpZCBhZGRyZXNzAQAAAA9vbmx5UG9zaXRpdmVJbnQAAAACAAAABm51bWJlcgAAAAh2YXJpYWJsZQMJAABmAAAAAgUAAAAGbnVtYmVyAAAAAAAAAAAABQAAAAR1bml0CQAAAgAAAAEJAAEsAAAAAgUAAAAIdmFyaWFibGUCAAAAFiBtdXN0IGJlIGdyZXRlciB0aGFuIDAAAAAACVBIQVNFX0JJRAIAAAADQklEAAAAAAxQSEFTRV9SRVZFQUwCAAAABlJFVkVBTAEAAAAPX2dldEF1Y3Rpb25CeUlkAAAAAQAAAAlhdWN0aW9uSWQEAAAACGJpZFN0YXJ0CQAAZAAAAAIFAAAADGF1Y3Rpb25TdGFydAkAAGgAAAACBQAAAAlhdWN0aW9uSWQFAAAAD2F1Y3Rpb25EdXJhdGlvbgQAAAALcmV2ZWFsU3RhcnQJAABkAAAAAgUAAAAIYmlkU3RhcnQFAAAAC2JpZER1cmF0aW9uBAAAAAphdWN0aW9uRW5kCQAAZAAAAAIFAAAAC3JldmVhbFN0YXJ0BQAAAA5yZXZlYWxEdXJhdGlvbgQAAAAFcGhhc2UDCQAAZgAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAtyZXZlYWxTdGFydAUAAAAMUEhBU0VfUkVWRUFMBQAAAAlQSEFTRV9CSUQJAAUXAAAABQUAAAAJYXVjdGlvbklkBQAAAAVwaGFzZQUAAAAIYmlkU3RhcnQFAAAAC3JldmVhbFN0YXJ0BQAAAAphdWN0aW9uRW5kAQAAAApnZXRBdWN0aW9uAAAAAAQAAAAJYXVjdGlvbklkCQAAaQAAAAIJAABlAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAADGF1Y3Rpb25TdGFydAUAAAAPYXVjdGlvbkR1cmF0aW9uCQEAAAAPX2dldEF1Y3Rpb25CeUlkAAAAAQUAAAAJYXVjdGlvbklkAQAAAA9nZXRBdWN0aW9uUGhhc2UAAAAABAAAAAckbWF0Y2gwCQEAAAAKZ2V0QXVjdGlvbgAAAAADCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAHChJbnQsIFN0cmluZywgSW50LCBJbnQsIEludCkEAAAA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ZAUAAAAJUEhBU0VfQklECQAAAgAAAAECAAAAEkJpZCBwZXJpb2QgaXMgb3ZlcgMJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAABmJpZEtleQkAAAIAAAABAgAAACdCaWQgd2l0aCBleGFjdCBhbW91bnQgYWxyZWFkeSBwcmVzZW50ZWQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAABmJpZEtleQUAAAADcG10BQAAAANuaWwAAAAJAAAAA2ludgEAAAAEaW5pdAAAAAkAAAAJdGltZXN0YW1wAAAAC2JpZER1cmF0aW9uAAAADnJldmVhbER1cmF0aW9uAAAACGVycm9yRmVlAAAACm1pbmltYWxCaWQAAAAQcmVnaXN0cmFyQWRkcmVzcwAAABFuYW1lTWluaW1hbExlbmd0aAAAAAtwZXJjZW50UmF0ZQAAABBjb2xsZWN0b3JBZGRyZXNzCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAJbW9kaWZpZXJzAAAAAQkABEwAAAACCQEAAAAJb25seUFkbWluAAAAAQUAAAADaW52CQAETAAAAAIDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCQAEGgAAAAIFAAAABHRoaXMFAAAAEWtleV9pbml0VGltZXN0YW1wBQAAAAR1bml0CQAAAgAAAAECAAAAJEF1Y3Rpb24gYWxyZWFkeSBoYXMgYmVlbiBpbml0aWFsaXplZAkABEwAAAACCQEAAAAQb25seVZhbGlkQWRkcmVzcwAAAAEFAAAAEHJlZ2lzdHJhckFkZHJlc3MJAARMAAAAAgkBAAAAEG9ubHlWYWxpZEFkZHJlc3MAAAABBQAAABBjb2xsZWN0b3JBZGRyZXNzCQAETAAAAAIJAQAAAA9vbmx5UG9zaXRpdmVJbnQAAAACBQAAAAtiaWREdXJhdGlvbgIAAAAMQmlkIGR1cmF0aW9uCQAETAAAAAIJAQAAAA9vbmx5UG9zaXRpdmVJbnQAAAACBQAAAA5yZXZlYWxEdXJhdGlvbgIAAAAPUmV2ZWFsIGR1cmF0aW9uCQAETAAAAAIJAQAAAA9vbmx5UG9zaXRpdmVJbnQAAAACBQAAAAhlcnJvckZlZQIAAAAJRXJyb3IgZmVlCQAETAAAAAIJAQAAAA9vbmx5UG9zaXRpdmVJbnQAAAACBQAAAAptaW5pbWFsQmlkAgAAAAtNaW5pbWFsIGJpZAkABEwAAAACCQEAAAAPb25seVBvc2l0aXZlSW50AAAAAgUAAAALcGVyY2VudFJhdGUCAAAADFBlcmNlbnQgcmF0ZQkABEwAAAACAwkAAGYAAAACBQAAABFuYW1lTWluaW1hbExlbmd0aAAAAAAAAAAAAwUAAAAEdW5pdAkAAAIAAAABAgAAACdNaW5pbWFsIG5hbWUgbGVuZ3RoIG11c3QgYmUgbW9yZSB0aGFuIDMFAAAAA25pbAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa2V5X2luaXRUaW1lc3RhbXAFAAAACXRpbWVzdGFtcAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAPa2V5X2JpZER1cmF0aW9uBQAAAAtiaWREdXJhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5X3JldmVhbER1cmF0aW9uBQAAAA5yZXZlYWxEdXJhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAMa2V5X2Vycm9yRmVlBQAAAAhlcnJvckZlZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAOa2V5X21pbmltYWxCaWQFAAAACm1pbmltYWxCaWQJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAUa2V5X3JlZ2lzdHJhckFkZHJlc3MFAAAAEHJlZ2lzdHJhckFkZHJlc3MJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFWtleV9uYW1lTWluaW1hbExlbmd0aAUAAAARbmFtZU1pbmltYWxMZW5ndGgJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAD2tleV9wZXJjZW50UmF0ZQUAAAALcGVyY2VudFJhdGUJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAUa2V5X2NvbGxlY3RvckFkZHJlc3MFAAAAEGNvbGxlY3RvckFkZHJlc3MFAAAAA25pbAAAAANpbnYBAAAADmdldEF1Y3Rpb25CeUlkAAAAAQAAAAlhdWN0aW9uSWQJAAUUAAAAAgUAAAADbmlsCQEAAAAPX2dldEF1Y3Rpb25CeUlkAAAAAQUAAAAJYXVjdGlvbklkAAAAA2ludgEAAAALaXNBdmFpbGFibGUAAAABAAAABG5hbWUJAAUUAAAAAgUAAAADbmlsCQEAAAAPaXNBdmFpbGFibGVOYW1lAAAAAQUAAAAEbmFtZQAAAANpbnYBAAAAD2JpZFdpdGhSZWZlcnJlcgAAAAMAAAAJYXVjdGlvbklkAAAABGhhc2gAAAAMcmVmZXJyZXJOYW1lCQEAAAALdmFsdWVPckVsc2UAAAACCQEAAAAJbW9kaWZpZXJzAAAAAQkABEwAAAACAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwkBAAAAE2tleV9yZWZlcnJlckFkZHJlc3MAAAABBQAAAAxyZWZlcnJlck5hbWUFAAAABHVuaXQJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAClJlZmVycmVyIGAFAAAADHJlZmVycmVyTmFtZQIAAAALYCBub3QgZm91bmQFAAAAA25pbAQAAAADYmlkCQEAAAAEX2JpZAAAAAMFAAAAA2ludgUAAAAJYXVjdGlvbklkBQAAAARoYXNoBAAAABFjb21taXRCaWRSZWZlcnJlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAMa2V5X3JlZmVycmVyAAAAAQkBAAAADmtleV9iaWRkZXJIYXNoAAAAAwkAAaQAAAABBQAAAAlhdWN0aW9uSWQJAAQlAAAAAQgFAAAAA2ludgAAAAZjYWxsZXIFAAAABGhhc2gFAAAADHJlZmVycmVyTmFtZQUAAAADbmlsCQAETgAAAAIFAAAAA2JpZAUAAAARY29tbWl0QmlkUmVmZXJyZXIAAAADaW52AQAAAANiaWQAAAACAAAACWF1Y3Rpb25JZAAAAARoYXNoCQEAAAAEX2JpZAAAAAMFAAAAA2ludgUAAAAJYXVjdGlvbklkBQAAAARoYXNoAAAAA2ludgEAAAAGcmV2ZWFsAAAABAAAAAlhdWN0aW9uSWQAAAAEbmFtZQAAAAliaWRBbW91bnQAAAAGc2VjcmV0BAAAAAZjYWxsZXIIBQAAAANpbnYAAAAGY2FsbGVyBAAAAA1jYWxsZXJBZGRyZXNzCQAEJQAAAAEFAAAABmNhbGxlcgQAAAAEaGFzaAkBAAAACGNhbGNIYXNoAAAABAUAAAAEbmFtZQUAAAAJYmlkQW1vdW50BQAAAA1jYWxsZXJBZGRyZXNzBQAAAAZzZWNyZXQEAAAADWJpZGRlckhhc2hLZXkJAQAAAA5rZXlfYmlkZGVySGFzaAAAAAMJAAGkAAAAAQUAAAAJYXVjdGlvbklkBQAAAA1jYWxsZXJBZGRyZXNzBQAAAARoYXNoBAAAAAlyZXZlYWxLZXkJAQAAAAprZXlfcmV2ZWFsAAAAAQUAAAANYmlkZGVySGFzaEtleQQAAAALJHQwOTMxNTkzNzIJAQAAAA9nZXRBdWN0aW9uUGhhc2UAAAAABAAAABBjdXJyZW50QXVjdGlvbklkCAUAAAALJHQwOTMxNTkzNzIAAAACXzEEAAAADWN1cnJlbnRQZXJpb2QIBQAAAAskdDA5MzE1OTM3MgAAAAJfMgMJAQAAAAIhPQAAAAIFAAAAEGN1cnJlbnRBdWN0aW9uSWQFAAAACWF1Y3Rpb25JZAkAAAIAAAABAgAAABhBdWN0aW9ucyBpcyBhbHJlYWR5IG92ZXIDCQEAAAACIT0AAAACBQAAAA1jdXJyZW50UGVyaW9kBQAAAAxQSEFTRV9SRVZFQUwJAAACAAAAAQIAAAAVUmV2ZWFsIHBlcmlvZCBpcyBvdmVyAwkBAAAACWlzRGVmaW5lZAAAAAEJAAQdAAAAAgUAAAAEdGhpcwUAAAAJcmV2ZWFsS2V5CQAAAgAAAAECAAAAF0JpZCBpcyBhbHJlYWR5IHJldmVhbGVkBAAAAAZiaWRLZXkJAQAAAAdrZXlfYmlkAAAAAQUAAAANYmlkZGVySGFzaEtleQQAAAAHZGVwb3NpdAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEGgAAAAIFAAAABHRoaXMFAAAABmJpZEtleQkAASwAAAACAgAAABNCaWQgZG9lc24ndCBleGlzdHMgBQAAAARoYXNoBAAAAAZ0b3BLZXkJAQAAAAdrZXlfdG9wAAAAAQUAAAAEbmFtZQQAAAAKdG9wS2V5RGF0YQkABB0AAAACBQAAAAR0aGlzBQAAAAZ0b3BLZXkEAAAACmlzVmFsaWRCaWQDAwkAAGcAAAACBQAAAAli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AAAJcmV2ZWFsS2V5BAAAAA0kdDAxMzI1OTEzMzYwCQEAAAAYX3JlZmVycmVyUGVyY2VudFRyYW5zZmVyAAAAAgUAAAANYmlkZGVySGFzaEtleQUAAAASc2Vjb25kVG9wQmlkQW1vdW50BAAAABByZWZlcnJlclRyYW5zZmVyCAUAAAANJHQwMTMyNTkxMzM2MAAAAAJfMQQAAAAPcmVmZXJyZXJQZXJjZW50CAUAAAANJHQwMTMyNTkxMzM2MAAAAAJfMgQAAAAIY2xhaW1OZnQJAAP8AAAABAUAAAAJcmVnaXN0cmFyAgAAAAhyZWdpc3RlcgkABEwAAAACBQAAAARuYW1lCQAETAAAAAIFAAAADXdpbm5lckFkZHJlc3MJAARMAAAAAgUAAAAKYXVjdGlvbkVuZAUAAAADbmlsBQAAAANuaWwDCQAAAAAAAAIFAAAACGNsYWltTmZ0BQAAAAhjbGFpbU5mdAQAAAANdHJhbnNmZXJEZWx0YQkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAZjYWxsZXIJAABlAAAAAgUAAAAHZGVwb3NpdAUAAAASc2Vjb25kVG9wQmlkQW1vdW50BQAAAAR1bml0CQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAACWNvbGxlY3RvcgkAAGUAAAACBQAAABJzZWNvbmRUb3BCaWRBbW91bnQFAAAAD3JlZmVycmVyUGVyY2VudAUAAAAEdW5pdAUAAAADbmlsCQAETgAAAAIFAAAAEHJlZmVycmVyVHJhbnNmZXIFAAAADXRyYW5zZmVyRGVsdGEJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAABmNhbGxlcgUAAAAHZGVwb3NpdAUAAAAEdW5pdAUAAAADbmlsCQAETgAAAAIJAAROAAAAAgUAAAADYWNjBQAAAA1kZWxldGVFbnRyaWVzBQAAABZ0cmFuc2ZlckFuZERlbGV0ZUVudHJ5CgAAAAACJGwFAAAABmhhc2hlcwoAAAAAAiRzCQABkAAAAAEFAAAAAiRsCgAAAAAFJGFjYzAFAAAAA25pbAoBAAAABSRmMF8xAAAA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", "height": 2300761, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 39Q8HpRmySSmP9rw57BqzaL6VhNp92qcgxwtHFBY32FC Next: 2PrT7sb6ScjaLZkSsDDKhQTivEHmNGR22ZiPJ765xLNv Diff:
OldNewDifferences
107107 let ae = V(value(ad))
108108 let af = ae._1
109109 let ag = ae._2
110-[ScriptTransfer(af, fraction(ab, ag, 100), unit), DeleteEntry(ac)]
110+ let ah = fraction(ab, ag, 100)
111+ $Tuple2([ScriptTransfer(af, ah, unit), DeleteEntry(ac)], ah)
111112 }
112- else nil
113+ else $Tuple2(nil, 0)
113114 }
114115
115116
116-func ah (m,ai,aj,ak) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(ai)) + fromBase58String(aj)) + ak))))
117+func ai (m,aj,ak,al) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(aj)) + fromBase58String(ak)) + al))))
117118
118119
119-func al (am) = unit
120+func am (an) = unit
120121
121122
122-func an (ao) = (ao.caller == this)
123+func ao (ap) = (ap.caller == this)
123124
124125
125-func ap (ao) = if (an(ao))
126+func aq (ap) = if (ao(ap))
126127 then unit
127128 else throw("Permission denied")
128129
129130
130-func aq (j) = if (isDefined(addressFromString(j)))
131+func ar (j) = if (isDefined(addressFromString(j)))
131132 then unit
132133 else throw((j + " is not a valid address"))
133134
134135
135-func ar (as,at) = if ((as > 0))
136+func as (at,au) = if ((at > 0))
136137 then unit
137- else throw((at + " must be greter than 0"))
138+ else throw((au + " must be greter than 0"))
138139
139140
140-let au = "BID"
141+let av = "BID"
141142
142-let av = "REVEAL"
143+let aw = "REVEAL"
143144
144-func aw (s) = {
145- let ax = (J + (s * M))
146- let ay = (ax + K)
147- let az = (ay + L)
148- let aA = if ((lastBlock.timestamp > ay))
149- then av
150- else au
151- $Tuple5(s, aA, ax, ay, az)
152- }
153-
154-
155-func aB () = {
156- let s = ((lastBlock.timestamp - J) / M)
157- aw(s)
145+func ax (s) = {
146+ let ay = (J + (s * M))
147+ let az = (ay + K)
148+ let aA = (az + L)
149+ let aB = if ((lastBlock.timestamp > az))
150+ then aw
151+ else av
152+ $Tuple5(s, aB, ay, az, aA)
158153 }
159154
160155
161156 func aC () = {
162- let aD = aB()
163- if ($isInstanceOf(aD, "(Int, String, Int, Int, Int)"))
157+ let s = ((lastBlock.timestamp - J) / M)
158+ ax(s)
159+ }
160+
161+
162+func aD () = {
163+ let aE = aC()
164+ if ($isInstanceOf(aE, "(Int, String, Int, Int, Int)"))
164165 then {
165- let aE = aD
166- let s = aE._1
167- let aA = aE._2
168- $Tuple2(s, aA)
166+ let aF = aE
167+ let s = aF._1
168+ let aB = aF._2
169+ $Tuple2(s, aB)
169170 }
170171 else throw("Invalid auction info")
171172 }
172173
173174
174-func aF (m) = {
175- let aG = {
176- let aD = invoke(S, "isValid", [m], nil)
177- if ($isInstanceOf(aD, "Boolean"))
175+func aG (m) = {
176+ let aH = {
177+ let aE = invoke(S, "isValid", [m], nil)
178+ if ($isInstanceOf(aE, "Boolean"))
178179 then {
179- let aH = aD
180- aH
180+ let aI = aE
181+ aI
181182 }
182183 else throw("Unsupported result format (available)")
183184 }
184- if (aG)
185+ if (aH)
185186 then (size(m) >= P)
186187 else false
187188 }
188189
189190
190-func aI (m) = {
191- let aD = invoke(S, "isAvailable", [m], nil)
192- if ($isInstanceOf(aD, "Boolean"))
191+func aJ (m) = {
192+ let aE = invoke(S, "isAvailable", [m], nil)
193+ if ($isInstanceOf(aE, "Boolean"))
193194 then {
194- let aH = aD
195- aH
195+ let aI = aE
196+ aI
196197 }
197198 else throw("Unsupported result format (available)")
198199 }
199200
200201
201-func aJ (m) = {
202- let aK = getString(this, p(m))
203- if (!(isDefined(aK)))
202+func aK (m) = {
203+ let aL = getString(this, p(m))
204+ if (!(isDefined(aL)))
204205 then true
205206 else {
206- let aL = aC()._1
207- let aM = split(value(aK), "_")[1]
208- let s = k(aM, 0)
209- (s == aL)
207+ let aM = aD()._1
208+ let aN = split(value(aL), "_")[1]
209+ let s = k(aN, 0)
210+ (s == aM)
210211 }
211212 }
212213
213214
214-func aN (m) = if (if (aI(m))
215- then aJ(m)
215+func aO (m) = if (if (aJ(m))
216+ then aK(m)
216217 else false)
217- then aF(m)
218+ then aG(m)
218219 else false
219220
220221
221-func aO (ao,s,t) = {
222- let aP = if (if ((size(ao.payments) == 1))
223- then (ao.payments[0].assetId == unit)
222+func aP (ap,s,t) = {
223+ let aQ = if (if ((size(ap.payments) == 1))
224+ then (ap.payments[0].assetId == unit)
224225 else false)
225- then ao.payments[0].amount
226+ then ap.payments[0].amount
226227 else throw("Single payment required")
227- let aQ = toString(ao.caller)
228- let aR = u(r(toString(s), aQ, t))
229- let aS = aC()
230- let aT = aS._1
231- let aU = aS._2
232- if ((aT != s))
228+ let aR = toString(ap.caller)
229+ let aS = u(r(toString(s), aR, t))
230+ let aT = aD()
231+ let aU = aT._1
232+ let aV = aT._2
233+ if ((aU != s))
233234 then throw("Auctions is already over")
234- else if ((aU != au))
235+ else if ((aV != av))
235236 then throw("Bid period is over")
236- else if (isDefined(getInteger(this, aR)))
237+ else if (isDefined(getInteger(this, aS)))
237238 then throw("Bid with exact amount already presented")
238- else [IntegerEntry(aR, aP)]
239+ else [IntegerEntry(aS, aQ)]
239240 }
240241
241242
242-@Callable(ao)
243-func init (aV,K,L,N,O,R,P,Q,T) = valueOrElse(al([ap(ao), aq(R), aq(T), ar(K, "Bid duration"), ar(L, "Reveal duration"), ar(N, "Error fee"), ar(O, "Minimal bid"), ar(Q, "Percent rate"), if ((P > 3))
243+@Callable(ap)
244+func init (aW,K,L,N,O,R,P,Q,T) = valueOrElse(am([aq(ap), if (!(isDefined(getInteger(this, A))))
244245 then unit
245- else throw("Minimal name length must be more than 3")]), [IntegerEntry(A, aV), IntegerEntry(B, K), IntegerEntry(C, L), IntegerEntry(D, N), IntegerEntry(E, O), StringEntry(F, R), IntegerEntry(G, P), IntegerEntry(H, Q), StringEntry(I, T)])
246+ else throw("Auction already has been initialized"), ar(R), ar(T), as(K, "Bid duration"), as(L, "Reveal duration"), as(N, "Error fee"), as(O, "Minimal bid"), as(Q, "Percent rate"), if ((P > 3))
247+ then unit
248+ else throw("Minimal name length must be more than 3")]), [IntegerEntry(A, aW), IntegerEntry(B, K), IntegerEntry(C, L), IntegerEntry(D, N), IntegerEntry(E, O), StringEntry(F, R), IntegerEntry(G, P), IntegerEntry(H, Q), StringEntry(I, T)])
246249
247250
248251
249-@Callable(ao)
250-func getAuctionById (s) = $Tuple2(nil, aw(s))
252+@Callable(ap)
253+func getAuctionById (s) = $Tuple2(nil, ax(s))
251254
252255
253256
254-@Callable(ao)
255-func isAvailable (m) = $Tuple2(nil, aN(m))
257+@Callable(ap)
258+func isAvailable (m) = $Tuple2(nil, aO(m))
256259
257260
258261
259-@Callable(ao)
260-func bidWithReferrer (s,t,W) = valueOrElse(al([if (isDefined(getString(this, y(W))))
262+@Callable(ap)
263+func bidWithReferrer (s,t,W) = valueOrElse(am([if (isDefined(getString(this, y(W))))
261264 then unit
262265 else throw((("Referrer `" + W) + "` not found"))]), {
263- let aW = aO(ao, s, t)
264- let aX = [StringEntry(x(r(toString(s), toString(ao.caller), t)), W)]
265- (aW ++ aX)
266+ let aX = aP(ap, s, t)
267+ let aY = [StringEntry(x(r(toString(s), toString(ap.caller), t)), W)]
268+ (aX ++ aY)
266269 })
267270
268271
269272
270-@Callable(ao)
271-func bid (s,t) = aO(ao, s, t)
273+@Callable(ap)
274+func bid (s,t) = aP(ap, s, t)
272275
273276
274277
275-@Callable(ao)
276-func reveal (s,m,ab,ak) = {
277- let aY = ao.caller
278- let aQ = toString(aY)
279- let t = ah(m, ab, aQ, ak)
280- let aa = r(toString(s), aQ, t)
281- let aK = w(aa)
282- let aZ = aC()
283- let aT = aZ._1
284- let aU = aZ._2
285- if ((aT != s))
278+@Callable(ap)
279+func reveal (s,m,ab,al) = {
280+ let aZ = ap.caller
281+ let aR = toString(aZ)
282+ let t = ai(m, ab, aR, al)
283+ let aa = r(toString(s), aR, t)
284+ let aL = w(aa)
285+ let ba = aD()
286+ let aU = ba._1
287+ let aV = ba._2
288+ if ((aU != s))
286289 then throw("Auctions is already over")
287- else if ((aU != av))
290+ else if ((aV != aw))
288291 then throw("Reveal period is over")
289- else if (isDefined(getString(this, aK)))
292+ else if (isDefined(getString(this, aL)))
290293 then throw("Bid is already revealed")
291294 else {
292- let aR = u(aa)
293- let ba = valueOrErrorMessage(getInteger(this, aR), ("Bid doesn't exists " + t))
294- let bb = p(m)
295- let bc = getString(this, bb)
296- let bd = if (if ((ab >= O))
297- then (ba >= ab)
295+ let aS = u(aa)
296+ let bb = valueOrErrorMessage(getInteger(this, aS), ("Bid doesn't exists " + t))
297+ let bc = p(m)
298+ let bd = getString(this, bc)
299+ let be = if (if ((ab >= O))
300+ then (bb >= ab)
298301 else false)
299- then aN(m)
302+ then aO(m)
300303 else false
301- let be = [StringEntry(aK, ((((toString(ba) + ",") + toString(ab)) + ",") + m))]
302- if (!(bd))
304+ let bf = [StringEntry(aL, ((((toString(bb) + ",") + toString(ab)) + ",") + m))]
305+ if (!(be))
303306 then {
304- let bf = fraction(ba, 10, 100)
305- let bg = [ScriptTransfer(aY, (ba - bf), unit), ScriptTransfer(U, bf, unit), DeleteEntry(aR)]
306- bg
307+ let bg = fraction(bb, 10, 100)
308+ let bh = [ScriptTransfer(aZ, (bb - bg), unit), ScriptTransfer(U, bg, unit), DeleteEntry(aS)]
309+ bh
307310 }
308- else if (isDefined(bc))
311+ else if (isDefined(bd))
309312 then {
310- let bh = {
311- let bi = split(value(bc), ",")
312- $Tuple2(bi[0], parseIntValue(bi[1]))
313+ let bi = {
314+ let bj = split(value(bd), ",")
315+ $Tuple2(bj[0], parseIntValue(bj[1]))
313316 }
314- let bj = bh._1
315- let bk = bh._2
316- let bl = value(getString(this, bj))
317- let bm = parseIntValue(split(bl, ",")[1])
318- let bn = if ((ab > bm))
319- then $Tuple2(aK, bm)
320- else if ((ab > bk))
321- then $Tuple2(bj, ab)
317+ let bk = bi._1
318+ let bl = bi._2
319+ let bm = value(getString(this, bk))
320+ let bn = parseIntValue(split(bm, ",")[1])
321+ let bo = if ((ab > bn))
322+ then $Tuple2(aL, bn)
323+ else if ((ab > bl))
324+ then $Tuple2(bk, ab)
322325 else $Tuple2(unit, unit)
323- let bo = bn._1
324- let bp = bn._2
325- let bq = {
326- let aD = $Tuple2(bo, bp)
327- if ($isInstanceOf(aD, "(String, Int)"))
326+ let bp = bo._1
327+ let bq = bo._2
328+ let br = {
329+ let aE = $Tuple2(bp, bq)
330+ if ($isInstanceOf(aE, "(String, Int)"))
328331 then {
329- let br = aD
330-[StringEntry(bb, ((br._1 + ",") + toString(br._2)))]
332+ let bs = aE
333+[StringEntry(bc, ((bs._1 + ",") + toString(bs._2)))]
331334 }
332335 else nil
333336 }
334- (be ++ bq)
337+ (bf ++ br)
335338 }
336339 else {
337- let bs = [StringEntry(bb, ((aK + ",") + toString(O)))]
338- (be ++ bs)
340+ let bt = [StringEntry(bc, ((aL + ",") + toString(O)))]
341+ (bf ++ bt)
339342 }
340343 }
341344 }
342345
343346
344347
345-@Callable(ao)
346-func finalize (s,bt) = {
347- let az = aw(s)._5
348- let bu = if ((lastBlock.timestamp > az))
348+@Callable(ap)
349+func finalize (s,bu) = {
350+ let aA = ax(s)._5
351+ let bv = if ((lastBlock.timestamp > aA))
349352 then unit
350353 else throw("Cannot finalize auction that has not ended")
351- if ((bu == bu))
354+ if ((bv == bv))
352355 then {
353- let aY = ao.caller
354- let aQ = toString(aY)
355- func bv (bw,t) = {
356- let aa = r(toString(s), aQ, t)
357- let aR = u(aa)
358- let aK = w(aa)
359- let be = getString(this, aK)
360- let bx = {
361- let by = split(valueOrErrorMessage(be, (("Bid with hash " + t) + " not found")), ",")
362- $Tuple3(parseIntValue(by[0]), parseIntValue(by[1]), by[2])
356+ let aZ = ap.caller
357+ let aR = toString(aZ)
358+ func bw (bx,t) = {
359+ let aa = r(toString(s), aR, t)
360+ let aS = u(aa)
361+ let aL = w(aa)
362+ let bf = getString(this, aL)
363+ let by = {
364+ let bz = split(valueOrErrorMessage(bf, (("Bid with hash " + t) + " not found")), ",")
365+ $Tuple3(parseIntValue(bz[0]), parseIntValue(bz[1]), bz[2])
363366 }
364- let ba = bx._1
365- let ab = bx._2
366- let m = bx._3
367- let bb = p(m)
368- let bc = getString(this, bb)
369- let bz = {
370- let bi = split(value(bc), ",")
371- $Tuple2(bi[0], parseIntValue(bi[1]))
367+ let bb = by._1
368+ let ab = by._2
369+ let m = by._3
370+ let bc = p(m)
371+ let bd = getString(this, bc)
372+ let bA = {
373+ let bj = split(value(bd), ",")
374+ $Tuple2(bj[0], parseIntValue(bj[1]))
372375 }
373- let bj = bz._1
374- let bk = bz._2
375- let bA = {
376- let bB = split(bj, "_")
377- $Tuple2(parseIntValue(bB[1]), bB[2])
376+ let bk = bA._1
377+ let bl = bA._2
378+ let bB = {
379+ let bC = split(bk, "_")
380+ $Tuple2(parseIntValue(bC[1]), bC[2])
378381 }
379- let bC = bA._1
380- let bD = bA._2
381- let bE = [DeleteEntry(aK), DeleteEntry(aR)]
382- let bF = if ((bj == aK))
382+ let bD = bB._1
383+ let bE = bB._2
384+ let bF = [DeleteEntry(aL), DeleteEntry(aS)]
385+ let bG = if ((bk == aL))
383386 then {
384- let bG = Z(aa, bk)
385- let bH = invoke(S, "register", [m, bD, az], nil)
386- if ((bH == bH))
387+ let bH = Z(aa, bl)
388+ let bI = bH._1
389+ let ag = bH._2
390+ let bJ = invoke(S, "register", [m, bE, aA], nil)
391+ if ((bJ == bJ))
387392 then {
388- let bI = [ScriptTransfer(aY, (ba - bk), unit), ScriptTransfer(U, bk, unit)]
389- (bG ++ bI)
393+ let bK = [ScriptTransfer(aZ, (bb - bl), unit), ScriptTransfer(U, (bl - ag), unit)]
394+ (bI ++ bK)
390395 }
391396 else throw("Strict value is not equal to itself.")
392397 }
393- else [ScriptTransfer(aY, ba, unit)]
394- ((bw ++ bE) ++ bF)
398+ else [ScriptTransfer(aZ, bb, unit)]
399+ ((bx ++ bF) ++ bG)
395400 }
396401
397- let bJ = bt
398- let bK = size(bJ)
399- let bL = nil
400- func bM (bN,bO) = if ((bO >= bK))
401- then bN
402- else bv(bN, bJ[bO])
402+ let bL = bu
403+ let bM = size(bL)
404+ let bN = nil
405+ func bO (bP,bQ) = if ((bQ >= bM))
406+ then bP
407+ else bw(bP, bL[bQ])
403408
404- func bP (bN,bO) = if ((bO >= bK))
405- then bN
409+ func bR (bP,bQ) = if ((bQ >= bM))
410+ then bP
406411 else throw("List size exceeds 10")
407412
408- bP(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
413+ bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
409414 }
410415 else throw("Strict value is not equal to itself.")
411416 }
412417
413418
414419
415-@Callable(ao)
416-func addReferrer (W,bQ,bR) = valueOrElse(al([ap(ao), aq(bQ), if (if ((bR > 0))
417- then (100 > bR)
420+@Callable(ap)
421+func addReferrer (W,bS,bT) = valueOrElse(am([aq(ap), ar(bS), if (if ((bT > 0))
422+ then (100 > bT)
418423 else false)
419424 then unit
420425 else throw("Percent must be between 0 and 100"), if ((size(W) > 0))
421426 then unit
422- else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bQ), IntegerEntry(z(W), bR)])
427+ else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bS), IntegerEntry(z(W), bT)])
423428
424429
425430
426-@Callable(ao)
431+@Callable(ap)
427432 func revokeBid (s,t) = {
428- let aY = ao.caller
429- let bS = toString(aY)
430- let aa = r(toString(s), bS, t)
431- let aR = u(aa)
432- let aW = getInteger(this, aR)
433- let bT = aC()
434- let aT = bT._1
435- let aU = bT._2
436- if ((aT != s))
433+ let aZ = ap.caller
434+ let bU = toString(aZ)
435+ let aa = r(toString(s), bU, t)
436+ let aS = u(aa)
437+ let aX = getInteger(this, aS)
438+ let bV = aD()
439+ let aU = bV._1
440+ let aV = bV._2
441+ if ((aU != s))
437442 then throw("Auction is already over")
438- else if ((aU != au))
443+ else if ((aV != av))
439444 then throw("Bid period is already over")
440- else if (!(isDefined(aW)))
445+ else if (!(isDefined(aX)))
441446 then throw((("Bid with " + t) + " not found"))
442- else [ScriptTransfer(aY, value(aW), unit), DeleteEntry(aR)]
447+ else [ScriptTransfer(aZ, value(aX), unit), DeleteEntry(aS)]
443448 }
444449
445450
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func a (b,c) = valueOrErrorMessage(getInteger(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
55
66
77 func d (b,c) = valueOrErrorMessage(getString(b, c), ((("Can't read '" + c) + "' at address ") + toString(b)))
88
99
1010 func e (b,c,f) = valueOrElse(getInteger(b, c), f)
1111
1212
1313 func g (h) = valueOrErrorMessage(parseInt(h), (("Can't parse integer from '" + h) + "'"))
1414
1515
1616 func i (j) = valueOrErrorMessage(addressFromString(j), (("Can't parse address from '" + j) + "'"))
1717
1818
1919 func k (h,f) = valueOrElse(parseInt(h), f)
2020
2121
2222 func l (m,n,o) = ((((m + "_") + n) + "_") + o)
2323
2424
2525 func p (m) = ("Top_" + m)
2626
2727
2828 func q (m) = ("Top2_" + m)
2929
3030
3131 func r (s,b,t) = ((((s + "_") + b) + "_") + t)
3232
3333
3434 func u (v) = ("Bid_" + v)
3535
3636
3737 func w (v) = ("Reveal_" + v)
3838
3939
4040 func x (v) = ("Referrer_" + v)
4141
4242
4343 func y (m) = (("Referrer_" + m) + "_address")
4444
4545
4646 func z (m) = (("Referrer_" + m) + "_percent")
4747
4848
4949 let A = "initTimestamp"
5050
5151 let B = "bidDuration"
5252
5353 let C = "revealDuration"
5454
5555 let D = "errorFee"
5656
5757 let E = "minimalBid"
5858
5959 let F = "registrarAddress"
6060
6161 let G = "nameMinimalLength"
6262
6363 let H = "percentRate"
6464
6565 let I = "collectorAddress"
6666
6767 let J = a(this, A)
6868
6969 let K = a(this, B)
7070
7171 let L = a(this, C)
7272
7373 let M = (K + L)
7474
7575 let N = a(this, D)
7676
7777 let O = a(this, E)
7878
7979 let P = a(this, G)
8080
8181 let Q = a(this, H)
8282
8383 let R = d(this, F)
8484
8585 let S = i(R)
8686
8787 let T = d(this, I)
8888
8989 let U = i(T)
9090
9191 func V (W) = {
9292 let X = i(d(this, y(W)))
9393 let Y = valueOrElse(getInteger(this, z(W)), Q)
9494 if (if ((0 > Y))
9595 then true
9696 else (Y > 100))
9797 then throw("Incorrect percent rate")
9898 else $Tuple2(X, Y)
9999 }
100100
101101
102102 func Z (aa,ab) = {
103103 let ac = x(aa)
104104 let ad = getString(this, ac)
105105 if (isDefined(ad))
106106 then {
107107 let ae = V(value(ad))
108108 let af = ae._1
109109 let ag = ae._2
110-[ScriptTransfer(af, fraction(ab, ag, 100), unit), DeleteEntry(ac)]
110+ let ah = fraction(ab, ag, 100)
111+ $Tuple2([ScriptTransfer(af, ah, unit), DeleteEntry(ac)], ah)
111112 }
112- else nil
113+ else $Tuple2(nil, 0)
113114 }
114115
115116
116-func ah (m,ai,aj,ak) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(ai)) + fromBase58String(aj)) + ak))))
117+func ai (m,aj,ak,al) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(aj)) + fromBase58String(ak)) + al))))
117118
118119
119-func al (am) = unit
120+func am (an) = unit
120121
121122
122-func an (ao) = (ao.caller == this)
123+func ao (ap) = (ap.caller == this)
123124
124125
125-func ap (ao) = if (an(ao))
126+func aq (ap) = if (ao(ap))
126127 then unit
127128 else throw("Permission denied")
128129
129130
130-func aq (j) = if (isDefined(addressFromString(j)))
131+func ar (j) = if (isDefined(addressFromString(j)))
131132 then unit
132133 else throw((j + " is not a valid address"))
133134
134135
135-func ar (as,at) = if ((as > 0))
136+func as (at,au) = if ((at > 0))
136137 then unit
137- else throw((at + " must be greter than 0"))
138+ else throw((au + " must be greter than 0"))
138139
139140
140-let au = "BID"
141+let av = "BID"
141142
142-let av = "REVEAL"
143+let aw = "REVEAL"
143144
144-func aw (s) = {
145- let ax = (J + (s * M))
146- let ay = (ax + K)
147- let az = (ay + L)
148- let aA = if ((lastBlock.timestamp > ay))
149- then av
150- else au
151- $Tuple5(s, aA, ax, ay, az)
152- }
153-
154-
155-func aB () = {
156- let s = ((lastBlock.timestamp - J) / M)
157- aw(s)
145+func ax (s) = {
146+ let ay = (J + (s * M))
147+ let az = (ay + K)
148+ let aA = (az + L)
149+ let aB = if ((lastBlock.timestamp > az))
150+ then aw
151+ else av
152+ $Tuple5(s, aB, ay, az, aA)
158153 }
159154
160155
161156 func aC () = {
162- let aD = aB()
163- if ($isInstanceOf(aD, "(Int, String, Int, Int, Int)"))
157+ let s = ((lastBlock.timestamp - J) / M)
158+ ax(s)
159+ }
160+
161+
162+func aD () = {
163+ let aE = aC()
164+ if ($isInstanceOf(aE, "(Int, String, Int, Int, Int)"))
164165 then {
165- let aE = aD
166- let s = aE._1
167- let aA = aE._2
168- $Tuple2(s, aA)
166+ let aF = aE
167+ let s = aF._1
168+ let aB = aF._2
169+ $Tuple2(s, aB)
169170 }
170171 else throw("Invalid auction info")
171172 }
172173
173174
174-func aF (m) = {
175- let aG = {
176- let aD = invoke(S, "isValid", [m], nil)
177- if ($isInstanceOf(aD, "Boolean"))
175+func aG (m) = {
176+ let aH = {
177+ let aE = invoke(S, "isValid", [m], nil)
178+ if ($isInstanceOf(aE, "Boolean"))
178179 then {
179- let aH = aD
180- aH
180+ let aI = aE
181+ aI
181182 }
182183 else throw("Unsupported result format (available)")
183184 }
184- if (aG)
185+ if (aH)
185186 then (size(m) >= P)
186187 else false
187188 }
188189
189190
190-func aI (m) = {
191- let aD = invoke(S, "isAvailable", [m], nil)
192- if ($isInstanceOf(aD, "Boolean"))
191+func aJ (m) = {
192+ let aE = invoke(S, "isAvailable", [m], nil)
193+ if ($isInstanceOf(aE, "Boolean"))
193194 then {
194- let aH = aD
195- aH
195+ let aI = aE
196+ aI
196197 }
197198 else throw("Unsupported result format (available)")
198199 }
199200
200201
201-func aJ (m) = {
202- let aK = getString(this, p(m))
203- if (!(isDefined(aK)))
202+func aK (m) = {
203+ let aL = getString(this, p(m))
204+ if (!(isDefined(aL)))
204205 then true
205206 else {
206- let aL = aC()._1
207- let aM = split(value(aK), "_")[1]
208- let s = k(aM, 0)
209- (s == aL)
207+ let aM = aD()._1
208+ let aN = split(value(aL), "_")[1]
209+ let s = k(aN, 0)
210+ (s == aM)
210211 }
211212 }
212213
213214
214-func aN (m) = if (if (aI(m))
215- then aJ(m)
215+func aO (m) = if (if (aJ(m))
216+ then aK(m)
216217 else false)
217- then aF(m)
218+ then aG(m)
218219 else false
219220
220221
221-func aO (ao,s,t) = {
222- let aP = if (if ((size(ao.payments) == 1))
223- then (ao.payments[0].assetId == unit)
222+func aP (ap,s,t) = {
223+ let aQ = if (if ((size(ap.payments) == 1))
224+ then (ap.payments[0].assetId == unit)
224225 else false)
225- then ao.payments[0].amount
226+ then ap.payments[0].amount
226227 else throw("Single payment required")
227- let aQ = toString(ao.caller)
228- let aR = u(r(toString(s), aQ, t))
229- let aS = aC()
230- let aT = aS._1
231- let aU = aS._2
232- if ((aT != s))
228+ let aR = toString(ap.caller)
229+ let aS = u(r(toString(s), aR, t))
230+ let aT = aD()
231+ let aU = aT._1
232+ let aV = aT._2
233+ if ((aU != s))
233234 then throw("Auctions is already over")
234- else if ((aU != au))
235+ else if ((aV != av))
235236 then throw("Bid period is over")
236- else if (isDefined(getInteger(this, aR)))
237+ else if (isDefined(getInteger(this, aS)))
237238 then throw("Bid with exact amount already presented")
238- else [IntegerEntry(aR, aP)]
239+ else [IntegerEntry(aS, aQ)]
239240 }
240241
241242
242-@Callable(ao)
243-func init (aV,K,L,N,O,R,P,Q,T) = valueOrElse(al([ap(ao), aq(R), aq(T), ar(K, "Bid duration"), ar(L, "Reveal duration"), ar(N, "Error fee"), ar(O, "Minimal bid"), ar(Q, "Percent rate"), if ((P > 3))
243+@Callable(ap)
244+func init (aW,K,L,N,O,R,P,Q,T) = valueOrElse(am([aq(ap), if (!(isDefined(getInteger(this, A))))
244245 then unit
245- else throw("Minimal name length must be more than 3")]), [IntegerEntry(A, aV), IntegerEntry(B, K), IntegerEntry(C, L), IntegerEntry(D, N), IntegerEntry(E, O), StringEntry(F, R), IntegerEntry(G, P), IntegerEntry(H, Q), StringEntry(I, T)])
246+ else throw("Auction already has been initialized"), ar(R), ar(T), as(K, "Bid duration"), as(L, "Reveal duration"), as(N, "Error fee"), as(O, "Minimal bid"), as(Q, "Percent rate"), if ((P > 3))
247+ then unit
248+ else throw("Minimal name length must be more than 3")]), [IntegerEntry(A, aW), IntegerEntry(B, K), IntegerEntry(C, L), IntegerEntry(D, N), IntegerEntry(E, O), StringEntry(F, R), IntegerEntry(G, P), IntegerEntry(H, Q), StringEntry(I, T)])
246249
247250
248251
249-@Callable(ao)
250-func getAuctionById (s) = $Tuple2(nil, aw(s))
252+@Callable(ap)
253+func getAuctionById (s) = $Tuple2(nil, ax(s))
251254
252255
253256
254-@Callable(ao)
255-func isAvailable (m) = $Tuple2(nil, aN(m))
257+@Callable(ap)
258+func isAvailable (m) = $Tuple2(nil, aO(m))
256259
257260
258261
259-@Callable(ao)
260-func bidWithReferrer (s,t,W) = valueOrElse(al([if (isDefined(getString(this, y(W))))
262+@Callable(ap)
263+func bidWithReferrer (s,t,W) = valueOrElse(am([if (isDefined(getString(this, y(W))))
261264 then unit
262265 else throw((("Referrer `" + W) + "` not found"))]), {
263- let aW = aO(ao, s, t)
264- let aX = [StringEntry(x(r(toString(s), toString(ao.caller), t)), W)]
265- (aW ++ aX)
266+ let aX = aP(ap, s, t)
267+ let aY = [StringEntry(x(r(toString(s), toString(ap.caller), t)), W)]
268+ (aX ++ aY)
266269 })
267270
268271
269272
270-@Callable(ao)
271-func bid (s,t) = aO(ao, s, t)
273+@Callable(ap)
274+func bid (s,t) = aP(ap, s, t)
272275
273276
274277
275-@Callable(ao)
276-func reveal (s,m,ab,ak) = {
277- let aY = ao.caller
278- let aQ = toString(aY)
279- let t = ah(m, ab, aQ, ak)
280- let aa = r(toString(s), aQ, t)
281- let aK = w(aa)
282- let aZ = aC()
283- let aT = aZ._1
284- let aU = aZ._2
285- if ((aT != s))
278+@Callable(ap)
279+func reveal (s,m,ab,al) = {
280+ let aZ = ap.caller
281+ let aR = toString(aZ)
282+ let t = ai(m, ab, aR, al)
283+ let aa = r(toString(s), aR, t)
284+ let aL = w(aa)
285+ let ba = aD()
286+ let aU = ba._1
287+ let aV = ba._2
288+ if ((aU != s))
286289 then throw("Auctions is already over")
287- else if ((aU != av))
290+ else if ((aV != aw))
288291 then throw("Reveal period is over")
289- else if (isDefined(getString(this, aK)))
292+ else if (isDefined(getString(this, aL)))
290293 then throw("Bid is already revealed")
291294 else {
292- let aR = u(aa)
293- let ba = valueOrErrorMessage(getInteger(this, aR), ("Bid doesn't exists " + t))
294- let bb = p(m)
295- let bc = getString(this, bb)
296- let bd = if (if ((ab >= O))
297- then (ba >= ab)
295+ let aS = u(aa)
296+ let bb = valueOrErrorMessage(getInteger(this, aS), ("Bid doesn't exists " + t))
297+ let bc = p(m)
298+ let bd = getString(this, bc)
299+ let be = if (if ((ab >= O))
300+ then (bb >= ab)
298301 else false)
299- then aN(m)
302+ then aO(m)
300303 else false
301- let be = [StringEntry(aK, ((((toString(ba) + ",") + toString(ab)) + ",") + m))]
302- if (!(bd))
304+ let bf = [StringEntry(aL, ((((toString(bb) + ",") + toString(ab)) + ",") + m))]
305+ if (!(be))
303306 then {
304- let bf = fraction(ba, 10, 100)
305- let bg = [ScriptTransfer(aY, (ba - bf), unit), ScriptTransfer(U, bf, unit), DeleteEntry(aR)]
306- bg
307+ let bg = fraction(bb, 10, 100)
308+ let bh = [ScriptTransfer(aZ, (bb - bg), unit), ScriptTransfer(U, bg, unit), DeleteEntry(aS)]
309+ bh
307310 }
308- else if (isDefined(bc))
311+ else if (isDefined(bd))
309312 then {
310- let bh = {
311- let bi = split(value(bc), ",")
312- $Tuple2(bi[0], parseIntValue(bi[1]))
313+ let bi = {
314+ let bj = split(value(bd), ",")
315+ $Tuple2(bj[0], parseIntValue(bj[1]))
313316 }
314- let bj = bh._1
315- let bk = bh._2
316- let bl = value(getString(this, bj))
317- let bm = parseIntValue(split(bl, ",")[1])
318- let bn = if ((ab > bm))
319- then $Tuple2(aK, bm)
320- else if ((ab > bk))
321- then $Tuple2(bj, ab)
317+ let bk = bi._1
318+ let bl = bi._2
319+ let bm = value(getString(this, bk))
320+ let bn = parseIntValue(split(bm, ",")[1])
321+ let bo = if ((ab > bn))
322+ then $Tuple2(aL, bn)
323+ else if ((ab > bl))
324+ then $Tuple2(bk, ab)
322325 else $Tuple2(unit, unit)
323- let bo = bn._1
324- let bp = bn._2
325- let bq = {
326- let aD = $Tuple2(bo, bp)
327- if ($isInstanceOf(aD, "(String, Int)"))
326+ let bp = bo._1
327+ let bq = bo._2
328+ let br = {
329+ let aE = $Tuple2(bp, bq)
330+ if ($isInstanceOf(aE, "(String, Int)"))
328331 then {
329- let br = aD
330-[StringEntry(bb, ((br._1 + ",") + toString(br._2)))]
332+ let bs = aE
333+[StringEntry(bc, ((bs._1 + ",") + toString(bs._2)))]
331334 }
332335 else nil
333336 }
334- (be ++ bq)
337+ (bf ++ br)
335338 }
336339 else {
337- let bs = [StringEntry(bb, ((aK + ",") + toString(O)))]
338- (be ++ bs)
340+ let bt = [StringEntry(bc, ((aL + ",") + toString(O)))]
341+ (bf ++ bt)
339342 }
340343 }
341344 }
342345
343346
344347
345-@Callable(ao)
346-func finalize (s,bt) = {
347- let az = aw(s)._5
348- let bu = if ((lastBlock.timestamp > az))
348+@Callable(ap)
349+func finalize (s,bu) = {
350+ let aA = ax(s)._5
351+ let bv = if ((lastBlock.timestamp > aA))
349352 then unit
350353 else throw("Cannot finalize auction that has not ended")
351- if ((bu == bu))
354+ if ((bv == bv))
352355 then {
353- let aY = ao.caller
354- let aQ = toString(aY)
355- func bv (bw,t) = {
356- let aa = r(toString(s), aQ, t)
357- let aR = u(aa)
358- let aK = w(aa)
359- let be = getString(this, aK)
360- let bx = {
361- let by = split(valueOrErrorMessage(be, (("Bid with hash " + t) + " not found")), ",")
362- $Tuple3(parseIntValue(by[0]), parseIntValue(by[1]), by[2])
356+ let aZ = ap.caller
357+ let aR = toString(aZ)
358+ func bw (bx,t) = {
359+ let aa = r(toString(s), aR, t)
360+ let aS = u(aa)
361+ let aL = w(aa)
362+ let bf = getString(this, aL)
363+ let by = {
364+ let bz = split(valueOrErrorMessage(bf, (("Bid with hash " + t) + " not found")), ",")
365+ $Tuple3(parseIntValue(bz[0]), parseIntValue(bz[1]), bz[2])
363366 }
364- let ba = bx._1
365- let ab = bx._2
366- let m = bx._3
367- let bb = p(m)
368- let bc = getString(this, bb)
369- let bz = {
370- let bi = split(value(bc), ",")
371- $Tuple2(bi[0], parseIntValue(bi[1]))
367+ let bb = by._1
368+ let ab = by._2
369+ let m = by._3
370+ let bc = p(m)
371+ let bd = getString(this, bc)
372+ let bA = {
373+ let bj = split(value(bd), ",")
374+ $Tuple2(bj[0], parseIntValue(bj[1]))
372375 }
373- let bj = bz._1
374- let bk = bz._2
375- let bA = {
376- let bB = split(bj, "_")
377- $Tuple2(parseIntValue(bB[1]), bB[2])
376+ let bk = bA._1
377+ let bl = bA._2
378+ let bB = {
379+ let bC = split(bk, "_")
380+ $Tuple2(parseIntValue(bC[1]), bC[2])
378381 }
379- let bC = bA._1
380- let bD = bA._2
381- let bE = [DeleteEntry(aK), DeleteEntry(aR)]
382- let bF = if ((bj == aK))
382+ let bD = bB._1
383+ let bE = bB._2
384+ let bF = [DeleteEntry(aL), DeleteEntry(aS)]
385+ let bG = if ((bk == aL))
383386 then {
384- let bG = Z(aa, bk)
385- let bH = invoke(S, "register", [m, bD, az], nil)
386- if ((bH == bH))
387+ let bH = Z(aa, bl)
388+ let bI = bH._1
389+ let ag = bH._2
390+ let bJ = invoke(S, "register", [m, bE, aA], nil)
391+ if ((bJ == bJ))
387392 then {
388- let bI = [ScriptTransfer(aY, (ba - bk), unit), ScriptTransfer(U, bk, unit)]
389- (bG ++ bI)
393+ let bK = [ScriptTransfer(aZ, (bb - bl), unit), ScriptTransfer(U, (bl - ag), unit)]
394+ (bI ++ bK)
390395 }
391396 else throw("Strict value is not equal to itself.")
392397 }
393- else [ScriptTransfer(aY, ba, unit)]
394- ((bw ++ bE) ++ bF)
398+ else [ScriptTransfer(aZ, bb, unit)]
399+ ((bx ++ bF) ++ bG)
395400 }
396401
397- let bJ = bt
398- let bK = size(bJ)
399- let bL = nil
400- func bM (bN,bO) = if ((bO >= bK))
401- then bN
402- else bv(bN, bJ[bO])
402+ let bL = bu
403+ let bM = size(bL)
404+ let bN = nil
405+ func bO (bP,bQ) = if ((bQ >= bM))
406+ then bP
407+ else bw(bP, bL[bQ])
403408
404- func bP (bN,bO) = if ((bO >= bK))
405- then bN
409+ func bR (bP,bQ) = if ((bQ >= bM))
410+ then bP
406411 else throw("List size exceeds 10")
407412
408- bP(bM(bM(bM(bM(bM(bM(bM(bM(bM(bM(bL, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
413+ bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
409414 }
410415 else throw("Strict value is not equal to itself.")
411416 }
412417
413418
414419
415-@Callable(ao)
416-func addReferrer (W,bQ,bR) = valueOrElse(al([ap(ao), aq(bQ), if (if ((bR > 0))
417- then (100 > bR)
420+@Callable(ap)
421+func addReferrer (W,bS,bT) = valueOrElse(am([aq(ap), ar(bS), if (if ((bT > 0))
422+ then (100 > bT)
418423 else false)
419424 then unit
420425 else throw("Percent must be between 0 and 100"), if ((size(W) > 0))
421426 then unit
422- else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bQ), IntegerEntry(z(W), bR)])
427+ else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bS), IntegerEntry(z(W), bT)])
423428
424429
425430
426-@Callable(ao)
431+@Callable(ap)
427432 func revokeBid (s,t) = {
428- let aY = ao.caller
429- let bS = toString(aY)
430- let aa = r(toString(s), bS, t)
431- let aR = u(aa)
432- let aW = getInteger(this, aR)
433- let bT = aC()
434- let aT = bT._1
435- let aU = bT._2
436- if ((aT != s))
433+ let aZ = ap.caller
434+ let bU = toString(aZ)
435+ let aa = r(toString(s), bU, t)
436+ let aS = u(aa)
437+ let aX = getInteger(this, aS)
438+ let bV = aD()
439+ let aU = bV._1
440+ let aV = bV._2
441+ if ((aU != s))
437442 then throw("Auction is already over")
438- else if ((aU != au))
443+ else if ((aV != av))
439444 then throw("Bid period is already over")
440- else if (!(isDefined(aW)))
445+ else if (!(isDefined(aX)))
441446 then throw((("Bid with " + t) + " not found"))
442- else [ScriptTransfer(aY, value(aW), unit), DeleteEntry(aR)]
447+ else [ScriptTransfer(aZ, value(aX), unit), DeleteEntry(aS)]
443448 }
444449
445450

github/deemru/w8io/873ac7e 
157.04 ms