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:
Old | New | Differences | |
---|---|---|---|
107 | 107 | let ae = V(value(ad)) | |
108 | 108 | let af = ae._1 | |
109 | 109 | 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) | |
111 | 112 | } | |
112 | - | else nil | |
113 | + | else $Tuple2(nil, 0) | |
113 | 114 | } | |
114 | 115 | ||
115 | 116 | ||
116 | - | func | |
117 | + | func ai (m,aj,ak,al) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(aj)) + fromBase58String(ak)) + al)))) | |
117 | 118 | ||
118 | 119 | ||
119 | - | func | |
120 | + | func am (an) = unit | |
120 | 121 | ||
121 | 122 | ||
122 | - | func | |
123 | + | func ao (ap) = (ap.caller == this) | |
123 | 124 | ||
124 | 125 | ||
125 | - | func | |
126 | + | func aq (ap) = if (ao(ap)) | |
126 | 127 | then unit | |
127 | 128 | else throw("Permission denied") | |
128 | 129 | ||
129 | 130 | ||
130 | - | func | |
131 | + | func ar (j) = if (isDefined(addressFromString(j))) | |
131 | 132 | then unit | |
132 | 133 | else throw((j + " is not a valid address")) | |
133 | 134 | ||
134 | 135 | ||
135 | - | func | |
136 | + | func as (at,au) = if ((at > 0)) | |
136 | 137 | then unit | |
137 | - | else throw(( | |
138 | + | else throw((au + " must be greter than 0")) | |
138 | 139 | ||
139 | 140 | ||
140 | - | let | |
141 | + | let av = "BID" | |
141 | 142 | ||
142 | - | let | |
143 | + | let aw = "REVEAL" | |
143 | 144 | ||
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) | |
158 | 153 | } | |
159 | 154 | ||
160 | 155 | ||
161 | 156 | 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)")) | |
164 | 165 | then { | |
165 | - | let | |
166 | - | let s = | |
167 | - | let | |
168 | - | $Tuple2(s, | |
166 | + | let aF = aE | |
167 | + | let s = aF._1 | |
168 | + | let aB = aF._2 | |
169 | + | $Tuple2(s, aB) | |
169 | 170 | } | |
170 | 171 | else throw("Invalid auction info") | |
171 | 172 | } | |
172 | 173 | ||
173 | 174 | ||
174 | - | func | |
175 | - | let | |
176 | - | let | |
177 | - | if ($isInstanceOf( | |
175 | + | func aG (m) = { | |
176 | + | let aH = { | |
177 | + | let aE = invoke(S, "isValid", [m], nil) | |
178 | + | if ($isInstanceOf(aE, "Boolean")) | |
178 | 179 | then { | |
179 | - | let | |
180 | - | | |
180 | + | let aI = aE | |
181 | + | aI | |
181 | 182 | } | |
182 | 183 | else throw("Unsupported result format (available)") | |
183 | 184 | } | |
184 | - | if ( | |
185 | + | if (aH) | |
185 | 186 | then (size(m) >= P) | |
186 | 187 | else false | |
187 | 188 | } | |
188 | 189 | ||
189 | 190 | ||
190 | - | func | |
191 | - | let | |
192 | - | if ($isInstanceOf( | |
191 | + | func aJ (m) = { | |
192 | + | let aE = invoke(S, "isAvailable", [m], nil) | |
193 | + | if ($isInstanceOf(aE, "Boolean")) | |
193 | 194 | then { | |
194 | - | let | |
195 | - | | |
195 | + | let aI = aE | |
196 | + | aI | |
196 | 197 | } | |
197 | 198 | else throw("Unsupported result format (available)") | |
198 | 199 | } | |
199 | 200 | ||
200 | 201 | ||
201 | - | func | |
202 | - | let | |
203 | - | if (!(isDefined( | |
202 | + | func aK (m) = { | |
203 | + | let aL = getString(this, p(m)) | |
204 | + | if (!(isDefined(aL))) | |
204 | 205 | then true | |
205 | 206 | else { | |
206 | - | let | |
207 | - | let | |
208 | - | let s = k( | |
209 | - | (s == | |
207 | + | let aM = aD()._1 | |
208 | + | let aN = split(value(aL), "_")[1] | |
209 | + | let s = k(aN, 0) | |
210 | + | (s == aM) | |
210 | 211 | } | |
211 | 212 | } | |
212 | 213 | ||
213 | 214 | ||
214 | - | func | |
215 | - | then | |
215 | + | func aO (m) = if (if (aJ(m)) | |
216 | + | then aK(m) | |
216 | 217 | else false) | |
217 | - | then | |
218 | + | then aG(m) | |
218 | 219 | else false | |
219 | 220 | ||
220 | 221 | ||
221 | - | func | |
222 | - | let | |
223 | - | then ( | |
222 | + | func aP (ap,s,t) = { | |
223 | + | let aQ = if (if ((size(ap.payments) == 1)) | |
224 | + | then (ap.payments[0].assetId == unit) | |
224 | 225 | else false) | |
225 | - | then | |
226 | + | then ap.payments[0].amount | |
226 | 227 | else throw("Single payment required") | |
227 | - | let | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
232 | - | if (( | |
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)) | |
233 | 234 | then throw("Auctions is already over") | |
234 | - | else if (( | |
235 | + | else if ((aV != av)) | |
235 | 236 | then throw("Bid period is over") | |
236 | - | else if (isDefined(getInteger(this, | |
237 | + | else if (isDefined(getInteger(this, aS))) | |
237 | 238 | then throw("Bid with exact amount already presented") | |
238 | - | else [IntegerEntry( | |
239 | + | else [IntegerEntry(aS, aQ)] | |
239 | 240 | } | |
240 | 241 | ||
241 | 242 | ||
242 | - | @Callable( | |
243 | - | func init ( | |
243 | + | @Callable(ap) | |
244 | + | func init (aW,K,L,N,O,R,P,Q,T) = valueOrElse(am([aq(ap), if (!(isDefined(getInteger(this, A)))) | |
244 | 245 | 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)]) | |
246 | 249 | ||
247 | 250 | ||
248 | 251 | ||
249 | - | @Callable( | |
250 | - | func getAuctionById (s) = $Tuple2(nil, | |
252 | + | @Callable(ap) | |
253 | + | func getAuctionById (s) = $Tuple2(nil, ax(s)) | |
251 | 254 | ||
252 | 255 | ||
253 | 256 | ||
254 | - | @Callable( | |
255 | - | func isAvailable (m) = $Tuple2(nil, | |
257 | + | @Callable(ap) | |
258 | + | func isAvailable (m) = $Tuple2(nil, aO(m)) | |
256 | 259 | ||
257 | 260 | ||
258 | 261 | ||
259 | - | @Callable( | |
260 | - | func bidWithReferrer (s,t,W) = valueOrElse( | |
262 | + | @Callable(ap) | |
263 | + | func bidWithReferrer (s,t,W) = valueOrElse(am([if (isDefined(getString(this, y(W)))) | |
261 | 264 | then unit | |
262 | 265 | else throw((("Referrer `" + W) + "` not found"))]), { | |
263 | - | let | |
264 | - | let | |
265 | - | ( | |
266 | + | let aX = aP(ap, s, t) | |
267 | + | let aY = [StringEntry(x(r(toString(s), toString(ap.caller), t)), W)] | |
268 | + | (aX ++ aY) | |
266 | 269 | }) | |
267 | 270 | ||
268 | 271 | ||
269 | 272 | ||
270 | - | @Callable( | |
271 | - | func bid (s,t) = | |
273 | + | @Callable(ap) | |
274 | + | func bid (s,t) = aP(ap, s, t) | |
272 | 275 | ||
273 | 276 | ||
274 | 277 | ||
275 | - | @Callable( | |
276 | - | func reveal (s,m,ab, | |
277 | - | let | |
278 | - | let | |
279 | - | let t = | |
280 | - | let aa = r(toString(s), | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | if (( | |
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)) | |
286 | 289 | then throw("Auctions is already over") | |
287 | - | else if (( | |
290 | + | else if ((aV != aw)) | |
288 | 291 | then throw("Reveal period is over") | |
289 | - | else if (isDefined(getString(this, | |
292 | + | else if (isDefined(getString(this, aL))) | |
290 | 293 | then throw("Bid is already revealed") | |
291 | 294 | else { | |
292 | - | let | |
293 | - | let | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | then ( | |
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) | |
298 | 301 | else false) | |
299 | - | then | |
302 | + | then aO(m) | |
300 | 303 | else false | |
301 | - | let | |
302 | - | if (!( | |
304 | + | let bf = [StringEntry(aL, ((((toString(bb) + ",") + toString(ab)) + ",") + m))] | |
305 | + | if (!(be)) | |
303 | 306 | then { | |
304 | - | let | |
305 | - | let | |
306 | - | | |
307 | + | let bg = fraction(bb, 10, 100) | |
308 | + | let bh = [ScriptTransfer(aZ, (bb - bg), unit), ScriptTransfer(U, bg, unit), DeleteEntry(aS)] | |
309 | + | bh | |
307 | 310 | } | |
308 | - | else if (isDefined( | |
311 | + | else if (isDefined(bd)) | |
309 | 312 | then { | |
310 | - | let | |
311 | - | let | |
312 | - | $Tuple2( | |
313 | + | let bi = { | |
314 | + | let bj = split(value(bd), ",") | |
315 | + | $Tuple2(bj[0], parseIntValue(bj[1])) | |
313 | 316 | } | |
314 | - | let | |
315 | - | let | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | then $Tuple2( | |
320 | - | else if ((ab > | |
321 | - | then $Tuple2( | |
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) | |
322 | 325 | else $Tuple2(unit, unit) | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | if ($isInstanceOf( | |
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)")) | |
328 | 331 | then { | |
329 | - | let | |
330 | - | [StringEntry( | |
332 | + | let bs = aE | |
333 | + | [StringEntry(bc, ((bs._1 + ",") + toString(bs._2)))] | |
331 | 334 | } | |
332 | 335 | else nil | |
333 | 336 | } | |
334 | - | ( | |
337 | + | (bf ++ br) | |
335 | 338 | } | |
336 | 339 | else { | |
337 | - | let | |
338 | - | ( | |
340 | + | let bt = [StringEntry(bc, ((aL + ",") + toString(O)))] | |
341 | + | (bf ++ bt) | |
339 | 342 | } | |
340 | 343 | } | |
341 | 344 | } | |
342 | 345 | ||
343 | 346 | ||
344 | 347 | ||
345 | - | @Callable( | |
346 | - | func finalize (s, | |
347 | - | let | |
348 | - | let | |
348 | + | @Callable(ap) | |
349 | + | func finalize (s,bu) = { | |
350 | + | let aA = ax(s)._5 | |
351 | + | let bv = if ((lastBlock.timestamp > aA)) | |
349 | 352 | then unit | |
350 | 353 | else throw("Cannot finalize auction that has not ended") | |
351 | - | if (( | |
354 | + | if ((bv == bv)) | |
352 | 355 | then { | |
353 | - | let | |
354 | - | let | |
355 | - | func | |
356 | - | let aa = r(toString(s), | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | $Tuple3(parseIntValue( | |
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]) | |
363 | 366 | } | |
364 | - | let | |
365 | - | let ab = | |
366 | - | let m = | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | $Tuple2( | |
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])) | |
372 | 375 | } | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | $Tuple2(parseIntValue( | |
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]) | |
378 | 381 | } | |
379 | - | let | |
380 | - | let | |
381 | - | let | |
382 | - | let | |
382 | + | let bD = bB._1 | |
383 | + | let bE = bB._2 | |
384 | + | let bF = [DeleteEntry(aL), DeleteEntry(aS)] | |
385 | + | let bG = if ((bk == aL)) | |
383 | 386 | 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)) | |
387 | 392 | then { | |
388 | - | let | |
389 | - | ( | |
393 | + | let bK = [ScriptTransfer(aZ, (bb - bl), unit), ScriptTransfer(U, (bl - ag), unit)] | |
394 | + | (bI ++ bK) | |
390 | 395 | } | |
391 | 396 | else throw("Strict value is not equal to itself.") | |
392 | 397 | } | |
393 | - | else [ScriptTransfer( | |
394 | - | (( | |
398 | + | else [ScriptTransfer(aZ, bb, unit)] | |
399 | + | ((bx ++ bF) ++ bG) | |
395 | 400 | } | |
396 | 401 | ||
397 | - | let | |
398 | - | let | |
399 | - | let | |
400 | - | func | |
401 | - | then | |
402 | - | else | |
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]) | |
403 | 408 | ||
404 | - | func | |
405 | - | then | |
409 | + | func bR (bP,bQ) = if ((bQ >= bM)) | |
410 | + | then bP | |
406 | 411 | else throw("List size exceeds 10") | |
407 | 412 | ||
408 | - | | |
413 | + | bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
409 | 414 | } | |
410 | 415 | else throw("Strict value is not equal to itself.") | |
411 | 416 | } | |
412 | 417 | ||
413 | 418 | ||
414 | 419 | ||
415 | - | @Callable( | |
416 | - | func addReferrer (W, | |
417 | - | then (100 > | |
420 | + | @Callable(ap) | |
421 | + | func addReferrer (W,bS,bT) = valueOrElse(am([aq(ap), ar(bS), if (if ((bT > 0)) | |
422 | + | then (100 > bT) | |
418 | 423 | else false) | |
419 | 424 | then unit | |
420 | 425 | else throw("Percent must be between 0 and 100"), if ((size(W) > 0)) | |
421 | 426 | then unit | |
422 | - | else throw("Referrer name cannot be empty")]), [StringEntry(y(W), | |
427 | + | else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bS), IntegerEntry(z(W), bT)]) | |
423 | 428 | ||
424 | 429 | ||
425 | 430 | ||
426 | - | @Callable( | |
431 | + | @Callable(ap) | |
427 | 432 | func revokeBid (s,t) = { | |
428 | - | let | |
429 | - | let | |
430 | - | let aa = r(toString(s), | |
431 | - | let | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | let | |
436 | - | if (( | |
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)) | |
437 | 442 | then throw("Auction is already over") | |
438 | - | else if (( | |
443 | + | else if ((aV != av)) | |
439 | 444 | then throw("Bid period is already over") | |
440 | - | else if (!(isDefined( | |
445 | + | else if (!(isDefined(aX))) | |
441 | 446 | then throw((("Bid with " + t) + " not found")) | |
442 | - | else [ScriptTransfer( | |
447 | + | else [ScriptTransfer(aZ, value(aX), unit), DeleteEntry(aS)] | |
443 | 448 | } | |
444 | 449 | ||
445 | 450 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | func a (b,c) = valueOrErrorMessage(getInteger(b, c), ((("Can't read '" + c) + "' at address ") + toString(b))) | |
5 | 5 | ||
6 | 6 | ||
7 | 7 | func d (b,c) = valueOrErrorMessage(getString(b, c), ((("Can't read '" + c) + "' at address ") + toString(b))) | |
8 | 8 | ||
9 | 9 | ||
10 | 10 | func e (b,c,f) = valueOrElse(getInteger(b, c), f) | |
11 | 11 | ||
12 | 12 | ||
13 | 13 | func g (h) = valueOrErrorMessage(parseInt(h), (("Can't parse integer from '" + h) + "'")) | |
14 | 14 | ||
15 | 15 | ||
16 | 16 | func i (j) = valueOrErrorMessage(addressFromString(j), (("Can't parse address from '" + j) + "'")) | |
17 | 17 | ||
18 | 18 | ||
19 | 19 | func k (h,f) = valueOrElse(parseInt(h), f) | |
20 | 20 | ||
21 | 21 | ||
22 | 22 | func l (m,n,o) = ((((m + "_") + n) + "_") + o) | |
23 | 23 | ||
24 | 24 | ||
25 | 25 | func p (m) = ("Top_" + m) | |
26 | 26 | ||
27 | 27 | ||
28 | 28 | func q (m) = ("Top2_" + m) | |
29 | 29 | ||
30 | 30 | ||
31 | 31 | func r (s,b,t) = ((((s + "_") + b) + "_") + t) | |
32 | 32 | ||
33 | 33 | ||
34 | 34 | func u (v) = ("Bid_" + v) | |
35 | 35 | ||
36 | 36 | ||
37 | 37 | func w (v) = ("Reveal_" + v) | |
38 | 38 | ||
39 | 39 | ||
40 | 40 | func x (v) = ("Referrer_" + v) | |
41 | 41 | ||
42 | 42 | ||
43 | 43 | func y (m) = (("Referrer_" + m) + "_address") | |
44 | 44 | ||
45 | 45 | ||
46 | 46 | func z (m) = (("Referrer_" + m) + "_percent") | |
47 | 47 | ||
48 | 48 | ||
49 | 49 | let A = "initTimestamp" | |
50 | 50 | ||
51 | 51 | let B = "bidDuration" | |
52 | 52 | ||
53 | 53 | let C = "revealDuration" | |
54 | 54 | ||
55 | 55 | let D = "errorFee" | |
56 | 56 | ||
57 | 57 | let E = "minimalBid" | |
58 | 58 | ||
59 | 59 | let F = "registrarAddress" | |
60 | 60 | ||
61 | 61 | let G = "nameMinimalLength" | |
62 | 62 | ||
63 | 63 | let H = "percentRate" | |
64 | 64 | ||
65 | 65 | let I = "collectorAddress" | |
66 | 66 | ||
67 | 67 | let J = a(this, A) | |
68 | 68 | ||
69 | 69 | let K = a(this, B) | |
70 | 70 | ||
71 | 71 | let L = a(this, C) | |
72 | 72 | ||
73 | 73 | let M = (K + L) | |
74 | 74 | ||
75 | 75 | let N = a(this, D) | |
76 | 76 | ||
77 | 77 | let O = a(this, E) | |
78 | 78 | ||
79 | 79 | let P = a(this, G) | |
80 | 80 | ||
81 | 81 | let Q = a(this, H) | |
82 | 82 | ||
83 | 83 | let R = d(this, F) | |
84 | 84 | ||
85 | 85 | let S = i(R) | |
86 | 86 | ||
87 | 87 | let T = d(this, I) | |
88 | 88 | ||
89 | 89 | let U = i(T) | |
90 | 90 | ||
91 | 91 | func V (W) = { | |
92 | 92 | let X = i(d(this, y(W))) | |
93 | 93 | let Y = valueOrElse(getInteger(this, z(W)), Q) | |
94 | 94 | if (if ((0 > Y)) | |
95 | 95 | then true | |
96 | 96 | else (Y > 100)) | |
97 | 97 | then throw("Incorrect percent rate") | |
98 | 98 | else $Tuple2(X, Y) | |
99 | 99 | } | |
100 | 100 | ||
101 | 101 | ||
102 | 102 | func Z (aa,ab) = { | |
103 | 103 | let ac = x(aa) | |
104 | 104 | let ad = getString(this, ac) | |
105 | 105 | if (isDefined(ad)) | |
106 | 106 | then { | |
107 | 107 | let ae = V(value(ad)) | |
108 | 108 | let af = ae._1 | |
109 | 109 | 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) | |
111 | 112 | } | |
112 | - | else nil | |
113 | + | else $Tuple2(nil, 0) | |
113 | 114 | } | |
114 | 115 | ||
115 | 116 | ||
116 | - | func | |
117 | + | func ai (m,aj,ak,al) = toBase58String(blake2b256_16Kb(keccak256_16Kb((((toBytes(m) + toBytes(aj)) + fromBase58String(ak)) + al)))) | |
117 | 118 | ||
118 | 119 | ||
119 | - | func | |
120 | + | func am (an) = unit | |
120 | 121 | ||
121 | 122 | ||
122 | - | func | |
123 | + | func ao (ap) = (ap.caller == this) | |
123 | 124 | ||
124 | 125 | ||
125 | - | func | |
126 | + | func aq (ap) = if (ao(ap)) | |
126 | 127 | then unit | |
127 | 128 | else throw("Permission denied") | |
128 | 129 | ||
129 | 130 | ||
130 | - | func | |
131 | + | func ar (j) = if (isDefined(addressFromString(j))) | |
131 | 132 | then unit | |
132 | 133 | else throw((j + " is not a valid address")) | |
133 | 134 | ||
134 | 135 | ||
135 | - | func | |
136 | + | func as (at,au) = if ((at > 0)) | |
136 | 137 | then unit | |
137 | - | else throw(( | |
138 | + | else throw((au + " must be greter than 0")) | |
138 | 139 | ||
139 | 140 | ||
140 | - | let | |
141 | + | let av = "BID" | |
141 | 142 | ||
142 | - | let | |
143 | + | let aw = "REVEAL" | |
143 | 144 | ||
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) | |
158 | 153 | } | |
159 | 154 | ||
160 | 155 | ||
161 | 156 | 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)")) | |
164 | 165 | then { | |
165 | - | let | |
166 | - | let s = | |
167 | - | let | |
168 | - | $Tuple2(s, | |
166 | + | let aF = aE | |
167 | + | let s = aF._1 | |
168 | + | let aB = aF._2 | |
169 | + | $Tuple2(s, aB) | |
169 | 170 | } | |
170 | 171 | else throw("Invalid auction info") | |
171 | 172 | } | |
172 | 173 | ||
173 | 174 | ||
174 | - | func | |
175 | - | let | |
176 | - | let | |
177 | - | if ($isInstanceOf( | |
175 | + | func aG (m) = { | |
176 | + | let aH = { | |
177 | + | let aE = invoke(S, "isValid", [m], nil) | |
178 | + | if ($isInstanceOf(aE, "Boolean")) | |
178 | 179 | then { | |
179 | - | let | |
180 | - | | |
180 | + | let aI = aE | |
181 | + | aI | |
181 | 182 | } | |
182 | 183 | else throw("Unsupported result format (available)") | |
183 | 184 | } | |
184 | - | if ( | |
185 | + | if (aH) | |
185 | 186 | then (size(m) >= P) | |
186 | 187 | else false | |
187 | 188 | } | |
188 | 189 | ||
189 | 190 | ||
190 | - | func | |
191 | - | let | |
192 | - | if ($isInstanceOf( | |
191 | + | func aJ (m) = { | |
192 | + | let aE = invoke(S, "isAvailable", [m], nil) | |
193 | + | if ($isInstanceOf(aE, "Boolean")) | |
193 | 194 | then { | |
194 | - | let | |
195 | - | | |
195 | + | let aI = aE | |
196 | + | aI | |
196 | 197 | } | |
197 | 198 | else throw("Unsupported result format (available)") | |
198 | 199 | } | |
199 | 200 | ||
200 | 201 | ||
201 | - | func | |
202 | - | let | |
203 | - | if (!(isDefined( | |
202 | + | func aK (m) = { | |
203 | + | let aL = getString(this, p(m)) | |
204 | + | if (!(isDefined(aL))) | |
204 | 205 | then true | |
205 | 206 | else { | |
206 | - | let | |
207 | - | let | |
208 | - | let s = k( | |
209 | - | (s == | |
207 | + | let aM = aD()._1 | |
208 | + | let aN = split(value(aL), "_")[1] | |
209 | + | let s = k(aN, 0) | |
210 | + | (s == aM) | |
210 | 211 | } | |
211 | 212 | } | |
212 | 213 | ||
213 | 214 | ||
214 | - | func | |
215 | - | then | |
215 | + | func aO (m) = if (if (aJ(m)) | |
216 | + | then aK(m) | |
216 | 217 | else false) | |
217 | - | then | |
218 | + | then aG(m) | |
218 | 219 | else false | |
219 | 220 | ||
220 | 221 | ||
221 | - | func | |
222 | - | let | |
223 | - | then ( | |
222 | + | func aP (ap,s,t) = { | |
223 | + | let aQ = if (if ((size(ap.payments) == 1)) | |
224 | + | then (ap.payments[0].assetId == unit) | |
224 | 225 | else false) | |
225 | - | then | |
226 | + | then ap.payments[0].amount | |
226 | 227 | else throw("Single payment required") | |
227 | - | let | |
228 | - | let | |
229 | - | let | |
230 | - | let | |
231 | - | let | |
232 | - | if (( | |
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)) | |
233 | 234 | then throw("Auctions is already over") | |
234 | - | else if (( | |
235 | + | else if ((aV != av)) | |
235 | 236 | then throw("Bid period is over") | |
236 | - | else if (isDefined(getInteger(this, | |
237 | + | else if (isDefined(getInteger(this, aS))) | |
237 | 238 | then throw("Bid with exact amount already presented") | |
238 | - | else [IntegerEntry( | |
239 | + | else [IntegerEntry(aS, aQ)] | |
239 | 240 | } | |
240 | 241 | ||
241 | 242 | ||
242 | - | @Callable( | |
243 | - | func init ( | |
243 | + | @Callable(ap) | |
244 | + | func init (aW,K,L,N,O,R,P,Q,T) = valueOrElse(am([aq(ap), if (!(isDefined(getInteger(this, A)))) | |
244 | 245 | 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)]) | |
246 | 249 | ||
247 | 250 | ||
248 | 251 | ||
249 | - | @Callable( | |
250 | - | func getAuctionById (s) = $Tuple2(nil, | |
252 | + | @Callable(ap) | |
253 | + | func getAuctionById (s) = $Tuple2(nil, ax(s)) | |
251 | 254 | ||
252 | 255 | ||
253 | 256 | ||
254 | - | @Callable( | |
255 | - | func isAvailable (m) = $Tuple2(nil, | |
257 | + | @Callable(ap) | |
258 | + | func isAvailable (m) = $Tuple2(nil, aO(m)) | |
256 | 259 | ||
257 | 260 | ||
258 | 261 | ||
259 | - | @Callable( | |
260 | - | func bidWithReferrer (s,t,W) = valueOrElse( | |
262 | + | @Callable(ap) | |
263 | + | func bidWithReferrer (s,t,W) = valueOrElse(am([if (isDefined(getString(this, y(W)))) | |
261 | 264 | then unit | |
262 | 265 | else throw((("Referrer `" + W) + "` not found"))]), { | |
263 | - | let | |
264 | - | let | |
265 | - | ( | |
266 | + | let aX = aP(ap, s, t) | |
267 | + | let aY = [StringEntry(x(r(toString(s), toString(ap.caller), t)), W)] | |
268 | + | (aX ++ aY) | |
266 | 269 | }) | |
267 | 270 | ||
268 | 271 | ||
269 | 272 | ||
270 | - | @Callable( | |
271 | - | func bid (s,t) = | |
273 | + | @Callable(ap) | |
274 | + | func bid (s,t) = aP(ap, s, t) | |
272 | 275 | ||
273 | 276 | ||
274 | 277 | ||
275 | - | @Callable( | |
276 | - | func reveal (s,m,ab, | |
277 | - | let | |
278 | - | let | |
279 | - | let t = | |
280 | - | let aa = r(toString(s), | |
281 | - | let | |
282 | - | let | |
283 | - | let | |
284 | - | let | |
285 | - | if (( | |
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)) | |
286 | 289 | then throw("Auctions is already over") | |
287 | - | else if (( | |
290 | + | else if ((aV != aw)) | |
288 | 291 | then throw("Reveal period is over") | |
289 | - | else if (isDefined(getString(this, | |
292 | + | else if (isDefined(getString(this, aL))) | |
290 | 293 | then throw("Bid is already revealed") | |
291 | 294 | else { | |
292 | - | let | |
293 | - | let | |
294 | - | let | |
295 | - | let | |
296 | - | let | |
297 | - | then ( | |
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) | |
298 | 301 | else false) | |
299 | - | then | |
302 | + | then aO(m) | |
300 | 303 | else false | |
301 | - | let | |
302 | - | if (!( | |
304 | + | let bf = [StringEntry(aL, ((((toString(bb) + ",") + toString(ab)) + ",") + m))] | |
305 | + | if (!(be)) | |
303 | 306 | then { | |
304 | - | let | |
305 | - | let | |
306 | - | | |
307 | + | let bg = fraction(bb, 10, 100) | |
308 | + | let bh = [ScriptTransfer(aZ, (bb - bg), unit), ScriptTransfer(U, bg, unit), DeleteEntry(aS)] | |
309 | + | bh | |
307 | 310 | } | |
308 | - | else if (isDefined( | |
311 | + | else if (isDefined(bd)) | |
309 | 312 | then { | |
310 | - | let | |
311 | - | let | |
312 | - | $Tuple2( | |
313 | + | let bi = { | |
314 | + | let bj = split(value(bd), ",") | |
315 | + | $Tuple2(bj[0], parseIntValue(bj[1])) | |
313 | 316 | } | |
314 | - | let | |
315 | - | let | |
316 | - | let | |
317 | - | let | |
318 | - | let | |
319 | - | then $Tuple2( | |
320 | - | else if ((ab > | |
321 | - | then $Tuple2( | |
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) | |
322 | 325 | else $Tuple2(unit, unit) | |
323 | - | let | |
324 | - | let | |
325 | - | let | |
326 | - | let | |
327 | - | if ($isInstanceOf( | |
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)")) | |
328 | 331 | then { | |
329 | - | let | |
330 | - | [StringEntry( | |
332 | + | let bs = aE | |
333 | + | [StringEntry(bc, ((bs._1 + ",") + toString(bs._2)))] | |
331 | 334 | } | |
332 | 335 | else nil | |
333 | 336 | } | |
334 | - | ( | |
337 | + | (bf ++ br) | |
335 | 338 | } | |
336 | 339 | else { | |
337 | - | let | |
338 | - | ( | |
340 | + | let bt = [StringEntry(bc, ((aL + ",") + toString(O)))] | |
341 | + | (bf ++ bt) | |
339 | 342 | } | |
340 | 343 | } | |
341 | 344 | } | |
342 | 345 | ||
343 | 346 | ||
344 | 347 | ||
345 | - | @Callable( | |
346 | - | func finalize (s, | |
347 | - | let | |
348 | - | let | |
348 | + | @Callable(ap) | |
349 | + | func finalize (s,bu) = { | |
350 | + | let aA = ax(s)._5 | |
351 | + | let bv = if ((lastBlock.timestamp > aA)) | |
349 | 352 | then unit | |
350 | 353 | else throw("Cannot finalize auction that has not ended") | |
351 | - | if (( | |
354 | + | if ((bv == bv)) | |
352 | 355 | then { | |
353 | - | let | |
354 | - | let | |
355 | - | func | |
356 | - | let aa = r(toString(s), | |
357 | - | let | |
358 | - | let | |
359 | - | let | |
360 | - | let | |
361 | - | let | |
362 | - | $Tuple3(parseIntValue( | |
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]) | |
363 | 366 | } | |
364 | - | let | |
365 | - | let ab = | |
366 | - | let m = | |
367 | - | let | |
368 | - | let | |
369 | - | let | |
370 | - | let | |
371 | - | $Tuple2( | |
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])) | |
372 | 375 | } | |
373 | - | let | |
374 | - | let | |
375 | - | let | |
376 | - | let | |
377 | - | $Tuple2(parseIntValue( | |
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]) | |
378 | 381 | } | |
379 | - | let | |
380 | - | let | |
381 | - | let | |
382 | - | let | |
382 | + | let bD = bB._1 | |
383 | + | let bE = bB._2 | |
384 | + | let bF = [DeleteEntry(aL), DeleteEntry(aS)] | |
385 | + | let bG = if ((bk == aL)) | |
383 | 386 | 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)) | |
387 | 392 | then { | |
388 | - | let | |
389 | - | ( | |
393 | + | let bK = [ScriptTransfer(aZ, (bb - bl), unit), ScriptTransfer(U, (bl - ag), unit)] | |
394 | + | (bI ++ bK) | |
390 | 395 | } | |
391 | 396 | else throw("Strict value is not equal to itself.") | |
392 | 397 | } | |
393 | - | else [ScriptTransfer( | |
394 | - | (( | |
398 | + | else [ScriptTransfer(aZ, bb, unit)] | |
399 | + | ((bx ++ bF) ++ bG) | |
395 | 400 | } | |
396 | 401 | ||
397 | - | let | |
398 | - | let | |
399 | - | let | |
400 | - | func | |
401 | - | then | |
402 | - | else | |
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]) | |
403 | 408 | ||
404 | - | func | |
405 | - | then | |
409 | + | func bR (bP,bQ) = if ((bQ >= bM)) | |
410 | + | then bP | |
406 | 411 | else throw("List size exceeds 10") | |
407 | 412 | ||
408 | - | | |
413 | + | bR(bO(bO(bO(bO(bO(bO(bO(bO(bO(bO(bN, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10) | |
409 | 414 | } | |
410 | 415 | else throw("Strict value is not equal to itself.") | |
411 | 416 | } | |
412 | 417 | ||
413 | 418 | ||
414 | 419 | ||
415 | - | @Callable( | |
416 | - | func addReferrer (W, | |
417 | - | then (100 > | |
420 | + | @Callable(ap) | |
421 | + | func addReferrer (W,bS,bT) = valueOrElse(am([aq(ap), ar(bS), if (if ((bT > 0)) | |
422 | + | then (100 > bT) | |
418 | 423 | else false) | |
419 | 424 | then unit | |
420 | 425 | else throw("Percent must be between 0 and 100"), if ((size(W) > 0)) | |
421 | 426 | then unit | |
422 | - | else throw("Referrer name cannot be empty")]), [StringEntry(y(W), | |
427 | + | else throw("Referrer name cannot be empty")]), [StringEntry(y(W), bS), IntegerEntry(z(W), bT)]) | |
423 | 428 | ||
424 | 429 | ||
425 | 430 | ||
426 | - | @Callable( | |
431 | + | @Callable(ap) | |
427 | 432 | func revokeBid (s,t) = { | |
428 | - | let | |
429 | - | let | |
430 | - | let aa = r(toString(s), | |
431 | - | let | |
432 | - | let | |
433 | - | let | |
434 | - | let | |
435 | - | let | |
436 | - | if (( | |
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)) | |
437 | 442 | then throw("Auction is already over") | |
438 | - | else if (( | |
443 | + | else if ((aV != av)) | |
439 | 444 | then throw("Bid period is already over") | |
440 | - | else if (!(isDefined( | |
445 | + | else if (!(isDefined(aX))) | |
441 | 446 | then throw((("Bid with " + t) + " not found")) | |
442 | - | else [ScriptTransfer( | |
447 | + | else [ScriptTransfer(aZ, value(aX), unit), DeleteEntry(aS)] | |
443 | 448 | } | |
444 | 449 | ||
445 | 450 |
github/deemru/w8io/873ac7e 157.04 ms ◑