tx · 8maSBmYqQFexo1HMTtVeSuaCdBwnfMisExQsCgJ9Mrpt

3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J:  -0.04000000 Waves

2022.08.02 17:10 [2166972] smart account 3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J > SELF 0.00000000 Waves

{ "type": 13, "id": "8maSBmYqQFexo1HMTtVeSuaCdBwnfMisExQsCgJ9Mrpt", "fee": 4000000, "feeAssetId": null, "timestamp": 1659449433859, "version": 1, "sender": "3MuGfNhF98CNBCfthhoJEo6SYUv7zTgkK4J", "senderPublicKey": "4DthuG3xjZV9WtZ34Y66AummdAr67wRzwWsVQL4y2bob", "proofs": [ "3Z7o77w9ezmrnEoxpSzhkotKk5SMfKsQZgXgj9Nh9kskSZxhgvng4AQH53LTim2Fzr5ixXdAL666CkaJ6RQD53eS", "3a9VsB7qfFg79qQp7g3fiUGE2vfnGEvD8NvYHwPDepwGAjM75FgbyYgzLi7QkKsSRKLVYpPdZLbdzdrK8YmgU9Ln", "4abSKR9ZizeiGPmwLno3zZ9ZRjJ5wskvD21tLfaFzWKHFSLLh9XZqxvujzTrJKsdMJ2fcM8nn32Xq4dfmdYkUgfc" ], "script": "base64:AAIFAAAAAAAAACgIAhIHCgUICAEBCBIAEgMKAQESABIAEgASAwoBCBIECgIIARIDCgEIAAAARwAAAAAJc2VwYXJhdG9yAgAAAAJfXwAAAAADU0VQAgAAAAJfXwAAAAAFTVVMVDYAAAAAAAAPQkAAAAAABU1VTFQ4AAAAAAAF9eEAAAAAAAZNVUxUWDYJAAE2AAAAAQUAAAAFTVVMVDYAAAAABk1VTFRYOAkAATYAAAABBQAAAAVNVUxUOAAAAAAHTVVMVFgxOAkAATYAAAABAA3gtrOnZAAAAAAAAApXQVZFU0lEU1RSAgAAAAVXQVZFUwAAAAAHV0FWRVNJRAkAAlkAAAABBQAAAApXQVZFU0lEU1RSAAAAABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAAAAAAAAAABAAAAABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHAAAAAAAAAAAAIAAAAAFElkeENvbnRyb2xDZmdScGREYXBwAAAAAAAAAAADAAAAABVJZHhDb250cm9sQ2ZnTWF0aERhcHAAAAAAAAAAAAQAAAAAHElkeENvbnRyb2xDZmdMaXF1aWRhdGlvbkRhcHAAAAAAAAAAAAUAAAAAFUlkeENvbnRyb2xDZmdSZXN0RGFwcAAAAAAAAAAABgAAAAAdSWR4Q29udHJvbENmZ05vZGVSZWdpc3RyeURhcHAAAAAAAAAAAAcAAAAAHElkeENvbnRyb2xDZmdOc2J0U3Rha2luZ0RhcHAAAAAAAAAAAAgAAAAAGUlkeENvbnRyb2xDZmdNZWRpYXRvckRhcHAAAAAAAAAAAAkBAAAAD2dldFN0cmluZ09yRmFpbAAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAdhZGRyZXNzBQAAAANrZXkJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAKbWFuZGF0b3J5IAkABCUAAAABBQAAAAdhZGRyZXNzAgAAAAEuBQAAAANrZXkCAAAADyBpcyBub3QgZGVmaW5lZAEAAAARa2V5Q29udHJvbEFkZHJlc3MAAAAAAgAAABwlcyVzX19jb25maWdfX2NvbnRyb2xBZGRyZXNzAQAAAA1rZXlDb250cm9sQ2ZnAAAAAAIAAAARJXNfX2NvbnRyb2xDb25maWcBAAAAFHJlYWRDb250cm9sQ2ZnT3JGYWlsAAAAAQAAAAdjb250cm9sCQAEtQAAAAIJAQAAAA9nZXRTdHJpbmdPckZhaWwAAAACBQAAAAdjb250cm9sCQEAAAANa2V5Q29udHJvbENmZwAAAAAFAAAAA1NFUAEAAAAYZ2V0Q29udHJhY3RBZGRyZXNzT3JGYWlsAAAAAgAAAApjb250cm9sQ2ZnAAAAA2lkeAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEJAAGRAAAAAgUAAAAKY29udHJvbENmZwUAAAADaWR4CQABLAAAAAICAAAALUNvbnRyb2wgY2ZnIGRvZXNuJ3QgY29udGFpbiBhZGRyZXNzIGF0IGluZGV4IAkAAaQAAAABBQAAAANpZHgAAAAAD2NvbnRyb2xDb250cmFjdAkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAR0aGlzCQEAAAARa2V5Q29udHJvbEFkZHJlc3MAAAAAAgAAACMzTjROUzdkNEpvOWE2RjE0TGlGVUtLWVZkVWtrZjJlUDRaeAAAAAAKY29udHJvbENmZwkBAAAAFHJlYWRDb250cm9sQ2ZnT3JGYWlsAAAAAQUAAAAPY29udHJvbENvbnRyYWN0AAAAAAxtYXRoQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABVJZHhDb250cm9sQ2ZnTWF0aERhcHAAAAAAEG5ldXRyaW5vQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABlJZHhDb250cm9sQ2ZnTmV1dHJpbm9EYXBwAAAAAA9hdWN0aW9uQ29udHJhY3QJAQAAABhnZXRDb250cmFjdEFkZHJlc3NPckZhaWwAAAACBQAAAApjb250cm9sQ2ZnBQAAABhJZHhDb250cm9sQ2ZnQXVjdGlvbkRhcHABAAAADGtleUJvbmRBc3NldAAAAAACAAAADWJvbmRfYXNzZXRfaWQBAAAAGmtleU5ldXRyaW5v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AAAACW9sZEFtb3VudAAAAAhvbGRTdGFydAAAAAluZXdBbW91bnQAAAAIbmV3U3RhcnQJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlIaXN0b3J5UmVjb3JkAAAAAwUAAAAEdHlwZQUAAAALdXNlckFkZHJlc3MFAAAABHR4SWQJAQAAABNmb3JtYXRIaXN0b3J5UmVjb3JkAAAABAUAAAAJb2xkQW1vdW50BQAAAAhvbGRTdGFydAUAAAAJbmV3QW1vdW50BQAAAAhuZXdTdGFydAEAAAARQ2xhaW1IaXN0b3J5RW50cnkAAAADAAAAC3VzZXJBZGRyZXNzAAAABHR4SWQAAAAOY2xhaW1lZFJld2FyZHMJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABBrZXlIaXN0b3J5UmVjb3JkAAAAAwIAAAAFY2xhaW0FAAAAC3VzZXJBZGRyZXNzBQAAAAR0eElkCQEAAAAYZm9ybWF0Q2xhaW1IaXN0b3J5UmVjb3JkAAAAAgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAOY2xhaW1lZFJld2FyZHMBAAAAC1N0YXRzUmVzdWx0AAAAAwAAAA50b3RhbExvY2tlZEluYwAAAAxsb2NrQ291bnRJbmMAAAANdXNlcnNDb3VudEluYwQAAAAKbG9ja3NDb3VudAkBAAAADGdldEludE9yWmVybwAAAAEJAQAAABJrZXlTdGF0c0xvY2tzQ291bnQAAAAABAAAAAp1c2Vyc0NvdW50CQEAAAAMZ2V0SW50T3JaZXJvAAAAAQkBAAAAEmtleVN0YXRzVXNlcnNDb3VudAAAAAAEAAAAC3RvdGFsQW1vdW50CQEAAAAMZ2V0SW50T3JaZXJvAAAAAQkBAAAAF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAAAAQAAAAOdG90YWxBbW91bnROZXcJAABkAAAAAgUAAAALdG90YWxBbW91bnQFAAAADnRvdGFsTG9ja2VkSW5jCQAFFQAAAAMJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABJrZXlTdGF0c0xvY2tzQ291bnQAAAAACQAAZAAAAAIFAAAACmxvY2tzQ291bnQFAAAADGxvY2tDb3VudEluYwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEmtleVN0YXRzVXNlcnNDb3VudAAAAAAJAABkAAAAAgUAAAAKdXNlcnNDb3VudAUAAAANdXNlcnNDb3VudEluYwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAAAAUAAAAOdG90YWxBbW91bnROZXcFAAAAA25pbAUAAAALdG90YWxBbW91bnQFAAAADnRvdGFsQW1vdW50TmV3AQAAAA9Mb2NrUGFyYW1zRW50cnkAAAADAAAAC3VzZXJBZGRyZXNzAAAABmFtb3VudAAAAAVzdGFydAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFmtleUxvY2tQYXJhbVVzZXJBbW91bnQAAAABBQAAAAt1c2VyQWRkcmVzcwUAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAVzdGFydAUAAAADbmlsAQAAAA9nZXRQYXJhbXNPckZhaWwAAAAACQAFFQAAAAMJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAkBAAAADGtleUJvbmRBc3NldAAAAAAJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAAQa2V5TWluTG9ja0Ftb3VudAAAAAAJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAALa2V5SGFsZkxpZmUAAAAAAQAAAAxpc0FjdGl2ZVVzZXIAAAABAAAAC3VzZXJBZGRyZXNzCQAAZgAAAAIJAQAAAAxnZXRJbnRPckVsc2UAAAACCQEAAAAWa2V5TG9ja1BhcmFtVXNlckFtb3VudAAAAAEFAAAAC3VzZXJBZGRyZXNzAAAAAAAAAAAAAAAAAAAAAAAAAQAAABNnZXRVc2VyUGFyYW1zT3JVbml0AAAAAQAAAAt1c2VyQWRkcmVzcwMJAQAAAAxpc0FjdGl2ZVVzZXIAAAABBQAAAAt1c2VyQWRkcmVzcwkABRUAAAADBwkBAAAADGdldEludE9yRmFpbAAAAAEJAQAAABZrZXlMb2NrUGFyYW1Vc2VyQW1vdW50AAAAAQUAAAALdXNlckFkZHJlc3MJAQAAAAxnZXRJbnRPckZhaWwAAAABCQEAAAAWa2V5TG9ja1BhcmFtU3RhcnRCbG9jawAAAAEFAAAAC3VzZXJBZGRyZXNzBQAAAAR1bml0AQAAABNnZXRVc2VyUGFyYW1zT3JGYWlsAAAAAQAAAAt1c2VyQWRkcmVzcwkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQEAAAATZ2V0VXNlclBhcmFtc09yVW5pdAAAAAEFAAAAC3VzZXJBZGRyZXNzCQABLAAAAAIJAAEsAAAAAgIAAAAFVXNlciAJAAQlAAAAAQUAAAALdXNlckFkZHJlc3MCAAAADyBpcyBub3QgZGVmaW5lZAAAAAASc3VwcG9ydGVkQXNzZXRzU3RyCQEAAAAMZ2V0U3RyT3JFbHNlAAAAAgkBAAAAGGtleVN1cHBvcnRlZFJld2FyZEFzc2V0cwAAAAACAAAAAAAAAAATc3VwcG9ydGVkQXNzZXRzTGlzdAkABLUAAAACBQAAABJzdXBwb3J0ZWRBc3NldHNTdHICAAAAAV8BAAAACmNhbGNSZXdhcmQAAAAFAAAAC3VzZXJBZGRyZXNzAAAAB2Fzc2V0SWQAAAANc3Rha2VkQW1vdW50WAAAAA5kZXBvc2l0TnVtVXNlcgAAAA5kZXBvc2l0TnVtTGFzdAQAAAAXcmV3YXJkUGVyTnNidFN1bUxhc3RLRVkJAQAAABVrZXlSZXdhcmRQZXJOc2J0U3VtQXQAAAACBQAAAA5kZXBvc2l0TnVtTGFzdAUAAAAHYXNzZXRJZAQAAAAKc3VtTGFzdFgxOAkAAacAAAABCQEAAAAMZ2V0U3RyT3JFbHNlAAAAAgkBAAAAFWtleVJld2FyZFBlck5zYnRTdW1BdAAAAAIFAAAADmRlcG9zaXROdW1MYXN0BQAAAAdhc3NldElkAgAAAAEwBAAAAApzdW1Vc2VyWDE4CQABpwAAAAEJAQAAAAxnZXRTdHJPckVsc2UAAAACCQEAAAAVa2V5UmV3YXJkUGVyTnNidFN1bUF0AAAAAgUAAAAOZGVwb3NpdE51bVVzZXIFAAAAB2Fzc2V0SWQCAAAAATAEAAAAEXJld2FyZER5bmFtaWNQYXJ0CQABoAAAAAEJAAE8AAAAAwkAATgAAAACBQAAAApzdW1MYXN0WDE4BQAAAApzdW1Vc2VyWDE4BQAAAA1zdGFrZWRBbW91bnRYBQAAAAdNVUxUWDE4BAAAABNyZXdhcmRDYWNoZWRQYXJ0S0VZCQEAAAAJa2V5UmV3YXJkAAAAAgUAAAALdXNlckFkZHJlc3MFAAAAB2Fzc2V0SWQEAAAAEHJld2FyZENhY2hlZFBhcnQJAQAAAAxnZXRJbnRPckVsc2UAAAACBQAAABNyZXdhcmRDYWNoZWRQYXJ0S0VZAAAAAAAAAAAACQAFFgAAAAQJAABkAAAAAgUAAAAQcmV3YXJkQ2FjaGVkUGFydAUAAAARcmV3YXJkRHluYW1pY1BhcnQFAAAAEHJld2FyZENhY2hlZFBhcnQFAAAAEXJld2FyZER5bmFtaWNQYXJ0BQAAABNyZXdhcmRDYWNoZWRQYXJ0S0VZAQAAAA1SZXdhcmRFbnRyaWVzAAAAAwAAAAlpc05ld1VzZXIAAAALdXNlckFkZHJlc3MAAAAMc3Rha2VkQW1vdW50BAAAAA1zdGFrZWRBbW91bnRYCQABNgAAAAEFAAAADHN0YWtlZEFtb3VudAQAAAAbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZCQEAAAAba2V5VXNlclJld2FyZEZyb21EZXBvc2l0TnVtAAAAAQUAAAALdXNlckFkZHJlc3MEAAAADmRlcG9zaXROdW1Vc2VyCQEAAAAMZ2V0SW50T3JFbHNlAAAAAgUAAAAbdXNlclJld2FyZEZyb21EZXBvc2l0TnVtS0VZAP//////////BAAAAA5kZXBvc2l0TnVtTGFzdAkBAAAADGdldEludE9yRWxzZQAAAAIJAQAAABFrZXlEZXBvc2l0TnVtTGFzdAAAAAAA//////////8KAQAAABtmb3JFYWNoQXNzZXRDYWNoZVVzZXJSZXdhcmQAAAACAAAABWFjY3VtAAAABWFzc2V0BAAAAAskdDA4NDA5ODU0NAkBAAAACmNhbGNSZXdhcmQAAAAFBQAAAAt1c2VyQWRkcmVzcwUAAAAFYXNzZXQFAAAADXN0YWtlZEFtb3VudFgFAAAADmRlcG9zaXROdW1Vc2VyBQAAAA5kZXBvc2l0TnVtTGFzdAQAAAALcmV3YXJkVG90YWwIBQAAAAskdDA4NDA5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ZHJlc3MDCQAAZgAAAAIJAAGQAAAAAQgFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAJAAACAAAAAQIAAAAZcGF5bWVudHMgYXJlIG5vdCBhY2NlcHRlZAQAAAANJHQwMTE0ODgxMTU5MwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAE2dldFVzZXJQYXJhbXNPclVuaXQAAAABBQAAAAt1c2VyQWRkcmVzcwkABRUAAAADBgAAAAAAAAAAAAAAAAAAAAAAAAQAAAAJaXNOZXdVc2VyCAUAAAANJHQwMTE0ODgxMTU5MwAAAAJfMQQAAAAMc3Rha2VkQW1vdW50CAUAAAANJHQwMTE0ODgxMTU5MwAAAAJfMgQAAAAMc3Rha2luZ1N0YXJ0CAUAAAANJHQwMTE0ODgxMTU5MwAAAAJfMwQAAAANc3Rha2VkQW1vdW50WAkAATYAAAABBQAAAAxzdGFrZWRBbW91bnQEAAAAG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQkBAAAAG2tleVVzZXJSZXdhcmRGcm9tRGVwb3NpdE51bQAAAAEFAAAADnVzZXJBZGRyZXNzU3RyBAAAAA5kZXBvc2l0TnVtVXNlcgkBAAAADGdldEludE9yRWxzZQAAAAIFAAAAG3VzZXJSZXdhcmRGcm9tRGVwb3NpdE51bUtFWQD//////////wQAAAAOZGVwb3NpdE51bUxhc3QJAQAAAAxnZXRJbnRPckVsc2UAAAACCQEAAAARa2V5RGVwb3NpdE51bUxhc3QAAAAAAP//////////CgEAAAAfZm9yRWFjaEFzc2V0Q2FsY1VuY2xhaW1lZFJld2FyZAAAAAIAAAAFYWNjdW0AAAAFYXNzZXQEAAAADSR0MDExOTY0MTIxMDIJAQAAAApjYWxjUmV3YXJkAAAABQUAAAAOdXNlckFkZHJlc3NTdHIFAAAABWFzc2V0BQAAAA1zdGFrZWRBbW91bnRYBQAAAA5kZXBvc2l0TnVtVXNlcgUAAAAOZGVwb3NpdE51bUxhc3QEAAAAC3Jld2FyZFRvdGFsCAUAAAANJHQwMTE5NjQxMjEwMgAAAAJfMQQAAAAGY2FjaGVkCAUAAAANJHQwMTE5NjQxMjEwMgAAAAJfMgQAAAAHZHluYW1pYwgFAAAADSR0MDExOTY0MTIx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cnVjdG9yAAAABQAAABduZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAAABNtYXRoQ29udHJhY3RBZGRyZXNzAAAADW1pbkxvY2tBbW91bnQAAAAIaGFsZkxpZmUAAAAVc3VwcG9ydGVkUmV3YXJkQXNzZXRzAwkBAAAAAiE9AAAAAggFAAAAAWkAAAAGY2FsbGVyBQAAAAR0aGlzCQAAAgAAAAECAAAAEVBlcm1pc3Npb24gZGVuaWVkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABprZXlOZXV0cmlub0NvbnRyYWN0QWRkcmVzcwAAAAAFAAAAF25ldXRyaW5vQ29udHJhY3RBZGRyZXNzCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABZrZXlNYXRoQ29udHJhY3RBZGRyZXNzAAAAAAUAAAATbWF0aENvbnRyYWN0QWRkcmVzcwkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEGtleU1pbkxvY2tBbW91bnQAAAAABQAAAA1taW5Mb2NrQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAALa2V5SGFsZkxpZmUAAAAABQAAAAhoYWxmTGlmZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAYa2V5U3VwcG9ydGVkUmV3YXJkQXNzZXRzAAAAAAUAAAAVc3VwcG9ydGVkUmV3YXJkQXNzZXRzBQAAAANuaWwAAAABaQEAAAAFc3Rha2UAAAAABAAAAA0kdDAxMzYyMDEzNjgyCQEAAAAPZ2V0UGFyYW1zT3JGYWlsAAAAAAQAAAALYm9uZEFzc2V0SWQIBQAAAA0kdDAxMzYyMDEzNjgyAAAAAl8xBAAAAA1taW5Mb2NrQW1vdW50CAUAAAANJHQwMTM2MjAxMzY4MgAAAAJfMgQAAAAIaGFsZkxpZmUIBQAAAA0kdDAxMzYyMDEzNjgyAAAAAl8zAwkBAAAAAiE9AAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAAIAAAABAgAAABVJbnZhbGlkIHBheW1lbnRzIHNpemUEAAAAB3BheW1lbnQJAAGRAAAAAggFAAAAAWkAAAAIcGF5bWVudHMAAAAAAAAAAAAEAAAABmFtb3VudAgFAAAAB3BheW1lbnQAAAAGYW1vdW50BAAAABNpbnZhbGlkQXNzZXRNZXNzYWdlCQABLAAAAAIJAAEsAAAAAgIAAAAPSW52YWxpZCBhc3NldC4gCQACWAAAAAEFAAAAC2JvbmRBc3NldElkAgAAAAwgaXMgZXhwZWN0ZWQEAAAAB2Fzc2V0SWQJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAggFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAUAAAATaW52YWxpZEFzc2V0TWVzc2FnZQMJAQAAAAIhPQAAAAIFAAAAB2Fzc2V0SWQFAAAAC2JvbmRBc3NldElkCQAAAgAAAAEFAAAAE2ludmFsaWRBc3NldE1lc3NhZ2UEAAAAC3VzZXJBZGRyZXNzCAUAAAABaQAAAAZjYWxsZXIEAAAADnVzZXJBZGRyZXNzU3RyCQAEJQAAAAEIBQAAAAFpAAAABmNhbGxlcgQAAAANJHQwMTQyMjQxNDMzMQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkBAAAAE2dldFVzZXJQYXJhbXNPclVuaXQAAAABBQAAAAt1c2VyQWRkcmVzcwkABRUAAAADBgAAAAAAAAAAAAD//////////wQAAAAJaXNOZXdVc2VyCAUAAAANJHQwMTQyMjQxNDMzMQAAAAJfMQQAAAAKbG9ja0Ftb3VudAgFAAAADSR0MDE0MjI0MTQzMzEAAAACXzIEAAAAD2xvY2tTdGFydEhlaWdodAgFAAAADSR0MDE0MjI0MTQzMzEAAAACXzMEAAAADG1lcmdlZEFtb3VudAMFAAAACWlzTmV3VXNlcgUAAAAGYW1vdW50CQAAZAAAAAIFAAAABmFtb3VudAUAAAAKbG9ja0Ftb3VudAQAAAARbWVyZ2VkU3RhcnRIZWlnaHQDBQAAAAlpc05ld1VzZXIFAAAABmhlaWdodAkBAAAABWFzSW50AAAAAQkAA/wAAAAEBQAAAAxtYXRoQ29udHJhY3QCAAAAE21lcmdlU3Rha2VzUkVBRE9OTFkJAARMAAAAAgUAAAAGYW1vdW50CQAETAAAAAIFAAAABmhlaWdodAkABEwAAAACBQAAAApsb2NrQW1vdW50CQAETAAAAAIFAAAAD2xvY2tTdGFydEhlaWdodAkABEwAAAACBQAAAAhoYWxmTGlmZQUAAAADbmlsBQAAAANuaWwDCQAAZgAAAAIFAAAADW1pbkxvY2tBbW91bnQFAAAADG1lcmdlZEFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAE01pbiBsb2NrIGFtb3VudCBpcyAJAAGkAAAAAQUAAAANbWluTG9ja0Ftb3VudAQAAAANJHQwMTQ2OTIxNDc5NAkBAAAAC1N0YXRzUmVzdWx0AAAAAwUAAAAGYW1vdW50AAAAAAAAAAABAwUAAAAJaXNOZXdVc2VyAAAAAAAAAAABAAAAAAAAAAAABAAAAAxzdGF0c0VudHJpZXMIBQAAAA0kdDAxNDY5MjE0Nzk0AAAAAl8xBAAAAAt0b3RhbFN0YWtlZAgFAAAADSR0MDE0NjkyMTQ3OTQAAAACXzIEAAAADnRvdGFsU3Rha2VkTmV3CAUAAAANJHQwMTQ2OTIxNDc5NAAAAAJfMwkABE4AAAACCQAETgAAAAIJAAROAAAAAgkABEwAAAACCQEAAAASSGlzdG9yeVJlY29yZEVudHJ5AAAABwIAAAAFc3Rha2UFAAAAC3VzZXJBZGRyZXNzCAUAAAABaQAAAA10cmFuc2FjdGlvbklkBQAAAApsb2NrQW1vdW50BQAAAA9sb2NrU3RhcnRIZWlnaHQFAAAADG1lcmdlZEFtb3VudAUAAAARbWVyZ2VkU3RhcnRIZWlnaHQFAAAAA25pbAkBAAAADVJld2FyZEVudHJpZXMAAAADBQAAAAlpc05ld1VzZXIFAAAADnVzZXJBZGRyZXNzU3RyBQAAAApsb2NrQW1vdW50CQEAAAAPTG9ja1BhcmFtc0VudHJ5AAAAAwUAAAALdXNlckFkZHJlc3MFAAAADG1lcmdlZEFtb3VudAUAAAARbWVyZ2VkU3RhcnRIZWlnaHQFAAAADHN0YXRzRW50cmllcwAAAAFpAQAAAAd1bnN0YWtlAAAAAQAAAAZhbW91bnQDCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAACQAAAgAAAAECAAAAI3Vuc3Rha2UgZG9lc24ndCByZXF1aXJlIGFueSBwYXltZW50BAAAAAt1c2VyQWRkcmVzcwgFAAAAAWkAAAAGY2FsbGVyBAAAAA51c2VyQWRkcmVzc1N0cgkABCUAAAABBQAAAAt1c2VyQWRkcmVzcwQAAAANJHQwMTUyODAxNTM0MgkBAAAAD2dldFBhcmFtc09yRmFpbAAAAAAEAAAAC2JvbmRBc3NldElkCAUAAAANJHQwMTUyODAxNTM0MgAAAAJfMQQAAAANbWluTG9ja0Ftb3VudAgFAAAADSR0MDE1MjgwMTUzNDIAAAACXzIEAAAACGhhbGZMaWZlCAUAAAANJHQwMTUyODAxNTM0MgAAAAJfMwQAAAANJHQwMTUzNDUxNTQxOQkBAAAAE2dldFVzZXJQYXJhbXNPckZhaWwAAAABBQAAAAt1c2VyQWRkcmVzcwQAAAAJaXNOZXdVc2VyCAUAAAANJHQwMTUzNDUxNTQxOQAAAAJfMQQAAAAKbG9ja0Ftb3VudAgFAAAADSR0MDE1MzQ1MTU0MTkAAAACXzIEAAAACWxvY2tTdGFydAgFAAAADSR0MDE1MzQ1MTU0MTkAAAACXzMDCQAAZwAAAAIAAAAAAAAAAAAFAAAACmxvY2tBbW91bnQJAAACAAAAAQIAAAASTm90aGluZyB0byB1bnN0YWtlAwkAAGYAAAACBQAAAAZhbW91bnQFAAAACmxvY2tBbW91bnQJAAACAAAAAQkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAKUmVxdWVzdGVkIAkAAaQAAAABBQAAAAZhbW91bnQCAAAAEiwgYnV0IHN0YWtlZCBvbmx5IAkAAaQAAAABBQAAAApsb2NrQW1vdW50BAAAAA9jb21pc3Npb25BbW91bnQJAQAAAAVhc0ludAAAAAEJAAP8AAAABAUAAAAMbWF0aENvbnRyYWN0AgAAACFnZXRVbnN0YWtlQ29taXNzaW9uQW1vdW50UkVBRE9OTFkJAARMAAAAAgUAAAAGYW1vdW50CQAETAAAAAIFAAAACWxvY2tTdGFydAkABEwAAAACBQAAAAhoYWxmTGlmZQUAAAADbmlsBQAAAANuaWwEAAAADSR0MDE1NzMzMTU4ODcJAQAAAAtTdGF0c1Jlc3VsdAAAAAMJAQAAAAEtAAAAAQUAAAAGYW1vdW50AwkAAAAAAAACBQAAAAZhbW91bnQFAAAACmxvY2tBbW91bnQA//////////8AAAAAAAAAAAADCQAAAAAAAAIFAAAABmFtb3VudAUAAAAKbG9ja0Ftb3VudAD//////////wAAAAAAAAAAAAQAAAAMc3RhdHNFbnRyaWVzCAUAAAANJHQwMTU3MzMxNTg4NwAAAAJfMQQAAAALdG90YWxTdGFrZWQIBQAAAA0kdDAxNTczMzE1ODg3AAAAAl8yBAAAAA50b3RhbFN0YWtlZE5ldwgFAAAADSR0MDE1NzMzMTU4ODcAAAACXzMJAAROAAAAAgkABE4AAAACCQAETgAAAAIJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAALdXNlckFkZHJlc3MJAABlAAAAAgUAAAAGYW1vdW50BQAAAA9jb21pc3Npb25BbW91bnQFAAAAC2JvbmRBc3NldElkCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAD2F1Y3Rpb25Db250cmFjdAUAAAAPY29taXNzaW9uQW1vdW50BQAAAAtib25kQXNzZXRJZAkABEwAAAACCQEAAAASSGlzdG9yeVJlY29yZEVudHJ5AAAABwIAAAAHdW5zdGFrZQUAAAALdXNlckFkZHJlc3MIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAACmxvY2tBbW91bnQFAAAACWxvY2tTdGFydAkAAGUAAAACBQAAAApsb2NrQW1vdW50BQAAAAZhbW91bnQFAAAACWxvY2tTdGFydAUAAAADbmlsCQEAAAANUmV3YXJkRW50cmllcwAAAAMHBQAAAA51c2VyQWRkcmVzc1N0cgUAAAAKbG9ja0Ftb3VudAkBAAAAD0xvY2tQYXJhbXNFbnRyeQAAAAMFAAAAC3VzZXJBZGRyZXNzCQAAZQAAAAIFAAAACmxvY2tBbW91bnQFAAAABmFtb3VudAUAAAAJbG9ja1N0YXJ0BQAAAAxzdGF0c0VudHJpZXMAAAABaQEAAAAHZGVwb3NpdAAAAAADCQEAAAACIT0AAAACCQABkAAAAAEIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAABCQAAAgAAAAECAAAAH2V4YWN0IDEgcGF5bWVudCBpcyBhbGxvd2VkIG9ubHkEAAAAA3BtdAkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAQAAAAGYW1vdW50CAUAAAADcG10AAAABmFtb3VudAQAAAAKcG10QXNzZXRJZAkBAAAAC3ZhbHVlT3JFbHNlAAAAAggFAAAAA3BtdAAAAAdhc3NldElkBQAAAAdXQVZFU0lEBAAAAA1wbXRBc3NldElkU3RyCQACWAAAAAEFAAAACnBtdEFzc2V0SWQEAAAACHBtdE11bHRYAwkAAAAAAAACBQAAAApwbXRBc3NldElkBQAAAAdXQVZFU0lEBQAAAAZNVUxUWDgFAAAABk1VTFRYNgQAAAAHYW1vdW50WAkAATYAAAABBQAAAAZhbW91bnQEAAAAC3RvdGFsU3Rha2VkCQEAAAAMZ2V0SW50T3JFbHNlAAAAAgkBAAAAF2tleUxvY2tQYXJhbVRvdGFsQW1vdW50AAAAAAAAAAAAAAAAAAQAAAAMdG90YWxTdGFrZWRYCQABNgAAAAEFAAAAC3RvdGFsU3Rha2VkAwkAAGYAAAACAAAAAAAAAAAABQAAAAt0b3RhbFN0YWtlZAkAAAIAAAABAgAAABtUT0RPOiBjYXNlIGlzIG5vdCBzdXBwb3J0ZWQDCQAAAAAAAAIFAAAAC3RvdGFsU3Rha2VkAAAAAAAAAAAACQEAAAAiSW5jcmVtZW50Tm90RGlzdHJpYnV0ZWRSZXdhcmRFbnRyeQAAAAIFAAAADXBtdEFzc2V0SWRTdHIFAAAABmFtb3VudAQAAAAQcmV3YXJkUGVyTnNidFgxOAkAATwAAAADBQAAAAdhbW91bnRYBQAAAAdNVUxUWDE4BQAAAAx0b3RhbFN0YWtlZFgEAAAAEWRlcG9zaXROdW1MYXN0S0VZCQEAAAARa2V5RGVwb3NpdE51bUxhc3QAAAAABAAAAA5kZXBvc2l0TnVtTGFzdAkBAAAADGdldEludE9yRWxzZQAAAAIFAAAAEWRlcG9zaXROdW1MYXN0S0VZAP//////////BAAAAA1kZXBvc2l0TnVtTmV3CQAAZAAAAAIFAAAADmRlcG9zaXROdW1MYXN0AAAAAAAAAAABAwkBAAAAASEAAAABCQEAAAAIY29udGFpbnMAAAACBQAAABJzdXBwb3J0ZWRBc3NldHNTdHIFAAAADXBtdEFzc2V0SWRTdHIJAAACAAAAAQkAASwAAAACCQABLAAAAAIFAAAAEnN1cHBvcnRlZEFzc2V0c1N0cgIAAAARIGRvZXNuJ3QgY29udGFpbiAFAAAADXBt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", "chainId": 84, "height": 2166972, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GwHC76UTqducv5ydSGKa3NgRFCBe8P499EuCy1ohuPa6 Next: 4gcVtk4cUXd8Ms5ZV9nR8FyMFQ6LGEGPFi4zgrdEPrm1 Diff:
OldNewDifferences
247247
248248 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
249249 } :+ IntegerEntry(bj, aZ))
250- else if (if ((aZ > -1))
251- then (aY > -1)
252- else false)
253- then if (bh)
254- then [IntegerEntry(bj, aZ)]
255- else ({
256- let br = aU
257- let bs = size(br)
258- let bt = nil
259- func bu (bv,bw) = if ((bw >= bs))
260- then bv
261- else bk(bv, br[bw])
262-
263- func bx (bv,bw) = if ((bw >= bs))
264- then bv
265- else throw("List size exceeds 10")
266-
267- bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
268- } :+ IntegerEntry(bj, aZ))
269- else throw(((("uncovered condition: depositNumLast=" + toString(aZ)) + " depositNumUser=") + toString(aY)))
250+ else throw(((("uncovered condition: depositNumLast=" + toString(aZ)) + " depositNumUser=") + toString(aY)))
270251 }
271252
272253
277258 }
278259
279260
280-@Callable(bC)
281-func constructor (bD,bE,bF,bG,bH) = if ((bC.caller != this))
261+func bC (M,bD) = {
262+ let bE = toString(M)
263+ if ((size(bD.payments) > 0))
264+ then throw("payments are not accepted")
265+ else {
266+ let bF = valueOrElse(aR(M), $Tuple3(true, 0, 0))
267+ let bh = bF._1
268+ let bi = bF._2
269+ let bG = bF._3
270+ let aX = toBigInt(bi)
271+ let bj = X(bE)
272+ let aY = ai(bj, -1)
273+ let aZ = ai(W(), -1)
274+ func bH (bl,bm) = {
275+ let bI = aV(bE, bm, aX, aY, aZ)
276+ let bo = bI._1
277+ let bp = bI._2
278+ let bq = bI._3
279+ let be = bI._4
280+ let bJ = ac(bE, bm)
281+ let bK = bl
282+ let bL = bK._1
283+ let bM = bK._2
284+ let bN = makeString([bm, toString(bo)], ":")
285+ let bO = makeString([bM, bN], "_")
286+ if ((0 >= bo))
287+ then $Tuple2(bL, bO)
288+ else $Tuple2((((bL :+ ScriptTransfer(M, bo, ao(bm))) :+ IntegerEntry(bJ, (valueOrElse(getInteger(bJ), 0) + bo))) :+ IntegerEntry(be, 0)), bO)
289+ }
290+
291+ let bP = {
292+ let br = aU
293+ let bs = size(br)
294+ let bt = $Tuple2(nil, "")
295+ func bu (bv,bw) = if ((bw >= bs))
296+ then bv
297+ else bH(bv, br[bw])
298+
299+ func bx (bv,bw) = if ((bw >= bs))
300+ then bv
301+ else throw("List size exceeds 10")
302+
303+ bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
304+ }
305+ let bQ = bP._1
306+ let bR = bP._2
307+ if ((0 >= size(bQ)))
308+ then throw("nothing to claim")
309+ else ((bQ :+ IntegerEntry(bj, aZ)) :+ aD(M, bD.transactionId, drop(bR, 1)))
310+ }
311+ }
312+
313+
314+@Callable(bD)
315+func constructor (bS,bT,bU,bV,bW) = if ((bD.caller != this))
282316 then throw("Permission denied")
283- else [StringEntry(H(), bD), StringEntry(I(), bE), IntegerEntry(J(), bF), IntegerEntry(K(), bG), StringEntry(V(), bH)]
317+ else [StringEntry(H(), bS), StringEntry(I(), bT), IntegerEntry(J(), bU), IntegerEntry(K(), bV), StringEntry(V(), bW)]
284318
285319
286320
287-@Callable(bC)
321+@Callable(bD)
288322 func stake () = {
289- let bI = aP()
290- let bJ = bI._1
291- let bF = bI._2
292- let bG = bI._3
293- if ((size(bC.payments) != 1))
323+ let bX = aP()
324+ let bY = bX._1
325+ let bU = bX._2
326+ let bV = bX._3
327+ if ((size(bD.payments) != 1))
294328 then throw("Invalid payments size")
295329 else {
296- let bK = bC.payments[0]
297- let aN = bK.amount
298- let bL = (("Invalid asset. " + toBase58String(bJ)) + " is expected")
299- let aW = valueOrErrorMessage(bK.assetId, bL)
300- if ((aW != bJ))
301- then throw(bL)
330+ let bZ = bD.payments[0]
331+ let aN = bZ.amount
332+ let ca = (("Invalid asset. " + toBase58String(bY)) + " is expected")
333+ let aW = valueOrErrorMessage(bZ.assetId, ca)
334+ if ((aW != bY))
335+ then throw(ca)
302336 else {
303- let M = bC.caller
304- let bM = toString(bC.caller)
305- let bN = valueOrElse(aR(M), $Tuple3(true, 0, -1))
306- let bh = bN._1
307- let bO = bN._2
308- let bP = bN._3
309- let bQ = if (bh)
337+ let M = bD.caller
338+ let bE = toString(bD.caller)
339+ let cb = valueOrElse(aR(M), $Tuple3(true, 0, -1))
340+ let bh = cb._1
341+ let cc = cb._2
342+ let cd = cb._3
343+ let ce = if (bh)
310344 then aN
311- else (aN + bO)
312- let bR = if (bh)
345+ else (aN + cc)
346+ let cf = if (bh)
313347 then height
314- else aq(invoke(D, "mergeStakesREADONLY", [aN, height, bO, bP, bG], nil))
315- if ((bF > bQ))
316- then throw(("Min lock amount is " + toString(bF)))
348+ else aq(invoke(D, "mergeStakesREADONLY", [aN, height, cc, cd, bV], nil))
349+ if ((bU > ce))
350+ then throw(("Min lock amount is " + toString(bU)))
317351 else {
318- let bS = aE(aN, 1, if (bh)
352+ let cg = aE(aN, 1, if (bh)
319353 then 1
320354 else 0)
321- let bT = bS._1
322- let bU = bS._2
323- let bV = bS._3
324- ((([aC("stake", M, bC.transactionId, bO, bP, bQ, bR)] ++ bg(bh, bM, bO)) ++ aM(M, bQ, bR)) ++ bT)
355+ let ch = cg._1
356+ let ci = cg._2
357+ let cj = cg._3
358+ ((([aC("stake", M, bD.transactionId, cc, cd, ce, cf)] ++ bg(bh, bE, cc)) ++ aM(M, ce, cf)) ++ ch)
325359 }
326360 }
327361 }
329363
330364
331365
332-@Callable(bC)
333-func unstake (aN) = if ((size(bC.payments) != 0))
366+@Callable(bD)
367+func unstake (aN) = if ((size(bD.payments) != 0))
334368 then throw("unstake doesn't require any payment")
335369 else {
336- let M = bC.caller
337- let bM = toString(M)
338- let bW = aP()
339- let bJ = bW._1
340- let bF = bW._2
341- let bG = bW._3
342- let bX = aS(M)
343- let bh = bX._1
344- let bO = bX._2
345- let bY = bX._3
346- if ((0 >= bO))
370+ let M = bD.caller
371+ let bE = toString(M)
372+ let ck = aP()
373+ let bY = ck._1
374+ let bU = ck._2
375+ let bV = ck._3
376+ let cl = aS(M)
377+ let bh = cl._1
378+ let cc = cl._2
379+ let cm = cl._3
380+ if ((0 >= cc))
347381 then throw("Nothing to unstake")
348- else if ((aN > bO))
349- then throw(((("Requested " + toString(aN)) + ", but staked only ") + toString(bO)))
382+ else if ((aN > cc))
383+ then throw(((("Requested " + toString(aN)) + ", but staked only ") + toString(cc)))
350384 else {
351- let bZ = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [aN, bY, bG], nil))
352- let ca = aE(-(aN), if ((aN == bO))
385+ let cn = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [aN, cm, bV], nil))
386+ let co = aE(-(aN), if ((aN == cc))
353387 then -1
354- else 0, if ((aN == bO))
388+ else 0, if ((aN == cc))
355389 then -1
356390 else 0)
357- let bT = ca._1
358- let bU = ca._2
359- let bV = ca._3
360- ((([ScriptTransfer(M, (aN - bZ), bJ), ScriptTransfer(F, bZ, bJ), aC("unstake", M, bC.transactionId, bO, bY, (bO - aN), bY)] ++ bg(false, bM, bO)) ++ aM(M, (bO - aN), bY)) ++ bT)
391+ let ch = co._1
392+ let ci = co._2
393+ let cj = co._3
394+ ((([ScriptTransfer(M, (aN - cn), bY), ScriptTransfer(F, cn, bY), aC("unstake", M, bD.transactionId, cc, cm, (cc - aN), cm)] ++ bg(false, bE, cc)) ++ aM(M, (cc - aN), cm)) ++ ch)
361395 }
362396 }
363397
364398
365399
366-@Callable(bC)
367-func deposit () = if ((size(bC.payments) != 1))
400+@Callable(bD)
401+func deposit () = if ((size(bD.payments) != 1))
368402 then throw("exact 1 payment is allowed only")
369403 else {
370- let cb = bC.payments[0]
371- let aN = cb.amount
372- let cc = valueOrElse(cb.assetId, i)
373- let cd = toBase58String(cc)
374- let ce = if ((cc == i))
404+ let cp = bD.payments[0]
405+ let aN = cp.amount
406+ let cq = valueOrElse(cp.assetId, i)
407+ let cr = toBase58String(cq)
408+ let cs = if ((cq == i))
375409 then f
376410 else e
377- let cf = toBigInt(aN)
378- let bU = ai(R(), 0)
379- let cg = toBigInt(bU)
380- if ((0 > bU))
411+ let ct = toBigInt(aN)
412+ let ci = ai(R(), 0)
413+ let cu = toBigInt(ci)
414+ if ((0 > ci))
381415 then throw("TODO: case is not supported")
382- else if ((bU == 0))
383- then by(cd, aN)
416+ else if ((ci == 0))
417+ then by(cr, aN)
384418 else {
385- let ch = fraction(cf, g, cg)
386- let ci = W()
387- let aZ = ai(ci, -1)
388- let cj = (aZ + 1)
389- if (!(contains(aT, cd)))
390- then throw(((aT + " doesn't contain ") + cd))
419+ let cv = fraction(ct, g, cu)
420+ let cw = W()
421+ let aZ = ai(cw, -1)
422+ let cx = (aZ + 1)
423+ if (!(contains(aT, cr)))
424+ then throw(((aT + " doesn't contain ") + cr))
391425 else {
392- func ck (bl,cl) = {
393- let cm = Y(cj, cl)
394- let cn = al(Y(aZ, cl), "0")
395- (bl :+ (if ((cl == cd))
396- then StringEntry(cm, toString((parseBigIntValue(cn) + ch)))
397- else StringEntry(cm, cn)))
426+ func cy (bl,cz) = {
427+ let cA = Y(cx, cz)
428+ let cB = al(Y(aZ, cz), "0")
429+ (bl :+ (if ((cz == cr))
430+ then StringEntry(cA, toString((parseBigIntValue(cB) + cv)))
431+ else StringEntry(cA, cB)))
398432 }
399433
400434 ({
403437 let bt = nil
404438 func bu (bv,bw) = if ((bw >= bs))
405439 then bv
406- else ck(bv, br[bw])
440+ else cy(bv, br[bw])
407441
408442 func bx (bv,bw) = if ((bw >= bs))
409443 then bv
410444 else throw("List size exceeds 10")
411445
412446 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
413- } :+ IntegerEntry(ci, cj))
447+ } :+ IntegerEntry(cw, cx))
414448 }
415449 }
416450 }
417451
418452
419453
420-@Callable(bC)
421-func claimRewards () = {
422- let M = bC.caller
423- let bM = toString(M)
424- if ((size(bC.payments) > 0))
425- then throw("payments are not accepted")
426- else {
427- let co = valueOrElse(aR(M), $Tuple3(true, 0, 0))
428- let bh = co._1
429- let bi = co._2
430- let cp = co._3
431- let aX = toBigInt(bi)
432- let bj = X(bM)
433- let aY = ai(bj, -1)
434- let aZ = ai(W(), -1)
435- func cq (bl,bm) = {
436- let cr = aV(bM, bm, aX, aY, aZ)
437- let bo = cr._1
438- let bp = cr._2
439- let bq = cr._3
440- let be = cr._4
441- let cs = ac(bM, bm)
442- let ct = bl
443- let cu = ct._1
444- let cv = ct._2
445- let cw = makeString([bm, toString(bo)], ":")
446- let cx = makeString([cv, cw], "_")
447- if ((0 >= bo))
448- then $Tuple2(cu, cx)
449- else $Tuple2((((cu :+ ScriptTransfer(M, bo, ao(bm))) :+ IntegerEntry(cs, (valueOrElse(getInteger(cs), 0) + bo))) :+ IntegerEntry(be, 0)), cx)
450- }
451-
452- let cy = {
453- let br = aU
454- let bs = size(br)
455- let bt = $Tuple2(nil, "")
456- func bu (bv,bw) = if ((bw >= bs))
457- then bv
458- else cq(bv, br[bw])
459-
460- func bx (bv,bw) = if ((bw >= bs))
461- then bv
462- else throw("List size exceeds 10")
463-
464- bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
465- }
466- let cz = cy._1
467- let cA = cy._2
468- if ((0 >= size(cz)))
469- then throw("nothing to claim")
470- else ((cz :+ IntegerEntry(bj, aZ)) :+ aD(M, bC.transactionId, drop(cA, 1)))
471- }
472- }
454+@Callable(bD)
455+func claimRewards () = bC(bD.caller, bD)
473456
474457
475458
476-@Callable(bC)
477-func unclaimedRewardsREADONLY (bM) = {
478- func cB (bl,bm) = ((bl + makeString([bm, "0", "0"], ":")) + "_")
459+@Callable(bD)
460+func claimRewardsByOriginCaller () = bC(bD.originCaller, bD)
479461
480- let cC = if ((bM == ""))
462+
463+
464+@Callable(bD)
465+func unclaimedRewardsREADONLY (bE) = {
466+ func cC (bl,bm) = ((bl + makeString([bm, "0", "0"], ":")) + "_")
467+
468+ let cD = if ((bE == ""))
481469 then {
482470 let br = aU
483471 let bs = size(br)
484472 let bt = ""
485473 func bu (bv,bw) = if ((bw >= bs))
486474 then bv
487- else cB(bv, br[bw])
475+ else cC(bv, br[bw])
488476
489477 func bx (bv,bw) = if ((bw >= bs))
490478 then bv
493481 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
494482 }
495483 else {
496- let M = addressFromStringValue(bM)
497- let cD = valueOrElse(aR(M), $Tuple3(true, 0, 0))
498- let bh = cD._1
499- let bi = cD._2
500- let cp = cD._3
484+ let M = addressFromStringValue(bE)
485+ let cE = valueOrElse(aR(M), $Tuple3(true, 0, 0))
486+ let bh = cE._1
487+ let bi = cE._2
488+ let bG = cE._3
501489 let aX = toBigInt(bi)
502- let bj = X(bM)
490+ let bj = X(bE)
503491 let aY = ai(bj, -1)
504492 let aZ = ai(W(), -1)
505- func cq (bl,bm) = {
506- let cE = aV(bM, bm, aX, aY, aZ)
507- let bo = cE._1
508- let bp = cE._2
509- let bq = cE._3
510- let be = cE._4
511- let cF = valueOrElse(getInteger(ac(bM, bm)), 0)
512- ((bl + makeString([bm, toString(bo), toString(cF)], ":")) + "_")
493+ func bH (bl,bm) = {
494+ let cF = aV(bE, bm, aX, aY, aZ)
495+ let bo = cF._1
496+ let bp = cF._2
497+ let bq = cF._3
498+ let be = cF._4
499+ let cG = valueOrElse(getInteger(ac(bE, bm)), 0)
500+ ((bl + makeString([bm, toString(bo), toString(cG)], ":")) + "_")
513501 }
514502
515503 let br = aU
517505 let bt = ""
518506 func bu (bv,bw) = if ((bw >= bs))
519507 then bv
520- else cq(bv, br[bw])
508+ else bH(bv, br[bw])
521509
522510 func bx (bv,bw) = if ((bw >= bs))
523511 then bv
525513
526514 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
527515 }
528- $Tuple2(nil, dropRight(cC, 1))
516+ $Tuple2(nil, dropRight(cD, 1))
529517 }
530518
531519
532520
533-@Callable(bC)
534-func nsbtUnstakingSYSREADONLY (cG,cH) = {
535- let cI = if ((cG == ""))
521+@Callable(bD)
522+func nsbtUnstakingSYSREADONLY (cH,cI) = {
523+ let cJ = if ((cH == ""))
536524 then [0, 0, 0, 0]
537525 else {
538- let M = addressFromStringValue(cG)
539- let cJ = aP()
540- let cK = cJ._1
541- let bF = cJ._2
542- let bG = cJ._3
543- let cL = aS(M)
544- let bh = cL._1
545- let bi = cL._2
546- let bY = cL._3
547- let cM = (bi - cH)
548- let bZ = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [cH, bY, bG], nil))
549- let cN = (cH - bZ)
550-[bi, cM, cN, bZ]
526+ let M = addressFromStringValue(cH)
527+ let cK = aP()
528+ let cL = cK._1
529+ let bU = cK._2
530+ let bV = cK._3
531+ let cM = aS(M)
532+ let bh = cM._1
533+ let bi = cM._2
534+ let cm = cM._3
535+ let cN = (bi - cI)
536+ let cn = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [cI, cm, bV], nil))
537+ let cO = (cI - cn)
538+[bi, cN, cO, cn]
551539 }
552- $Tuple2(nil, cI)
540+ $Tuple2(nil, cJ)
553541 }
554542
555543
556544
557-@Callable(bC)
558-func nsbtStakingSYSREADONLY (bM) = {
559- let cO = ai(R(), 0)
560- if ((bM == ""))
561- then $Tuple2(nil, [0, cO, 0])
545+@Callable(bD)
546+func nsbtStakingSYSREADONLY (bE) = {
547+ let cP = ai(R(), 0)
548+ if ((bE == ""))
549+ then $Tuple2(nil, [0, cP, 0])
562550 else {
563- let M = am(bM)
564- let cP = valueOrElse(aR(M), $Tuple3(true, 0, 0))
565- let bh = cP._1
566- let cQ = cP._2
567- let cp = cP._3
568- $Tuple2(nil, [cQ, cO, cp])
551+ let M = am(bE)
552+ let cQ = valueOrElse(aR(M), $Tuple3(true, 0, 0))
553+ let bh = cQ._1
554+ let cR = cQ._2
555+ let bG = cQ._3
556+ $Tuple2(nil, [cR, cP, bG])
569557 }
570558 }
571559
572560
573-@Verifier(cR)
574-func cS () = {
575- let cT = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
576- let cU = split(valueOrElse(getString(C, "%s__multisig"), cT), b)
577- let cV = ((((if (sigVerify(cR.bodyBytes, cR.proofs[0], fromBase58String(cU[0])))
561+@Verifier(cS)
562+func cT () = {
563+ let cU = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
564+ let cV = split(valueOrElse(getString(C, "%s__multisig"), cU), b)
565+ let cW = ((((if (sigVerify(cS.bodyBytes, cS.proofs[0], fromBase58String(cV[0])))
578566 then 1
579- else 0) + (if (sigVerify(cR.bodyBytes, cR.proofs[1], fromBase58String(cU[1])))
567+ else 0) + (if (sigVerify(cS.bodyBytes, cS.proofs[1], fromBase58String(cV[1])))
580568 then 1
581- else 0)) + (if (sigVerify(cR.bodyBytes, cR.proofs[2], fromBase58String(cU[2])))
569+ else 0)) + (if (sigVerify(cS.bodyBytes, cS.proofs[2], fromBase58String(cV[2])))
582570 then 1
583- else 0)) + (if (sigVerify(cR.bodyBytes, cR.proofs[3], fromBase58String(cU[3])))
571+ else 0)) + (if (sigVerify(cS.bodyBytes, cS.proofs[3], fromBase58String(cV[3])))
584572 then 2
585573 else 0))
586- (cV >= 3)
574+ (cW >= 3)
587575 }
588576
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "__"
77
88 let c = 1000000
99
1010 let d = 100000000
1111
1212 let e = toBigInt(c)
1313
1414 let f = toBigInt(d)
1515
1616 let g = toBigInt(1000000000000000000)
1717
1818 let h = "WAVES"
1919
2020 let i = fromBase58String(h)
2121
2222 let j = 1
2323
2424 let k = 2
2525
2626 let l = 3
2727
2828 let m = 4
2929
3030 let n = 5
3131
3232 let o = 6
3333
3434 let p = 7
3535
3636 let q = 8
3737
3838 let r = 9
3939
4040 func s (t,u) = valueOrErrorMessage(getString(t, u), (((("mandatory " + toString(t)) + ".") + u) + " is not defined"))
4141
4242
4343 func v () = "%s%s__config__controlAddress"
4444
4545
4646 func w () = "%s__controlConfig"
4747
4848
4949 func x (y) = split(s(y, w()), b)
5050
5151
5252 func z (A,B) = valueOrErrorMessage(addressFromString(A[B]), ("Control cfg doesn't contain address at index " + toString(B)))
5353
5454
5555 let C = addressFromStringValue(valueOrElse(getString(this, v()), "3N4NS7d4Jo9a6F14LiFUKKYVdUkkf2eP4Zx"))
5656
5757 let A = x(C)
5858
5959 let D = z(A, m)
6060
6161 let E = z(A, j)
6262
6363 let F = z(A, k)
6464
6565 func G () = "bond_asset_id"
6666
6767
6868 func H () = "%s__neutrinoContractAddress"
6969
7070
7171 func I () = "%s__mathContract"
7272
7373
7474 func J () = "%s__minLockAmount"
7575
7676
7777 func K () = "%s__halfLife"
7878
7979
8080 func L (M) = makeString(["%s%s%s", "paramByUser", toString(M), "amount"], a)
8181
8282
8383 func N (M) = makeString(["%s%s%s", "paramByUser", toString(M), "start"], a)
8484
8585
8686 func O (P,M,Q) = makeString(["%s%s%s%s", "history", P, toString(M), toBase58String(Q)], a)
8787
8888
8989 func R () = makeString(["%s%s", "stats", "activeTotalLocked"], a)
9090
9191
9292 func S () = makeString(["%s%s", "stats", "locksCount"], a)
9393
9494
9595 func T () = makeString(["%s%s", "stats", "activeUsersCount"], a)
9696
9797
9898 func U () = "%s__nextPeriod"
9999
100100
101101 func V () = "supportedRewardAssets"
102102
103103
104104 func W () = makeString(["%s%s%s", "dep", "lastNum"], a)
105105
106106
107107 func X (M) = makeString(["%s%s%s", "userRwdFromDepNum", M], a)
108108
109109
110110 func Y (Z,aa) = makeString(["%s%d", "rwdPerNsbtSumByDepNum", toString(Z), aa], a)
111111
112112
113113 func ab (M,aa) = makeString(["%s%s%s", "rwd", M, aa], a)
114114
115115
116116 func ac (M,aa) = makeString(["%s%s%s", "clm", M, aa], a)
117117
118118
119119 func ad (aa) = makeString(["%s%s", "notDistributed", aa], a)
120120
121121
122122 func ae (af,ag) = fraction(toBigInt(af), g, ag)
123123
124124
125125 func ah (u) = valueOrElse(getInteger(this, u), 0)
126126
127127
128128 func ai (u,aj) = valueOrElse(getInteger(this, u), aj)
129129
130130
131131 func ak (u) = valueOrErrorMessage(getInteger(this, u), (("Mandatory this." + u) + " is not defined"))
132132
133133
134134 func al (u,aj) = valueOrElse(getString(this, u), aj)
135135
136136
137137 func am (an) = valueOrErrorMessage(addressFromString(an), ("couldn't parse passed addressStr=" + an))
138138
139139
140140 func ao (ap) = if ((ap == h))
141141 then unit
142142 else fromBase58String(ap)
143143
144144
145145 func aq (ar) = {
146146 let as = ar
147147 if ($isInstanceOf(as, "Int"))
148148 then {
149149 let at = as
150150 at
151151 }
152152 else throw("fail to cast into Int")
153153 }
154154
155155
156156 func au (av,aw,ax,ay) = makeString(["%d%d%d%d%d%d", toString(lastBlock.height), toString(lastBlock.timestamp), toString(av), toString(aw), toString(ax), toString(ay)], a)
157157
158158
159159 func az (aA,aB) = makeString(["%s%d%d%s", aA, toString(lastBlock.height), toString(lastBlock.timestamp), aB], a)
160160
161161
162162 func aC (P,M,Q,av,aw,ax,ay) = StringEntry(O(P, M, Q), au(av, aw, ax, ay))
163163
164164
165165 func aD (M,Q,aB) = StringEntry(O("claim", M, Q), az(toString(M), aB))
166166
167167
168168 func aE (aF,aG,aH) = {
169169 let aI = ah(S())
170170 let aJ = ah(T())
171171 let aK = ah(R())
172172 let aL = (aK + aF)
173173 $Tuple3([IntegerEntry(S(), (aI + aG)), IntegerEntry(T(), (aJ + aH)), IntegerEntry(R(), aL)], aK, aL)
174174 }
175175
176176
177177 func aM (M,aN,aO) = [IntegerEntry(L(M), aN), IntegerEntry(N(M), aO)]
178178
179179
180180 func aP () = $Tuple3(fromBase58String(getStringValue(E, G())), ak(J()), ak(K()))
181181
182182
183183 func aQ (M) = (ai(L(M), 0) > 0)
184184
185185
186186 func aR (M) = if (aQ(M))
187187 then $Tuple3(false, ak(L(M)), ak(N(M)))
188188 else unit
189189
190190
191191 func aS (M) = valueOrErrorMessage(aR(M), (("User " + toString(M)) + " is not defined"))
192192
193193
194194 let aT = al(V(), "")
195195
196196 let aU = split(aT, "_")
197197
198198 func aV (M,aW,aX,aY,aZ) = {
199199 let ba = Y(aZ, aW)
200200 let bb = parseBigIntValue(al(Y(aZ, aW), "0"))
201201 let bc = parseBigIntValue(al(Y(aY, aW), "0"))
202202 let bd = toInt(fraction((bb - bc), aX, g))
203203 let be = ab(M, aW)
204204 let bf = ai(be, 0)
205205 $Tuple4((bf + bd), bf, bd, be)
206206 }
207207
208208
209209 func bg (bh,M,bi) = {
210210 let aX = toBigInt(bi)
211211 let bj = X(M)
212212 let aY = ai(bj, -1)
213213 let aZ = ai(W(), -1)
214214 func bk (bl,bm) = {
215215 let bn = aV(M, bm, aX, aY, aZ)
216216 let bo = bn._1
217217 let bp = bn._2
218218 let bq = bn._3
219219 let be = bn._4
220220 (bl :+ IntegerEntry(be, bo))
221221 }
222222
223223 if (if ((aZ == -1))
224224 then (aY == -1)
225225 else false)
226226 then nil
227227 else if (if ((aZ == -1))
228228 then (aY > -1)
229229 else false)
230230 then throw("invalid depositNumLast and depositNumUser state")
231231 else if (if ((aZ > -1))
232232 then (aY == -1)
233233 else false)
234234 then if (bh)
235235 then [IntegerEntry(bj, aZ)]
236236 else ({
237237 let br = aU
238238 let bs = size(br)
239239 let bt = nil
240240 func bu (bv,bw) = if ((bw >= bs))
241241 then bv
242242 else bk(bv, br[bw])
243243
244244 func bx (bv,bw) = if ((bw >= bs))
245245 then bv
246246 else throw("List size exceeds 10")
247247
248248 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
249249 } :+ IntegerEntry(bj, aZ))
250- else if (if ((aZ > -1))
251- then (aY > -1)
252- else false)
253- then if (bh)
254- then [IntegerEntry(bj, aZ)]
255- else ({
256- let br = aU
257- let bs = size(br)
258- let bt = nil
259- func bu (bv,bw) = if ((bw >= bs))
260- then bv
261- else bk(bv, br[bw])
262-
263- func bx (bv,bw) = if ((bw >= bs))
264- then bv
265- else throw("List size exceeds 10")
266-
267- bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
268- } :+ IntegerEntry(bj, aZ))
269- else throw(((("uncovered condition: depositNumLast=" + toString(aZ)) + " depositNumUser=") + toString(aY)))
250+ else throw(((("uncovered condition: depositNumLast=" + toString(aZ)) + " depositNumUser=") + toString(aY)))
270251 }
271252
272253
273254 func by (aa,bz) = {
274255 let bA = ad(aa)
275256 let bB = ai(bA, 0)
276257 [IntegerEntry(bA, (bB + bz))]
277258 }
278259
279260
280-@Callable(bC)
281-func constructor (bD,bE,bF,bG,bH) = if ((bC.caller != this))
261+func bC (M,bD) = {
262+ let bE = toString(M)
263+ if ((size(bD.payments) > 0))
264+ then throw("payments are not accepted")
265+ else {
266+ let bF = valueOrElse(aR(M), $Tuple3(true, 0, 0))
267+ let bh = bF._1
268+ let bi = bF._2
269+ let bG = bF._3
270+ let aX = toBigInt(bi)
271+ let bj = X(bE)
272+ let aY = ai(bj, -1)
273+ let aZ = ai(W(), -1)
274+ func bH (bl,bm) = {
275+ let bI = aV(bE, bm, aX, aY, aZ)
276+ let bo = bI._1
277+ let bp = bI._2
278+ let bq = bI._3
279+ let be = bI._4
280+ let bJ = ac(bE, bm)
281+ let bK = bl
282+ let bL = bK._1
283+ let bM = bK._2
284+ let bN = makeString([bm, toString(bo)], ":")
285+ let bO = makeString([bM, bN], "_")
286+ if ((0 >= bo))
287+ then $Tuple2(bL, bO)
288+ else $Tuple2((((bL :+ ScriptTransfer(M, bo, ao(bm))) :+ IntegerEntry(bJ, (valueOrElse(getInteger(bJ), 0) + bo))) :+ IntegerEntry(be, 0)), bO)
289+ }
290+
291+ let bP = {
292+ let br = aU
293+ let bs = size(br)
294+ let bt = $Tuple2(nil, "")
295+ func bu (bv,bw) = if ((bw >= bs))
296+ then bv
297+ else bH(bv, br[bw])
298+
299+ func bx (bv,bw) = if ((bw >= bs))
300+ then bv
301+ else throw("List size exceeds 10")
302+
303+ bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
304+ }
305+ let bQ = bP._1
306+ let bR = bP._2
307+ if ((0 >= size(bQ)))
308+ then throw("nothing to claim")
309+ else ((bQ :+ IntegerEntry(bj, aZ)) :+ aD(M, bD.transactionId, drop(bR, 1)))
310+ }
311+ }
312+
313+
314+@Callable(bD)
315+func constructor (bS,bT,bU,bV,bW) = if ((bD.caller != this))
282316 then throw("Permission denied")
283- else [StringEntry(H(), bD), StringEntry(I(), bE), IntegerEntry(J(), bF), IntegerEntry(K(), bG), StringEntry(V(), bH)]
317+ else [StringEntry(H(), bS), StringEntry(I(), bT), IntegerEntry(J(), bU), IntegerEntry(K(), bV), StringEntry(V(), bW)]
284318
285319
286320
287-@Callable(bC)
321+@Callable(bD)
288322 func stake () = {
289- let bI = aP()
290- let bJ = bI._1
291- let bF = bI._2
292- let bG = bI._3
293- if ((size(bC.payments) != 1))
323+ let bX = aP()
324+ let bY = bX._1
325+ let bU = bX._2
326+ let bV = bX._3
327+ if ((size(bD.payments) != 1))
294328 then throw("Invalid payments size")
295329 else {
296- let bK = bC.payments[0]
297- let aN = bK.amount
298- let bL = (("Invalid asset. " + toBase58String(bJ)) + " is expected")
299- let aW = valueOrErrorMessage(bK.assetId, bL)
300- if ((aW != bJ))
301- then throw(bL)
330+ let bZ = bD.payments[0]
331+ let aN = bZ.amount
332+ let ca = (("Invalid asset. " + toBase58String(bY)) + " is expected")
333+ let aW = valueOrErrorMessage(bZ.assetId, ca)
334+ if ((aW != bY))
335+ then throw(ca)
302336 else {
303- let M = bC.caller
304- let bM = toString(bC.caller)
305- let bN = valueOrElse(aR(M), $Tuple3(true, 0, -1))
306- let bh = bN._1
307- let bO = bN._2
308- let bP = bN._3
309- let bQ = if (bh)
337+ let M = bD.caller
338+ let bE = toString(bD.caller)
339+ let cb = valueOrElse(aR(M), $Tuple3(true, 0, -1))
340+ let bh = cb._1
341+ let cc = cb._2
342+ let cd = cb._3
343+ let ce = if (bh)
310344 then aN
311- else (aN + bO)
312- let bR = if (bh)
345+ else (aN + cc)
346+ let cf = if (bh)
313347 then height
314- else aq(invoke(D, "mergeStakesREADONLY", [aN, height, bO, bP, bG], nil))
315- if ((bF > bQ))
316- then throw(("Min lock amount is " + toString(bF)))
348+ else aq(invoke(D, "mergeStakesREADONLY", [aN, height, cc, cd, bV], nil))
349+ if ((bU > ce))
350+ then throw(("Min lock amount is " + toString(bU)))
317351 else {
318- let bS = aE(aN, 1, if (bh)
352+ let cg = aE(aN, 1, if (bh)
319353 then 1
320354 else 0)
321- let bT = bS._1
322- let bU = bS._2
323- let bV = bS._3
324- ((([aC("stake", M, bC.transactionId, bO, bP, bQ, bR)] ++ bg(bh, bM, bO)) ++ aM(M, bQ, bR)) ++ bT)
355+ let ch = cg._1
356+ let ci = cg._2
357+ let cj = cg._3
358+ ((([aC("stake", M, bD.transactionId, cc, cd, ce, cf)] ++ bg(bh, bE, cc)) ++ aM(M, ce, cf)) ++ ch)
325359 }
326360 }
327361 }
328362 }
329363
330364
331365
332-@Callable(bC)
333-func unstake (aN) = if ((size(bC.payments) != 0))
366+@Callable(bD)
367+func unstake (aN) = if ((size(bD.payments) != 0))
334368 then throw("unstake doesn't require any payment")
335369 else {
336- let M = bC.caller
337- let bM = toString(M)
338- let bW = aP()
339- let bJ = bW._1
340- let bF = bW._2
341- let bG = bW._3
342- let bX = aS(M)
343- let bh = bX._1
344- let bO = bX._2
345- let bY = bX._3
346- if ((0 >= bO))
370+ let M = bD.caller
371+ let bE = toString(M)
372+ let ck = aP()
373+ let bY = ck._1
374+ let bU = ck._2
375+ let bV = ck._3
376+ let cl = aS(M)
377+ let bh = cl._1
378+ let cc = cl._2
379+ let cm = cl._3
380+ if ((0 >= cc))
347381 then throw("Nothing to unstake")
348- else if ((aN > bO))
349- then throw(((("Requested " + toString(aN)) + ", but staked only ") + toString(bO)))
382+ else if ((aN > cc))
383+ then throw(((("Requested " + toString(aN)) + ", but staked only ") + toString(cc)))
350384 else {
351- let bZ = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [aN, bY, bG], nil))
352- let ca = aE(-(aN), if ((aN == bO))
385+ let cn = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [aN, cm, bV], nil))
386+ let co = aE(-(aN), if ((aN == cc))
353387 then -1
354- else 0, if ((aN == bO))
388+ else 0, if ((aN == cc))
355389 then -1
356390 else 0)
357- let bT = ca._1
358- let bU = ca._2
359- let bV = ca._3
360- ((([ScriptTransfer(M, (aN - bZ), bJ), ScriptTransfer(F, bZ, bJ), aC("unstake", M, bC.transactionId, bO, bY, (bO - aN), bY)] ++ bg(false, bM, bO)) ++ aM(M, (bO - aN), bY)) ++ bT)
391+ let ch = co._1
392+ let ci = co._2
393+ let cj = co._3
394+ ((([ScriptTransfer(M, (aN - cn), bY), ScriptTransfer(F, cn, bY), aC("unstake", M, bD.transactionId, cc, cm, (cc - aN), cm)] ++ bg(false, bE, cc)) ++ aM(M, (cc - aN), cm)) ++ ch)
361395 }
362396 }
363397
364398
365399
366-@Callable(bC)
367-func deposit () = if ((size(bC.payments) != 1))
400+@Callable(bD)
401+func deposit () = if ((size(bD.payments) != 1))
368402 then throw("exact 1 payment is allowed only")
369403 else {
370- let cb = bC.payments[0]
371- let aN = cb.amount
372- let cc = valueOrElse(cb.assetId, i)
373- let cd = toBase58String(cc)
374- let ce = if ((cc == i))
404+ let cp = bD.payments[0]
405+ let aN = cp.amount
406+ let cq = valueOrElse(cp.assetId, i)
407+ let cr = toBase58String(cq)
408+ let cs = if ((cq == i))
375409 then f
376410 else e
377- let cf = toBigInt(aN)
378- let bU = ai(R(), 0)
379- let cg = toBigInt(bU)
380- if ((0 > bU))
411+ let ct = toBigInt(aN)
412+ let ci = ai(R(), 0)
413+ let cu = toBigInt(ci)
414+ if ((0 > ci))
381415 then throw("TODO: case is not supported")
382- else if ((bU == 0))
383- then by(cd, aN)
416+ else if ((ci == 0))
417+ then by(cr, aN)
384418 else {
385- let ch = fraction(cf, g, cg)
386- let ci = W()
387- let aZ = ai(ci, -1)
388- let cj = (aZ + 1)
389- if (!(contains(aT, cd)))
390- then throw(((aT + " doesn't contain ") + cd))
419+ let cv = fraction(ct, g, cu)
420+ let cw = W()
421+ let aZ = ai(cw, -1)
422+ let cx = (aZ + 1)
423+ if (!(contains(aT, cr)))
424+ then throw(((aT + " doesn't contain ") + cr))
391425 else {
392- func ck (bl,cl) = {
393- let cm = Y(cj, cl)
394- let cn = al(Y(aZ, cl), "0")
395- (bl :+ (if ((cl == cd))
396- then StringEntry(cm, toString((parseBigIntValue(cn) + ch)))
397- else StringEntry(cm, cn)))
426+ func cy (bl,cz) = {
427+ let cA = Y(cx, cz)
428+ let cB = al(Y(aZ, cz), "0")
429+ (bl :+ (if ((cz == cr))
430+ then StringEntry(cA, toString((parseBigIntValue(cB) + cv)))
431+ else StringEntry(cA, cB)))
398432 }
399433
400434 ({
401435 let br = aU
402436 let bs = size(br)
403437 let bt = nil
404438 func bu (bv,bw) = if ((bw >= bs))
405439 then bv
406- else ck(bv, br[bw])
440+ else cy(bv, br[bw])
407441
408442 func bx (bv,bw) = if ((bw >= bs))
409443 then bv
410444 else throw("List size exceeds 10")
411445
412446 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
413- } :+ IntegerEntry(ci, cj))
447+ } :+ IntegerEntry(cw, cx))
414448 }
415449 }
416450 }
417451
418452
419453
420-@Callable(bC)
421-func claimRewards () = {
422- let M = bC.caller
423- let bM = toString(M)
424- if ((size(bC.payments) > 0))
425- then throw("payments are not accepted")
426- else {
427- let co = valueOrElse(aR(M), $Tuple3(true, 0, 0))
428- let bh = co._1
429- let bi = co._2
430- let cp = co._3
431- let aX = toBigInt(bi)
432- let bj = X(bM)
433- let aY = ai(bj, -1)
434- let aZ = ai(W(), -1)
435- func cq (bl,bm) = {
436- let cr = aV(bM, bm, aX, aY, aZ)
437- let bo = cr._1
438- let bp = cr._2
439- let bq = cr._3
440- let be = cr._4
441- let cs = ac(bM, bm)
442- let ct = bl
443- let cu = ct._1
444- let cv = ct._2
445- let cw = makeString([bm, toString(bo)], ":")
446- let cx = makeString([cv, cw], "_")
447- if ((0 >= bo))
448- then $Tuple2(cu, cx)
449- else $Tuple2((((cu :+ ScriptTransfer(M, bo, ao(bm))) :+ IntegerEntry(cs, (valueOrElse(getInteger(cs), 0) + bo))) :+ IntegerEntry(be, 0)), cx)
450- }
451-
452- let cy = {
453- let br = aU
454- let bs = size(br)
455- let bt = $Tuple2(nil, "")
456- func bu (bv,bw) = if ((bw >= bs))
457- then bv
458- else cq(bv, br[bw])
459-
460- func bx (bv,bw) = if ((bw >= bs))
461- then bv
462- else throw("List size exceeds 10")
463-
464- bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
465- }
466- let cz = cy._1
467- let cA = cy._2
468- if ((0 >= size(cz)))
469- then throw("nothing to claim")
470- else ((cz :+ IntegerEntry(bj, aZ)) :+ aD(M, bC.transactionId, drop(cA, 1)))
471- }
472- }
454+@Callable(bD)
455+func claimRewards () = bC(bD.caller, bD)
473456
474457
475458
476-@Callable(bC)
477-func unclaimedRewardsREADONLY (bM) = {
478- func cB (bl,bm) = ((bl + makeString([bm, "0", "0"], ":")) + "_")
459+@Callable(bD)
460+func claimRewardsByOriginCaller () = bC(bD.originCaller, bD)
479461
480- let cC = if ((bM == ""))
462+
463+
464+@Callable(bD)
465+func unclaimedRewardsREADONLY (bE) = {
466+ func cC (bl,bm) = ((bl + makeString([bm, "0", "0"], ":")) + "_")
467+
468+ let cD = if ((bE == ""))
481469 then {
482470 let br = aU
483471 let bs = size(br)
484472 let bt = ""
485473 func bu (bv,bw) = if ((bw >= bs))
486474 then bv
487- else cB(bv, br[bw])
475+ else cC(bv, br[bw])
488476
489477 func bx (bv,bw) = if ((bw >= bs))
490478 then bv
491479 else throw("List size exceeds 10")
492480
493481 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
494482 }
495483 else {
496- let M = addressFromStringValue(bM)
497- let cD = valueOrElse(aR(M), $Tuple3(true, 0, 0))
498- let bh = cD._1
499- let bi = cD._2
500- let cp = cD._3
484+ let M = addressFromStringValue(bE)
485+ let cE = valueOrElse(aR(M), $Tuple3(true, 0, 0))
486+ let bh = cE._1
487+ let bi = cE._2
488+ let bG = cE._3
501489 let aX = toBigInt(bi)
502- let bj = X(bM)
490+ let bj = X(bE)
503491 let aY = ai(bj, -1)
504492 let aZ = ai(W(), -1)
505- func cq (bl,bm) = {
506- let cE = aV(bM, bm, aX, aY, aZ)
507- let bo = cE._1
508- let bp = cE._2
509- let bq = cE._3
510- let be = cE._4
511- let cF = valueOrElse(getInteger(ac(bM, bm)), 0)
512- ((bl + makeString([bm, toString(bo), toString(cF)], ":")) + "_")
493+ func bH (bl,bm) = {
494+ let cF = aV(bE, bm, aX, aY, aZ)
495+ let bo = cF._1
496+ let bp = cF._2
497+ let bq = cF._3
498+ let be = cF._4
499+ let cG = valueOrElse(getInteger(ac(bE, bm)), 0)
500+ ((bl + makeString([bm, toString(bo), toString(cG)], ":")) + "_")
513501 }
514502
515503 let br = aU
516504 let bs = size(br)
517505 let bt = ""
518506 func bu (bv,bw) = if ((bw >= bs))
519507 then bv
520- else cq(bv, br[bw])
508+ else bH(bv, br[bw])
521509
522510 func bx (bv,bw) = if ((bw >= bs))
523511 then bv
524512 else throw("List size exceeds 10")
525513
526514 bx(bu(bu(bu(bu(bu(bu(bu(bu(bu(bu(bt, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
527515 }
528- $Tuple2(nil, dropRight(cC, 1))
516+ $Tuple2(nil, dropRight(cD, 1))
529517 }
530518
531519
532520
533-@Callable(bC)
534-func nsbtUnstakingSYSREADONLY (cG,cH) = {
535- let cI = if ((cG == ""))
521+@Callable(bD)
522+func nsbtUnstakingSYSREADONLY (cH,cI) = {
523+ let cJ = if ((cH == ""))
536524 then [0, 0, 0, 0]
537525 else {
538- let M = addressFromStringValue(cG)
539- let cJ = aP()
540- let cK = cJ._1
541- let bF = cJ._2
542- let bG = cJ._3
543- let cL = aS(M)
544- let bh = cL._1
545- let bi = cL._2
546- let bY = cL._3
547- let cM = (bi - cH)
548- let bZ = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [cH, bY, bG], nil))
549- let cN = (cH - bZ)
550-[bi, cM, cN, bZ]
526+ let M = addressFromStringValue(cH)
527+ let cK = aP()
528+ let cL = cK._1
529+ let bU = cK._2
530+ let bV = cK._3
531+ let cM = aS(M)
532+ let bh = cM._1
533+ let bi = cM._2
534+ let cm = cM._3
535+ let cN = (bi - cI)
536+ let cn = aq(invoke(D, "getUnstakeComissionAmountREADONLY", [cI, cm, bV], nil))
537+ let cO = (cI - cn)
538+[bi, cN, cO, cn]
551539 }
552- $Tuple2(nil, cI)
540+ $Tuple2(nil, cJ)
553541 }
554542
555543
556544
557-@Callable(bC)
558-func nsbtStakingSYSREADONLY (bM) = {
559- let cO = ai(R(), 0)
560- if ((bM == ""))
561- then $Tuple2(nil, [0, cO, 0])
545+@Callable(bD)
546+func nsbtStakingSYSREADONLY (bE) = {
547+ let cP = ai(R(), 0)
548+ if ((bE == ""))
549+ then $Tuple2(nil, [0, cP, 0])
562550 else {
563- let M = am(bM)
564- let cP = valueOrElse(aR(M), $Tuple3(true, 0, 0))
565- let bh = cP._1
566- let cQ = cP._2
567- let cp = cP._3
568- $Tuple2(nil, [cQ, cO, cp])
551+ let M = am(bE)
552+ let cQ = valueOrElse(aR(M), $Tuple3(true, 0, 0))
553+ let bh = cQ._1
554+ let cR = cQ._2
555+ let bG = cQ._3
556+ $Tuple2(nil, [cR, cP, bG])
569557 }
570558 }
571559
572560
573-@Verifier(cR)
574-func cS () = {
575- let cT = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
576- let cU = split(valueOrElse(getString(C, "%s__multisig"), cT), b)
577- let cV = ((((if (sigVerify(cR.bodyBytes, cR.proofs[0], fromBase58String(cU[0])))
561+@Verifier(cS)
562+func cT () = {
563+ let cU = makeString(["ExtEEK19nmKj9mCpnWyvEEJFYATLMcVEMvohhUHkyHNm", "Ev5py5FfBQX9cZpYKnfQrTB49Byf8QmpZWeDVRim4yV7", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR", "DUuuLjXu98nBwZc7fqwCTjtA3nnRwgTbkMSr5SU2NmDR"], b)
564+ let cV = split(valueOrElse(getString(C, "%s__multisig"), cU), b)
565+ let cW = ((((if (sigVerify(cS.bodyBytes, cS.proofs[0], fromBase58String(cV[0])))
578566 then 1
579- else 0) + (if (sigVerify(cR.bodyBytes, cR.proofs[1], fromBase58String(cU[1])))
567+ else 0) + (if (sigVerify(cS.bodyBytes, cS.proofs[1], fromBase58String(cV[1])))
580568 then 1
581- else 0)) + (if (sigVerify(cR.bodyBytes, cR.proofs[2], fromBase58String(cU[2])))
569+ else 0)) + (if (sigVerify(cS.bodyBytes, cS.proofs[2], fromBase58String(cV[2])))
582570 then 1
583- else 0)) + (if (sigVerify(cR.bodyBytes, cR.proofs[3], fromBase58String(cU[3])))
571+ else 0)) + (if (sigVerify(cS.bodyBytes, cS.proofs[3], fromBase58String(cV[3])))
584572 then 2
585573 else 0))
586- (cV >= 3)
574+ (cW >= 3)
587575 }
588576

github/deemru/w8io/873ac7e 
142.01 ms