tx · 3SZdT4A2AC49CgBu4dTBX3PDi45nYYZyBdXn9YUUHVRv 3MyAmtzgWwsdDctVNZeBQKDE1PUB9K29tnt: -0.01000000 Waves 2022.01.12 13:45 [1875634] smart account 3MyAmtzgWwsdDctVNZeBQKDE1PUB9K29tnt > SELF 0.00000000 Waves
{ "type": 13, "id": "3SZdT4A2AC49CgBu4dTBX3PDi45nYYZyBdXn9YUUHVRv", "fee": 1000000, "feeAssetId": null, "timestamp": 1641984357453, "version": 2, "chainId": 84, "sender": "3MyAmtzgWwsdDctVNZeBQKDE1PUB9K29tnt", "senderPublicKey": "GoJhEU3wAAFfMr5FSQjxHee6nTBjhoQM4RWkkqHmPhgP", "proofs": [ "23eSGrJaYf9eXvjfFEi8kQ5RB9hgG8docPWjShe3fddA8WeQbbUWfDY1t1Lm3ecJVz7tEL7Hk616JnV1JXQ79yhK" ], "script": "base64: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dAUAAAAIZHVyYXRpb24FAAAAAWsFAAAAAWIFAAAAA25pbAEAAAAKU3RhdHNFbnRyeQAAAAQAAAAOdG90YWxMb2NrZWRJbmMAAAALZHVyYXRpb25JbmMAAAAMbG9ja0NvdW50SW5jAAAADXVzZXJzQ291bnRJbmMEAAAAGGxvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwkBAAAADGdldEludE9yWmVybwAAAAEJAQAAACBrZXlTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwAAAAAEAAAACmxvY2tzQ291bnQJAQAAAAxnZXRJbnRPclplcm8AAAABCQEAAAASa2V5U3RhdHNMb2Nrc0NvdW50AAAAAAQAAAAKdXNlcnNDb3VudAkBAAAADGdldEludE9yWmVybwAAAAEJAQAAABJrZXlTdGF0c1VzZXJzQ291bnQAAAAABAAAAAt0b3RhbEFtb3VudAkBAAAADGdldEludE9yWmVybwAAAAEJAQAAABdrZXlMb2NrUGFyYW1Ub3RhbEFtb3VudAAAAAAJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAACBrZXlTdGF0c0xvY2tzRHVyYXRpb25TdW1JbkJsb2NrcwAAAAAJAABkAAAAAgUAAAAYbG9ja3NEdXJhdGlvblN1bUluQmxvY2tzBQAAAAtkdXJhdGlvbkluYwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEmtleVN0YXRzTG9ja3NDb3VudAAAAAAJAABkAAAAAgUAAAAKbG9ja3NDb3VudAUAAAAMbG9ja0NvdW50SW5jCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASa2V5U3RhdHNVc2Vyc0NvdW50AAAAAAkAAGQAAAACBQAAAAp1c2Vyc0NvdW50BQAAAA11c2Vyc0NvdW50SW5jCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAXa2V5TG9ja1BhcmFtVG90YWxBbW91bnQAAAAACQAAZAAAAAIFAAAAC3RvdGFsQW1vdW50BQAAAA50b3RhbExvY2tlZEluYwUAAAADbmlsAQAAAA9Mb2NrUGFyYW1zRW50cnkAAAAHAAAAB3VzZXJOdW0AAAAGYW1vdW50AAAABXN0YXJ0AAAACGR1cmF0aW9uAAAAAWsAAAABYgAAAAZwZXJpb2QJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AAAAAQUAAAAHdXNlck51bQUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawAAAAEFAAAAB3VzZXJOdW0FAAAABXN0YXJ0CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAUa2V5TG9ja1BhcmFtRHVyYXRpb24AAAABBQAAAAd1c2VyTnVtBQAAAAhkdXJhdGlvbgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADWtleUxvY2tQYXJhbUsAAAABBQAAAAd1c2VyTnVtBQAAAAFrCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAANa2V5TG9ja1BhcmFtQgAAAAEFAAAAB3VzZXJOdW0FAAAAAWIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABVrZXlMb2NrUGFyYW1CeVBlcmlvZEsAAAACBQAAAAd1c2VyTnVtBQAAAAZwZXJpb2QFAAAAAWsJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABVrZXlMb2NrUGFyYW1CeVBlcmlvZEIAAAACBQAAAAd1c2VyTnVtBQAAAAZwZXJpb2QFAAAAAWIFAAAAA25pbAEAAAAPZ2V0UGFyYW1zT3JGYWlsAAAAAAQAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAEJAQAAABprZXlOZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAAAAAEAAAADWdOc2J0Q29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAABCQEAAAAXa2V5R05zYnRDb250cmFjdEFkZHJlc3MAAAAABAAAAAtib25kQXNzZXRJZAkAAlkAAAABCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAAMa2V5Qm9uZEFzc2V0AAAAAAQAAAANbWluTG9ja0Ftb3VudAkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAABBrZXlNaW5Mb2NrQW1vdW50AAAAAAQAAAAPbWluTG9ja0R1cmF0aW9uCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAAEmtleU1pbkxvY2tEdXJhdGlvbgAAAAAEAAAAD21heExvY2tEdXJhdGlvbgkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAABJrZXlNYXhMb2NrRHVyYXRpb24AAAAABAAAAAtuZXh0VXNlck51bQkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAAA5rZXlOZXh0VXNlck51bQAAAAAJAAUYAAAABgUAAAANZ05zYnRDb250cmFjdAUAAAALYm9uZEFzc2V0SWQFAAAADW1pbkxvY2tBbW91bnQFAAAAD21pbkxvY2tEdXJhdGlvbgUAAAAPbWF4TG9ja0R1cmF0aW9uBQAAAAtuZXh0VXNlck51bQEAAAAMaXNVc2VyRXhpc3RzAAAAAQAAAAt1c2VyQWRkcmVzcwkBAAAACWlzRGVmaW5lZAAAAAEJAAQaAAAAAgUAAAAEdGhpcwkBAAAAEmtleVVzZXIyTnVtTWFwcGluZwAAAAEFAAAAC3VzZXJBZGRyZXNzAQAAABNnZXRVc2VyUGFyYW1zT3JVbml0AAAAAQAAAAt1c2VyQWRkcmVzcwMJAQAAAAxpc1VzZXJFeGlzdHMAAAABBQAAAAt1c2VyQWRkcmVzcwQAAAAHdXNlck51bQkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAABJrZXlVc2VyMk51bU1hcHBpbmcAAAABBQAAAAt1c2VyQWRkcmVzcwkABRgAAAAGBQAAAAd1c2VyTnVtCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAAFmtleUxvY2tQYXJhbVVzZXJBbW91bnQAAAABBQAAAAd1c2VyTnVtCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAAFmtleUxvY2tQYXJhbVN0YXJ0QmxvY2sAAAABBQAAAAd1c2VyTnVtCQEAAAAMZ2V0SW50T3JGYWlsAAAAAQkBAAAAFGtleUxvY2tQYXJhbUR1cmF0aW9uAAAAAQUAAAAHdXNlck51bQkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAAA1rZXlMb2NrUGFyYW1LAAAAAQUAAAAHdXNlck51bQkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAAA1rZXlMb2NrUGFyYW1CAAAAAQUAAAAHdXNlck51bQUAAAAEdW5pdAEAAAATZ2V0VXNlclBhcmFtc09yRmFpbAAAAAEAAAALdXNlckFkZHJlc3MJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkBAAAAE2dldFVzZXJQYXJhbXNPclVuaXQAAAABBQAAAAt1c2VyQWRkcmVzcwkAASwAAAACCQABLAAAAAICAAAABVVzZXIgCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzAgAAAA8gaXMgbm90IGRlZmluZWQAAAAIAAAAAWkBAAAAC2NvbnN0cnVjdG9yAAAABQAAABduZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAAABRnTnNidENvbnRyYWN0QWRkcmVzcwAAAA1taW5Mb2NrQW1vdW50AAAAD21pbkxvY2tEdXJhdGlvbgAAAA9tYXhMb2NrRHVyYXRpb24EAAAABmNoZWNrcwkABEwAAAACCQEAAAAIdGhpc09ubHkAAAABBQAAAAFpBQAAAANuaWwDCQAAAAAAAAIFAAAABmNoZWNrcwUAAAAGY2hlY2tzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABprZXlOZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAAAAAFAAAAF25ldXRyaW5vQ29udHJhY3RBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABdrZXlHTnNidENvbnRyYWN0QWRkcmVzcwAAAAAFAAAAFGdOc2J0Q29udHJhY3RBZGRyZXNzCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQa2V5TWluTG9ja0Ftb3VudAAAAAAFAAAADW1pbkxvY2tBbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJrZXlNaW5Mb2NrRHVyYXRpb24AAAAABQAAAA9taW5Mb2NrRHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJrZXlNYXhMb2NrRHVyYXRpb24AAAAABQAAAA9tYXhMb2NrRHVyYXRpb24JAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAAA5rZXlOZXh0VXNlck51bQAAAAAAAAAAAAAAAAAFAAAAA25pbAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAEbG9jawAAAAEAAAAIZHVyYXRpb24EAAAAFHBheW1lbnRzUmVxdWlyZWRTaXplAAAAAAAAAAABBAAAAAskdDA3MTU3NzI5OQkBAAAAD2dldFBhcmFtc09yRmFpbAAAAAAEAAAADWdOc2J0Q29udHJhY3QIBQAAAAskdDA3MTU3NzI5OQAAAAJfMQQAAAALYm9uZEFzc2V0SWQIBQAAAAskdDA3MTU3NzI5OQAAAAJfMgQAAAANbWluTG9ja0Ftb3VudAgFAAAACyR0MDcxNTc3Mjk5AAAAAl8zBAAAAA9taW5Mb2NrRHVyYXRpb24IBQAAAAskdDA3MTU3NzI5OQAAAAJfNAQAAAAPbWF4TG9ja0R1cmF0aW9uCAUAAAALJHQwNzE1NzcyOTkAAAACXzUEAAAAC25leHRVc2VyTnVtCAUAAAALJHQwNzE1NzcyOTkAAAACXzYEAAAAEWNoZWNrUGF5bWVudHNTaXplAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwUAAAAUcGF5bWVudHNSZXF1aXJlZFNpemUJAAACAAAAAQIAAAAVSW52YWxpZCBwYXltZW50cyBzaXplBgMJAAAAAAAAAgUAAAARY2hlY2tQYXltZW50c1NpemUFAAAAEWNoZWNrUGF5bWVudHNTaXplBAAAAAdwYXltZW50CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAZhbW91bnQIBQAAAAdwYXltZW50AAAABmFtb3VudAQAAAATaW52YWxpZEFzc2V0TWVzc2FnZQkAASwAAAACCQABLAAAAAICAAAAD0ludmFsaWQgYXNzZXQuIAkAAlgAAAABBQAAAAtib25kQXNzZXRJZAIAAAAMIGlzIGV4cGVjdGVkBAAAAAdhc3Nl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eHRQZXJpb2QJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgUAAAANZ05zYnRDb250cmFjdAkBAAAADWtleU5leHRQZXJpb2QAAAAAAAAAAAAAAAAABAAAAAlsb2NrU3RhcnQFAAAABmhlaWdodAQAAAALJHQwOTAzMzkxMTkJAQAAABtnZXRTbG9wZUludGVyY2VwdEZvcm1QYXJhbXMAAAAEBQAAAAZhbW91bnQFAAAACGR1cmF0aW9uBQAAAA9tYXhMb2NrRHVyYXRpb24FAAAACWxvY2tTdGFydAQAAAABawgFAAAACyR0MDkwMzM5MTE5AAAAAl8xBAAAAAFiCAUAAAALJHQwOTAzMzkxMTkAAAACXzIEAAAADm5leHRVc2VyTnVtSW5jAwUAAAAJaXNOZXdVc2VyAAAAAAAAAAABAAAAAAAAAAAACQAETgAAAAIJAAROAAAAAgkABE4AAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAOa2V5TmV4dFVzZXJOdW0AAAAACQAAZAAAAAIFAAAAC25leHRVc2VyTnVtBQAAAA5uZXh0VXNlck51bUluYwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEmtleVVzZXIyTnVtTWFwcGluZwAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAd1c2VyTnVtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlOdW0yVXNlck1hcHBpbmcAAAABBQAAAAd1c2VyTnVtCQAEJQAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAANuaWwJAQAAAA9Mb2NrUGFyYW1zRW50cnkAAAAHBQAAAAd1c2VyTnVtBQAAAAZhbW91bnQFAAAACWxvY2tTdGFydAUAAAAIZHVyYXRpb24FAAAAAWsFAAAAAWIFAAAACm5leHRQZXJpb2QJAQAAABJIaXN0b3J5UmVjb3JkRW50cnkAAAAIAgAAAARsb2NrBQAAAAt1c2VyQWRkcmVzcwgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAGYW1vdW50BQAAAAlsb2NrU3RhcnQFAAAACGR1cmF0aW9uBQAAAAFrBQAAAAFiCQEAAAAKU3RhdHNFbnRyeQAAAAQFAAAABmFtb3VudAUAAAAIZHVyYXRpb24AAAAAAAAAAAEAAAAAAAAAAAEJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAAAAAWkBAAAADGluY3JlYXNlTG9jawAAAAEAAAANZGVsdGFEdXJhdGlvbgQAAAAPcGF5bWVudHNNYXhTaXplAAAAAAAAAAABBAAAAAZwYXJhbXMJAQAAAA9nZXRQYXJhbXNPckZhaWwAAAAABAAAAAskdDA5NzE3OTgzMAkABRYAAAAECAUAAAAGcGFyYW1zAAAAAl8xCAUAAAAGcGFyYW1zAAAAAl8yCAUAAAAGcGFyYW1zAAAAAl80CAUAAAAGcGFyYW1zAAAAAl81BAAAAA1nTnNidENvbnRyYWN0CAUAAAALJHQwOTcxNzk4MzAAAAACXzEEAAAAC2JvbmRBc3NldElkCAUAAAALJHQwOTcxNzk4MzAAAAACXzIEAAAAD21pbkxvY2tEdXJhdGlvbggFAAAACyR0MDk3MTc5ODMwAAAAAl8zBAAAAA9tYXhMb2NrRHVyYXRpb24IBQAAAAskdDA5NzE3OTgzMAAAAAJfNAQAAAAMcGF5bWVudHNTaXplCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzBAAAABFjaGVja1BheW1lbnRzU2l6ZQMJAABmAAAAAgUAAAAMcGF5bWVudHNTaXplBQAAAA9wYXltZW50c01heFNpemUJAAACAAAAAQIAAAAVSW52YWxpZCBwYXltZW50cyBzaXplBgMJAAAAAAAAAgUAAAARY2hlY2tQYXltZW50c1NpemUFAAAAEWNoZWNrUGF5bWVudHNTaXplBAAAAAwkdDA5OTgzMTA0MjADCQAAAAAAAAIFAAAADHBheW1lbnRzU2l6ZQUAAAAPcGF5bWVudHNNYXhTaXplBAAAAAdwYXltZW50CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAABNpbnZhbGlkQXNzZXRNZXNzYWdlCQABLAAAAAIJAAEsAAAAAgIAAAAPSW52YWxpZCBhc3NldC4gCQACWAAAAAEFAAAAC2JvbmRBc3NldElkAgAAAAwgaXMgZXhwZWN0ZWQEAAAAB2Fzc2V0SWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAATaW52YWxpZEFzc2V0TWVzc2FnZQQAAAAMY2hlY2tBc3NldElkAwkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAALYm9uZEFzc2V0SWQJAAACAAAAAQUAAAATaW52YWxpZEFzc2V0TWVzc2FnZQYDCQAAAAAAAAIFAAAADGNoZWNrQXNzZXRJZAUAAAAMY2hlY2tBc3NldElkCQAFFAAAAAIIBQAAAAdwYXltZW50AAAABmFtb3VudAUAAAAHYXNzZXRJZAkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAUUAAAAAgAAAAAAAAAAAAUAAAAEdW5pdAQAAAAGYW1vdW50CAUAAAAMJHQwOTk4MzEwNDIwAAAAAl8xBAAAAAdhc3NldElkCAUAAAAMJHQwOTk4MzEwNDIwAAAAAl8yBAAAAAt1c2VyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyBAAAAAtjaGVja1NjcmlwdAMJAQAAAAlpc0RlZmluZWQAAAABCQAD8QAAAAEFAAAAC3VzZXJBZGRyZXNzCQAAAgAAAAECAAAAIkFkZHJlc3MgaXMgc2NyaXB0ZWQuIEFjY2VzcyBkZW5pZWQGAwkAAAAAAAACBQAAAAtjaGVja1NjcmlwdAUAAAALY2hlY2tTY3JpcHQEAAAACnVzZXJQYXJhbXMJAQAAABNnZXRVc2VyUGFyYW1zT3JGYWlsAAAAAQUAAAALdXNlckFkZHJlc3MEAAAADSR0MDEwNjMxMTA3NDQJAAUWAAAABAgFAAAACnVzZXJQYXJhbXMAAAACXzEIBQAAAAp1c2VyUGFyYW1zAAAAAl8yCAUAAAAKdXNlclBhcmFtcwAAAAJfMwgFAAAACnVzZXJQYXJhbXMAAAACXzQEAAAAB3VzZXJOdW0IBQAAAA0kdDAxMDYzMTEwNzQ0AAAAAl8xBAAAAApsb2NrQW1vdW50CAUAAAANJHQwMTA2MzExMDc0NAAAAAJfMgQAAAAJbG9ja1N0YXJ0CAUAAAANJHQwMTA2MzExMDc0NAAAAAJfMwQAAAAMbG9ja0R1cmF0aW9uCAUAAAANJHQwMTA2MzExMDc0NAAAAAJfNAQAAAAHbG9ja0VuZAkAAGQAAAACBQAAAAlsb2NrU3RhcnQFAAAADGxvY2tEdXJhdGlvbgQAAAAJbmV3QW1vdW50CQAAZAAAAAIFAAAACmxvY2tBbW91bnQFAAAABmFtb3VudAQAAAAMbmV3TG9ja1N0YXJ0BQAAAAZoZWlnaHQEAAAAD25ld0xvY2tEdXJhdGlvbgkAAGQAAAACBQAAAA1kZWx0YUR1cmF0aW9uCQABlgAAAAEJAARMAAAAAgAAAAAAAAAAAAkABEwAAAACCQAAZQAAAAIFAAAAB2xvY2tFbmQFAAAADG5ld0xvY2tTdGFydAUAAAADbmlsBAAAAA1jaGVja0R1cmF0aW9uCQAETAAAAAIDCQAAZgAAAAIAAAAAAAAAAAAFAAAADWRlbHRhRHVyYXRpb24JAAACAAAAAQIAAAAmSW5jcmVhc2UgaW4gZHVyYXRpb24gaXMgbGVzcyB0aGVuIHplcm8GCQAETAAAAAIDCQAAZgAAAAIFAAAAD21pbkxvY2tEdXJhdGlvbgUAAAAPbmV3TG9ja0R1cmF0aW9uCQAAAgAAAAEJAAEsAAAAAgkAASwAAAACAgAAABVNaW4gbG9jayBkdXJhdGlvbiBpcyAJAAGkAAAAAQUAAAAPbWluTG9ja0R1cmF0aW9uAgAAAAcgYmxvY2tzBgkABEwAAAACAwkAAGYAAAACBQAAAA9uZXdMb2NrRHVyYXRpb24FAAAAD21heExvY2tEdXJhdGlvbgkAAAIAAAABCQABLAAAAAIJAAEsAAAAAgIAAAAVTWF4IGxvY2sgZHVyYXRpb24gaXMgCQABpAAAAAEFAAAAD21heExvY2tEdXJhdGlvbgIAAAAHIGJsb2NrcwYFAAAAA25pbAMJAAAAAAAAAgUAAAANY2hlY2tEdXJhdGlvbgUAAAANY2hlY2tEdXJhdGlvbgQAAAAKbmV4dFBlcmlvZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAA1nTnNidENvbnRyYWN0CQEAAAANa2V5TmV4dFBlcmlvZAAAAAAAAAAAAAAAAAAEAAAADSR0MDExMzg4MTE0OTMJAQAAABtnZXRTbG9wZUludGVyY2VwdEZvcm1QYXJhbXMAAAAEBQAAAAluZXdBbW91bnQFAAAAD25ld0xvY2tEdXJhdGlvbgUAAAAPbWF4TG9ja0R1cmF0aW9uBQAAAAxuZXdMb2NrU3RhcnQEAAAABGtOZXcIBQAAAA0kdDAxMTM4ODExNDkzAAAAAl8xBAAAAARiTmV3CAUAAAANJHQwMTEzODgxMTQ5MwAAAAJfMgkABE4AAAACCQAETgAAAAIJAQAAAA9Mb2NrUGFyYW1zRW50cnkAAAAHBQAAAAd1c2VyTnVtBQAAAAluZXdBbW91bnQFAAAADG5ld0xvY2tTdGFydAUAAAAPbmV3TG9ja0R1cmF0aW9uBQAAAARrTmV3BQAAAARiTmV3BQAAAApuZXh0UGVyaW9kCQEAAAASSGlzdG9yeVJlY29yZEVudHJ5AAAACAIAAAAMaW5jcmVhc2VMb2NrBQAAAAt1c2VyQWRkcmVzcwgFAAAAAWkAAAANdHJhbnNhY3Rpb25JZAUAAAAJbmV3QW1vdW50BQAAAAxuZXdMb2NrU3RhcnQFAAAAD25ld0xvY2tEdXJhdGlvbgUAAAAEa05ldwUAAAAEYk5ldwkBAAAAClN0YXRzRW50cnkAAAAEBQAAAAZhbW91bnQFAAAADWRlbHRhRHVyYXRpb24AAAAAAAAAAAAAAAAAAAAAAAAJAAACAAAAAQIAAAAkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQAAAgAAAAECAAAAJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAAIAAAABAgAAACRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4AAAABaQEAAAAGdW5sb2NrAAAAAAQAAAALdXNlckFkZHJlc3MIBQAAAAFpAAAABmNhbGxlcgQAAAAGcGFyYW1zCQEAAAAPZ2V0UGFyYW1zT3JGYWlsAAAAAAQAAAANJHQwMTE4NjAxMTkxNwkABRQAAAACCAUAAAAGcGFyYW1zAAAAAl8xCAUAAAAGcGFyYW1zAAAAAl8yBAAAAA1n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", "height": 1875634, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: none Full:
Old | New | Differences | |
---|---|---|---|
1 | - | # no script | |
1 | + | {-# STDLIB_VERSION 5 #-} | |
2 | + | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | + | {-# CONTENT_TYPE DAPP #-} | |
4 | + | let a = "" | |
5 | + | ||
6 | + | let b = "__" | |
7 | + | ||
8 | + | let c = 1000 | |
9 | + | ||
10 | + | func d () = "bond_asset_id" | |
11 | + | ||
12 | + | ||
13 | + | func e () = makeString(["%s", "neutrinoContractAddress"], b) | |
14 | + | ||
15 | + | ||
16 | + | func f () = makeString(["%s", "gNsbtContractAddress"], b) | |
17 | + | ||
18 | + | ||
19 | + | func g () = makeString(["%s", "minLockAmount"], b) | |
20 | + | ||
21 | + | ||
22 | + | func h () = makeString(["%s", "minLockDuration"], b) | |
23 | + | ||
24 | + | ||
25 | + | func i () = makeString(["%s", "maxLockDuration"], b) | |
26 | + | ||
27 | + | ||
28 | + | func j () = makeString(["%s", "nextUserNum"], b) | |
29 | + | ||
30 | + | ||
31 | + | func k (l) = makeString(["%s%s%s", "mapping", "user2num", toString(l)], b) | |
32 | + | ||
33 | + | ||
34 | + | func m (n) = makeString(["%s%s%s", "mapping", "num2user", toString(n)], b) | |
35 | + | ||
36 | + | ||
37 | + | func o (p) = makeString(["%s%d%s", "paramByUserNum", toString(p), "amount"], b) | |
38 | + | ||
39 | + | ||
40 | + | func q (p) = makeString(["%s%d%s", "paramByUserNum", toString(p), "start"], b) | |
41 | + | ||
42 | + | ||
43 | + | func r (p) = makeString(["%s%d%s", "paramByUserNum", toString(p), "duration"], b) | |
44 | + | ||
45 | + | ||
46 | + | func s (p) = makeString(["%s%d%s", "paramByUserNum", toString(p), "k"], b) | |
47 | + | ||
48 | + | ||
49 | + | func t (p) = makeString(["%s%d%s", "paramByUserNum", toString(p), "b"], b) | |
50 | + | ||
51 | + | ||
52 | + | func u (p,v) = makeString(["%s%d%s%d", "paramByPeriod", toString(p), "k", toString(v)], b) | |
53 | + | ||
54 | + | ||
55 | + | func w (p,v) = makeString(["%s%d%s%d", "paramByPeriod", toString(p), "b", toString(v)], b) | |
56 | + | ||
57 | + | ||
58 | + | func x (y,l,z) = makeString(["%s%s%s%s", "history", y, toString(l), toBase58String(z)], b) | |
59 | + | ||
60 | + | ||
61 | + | func A () = makeString(["%s%s", "stats", "activeTotalLocked"], b) | |
62 | + | ||
63 | + | ||
64 | + | func B () = makeString(["%s%s", "stats", "locksDurationSumInBlocks"], b) | |
65 | + | ||
66 | + | ||
67 | + | func C () = makeString(["%s%s", "stats", "locksCount"], b) | |
68 | + | ||
69 | + | ||
70 | + | func D () = makeString(["%s%s", "stats", "activeUsersCount"], b) | |
71 | + | ||
72 | + | ||
73 | + | func E () = makeString(["%s", "nextPeriod"], b) | |
74 | + | ||
75 | + | ||
76 | + | func F (G) = if ((G.caller != this)) | |
77 | + | then throw("Permission denied") | |
78 | + | else true | |
79 | + | ||
80 | + | ||
81 | + | func H (I) = valueOrElse(getInteger(this, I), 0) | |
82 | + | ||
83 | + | ||
84 | + | func J (I) = valueOrErrorMessage(getInteger(this, I), (("Mandatory this." + I) + " is not defined")) | |
85 | + | ||
86 | + | ||
87 | + | func K (I) = valueOrErrorMessage(getString(this, I), (("Mandatory this." + I) + " is not defined")) | |
88 | + | ||
89 | + | ||
90 | + | func L (M,N,O) = fraction(M, N, O) | |
91 | + | ||
92 | + | ||
93 | + | func P (Q,N,O,R) = { | |
94 | + | let S = (R + N) | |
95 | + | let T = -(fraction(Q, c, O)) | |
96 | + | let U = (-(T) * S) | |
97 | + | $Tuple2(T, U) | |
98 | + | } | |
99 | + | ||
100 | + | ||
101 | + | func V (Q,W,N,T,U) = makeString(["%d%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(Q), toString(W), toString(N), toString(T), toString(U)], b) | |
102 | + | ||
103 | + | ||
104 | + | func X (y,l,z,Q,W,N,T,U) = [StringEntry(x(y, l, z), V(Q, W, N, T, U))] | |
105 | + | ||
106 | + | ||
107 | + | func Y (Z,aa,ab,ac) = { | |
108 | + | let ad = H(B()) | |
109 | + | let ae = H(C()) | |
110 | + | let af = H(D()) | |
111 | + | let ag = H(A()) | |
112 | + | [IntegerEntry(B(), (ad + aa)), IntegerEntry(C(), (ae + ab)), IntegerEntry(D(), (af + ac)), IntegerEntry(A(), (ag + Z))] | |
113 | + | } | |
114 | + | ||
115 | + | ||
116 | + | func ah (p,Q,W,N,T,U,v) = [IntegerEntry(o(p), Q), IntegerEntry(q(p), W), IntegerEntry(r(p), N), IntegerEntry(s(p), T), IntegerEntry(t(p), U), IntegerEntry(u(p, v), T), IntegerEntry(w(p, v), U)] | |
117 | + | ||
118 | + | ||
119 | + | func ai () = { | |
120 | + | let aj = addressFromStringValue(K(e())) | |
121 | + | let ak = addressFromStringValue(K(f())) | |
122 | + | let al = fromBase58String(getStringValue(aj, d())) | |
123 | + | let am = J(g()) | |
124 | + | let an = J(h()) | |
125 | + | let ao = J(i()) | |
126 | + | let ap = J(j()) | |
127 | + | $Tuple6(ak, al, am, an, ao, ap) | |
128 | + | } | |
129 | + | ||
130 | + | ||
131 | + | func aq (l) = isDefined(getInteger(this, k(l))) | |
132 | + | ||
133 | + | ||
134 | + | func ar (l) = if (aq(l)) | |
135 | + | then { | |
136 | + | let p = J(k(l)) | |
137 | + | $Tuple6(p, J(o(p)), J(q(p)), J(r(p)), J(s(p)), J(t(p))) | |
138 | + | } | |
139 | + | else unit | |
140 | + | ||
141 | + | ||
142 | + | func as (l) = valueOrErrorMessage(ar(l), (("User " + toString(l)) + " is not defined")) | |
143 | + | ||
144 | + | ||
145 | + | @Callable(G) | |
146 | + | func constructor (at,au,am,an,ao) = { | |
147 | + | let av = [F(G)] | |
148 | + | if ((av == av)) | |
149 | + | then [StringEntry(e(), at), StringEntry(f(), au), IntegerEntry(g(), am), IntegerEntry(h(), an), IntegerEntry(i(), ao), IntegerEntry(j(), 0)] | |
150 | + | else throw("Strict value is not equal to itself.") | |
151 | + | } | |
152 | + | ||
153 | + | ||
154 | + | ||
155 | + | @Callable(G) | |
156 | + | func lock (N) = { | |
157 | + | let aw = 1 | |
158 | + | let ax = ai() | |
159 | + | let ak = ax._1 | |
160 | + | let al = ax._2 | |
161 | + | let am = ax._3 | |
162 | + | let an = ax._4 | |
163 | + | let ao = ax._5 | |
164 | + | let ap = ax._6 | |
165 | + | let ay = if ((size(G.payments) != aw)) | |
166 | + | then throw("Invalid payments size") | |
167 | + | else true | |
168 | + | if ((ay == ay)) | |
169 | + | then { | |
170 | + | let az = G.payments[0] | |
171 | + | let Q = az.amount | |
172 | + | let aA = (("Invalid asset. " + toBase58String(al)) + " is expected") | |
173 | + | let aB = valueOrErrorMessage(az.assetId, aA) | |
174 | + | let aC = if ((aB != al)) | |
175 | + | then throw(aA) | |
176 | + | else true | |
177 | + | if ((aC == aC)) | |
178 | + | then { | |
179 | + | let l = G.caller | |
180 | + | let aD = if (isDefined(scriptHash(l))) | |
181 | + | then throw("Address is scripted. Access denied") | |
182 | + | else true | |
183 | + | if ((aD == aD)) | |
184 | + | then { | |
185 | + | let aE = ar(l) | |
186 | + | let aF = { | |
187 | + | let aG = aE | |
188 | + | if ($isInstanceOf(aG, "(Int, Int, Int, Int, Int, Int)")) | |
189 | + | then { | |
190 | + | let aH = aG | |
191 | + | $Tuple5(false, aH._1, aH._2, aH._3, aH._4) | |
192 | + | } | |
193 | + | else if ($isInstanceOf(aG, "Unit")) | |
194 | + | then $Tuple5(true, ap, 0, unit, unit) | |
195 | + | else throw("Match error") | |
196 | + | } | |
197 | + | let aI = aF._1 | |
198 | + | let p = aF._2 | |
199 | + | let aJ = aF._3 | |
200 | + | let aK = aF._4 | |
201 | + | let aL = aF._5 | |
202 | + | let aM = [if ((aJ > 0)) | |
203 | + | then { | |
204 | + | let aN = if (!(aI)) | |
205 | + | then (height > (value(aK) + value(aL))) | |
206 | + | else false | |
207 | + | throw(("There is an active lock. Consider to use increaseLock" + (if (aN) | |
208 | + | then " or unlock" | |
209 | + | else ""))) | |
210 | + | } | |
211 | + | else true, if ((am > Q)) | |
212 | + | then throw(("Min lock amount is " + toString(am))) | |
213 | + | else true, if ((an > N)) | |
214 | + | then throw((("Min lock duration is " + toString(an)) + " blocks")) | |
215 | + | else true, if ((N > ao)) | |
216 | + | then throw((("Max lock duration is " + toString(ao)) + " blocks")) | |
217 | + | else true] | |
218 | + | if ((aM == aM)) | |
219 | + | then { | |
220 | + | let aO = valueOrElse(getInteger(ak, E()), 0) | |
221 | + | let aP = height | |
222 | + | let aQ = P(Q, N, ao, aP) | |
223 | + | let T = aQ._1 | |
224 | + | let U = aQ._2 | |
225 | + | let aR = if (aI) | |
226 | + | then 1 | |
227 | + | else 0 | |
228 | + | ((([IntegerEntry(j(), (ap + aR)), IntegerEntry(k(l), p), StringEntry(m(p), toString(l))] ++ ah(p, Q, aP, N, T, U, aO)) ++ X("lock", l, G.transactionId, Q, aP, N, T, U)) ++ Y(Q, N, 1, 1)) | |
229 | + | } | |
230 | + | else throw("Strict value is not equal to itself.") | |
231 | + | } | |
232 | + | else throw("Strict value is not equal to itself.") | |
233 | + | } | |
234 | + | else throw("Strict value is not equal to itself.") | |
235 | + | } | |
236 | + | else throw("Strict value is not equal to itself.") | |
237 | + | } | |
238 | + | ||
239 | + | ||
240 | + | ||
241 | + | @Callable(G) | |
242 | + | func increaseLock (aS) = { | |
243 | + | let aT = 1 | |
244 | + | let aH = ai() | |
245 | + | let aU = $Tuple4(aH._1, aH._2, aH._4, aH._5) | |
246 | + | let ak = aU._1 | |
247 | + | let al = aU._2 | |
248 | + | let an = aU._3 | |
249 | + | let ao = aU._4 | |
250 | + | let aV = size(G.payments) | |
251 | + | let ay = if ((aV > aT)) | |
252 | + | then throw("Invalid payments size") | |
253 | + | else true | |
254 | + | if ((ay == ay)) | |
255 | + | then { | |
256 | + | let aW = if ((aV == aT)) | |
257 | + | then { | |
258 | + | let az = G.payments[0] | |
259 | + | let aA = (("Invalid asset. " + toBase58String(al)) + " is expected") | |
260 | + | let aB = valueOrErrorMessage(az.assetId, aA) | |
261 | + | let aC = if ((aB != al)) | |
262 | + | then throw(aA) | |
263 | + | else true | |
264 | + | if ((aC == aC)) | |
265 | + | then $Tuple2(az.amount, aB) | |
266 | + | else throw("Strict value is not equal to itself.") | |
267 | + | } | |
268 | + | else $Tuple2(0, unit) | |
269 | + | let Q = aW._1 | |
270 | + | let aB = aW._2 | |
271 | + | let l = G.caller | |
272 | + | let aD = if (isDefined(scriptHash(l))) | |
273 | + | then throw("Address is scripted. Access denied") | |
274 | + | else true | |
275 | + | if ((aD == aD)) | |
276 | + | then { | |
277 | + | let aX = as(l) | |
278 | + | let aY = $Tuple4(aX._1, aX._2, aX._3, aX._4) | |
279 | + | let p = aY._1 | |
280 | + | let aJ = aY._2 | |
281 | + | let aP = aY._3 | |
282 | + | let aZ = aY._4 | |
283 | + | let ba = (aP + aZ) | |
284 | + | let bb = (aJ + Q) | |
285 | + | let bc = height | |
286 | + | let bd = (aS + max([0, (ba - bc)])) | |
287 | + | let be = [if ((0 > aS)) | |
288 | + | then throw("Increase in duration is less then zero") | |
289 | + | else true, if ((an > bd)) | |
290 | + | then throw((("Min lock duration is " + toString(an)) + " blocks")) | |
291 | + | else true, if ((bd > ao)) | |
292 | + | then throw((("Max lock duration is " + toString(ao)) + " blocks")) | |
293 | + | else true] | |
294 | + | if ((be == be)) | |
295 | + | then { | |
296 | + | let aO = valueOrElse(getInteger(ak, E()), 0) | |
297 | + | let bf = P(bb, bd, ao, bc) | |
298 | + | let bg = bf._1 | |
299 | + | let bh = bf._2 | |
300 | + | ((ah(p, bb, bc, bd, bg, bh, aO) ++ X("increaseLock", l, G.transactionId, bb, bc, bd, bg, bh)) ++ Y(Q, aS, 0, 0)) | |
301 | + | } | |
302 | + | else throw("Strict value is not equal to itself.") | |
303 | + | } | |
304 | + | else throw("Strict value is not equal to itself.") | |
305 | + | } | |
306 | + | else throw("Strict value is not equal to itself.") | |
307 | + | } | |
308 | + | ||
309 | + | ||
310 | + | ||
311 | + | @Callable(G) | |
312 | + | func unlock () = { | |
313 | + | let l = G.caller | |
314 | + | let aH = ai() | |
315 | + | let bi = $Tuple2(aH._1, aH._2) | |
316 | + | let ak = bi._1 | |
317 | + | let al = bi._2 | |
318 | + | let aX = as(l) | |
319 | + | let bj = $Tuple4(aX._1, aX._2, aX._3, aX._4) | |
320 | + | let p = bj._1 | |
321 | + | let aJ = bj._2 | |
322 | + | let aP = bj._3 | |
323 | + | let aZ = bj._4 | |
324 | + | let ba = (aP + aZ) | |
325 | + | let av = [if ((ba > height)) | |
326 | + | then throw((("Wait " + toString((ba - height))) + " blocks to unlock")) | |
327 | + | else true, if ((0 >= aJ)) | |
328 | + | then throw("Nothing to unlock") | |
329 | + | else true] | |
330 | + | if ((av == av)) | |
331 | + | then { | |
332 | + | let aO = valueOrElse(getInteger(ak, E()), 0) | |
333 | + | (((ah(p, 0, aP, aZ, 0, 0, aO) ++ X("unlock", l, G.transactionId, aJ, aP, aZ, 0, 0)) ++ Y(-(aJ), 0, 0, -1)) :+ ScriptTransfer(l, aJ, al)) | |
334 | + | } | |
335 | + | else throw("Strict value is not equal to itself.") | |
336 | + | } | |
337 | + | ||
338 | + | ||
339 | + | ||
340 | + | @Callable(G) | |
341 | + | func gNsbtAmountREADONLY (bk) = { | |
342 | + | let l = addressFromStringValue(bk) | |
343 | + | if (aq(l)) | |
344 | + | then { | |
345 | + | let aX = as(l) | |
346 | + | let bl = $Tuple2(aX._5, aX._6) | |
347 | + | let T = bl._1 | |
348 | + | let U = bl._2 | |
349 | + | let bm = ((T * height) + U) | |
350 | + | $Tuple2(nil, bm) | |
351 | + | } | |
352 | + | else $Tuple2(nil, 0) | |
353 | + | } | |
354 | + | ||
355 | + | ||
356 | + | ||
357 | + | @Callable(G) | |
358 | + | func startGNsbtAmountREADONLY (M,N) = { | |
359 | + | let O = ai()._5 | |
360 | + | let bn = L(M, N, O) | |
361 | + | $Tuple2(nil, bn) | |
362 | + | } | |
363 | + | ||
364 | + | ||
365 | + | ||
366 | + | @Callable(G) | |
367 | + | func paramsREADONLY () = { | |
368 | + | let aH = ai() | |
369 | + | $Tuple2(nil, [aH._3, aH._4, aH._5]) | |
370 | + | } | |
371 | + | ||
372 | + | ||
373 | + | ||
374 | + | @Callable(G) | |
375 | + | func lockParamsREADONLY (bk) = { | |
376 | + | let l = addressFromStringValue(bk) | |
377 | + | if (aq(l)) | |
378 | + | then { | |
379 | + | let bo = as(l) | |
380 | + | let p = bo._1 | |
381 | + | let Q = bo._2 | |
382 | + | let W = bo._3 | |
383 | + | let N = bo._4 | |
384 | + | let T = bo._5 | |
385 | + | let U = bo._6 | |
386 | + | $Tuple2(nil, [p, Q, W, N, T, U]) | |
387 | + | } | |
388 | + | else $Tuple2(nil, unit) | |
389 | + | } | |
390 | + | ||
391 | + |
github/deemru/w8io/169f3d6 28.63 ms ◑