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 $t032073282 = _getReferrerData(value(bidReferrerName))
108108 let referrer = $t032073282._1
109109 let referrerPercent = $t032073282._2
110-[ScriptTransfer(referrer, fraction(bidAmount, referrerPercent, 100), unit), DeleteEntry(bidReferrerKey)]
110+ let referrerPercentAmount = fraction(bidAmount, referrerPercent, 100)
111+ $Tuple2([ScriptTransfer(referrer, referrerPercentAmount, unit), DeleteEntry(bidReferrerKey)], referrerPercentAmount)
111112 }
112- else nil
113+ else $Tuple2(nil, 0)
113114 }
114115
115116
217218 else throw("Single payment required")
218219 let callerAddress = toString(inv.caller)
219220 let bidKey = key_bid(key_bidderHash(toString(auctionId), callerAddress, hash))
220- let $t062776334 = getAuctionPhase()
221- let currentAuctionId = $t062776334._1
222- let currentPeriod = $t062776334._2
221+ let $t063656422 = getAuctionPhase()
222+ let currentAuctionId = $t063656422._1
223+ let currentPeriod = $t063656422._2
223224 if ((currentAuctionId != auctionId))
224225 then throw("Auctions is already over")
225226 else if ((currentPeriod != PHASE_BID))
231232
232233
233234 @Callable(inv)
234-func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress,nameMinimalLength,percentRate,collectorAddress) = valueOrElse(modifiers([onlyAdmin(inv), onlyValidAddress(registrarAddress), onlyValidAddress(collectorAddress), onlyPositiveInt(bidDuration, "Bid duration"), onlyPositiveInt(revealDuration, "Reveal duration"), onlyPositiveInt(errorFee, "Error fee"), onlyPositiveInt(minimalBid, "Minimal bid"), onlyPositiveInt(percentRate, "Percent rate"), if ((nameMinimalLength > 3))
235+func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress,nameMinimalLength,percentRate,collectorAddress) = valueOrElse(modifiers([onlyAdmin(inv), if (!(isDefined(getInteger(this, key_initTimestamp))))
236+ then unit
237+ else throw("Auction already has been initialized"), onlyValidAddress(registrarAddress), onlyValidAddress(collectorAddress), onlyPositiveInt(bidDuration, "Bid duration"), onlyPositiveInt(revealDuration, "Reveal duration"), onlyPositiveInt(errorFee, "Error fee"), onlyPositiveInt(minimalBid, "Minimal bid"), onlyPositiveInt(percentRate, "Percent rate"), if ((nameMinimalLength > 3))
235238 then unit
236239 else throw("Minimal name length must be more than 3")]), [IntegerEntry(key_initTimestamp, timestamp), IntegerEntry(key_bidDuration, bidDuration), IntegerEntry(key_revealDuration, revealDuration), IntegerEntry(key_errorFee, errorFee), IntegerEntry(key_minimalBid, minimalBid), StringEntry(key_registrarAddress, registrarAddress), IntegerEntry(key_nameMinimalLength, nameMinimalLength), IntegerEntry(key_percentRate, percentRate), StringEntry(key_collectorAddress, collectorAddress)])
237240
270273 let hash = calcHash(name, bidAmount, callerAddress, secret)
271274 let bidderHashKey = key_bidderHash(toString(auctionId), callerAddress, hash)
272275 let revealKey = key_reveal(bidderHashKey)
273- let $t092299286 = getAuctionPhase()
274- let currentAuctionId = $t092299286._1
275- let currentPeriod = $t092299286._2
276+ let $t093159372 = getAuctionPhase()
277+ let currentAuctionId = $t093159372._1
278+ let currentPeriod = $t093159372._2
276279 if ((currentAuctionId != auctionId))
277280 then throw("Auctions is already over")
278281 else if ((currentPeriod != PHASE_REVEAL))
298301 }
299302 else if (isDefined(topKeyData))
300303 then {
301- let $t01045610636 = {
304+ let $t01054210722 = {
302305 let topValues = split(value(topKeyData), ",")
303306 $Tuple2(topValues[0], parseIntValue(topValues[1]))
304307 }
305- let topRevealKey = $t01045610636._1
306- let secondTopBidAmount = $t01045610636._2
308+ let topRevealKey = $t01054210722._1
309+ let secondTopBidAmount = $t01054210722._2
307310 let revealedData = value(getString(this, topRevealKey))
308311 let topBidAmount = parseIntValue(split(revealedData, ",")[1])
309- let $t01080511105 = if ((bidAmount > topBidAmount))
312+ let $t01089111191 = if ((bidAmount > topBidAmount))
310313 then $Tuple2(revealKey, topBidAmount)
311314 else if ((bidAmount > secondTopBidAmount))
312315 then $Tuple2(topRevealKey, bidAmount)
313316 else $Tuple2(unit, unit)
314- let newTopRevealKey = $t01080511105._1
315- let newSecondBidAmount = $t01080511105._2
317+ let newTopRevealKey = $t01089111191._1
318+ let newSecondBidAmount = $t01089111191._2
316319 let updateTopKey = match $Tuple2(newTopRevealKey, newSecondBidAmount) {
317320 case newTopData: (String, Int) =>
318321 [StringEntry(topKey, ((newTopData._1 + ",") + toString(newTopData._2)))]
345348 let bidKey = key_bid(bidderHashKey)
346349 let revealKey = key_reveal(bidderHashKey)
347350 let revealedBid = getString(this, revealKey)
348- let $t01223712538 = {
351+ let $t01232312624 = {
349352 let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
350353 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
351354 }
352- let deposit = $t01223712538._1
353- let bidAmount = $t01223712538._2
354- let name = $t01223712538._3
355+ let deposit = $t01232312624._1
356+ let bidAmount = $t01232312624._2
357+ let name = $t01232312624._3
355358 let topKey = key_top(name)
356359 let topKeyData = getString(this, topKey)
357- let $t01263112799 = {
360+ let $t01271712885 = {
358361 let topValues = split(value(topKeyData), ",")
359362 $Tuple2(topValues[0], parseIntValue(topValues[1]))
360363 }
361- let topRevealKey = $t01263112799._1
362- let secondTopBidAmount = $t01263112799._2
363- let $t01280912971 = {
364+ let topRevealKey = $t01271712885._1
365+ let secondTopBidAmount = $t01271712885._2
366+ let $t01289513057 = {
364367 let winnerInfo = split(topRevealKey, "_")
365368 $Tuple2(parseIntValue(winnerInfo[1]), winnerInfo[2])
366369 }
367- let winnerAuctionId = $t01280912971._1
368- let winnerAddress = $t01280912971._2
370+ let winnerAuctionId = $t01289513057._1
371+ let winnerAddress = $t01289513057._2
369372 let deleteEntries = [DeleteEntry(revealKey), DeleteEntry(bidKey)]
370373 let transferAndDeleteEntry = if ((topRevealKey == revealKey))
371374 then {
372- let referrerTransfer = _referrerPercentTransfer(bidderHashKey, secondTopBidAmount)
375+ let $t01325913360 = _referrerPercentTransfer(bidderHashKey, secondTopBidAmount)
376+ let referrerTransfer = $t01325913360._1
377+ let referrerPercent = $t01325913360._2
373378 let claimNft = invoke(registrar, "register", [name, winnerAddress, auctionEnd], nil)
374379 if ((claimNft == claimNft))
375380 then {
376- let transferDelta = [ScriptTransfer(caller, (deposit - secondTopBidAmount), unit), ScriptTransfer(collector, secondTopBidAmount, unit)]
381+ let transferDelta = [ScriptTransfer(caller, (deposit - secondTopBidAmount), unit), ScriptTransfer(collector, (secondTopBidAmount - referrerPercent), unit)]
377382 (referrerTransfer ++ transferDelta)
378383 }
379384 else throw("Strict value is not equal to itself.")
418423 let bidderHashKey = key_bidderHash(toString(auctionId), callerStr, hash)
419424 let bidKey = key_bid(bidderHashKey)
420425 let bid = getInteger(this, bidKey)
421- let $t01457114628 = getAuctionPhase()
422- let currentAuctionId = $t01457114628._1
423- let currentPeriod = $t01457114628._2
426+ let $t01469214749 = getAuctionPhase()
427+ let currentAuctionId = $t01469214749._1
428+ let currentPeriod = $t01469214749._2
424429 if ((currentAuctionId != auctionId))
425430 then throw("Auction is already over")
426431 else if ((currentPeriod != PHASE_BID))
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getIntegerOrThrow (address,key) = valueOrErrorMessage(getInteger(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
55
66
77 func getStringOrThrow (address,key) = valueOrErrorMessage(getString(address, key), ((("Can't read '" + key) + "' at address ") + toString(address)))
88
99
1010 func getIntegerOrDefault (address,key,default) = valueOrElse(getInteger(address, key), default)
1111
1212
1313 func parseIntOrThrow (maybeInt) = valueOrErrorMessage(parseInt(maybeInt), (("Can't parse integer from '" + maybeInt) + "'"))
1414
1515
1616 func parseAddressOrThrow (maybeAddress) = valueOrErrorMessage(addressFromString(maybeAddress), (("Can't parse address from '" + maybeAddress) + "'"))
1717
1818
1919 func parseIntOrDefault (maybeInt,default) = valueOrElse(parseInt(maybeInt), default)
2020
2121
2222 func key_entity (name,pk,property) = ((((name + "_") + pk) + "_") + property)
2323
2424
2525 func key_top (name) = ("Top_" + name)
2626
2727
2828 func key_top2 (name) = ("Top2_" + name)
2929
3030
3131 func key_bidderHash (auctionId,address,hash) = ((((auctionId + "_") + address) + "_") + hash)
3232
3333
3434 func key_bid (bidderHash) = ("Bid_" + bidderHash)
3535
3636
3737 func key_reveal (bidderHash) = ("Reveal_" + bidderHash)
3838
3939
4040 func key_referrer (bidderHash) = ("Referrer_" + bidderHash)
4141
4242
4343 func key_referrerAddress (name) = (("Referrer_" + name) + "_address")
4444
4545
4646 func key_referrerPercent (name) = (("Referrer_" + name) + "_percent")
4747
4848
4949 let key_initTimestamp = "initTimestamp"
5050
5151 let key_bidDuration = "bidDuration"
5252
5353 let key_revealDuration = "revealDuration"
5454
5555 let key_errorFee = "errorFee"
5656
5757 let key_minimalBid = "minimalBid"
5858
5959 let key_registrarAddress = "registrarAddress"
6060
6161 let key_nameMinimalLength = "nameMinimalLength"
6262
6363 let key_percentRate = "percentRate"
6464
6565 let key_collectorAddress = "collectorAddress"
6666
6767 let auctionStart = getIntegerOrThrow(this, key_initTimestamp)
6868
6969 let bidDuration = getIntegerOrThrow(this, key_bidDuration)
7070
7171 let revealDuration = getIntegerOrThrow(this, key_revealDuration)
7272
7373 let auctionDuration = (bidDuration + revealDuration)
7474
7575 let errorFee = getIntegerOrThrow(this, key_errorFee)
7676
7777 let minimalBid = getIntegerOrThrow(this, key_minimalBid)
7878
7979 let nameMinimalLength = getIntegerOrThrow(this, key_nameMinimalLength)
8080
8181 let percentRate = getIntegerOrThrow(this, key_percentRate)
8282
8383 let registrarAddress = getStringOrThrow(this, key_registrarAddress)
8484
8585 let registrar = parseAddressOrThrow(registrarAddress)
8686
8787 let collectorAddress = getStringOrThrow(this, key_collectorAddress)
8888
8989 let collector = parseAddressOrThrow(collectorAddress)
9090
9191 func _getReferrerData (referrerName) = {
9292 let refAddress = parseAddressOrThrow(getStringOrThrow(this, key_referrerAddress(referrerName)))
9393 let refPercent = valueOrElse(getInteger(this, key_referrerPercent(referrerName)), percentRate)
9494 if (if ((0 > refPercent))
9595 then true
9696 else (refPercent > 100))
9797 then throw("Incorrect percent rate")
9898 else $Tuple2(refAddress, refPercent)
9999 }
100100
101101
102102 func _referrerPercentTransfer (bidderHashKey,bidAmount) = {
103103 let bidReferrerKey = key_referrer(bidderHashKey)
104104 let bidReferrerName = getString(this, bidReferrerKey)
105105 if (isDefined(bidReferrerName))
106106 then {
107107 let $t032073282 = _getReferrerData(value(bidReferrerName))
108108 let referrer = $t032073282._1
109109 let referrerPercent = $t032073282._2
110-[ScriptTransfer(referrer, fraction(bidAmount, referrerPercent, 100), unit), DeleteEntry(bidReferrerKey)]
110+ let referrerPercentAmount = fraction(bidAmount, referrerPercent, 100)
111+ $Tuple2([ScriptTransfer(referrer, referrerPercentAmount, unit), DeleteEntry(bidReferrerKey)], referrerPercentAmount)
111112 }
112- else nil
113+ else $Tuple2(nil, 0)
113114 }
114115
115116
116117 func calcHash (name,amount,bidSender,secret) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(name) + toBytes(amount)) + fromBase58String(bidSender)) + secret))))
117118
118119
119120 func modifiers (validations) = unit
120121
121122
122123 func isAdmin (inv) = (inv.caller == this)
123124
124125
125126 func onlyAdmin (inv) = if (isAdmin(inv))
126127 then unit
127128 else throw("Permission denied")
128129
129130
130131 func onlyValidAddress (maybeAddress) = if (isDefined(addressFromString(maybeAddress)))
131132 then unit
132133 else throw((maybeAddress + " is not a valid address"))
133134
134135
135136 func onlyPositiveInt (number,variable) = if ((number > 0))
136137 then unit
137138 else throw((variable + " must be greter than 0"))
138139
139140
140141 let PHASE_BID = "BID"
141142
142143 let PHASE_REVEAL = "REVEAL"
143144
144145 func _getAuctionById (auctionId) = {
145146 let bidStart = (auctionStart + (auctionId * auctionDuration))
146147 let revealStart = (bidStart + bidDuration)
147148 let auctionEnd = (revealStart + revealDuration)
148149 let phase = if ((lastBlock.timestamp > revealStart))
149150 then PHASE_REVEAL
150151 else PHASE_BID
151152 $Tuple5(auctionId, phase, bidStart, revealStart, auctionEnd)
152153 }
153154
154155
155156 func getAuction () = {
156157 let auctionId = ((lastBlock.timestamp - auctionStart) / auctionDuration)
157158 _getAuctionById(auctionId)
158159 }
159160
160161
161162 func getAuctionPhase () = match getAuction() {
162163 case auction: (Int, String, Int, Int, Int) =>
163164 let auctionId = auction._1
164165 let phase = auction._2
165166 $Tuple2(auctionId, phase)
166167 case _ =>
167168 throw("Invalid auction info")
168169 }
169170
170171
171172 func isValidName (name) = {
172173 let isValid = match invoke(registrar, "isValid", [name], nil) {
173174 case a: Boolean =>
174175 a
175176 case _ =>
176177 throw("Unsupported result format (available)")
177178 }
178179 if (isValid)
179180 then (size(name) >= nameMinimalLength)
180181 else false
181182 }
182183
183184
184185 func isRegistrableName (name) = match invoke(registrar, "isAvailable", [name], nil) {
185186 case a: Boolean =>
186187 a
187188 case _ =>
188189 throw("Unsupported result format (available)")
189190 }
190191
191192
192193 func isWinnableName (name) = {
193194 let revealKey = getString(this, key_top(name))
194195 if (!(isDefined(revealKey)))
195196 then true
196197 else {
197198 let currentAuction = getAuctionPhase()._1
198199 let topAuctionId = split(value(revealKey), "_")[1]
199200 let auctionId = parseIntOrDefault(topAuctionId, 0)
200201 (auctionId == currentAuction)
201202 }
202203 }
203204
204205
205206 func isAvailableName (name) = if (if (isRegistrableName(name))
206207 then isWinnableName(name)
207208 else false)
208209 then isValidName(name)
209210 else false
210211
211212
212213 func _bid (inv,auctionId,hash) = {
213214 let pmt = if (if ((size(inv.payments) == 1))
214215 then (inv.payments[0].assetId == unit)
215216 else false)
216217 then inv.payments[0].amount
217218 else throw("Single payment required")
218219 let callerAddress = toString(inv.caller)
219220 let bidKey = key_bid(key_bidderHash(toString(auctionId), callerAddress, hash))
220- let $t062776334 = getAuctionPhase()
221- let currentAuctionId = $t062776334._1
222- let currentPeriod = $t062776334._2
221+ let $t063656422 = getAuctionPhase()
222+ let currentAuctionId = $t063656422._1
223+ let currentPeriod = $t063656422._2
223224 if ((currentAuctionId != auctionId))
224225 then throw("Auctions is already over")
225226 else if ((currentPeriod != PHASE_BID))
226227 then throw("Bid period is over")
227228 else if (isDefined(getInteger(this, bidKey)))
228229 then throw("Bid with exact amount already presented")
229230 else [IntegerEntry(bidKey, pmt)]
230231 }
231232
232233
233234 @Callable(inv)
234-func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress,nameMinimalLength,percentRate,collectorAddress) = valueOrElse(modifiers([onlyAdmin(inv), onlyValidAddress(registrarAddress), onlyValidAddress(collectorAddress), onlyPositiveInt(bidDuration, "Bid duration"), onlyPositiveInt(revealDuration, "Reveal duration"), onlyPositiveInt(errorFee, "Error fee"), onlyPositiveInt(minimalBid, "Minimal bid"), onlyPositiveInt(percentRate, "Percent rate"), if ((nameMinimalLength > 3))
235+func init (timestamp,bidDuration,revealDuration,errorFee,minimalBid,registrarAddress,nameMinimalLength,percentRate,collectorAddress) = valueOrElse(modifiers([onlyAdmin(inv), if (!(isDefined(getInteger(this, key_initTimestamp))))
236+ then unit
237+ else throw("Auction already has been initialized"), onlyValidAddress(registrarAddress), onlyValidAddress(collectorAddress), onlyPositiveInt(bidDuration, "Bid duration"), onlyPositiveInt(revealDuration, "Reveal duration"), onlyPositiveInt(errorFee, "Error fee"), onlyPositiveInt(minimalBid, "Minimal bid"), onlyPositiveInt(percentRate, "Percent rate"), if ((nameMinimalLength > 3))
235238 then unit
236239 else throw("Minimal name length must be more than 3")]), [IntegerEntry(key_initTimestamp, timestamp), IntegerEntry(key_bidDuration, bidDuration), IntegerEntry(key_revealDuration, revealDuration), IntegerEntry(key_errorFee, errorFee), IntegerEntry(key_minimalBid, minimalBid), StringEntry(key_registrarAddress, registrarAddress), IntegerEntry(key_nameMinimalLength, nameMinimalLength), IntegerEntry(key_percentRate, percentRate), StringEntry(key_collectorAddress, collectorAddress)])
237240
238241
239242
240243 @Callable(inv)
241244 func getAuctionById (auctionId) = $Tuple2(nil, _getAuctionById(auctionId))
242245
243246
244247
245248 @Callable(inv)
246249 func isAvailable (name) = $Tuple2(nil, isAvailableName(name))
247250
248251
249252
250253 @Callable(inv)
251254 func bidWithReferrer (auctionId,hash,referrerName) = valueOrElse(modifiers([if (isDefined(getString(this, key_referrerAddress(referrerName))))
252255 then unit
253256 else throw((("Referrer `" + referrerName) + "` not found"))]), {
254257 let bid = _bid(inv, auctionId, hash)
255258 let commitBidReferrer = [StringEntry(key_referrer(key_bidderHash(toString(auctionId), toString(inv.caller), hash)), referrerName)]
256259 (bid ++ commitBidReferrer)
257260 })
258261
259262
260263
261264 @Callable(inv)
262265 func bid (auctionId,hash) = _bid(inv, auctionId, hash)
263266
264267
265268
266269 @Callable(inv)
267270 func reveal (auctionId,name,bidAmount,secret) = {
268271 let caller = inv.caller
269272 let callerAddress = toString(caller)
270273 let hash = calcHash(name, bidAmount, callerAddress, secret)
271274 let bidderHashKey = key_bidderHash(toString(auctionId), callerAddress, hash)
272275 let revealKey = key_reveal(bidderHashKey)
273- let $t092299286 = getAuctionPhase()
274- let currentAuctionId = $t092299286._1
275- let currentPeriod = $t092299286._2
276+ let $t093159372 = getAuctionPhase()
277+ let currentAuctionId = $t093159372._1
278+ let currentPeriod = $t093159372._2
276279 if ((currentAuctionId != auctionId))
277280 then throw("Auctions is already over")
278281 else if ((currentPeriod != PHASE_REVEAL))
279282 then throw("Reveal period is over")
280283 else if (isDefined(getString(this, revealKey)))
281284 then throw("Bid is already revealed")
282285 else {
283286 let bidKey = key_bid(bidderHashKey)
284287 let deposit = valueOrErrorMessage(getInteger(this, bidKey), ("Bid doesn't exists " + hash))
285288 let topKey = key_top(name)
286289 let topKeyData = getString(this, topKey)
287290 let isValidBid = if (if ((bidAmount >= minimalBid))
288291 then (deposit >= bidAmount)
289292 else false)
290293 then isAvailableName(name)
291294 else false
292295 let revealedBid = [StringEntry(revealKey, ((((toString(deposit) + ",") + toString(bidAmount)) + ",") + name))]
293296 if (!(isValidBid))
294297 then {
295298 let feeAmount = fraction(deposit, 10, 100)
296299 let returnDepositWithoutFeeAndDeleteBid = [ScriptTransfer(caller, (deposit - feeAmount), unit), ScriptTransfer(collector, feeAmount, unit), DeleteEntry(bidKey)]
297300 returnDepositWithoutFeeAndDeleteBid
298301 }
299302 else if (isDefined(topKeyData))
300303 then {
301- let $t01045610636 = {
304+ let $t01054210722 = {
302305 let topValues = split(value(topKeyData), ",")
303306 $Tuple2(topValues[0], parseIntValue(topValues[1]))
304307 }
305- let topRevealKey = $t01045610636._1
306- let secondTopBidAmount = $t01045610636._2
308+ let topRevealKey = $t01054210722._1
309+ let secondTopBidAmount = $t01054210722._2
307310 let revealedData = value(getString(this, topRevealKey))
308311 let topBidAmount = parseIntValue(split(revealedData, ",")[1])
309- let $t01080511105 = if ((bidAmount > topBidAmount))
312+ let $t01089111191 = if ((bidAmount > topBidAmount))
310313 then $Tuple2(revealKey, topBidAmount)
311314 else if ((bidAmount > secondTopBidAmount))
312315 then $Tuple2(topRevealKey, bidAmount)
313316 else $Tuple2(unit, unit)
314- let newTopRevealKey = $t01080511105._1
315- let newSecondBidAmount = $t01080511105._2
317+ let newTopRevealKey = $t01089111191._1
318+ let newSecondBidAmount = $t01089111191._2
316319 let updateTopKey = match $Tuple2(newTopRevealKey, newSecondBidAmount) {
317320 case newTopData: (String, Int) =>
318321 [StringEntry(topKey, ((newTopData._1 + ",") + toString(newTopData._2)))]
319322 case _ =>
320323 nil
321324 }
322325 (revealedBid ++ updateTopKey)
323326 }
324327 else {
325328 let newTopBidder = [StringEntry(topKey, ((revealKey + ",") + toString(minimalBid)))]
326329 (revealedBid ++ newTopBidder)
327330 }
328331 }
329332 }
330333
331334
332335
333336 @Callable(inv)
334337 func finalize (auctionId,hashes) = {
335338 let auctionEnd = _getAuctionById(auctionId)._5
336339 let err = if ((lastBlock.timestamp > auctionEnd))
337340 then unit
338341 else throw("Cannot finalize auction that has not ended")
339342 if ((err == err))
340343 then {
341344 let caller = inv.caller
342345 let callerAddress = toString(caller)
343346 func foldRefund (acc,hash) = {
344347 let bidderHashKey = key_bidderHash(toString(auctionId), callerAddress, hash)
345348 let bidKey = key_bid(bidderHashKey)
346349 let revealKey = key_reveal(bidderHashKey)
347350 let revealedBid = getString(this, revealKey)
348- let $t01223712538 = {
351+ let $t01232312624 = {
349352 let bidValues = split(valueOrErrorMessage(revealedBid, (("Bid with hash " + hash) + " not found")), ",")
350353 $Tuple3(parseIntValue(bidValues[0]), parseIntValue(bidValues[1]), bidValues[2])
351354 }
352- let deposit = $t01223712538._1
353- let bidAmount = $t01223712538._2
354- let name = $t01223712538._3
355+ let deposit = $t01232312624._1
356+ let bidAmount = $t01232312624._2
357+ let name = $t01232312624._3
355358 let topKey = key_top(name)
356359 let topKeyData = getString(this, topKey)
357- let $t01263112799 = {
360+ let $t01271712885 = {
358361 let topValues = split(value(topKeyData), ",")
359362 $Tuple2(topValues[0], parseIntValue(topValues[1]))
360363 }
361- let topRevealKey = $t01263112799._1
362- let secondTopBidAmount = $t01263112799._2
363- let $t01280912971 = {
364+ let topRevealKey = $t01271712885._1
365+ let secondTopBidAmount = $t01271712885._2
366+ let $t01289513057 = {
364367 let winnerInfo = split(topRevealKey, "_")
365368 $Tuple2(parseIntValue(winnerInfo[1]), winnerInfo[2])
366369 }
367- let winnerAuctionId = $t01280912971._1
368- let winnerAddress = $t01280912971._2
370+ let winnerAuctionId = $t01289513057._1
371+ let winnerAddress = $t01289513057._2
369372 let deleteEntries = [DeleteEntry(revealKey), DeleteEntry(bidKey)]
370373 let transferAndDeleteEntry = if ((topRevealKey == revealKey))
371374 then {
372- let referrerTransfer = _referrerPercentTransfer(bidderHashKey, secondTopBidAmount)
375+ let $t01325913360 = _referrerPercentTransfer(bidderHashKey, secondTopBidAmount)
376+ let referrerTransfer = $t01325913360._1
377+ let referrerPercent = $t01325913360._2
373378 let claimNft = invoke(registrar, "register", [name, winnerAddress, auctionEnd], nil)
374379 if ((claimNft == claimNft))
375380 then {
376- let transferDelta = [ScriptTransfer(caller, (deposit - secondTopBidAmount), unit), ScriptTransfer(collector, secondTopBidAmount, unit)]
381+ let transferDelta = [ScriptTransfer(caller, (deposit - secondTopBidAmount), unit), ScriptTransfer(collector, (secondTopBidAmount - referrerPercent), unit)]
377382 (referrerTransfer ++ transferDelta)
378383 }
379384 else throw("Strict value is not equal to itself.")
380385 }
381386 else [ScriptTransfer(caller, deposit, unit)]
382387 ((acc ++ deleteEntries) ++ transferAndDeleteEntry)
383388 }
384389
385390 let $l = hashes
386391 let $s = size($l)
387392 let $acc0 = nil
388393 func $f0_1 ($a,$i) = if (($i >= $s))
389394 then $a
390395 else foldRefund($a, $l[$i])
391396
392397 func $f0_2 ($a,$i) = if (($i >= $s))
393398 then $a
394399 else throw("List size exceeds 10")
395400
396401 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
397402 }
398403 else throw("Strict value is not equal to itself.")
399404 }
400405
401406
402407
403408 @Callable(inv)
404409 func addReferrer (referrerName,referrerAddress,percent) = valueOrElse(modifiers([onlyAdmin(inv), onlyValidAddress(referrerAddress), if (if ((percent > 0))
405410 then (100 > percent)
406411 else false)
407412 then unit
408413 else throw("Percent must be between 0 and 100"), if ((size(referrerName) > 0))
409414 then unit
410415 else throw("Referrer name cannot be empty")]), [StringEntry(key_referrerAddress(referrerName), referrerAddress), IntegerEntry(key_referrerPercent(referrerName), percent)])
411416
412417
413418
414419 @Callable(inv)
415420 func revokeBid (auctionId,hash) = {
416421 let caller = inv.caller
417422 let callerStr = toString(caller)
418423 let bidderHashKey = key_bidderHash(toString(auctionId), callerStr, hash)
419424 let bidKey = key_bid(bidderHashKey)
420425 let bid = getInteger(this, bidKey)
421- let $t01457114628 = getAuctionPhase()
422- let currentAuctionId = $t01457114628._1
423- let currentPeriod = $t01457114628._2
426+ let $t01469214749 = getAuctionPhase()
427+ let currentAuctionId = $t01469214749._1
428+ let currentPeriod = $t01469214749._2
424429 if ((currentAuctionId != auctionId))
425430 then throw("Auction is already over")
426431 else if ((currentPeriod != PHASE_BID))
427432 then throw("Bid period is already over")
428433 else if (!(isDefined(bid)))
429434 then throw((("Bid with " + hash) + " not found"))
430435 else [ScriptTransfer(caller, value(bid), unit), DeleteEntry(bidKey)]
431436 }
432437
433438

github/deemru/w8io/873ac7e 
67.09 ms