2022.03.24 18:44 [3043379] smart account 3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ > SELF 0.00000000 Waves

{ "type": 13, "id": "AyBu18r4ReSDqVf2fzZ9bauZGLXyWNZpvvVu2kwFETfo", "fee": 14000000, "feeAssetId": null, "timestamp": 1648138362949, "version": 1, "sender": "3PNikM6yp4NqcSU8guxQtmR5onr2D4e8yTJ", "senderPublicKey": "6E2n1DAd4jnydbL7hMWLtjfW6VKrAGnFrNzfddAUnWq7", "proofs": [ "43eaEwUXBtQikHLURFzMeNwJYaFqfibkNsQt326BZMRwcNLZhHks3tVkx9GSkYvma74Ljsg2qFP6eh7WKaSGqx5J", "UHTxqjWfsjVk3kw8nxdagdfmmJSPrQ9UJWierkwuzYcWxoADjv7pHfKPUkqnAmStg4wGFyF2MBEhWSBRKTuKTGq", "5jJJkNJF4JEvVQ8WH7tRQ4B2MdvLs6eAfpcHRgFCPpzjthNmWVKyrC5Y1vFe9BmE61vMoCBfkCULC6fFkq5ZSgAN", "44n7SBoN4ztjH135DyuxTMtweAnqkDLtsnuo9Q5marQVLEog5dcR8VV523UZRJNqHXYbDXz4MRVYoDLSZBZF4wK7" ], "script": "base64:AAIFAAAAAAAAAB4IAhIECgIIARIAEgQKAggBEgASBAoCAQgSBAoCAQgAAAAjAAAAAAtyZXZpc2lvbk51bQIAAAAoNDQzYzY0ZGQ1MDU2YjViZTIzYjcwMDIyNDY5OTI5NWU3MzNlMDQ1MgEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBoAAAACBQAAAAR0aGlzBQAAAANrZXkAAAAAAAAAAAABAAAADmdldFN0cmluZ0J5S2V5AAAAAQAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AgAAAAABAAAADGdldEJvb2xCeUtleQAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEGwAAAAIFAAAABHRoaXMFAAAAA2tleQcBAAAAGGdldE51bWJlckJ5QWRkcmVzc0FuZEtleQAAAAIAAAAHYWRkcmVzcwAAAANrZXkJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAAQaAAAAAgkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAHYWRkcmVzcwUAAAADa2V5AAAAAAAAAAAAAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACAAAAB2FkZHJlc3MAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAAB2FkZHJlc3MFAAAAA2tleQIAAAAAAAAAABJOZXV0cmlub0Fzc2V0SWRLZXkCAAAAEW5ldXRyaW5vX2Fzc2V0X2lkAAAAABNOZXV0cmlub0NvbnRyYWN0S2V5AgAAABFuZXV0cmlub19jb250cmFjdAAAAAAKQmFsYW5jZUtleQIAAAALcnBkX2JhbGFuY2UAAAAAEkNvbnRyb2xDb250cmFjdEtleQIAAAAQY29udHJvbF9jb250cmFjdAAAAAAOTnNidEFzc2V0SWRLZXkCAAAADWJvbmRfYXNzZXRfaWQAAAAACUFkbWluc0tleQIAAAAGYWRtaW5zAAAAAAhVU0ROVFlQRQIAAAAEVVNETgAAAAAITlNCVFRZUEUCAAAABE5TQlQBAAAAEWdldFVzZXJCYWxhbmNlS2V5AAAAAgAAAAVvd25lcgAAAAdhc3NldElkCQAEuQAAAAIJAARMAAAAAgUAAAAKQmFsYW5jZUtleQkABEwAAAACBQAAAAdhc3NldElkCQAETAAAAAIFAAAABW93bmVyBQAAAANuaWwCAAAAAV8BAAAAFWdldENvbnRyYWN0QmFsYW5jZUtleQAAAAEAAAAHYXNzZXRJZAkAASwAAAACCQABLAAAAAIFAAAACkJhbGFuY2VLZXkCAAAAAV8FAAAAB2Fzc2V0SWQBAAAAFGdldEV4cGlyZVByb3Bvc2FsS2V5AAAAAQAAAARoYXNoCQABLAAAAAIJAAEsAAAAAgIAAAAPcHJvcG9zYWxfZXhwaXJlAgAAAAFfBQAAAARoYXNoAQAAABNnZXRPd25lclByb3Bvc2FsS2V5AAAAAQAAAARoYXNoCQABLAAAAAIJAAEsAAAAAgIAAAAOcHJvcG9zYWxfb3duZXICAAAAAV8FAAAABGhhc2gBAAAAF2dldEFyZ3VtZW50c1Byb3Bvc2FsS2V5AAAAAQAAAARoYXNoCQABLAAAAAIJAAEsAAAAAgIAAAAScHJvcG9zYWxfYXJndW1lbnRzAgAAAAFfBQAAAARoYXNoAQAAAApnZXRWb3RlS2V5AAAAAgAAAAVvd25lcgAAAARoYXNoCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAICAAAADXByb3Bvc2FsX3ZvdGUCAAAAAV8FAAAABW93bmVyAgAAAAFfBQAAAARoYXNoAQAAABZjb252ZXJ0SnNvbkFycmF5VG9MaXN0AAAAAQAAAAlqc29uQXJyYXkJAAS1AAAAAgUAAAAJanNvbkFycmF5AgAAAAEsAAAAABBuZXV0cmlub0NvbnRyYWN0CQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABBQAAABNOZXV0cmlub0NvbnRyYWN0S2V5AAAAAA9jb250cm9sQ29udHJhY3QJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEJAQAAABhnZXRTdHJpbmdCeUFkZHJlc3NBbmRLZXkAAAACBQAAABBuZXV0cmlub0NvbnRyYWN0BQAAABJDb250cm9sQ29udHJhY3RLZXkAAAAAD25ldXRyaW5vQXNzZXRJZAkAAlkAAAABCQEAAAAYZ2V0U3RyaW5nQnlBZGRyZXNzQW5kS2V5AAAAAgUAAAAQbmV1dHJpbm9Db250cmFjdAUAAAASTmV1dHJpbm9Bc3NldElkS2V5AAAAAA5uc2J0QXNzZXRJZFN0cgkBAAAAGGdldFN0cmluZ0J5QWRkcmVzc0FuZEtleQAAAAIFAAAAEG5ldXRyaW5vQ29udHJhY3QFAAAADk5zYnRBc3NldElkS2V5AAAAAAtuc2J0QXNzZXRJZAkAAlkAAAABBQAAAA5uc2J0QXNzZXRJZFN0cgEAAAASZ2V0Q29udHJhY3RCYWxhbmNlAAAAAQAAAAdhc3NldElkCQEAAAAOZ2V0TnVtYmVyQnlLZXkAAAABCQEAAAAVZ2V0Q29udHJhY3RCYWxhbmNlS2V5AAAAAQUAAAAHYXNzZXRJZAEAAAAOZ2V0VXNlckJhbGFuY2UAAAACAAAABW93bmVyAAAAB2Fzc2V0SWQJAQAAAA5nZXROdW1iZXJCeUtleQAAAAEJAQAAABFnZXRVc2VyQmFsYW5jZUtleQAAAAIFAAAABW93bmVyBQAAAAdhc3NldElkAQAAABNnZXRSZXdhcmRzQ29uZmlnS2V5AAAAAwAAAAVvd25lcgAAAAVzaGFyZQAAAAhyZWNlaXZlcgkABLkAAAACCQAETAAAAAICAAAADXN0YWtpbmdjb25maWcJAARMAAAAAgUAAAAFb3duZXIJAARMAAAAAgkAAaQAAAABBQAAAAVzaGFyZQkABEwAAAACBQAAAAhyZWNlaXZlcgUAAAADbmlsAgAAAAFfAQAAABpnZXRDdXJyZW50UmV3YXJkc0NvbmZpZ0tleQAAAAEAAAAFb3duZXIJAAEsAAAAAgIAAAAWc3Rha2luZ2NvbmZpZ19jdXJyZW50XwUAAAAFb3duZXIBAAAAGGdldFJld2FyZHNDb25maWdTdGFydEtleQAAAAIAAAAJY29uZmlnS2V5AAAAB2lzU3RhcnQJAAEsAAAAAgUAAAAJY29uZmlnS2V5AwUAAAAHaXNTdGFydAIAAAAGX3N0YXJ0AgAAAARfZW5kAQAAABtnZXRSZXdhcmRDb25maWdJbml0aWFsU2hhcmUAAAABAAAABW93bmVyCQABLAAAAAIFAAAABW93bmVyAgAAAA1faW5pdGlhbFNoYXJlAQAAABpnZXRWYWxpZFN0YWtpbmdBc3NldE9yRmFpbAAAAAIAAAALc3Rha2luZ1R5cGUAAAAHYXNzZXRJZAMDCQAAAAAAAAIFAAAAC3N0YWtpbmdUeXBlBQAAAAhVU0ROVFlQRQkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAAPbmV1dHJpbm9Bc3NldElkBwkAAAIAAAABAgAAABFjYW4gdXNlIFVTRE4gb25seQMDCQAAAAAAAAIFAAAAC3N0YWtpbmdUeXBlBQAAAAhOU0JUVFlQRQkBAAAAAiE9AAAAAgUAAAAHYXNzZXRJZAUAAAALbnNidEFzc2V0SWQHCQAAAgAAAAECAAAAEWNhbiB1c2UgTlNCVCBvbmx5AwMJAQAAAAIhPQAAAAIFAAAAC3N0YWtpbmdUeXBlBQAAAAhVU0ROVFlQRQkBAAAAAiE9AAAAAgUAAAALc3Rha2luZ1R5cGUFAAAACE5TQlRUWVBFBwkAAAIAAAABCQABLAAAAAICAAAAGXVuc3VwcG9ydGVkIHN0YWtpbmcgdHlwZSAFAAAAC3N0YWtpbmdUeXBlBQAAAAdhc3NldElkAQAAABRpbnRlcm5hbExvY2tOZXV0cmlubwAAAAQAAAALc3Rha2luZ1R5cGUAAAABaQAAAAhyZWNlaXZlcgAAAAVzaGFyZQQAAAADcG10CQEAAAAFdmFsdWUAAAABCQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAABAAAAAdhc3NldElkCQEAAAAaZ2V0VmFsaWRTdGFraW5nQXNzZXRPckZhaWwAAAACBQAAAAtzdGFraW5nVHlwZQkBAAAABXZhbHVlAAAAAQgFAAAAA3BtdAAAAAdhc3NldElkAwkBAAAAASEAAAABCQEAAAAJaXNEZWZpbmVkAAAAAQkABCYAAAABBQAAAAhyZWNlaXZlcgkAAAIAAAABCQABLAAAAAICAAAAF0ludmFsaWQgYWRkcmVzcyBmb3JtYXQgBQAAAAhyZWNlaXZlcgMJAABmAAAAAgUAAAAFc2hhcmUAAAAAAAAAAGQJAAACAAAAAQIAAAAwc3Rha2luZyByZXdhcmRzIHNoYXJlIGNhbm5vdCBiZSBoaWdoZXIgdGhhbiAxMDAlAwkAAGYAAAACAAAAAAAAAAABBQAAAAVzaGFyZQkAAAIAAAABAgAAAC1zdGFraW5nIHJld2FyZHMgc2hhcmUgY2Fubm90IGJlIGxvd2VyIHRoYW4gMSUEAAAAB2FjY291bnQJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyBAAAAA1hc3NldElkU3RyaW5nCQACWAAAAAEFAAAAB2Fzc2V0SWQEAAAADWN1cnJlbnRDb25maWcJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABpnZXRDdXJyZW50UmV3YXJkc0NvbmZpZ0tleQAAAAEFAAAAB2FjY291bnQEAAAAC2NvcnJlY3REYXRhAwkBAAAAAiE9AAAAAgUAAAANY3VycmVudENvbmZpZwIAAAAABAAAABFjdXJyZW50Q29uZmlnRGF0YQkABLUAAAACBQAAAA1jdXJyZW50Q29uZmlnAgAAAAFfBAAAAAljdXJyU2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAABFjdXJyZW50Q29uZmlnRGF0YQAAAAAAAAAAAgQAAAAMY3VyclJlY2VpdmVyCQABkQAAAAIFAAAAEWN1cnJlbnRDb25maWdEYXRhAAAAAAAAAAADBAAAABdub3RNaWdyYXRlZEluaXRpYWxTaGFyZQkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAG2dldFJld2FyZENvbmZpZ0luaXRpYWxTaGFyZQAAAAEFAAAAB2FjY291bnQEAAAAEmFjdHVhbEluaXRpYWxTaGFyZQMJAAAAAAAAAgUAAAAXbm90TWlncmF0ZWRJbml0aWFsU2hhcmUAAAAAAAAAAAAFAAAACWN1cnJTaGFyZQUAAAAXbm90TWlncmF0ZWRJbml0aWFsU2hhcmUEAAAACG5ld1NoYXJlAwMJAABmAAAAAgUAAAASYWN0dWFsSW5pdGlhbFNoYXJlBQAAAAVzaGFyZQYJAQAAAAIhPQAAAAIFAAAADGN1cnJSZWNlaXZlcgUAAAAIcmVjZWl2ZXIFAAAAEmFjdHVhbEluaXRpYWxTaGFyZQUAAAAFc2hhcmUJAARMAAAAAgkAAaQAAAABBQAAABJhY3R1YWxJbml0aWFsU2hhcmUJAARMAAAAAgkAAaQAAAABBQAAAAhuZXdTaGFyZQkABEwAAAACBQAAAAxjdXJyUmVjZWl2ZXIFAAAAA25pbAkABEwAAAACCQABpAAAAAEFAAAABXNoYXJlCQAETAAAAAIJAAGkAAAAAQUAAAAFc2hhcmUJAARMAAAAAgUAAAAIcmVjZWl2ZXIFAAAAA25pbAQAAAATY29ycmVjdEluaXRpYWxTaGFyZQkBAAAADXBhcnNlSW50VmFsdWUAAAABCQABkQAAAAIFAAAAC2NvcnJlY3REYXRhAAAAAAAAAAAABAAAAAxjb3JyZWN0U2hhcmUJAQAAAA1wYXJzZUludFZhbHVlAAAAAQkAAZEAAAACBQAAAAtjb3JyZWN0RGF0YQAAAAAAAAAAAQQAAAAPY29ycmVjdFJlY2VpdmVyCQABkQAAAAIFAAAAC2NvcnJlY3REYXRhAAAAAAAAAAACBAAAABBuZXdDdXJyZW50Q29uZmlnCQEAAAATZ2V0UmV3YXJkc0NvbmZpZ0tleQAAAAMFAAAAB2FjY291bnQFAAAADGNvcnJlY3RTaGFyZQUAAAAPY29ycmVjdFJlY2VpdmVyBAAAAAtpc05ld0NvbmZpZwkBAAAAASEAAAABCQAAAAAAAAIFAAAADWN1cnJlbnRDb25maWcFAAAAEG5ld0N1cnJlbnRDb25maWcEAAAAA2VuZAMFAAAAC2lzTmV3Q29uZmlnBQAAAAZoZWlnaHQAAAAAAAAAAAAEAAAABXN0YXJ0AwUAAAALaXNOZXdDb25maWcFAAAABmhlaWdodAkBAAAADmdldE51bWJlckJ5S2V5AAAAAQkBAAAAGGdldFJld2FyZHNDb25maWdTdGFydEtleQAAAAIFAAAAEG5ld0N1cnJlbnRDb25maWcGCQAFFAAAAAIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABVnZXRDb250cmFjdEJhbGFuY2VLZXkAAAABBQAAAA1hc3NldElkU3RyaW5nCQAAZAAAAAIJAQAAABJnZXRDb250cmFjdEJhbGFuY2UAAAABBQAAAA1hc3NldElkU3RyaW5nCAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAEWdldFVzZXJCYWxhbmNlS2V5AAAAAgUAAAAHYWNjb3VudAUAAAANYXNzZXRJZFN0cmluZwkAAGQAAAACCQEAAAAOZ2V0VXNlckJhbGFuY2UAAAACBQAAAAdhY2NvdW50BQAAAA1hc3NldElkU3RyaW5nCAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAGGdldFJld2FyZHNDb25maWdTdGFydEtleQAAAAIFAAAADWN1cnJlbnRDb25maWcHBQAAAANlbmQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABhnZXRSZXdhcmRzQ29uZmlnU3RhcnRLZXkAAAACBQAAABBuZXdDdXJyZW50Q29uZmlnBgUAAAAFc3RhcnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABtnZXRSZXdhcmRDb25maWdJbml0aWFsU2hhcmUAAAABBQAAAAdhY2NvdW50BQAAABNjb3JyZWN0SW5pdGlhbFNoYXJlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABpnZXRDdXJyZW50UmV3YXJkc0NvbmZpZ0tleQAAAAEFAAAAB2FjY291bnQFAAAAEG5ld0N1cnJlbnRDb25maWcFAAAAA25pbAUAAAAEdW5pdAEAAAAOaW50ZXJuYWxVbmxvY2sAAAAEAAAAC3N0YWtpbmdUeXBlAAAAAWkAAAAMdW5sb2NrQW1vdW50AAAADGFzc2V0SWRQYXJhbQQAAAAHYWNjb3VudAkABCUAAAABCAUAAAABaQAAAAZjYWxsZXIEAAAAB2Fzc2V0SWQJAQAAABpnZXRWYWxpZFN0YWtpbmdBc3NldE9yRmFpbAAAAAIFAAAAC3N0YWtpbmdUeXBlCQACWQAAAAEFAAAADGFzc2V0SWRQYXJhbQQAAAANYXNzZXRJZFN0cmluZwkAAlgAAAABBQAAAAdhc3NldElkBAAAAAdiYWxhbmNlCQAAZQAAAAIJAQAAAA5nZXRVc2VyQmFsYW5jZQAAAAIFAAAAB2FjY291bnQFAAAADWFzc2V0SWRTdHJpbmcFAAAADHVubG9ja0Ftb3VudAMJAABmAAAAAgAAAAAAAAAAAAUAAAAHYmFsYW5jZQkAAAIAAAABAgAAAA5pbnZhbGlkIGFtb3VudAkABRQAAAACCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAVZ2V0Q29udHJhY3RCYWxhbmNlS2V5AAAAAQUAAAANYXNzZXRJZFN0cmluZwkAAGUAAAACCQEAAAASZ2V0Q29udHJhY3RCYWxhbmNlAAAAAQUAAAANYXNzZXRJZFN0cmluZwUAAAAMdW5sb2NrQW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAARZ2V0VXNlckJhbGFuY2VLZXkAAAACBQAAAAdhY2NvdW50BQAAAA1hc3NldElkU3RyaW5nBQAAAAdiYWxhbmNlCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAAB2FjY291bnQFAAAADHVubG9ja0Ftb3VudAUAAAAHYXNzZXRJZAUAAAADbmlsBQAAAAR1bml0AAAABgAAAAFpAQAAAA5sb2NrTmV1dHJpbm9TUAAAAAIAAAAIcmVjZWl2ZXIAAAAFc2hhcmUJAQAAABRpbnRlcm5hbExvY2tOZXV0cmlubwAAAAQFAAAACFVTRE5UWVBFBQAAAAFpBQAAAAhyZWNlaXZlcgUAAAAFc2hhcmUAAAABaQEAAAAMbG9ja05ldXRyaW5vAAAAAAkBAAAAFGludGVybmFsTG9ja05ldXRyaW5vAAAABAUAAAAIVVNETlRZUEUFAAAAAWkJAAQlAAAAAQgFAAAAAWkAAAAGY2FsbGVyAAAAAAAAAABkAAAAAWkBAAAACmxvY2tOc2J0U1AAAAACAAAACHJlY2VpdmVyAAAABXNoYXJlCQAAAgAAAAECAAAAWm5zYnQgc3Rha2luZyBoYXMgYmVlbiBtb3ZlIHRvIGEgbmV3IGNvbnRyYWN0LCBwbGVhc2UgY2hlY2sgTmV1dHJpbm8gd2ViIHNpdGUgZm9yIG1vcmUgaW5mbwAAAAFpAQAAAAhsb2NrTnNidAAAAAAJAAACAAAAAQIAAABabnNidCBzdGFraW5nIGhhcyBiZWVuIG1vdmUgdG8gYSBuZXcgY29udHJhY3QsIHBsZWFzZSBjaGVjayBOZXV0cmlubyB3ZWIgc2l0ZSBmb3IgbW9yZSBpbmZvAAAAAWkBAAAADnVubG9ja05ldXRyaW5vAAAAAgAAAAx1bmxvY2tBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBAAAADmludGVybmFsVW5sb2NrAAAABAUAAAAIVVNETlRZUEUFAAAAAWkFAAAADHVubG9ja0Ftb3VudAUAAAANYXNzZXRJZFN0cmluZwAAAAFpAQAAAAp1bmxvY2tOc2J0AAAAAgAAAAx1bmxvY2tBbW91bnQAAAANYXNzZXRJZFN0cmluZwkBAAAADmludGVybmFsVW5sb2NrAAAABAUAAAAITlNCVFRZUEUFAAAAAWkFAAAADHVubG9ja0Ftb3VudAUAAAANYXNzZXRJZFN0cmluZwAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAEHB1YktleUFkbWluc0xpc3QJAARMAAAAAgIAAAAsR0pkTFNhTGl2NUs3eHVlamFjOG1jUmNIb3lvM2RQckVTcnZrdEczYTZNQVIJAARMAAAAAgIAAAAsRldWZmZZcjJBTG1ITWVqWm0zV3FlTHo2U2R5bTNnTEZHdEpuNEtUd3lVNXgJAARMAAAAAgIAAAAsM1doMkxhV2NiNWdnN0sycFBjVzNFcDZFQXVSQnpZa0FncmRwdDQzalRERmEJAARMAAAAAgIAAAAsNVdSWEZTandjVGJOZktjSnM4WnFYbVNTV1lzU1ZKVXRNdk1xWmo1aEg0TmMFAAAAA25pbAQAAAAFY291bnQJAABkAAAAAgkAAGQAAAACCQAAZAAAAAIDCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAEAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAIAAAAAAAAAAAEAAAAAAAAAAAADCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAwkAAlkAAAABCQABkQAAAAIFAAAAEHB1YktleUFkbWluc0xpc3QAAAAAAAAAAAMAAAAAAAAAAAIAAAAAAAAAAAAJAABnAAAAAgUAAAAFY291bnQAAAAAAAAAAANgqmYt", "chainId": 87, "height": 3043379, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7m8MQgHw6JgtTgnDYEZ4fJYZEDKCq6VJDKtaoPDC9jEx Next: 9D7ND3SSUw91TuNBU2KH3As5eUqQMaGYLk6exhBTKi18 Diff:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let revisionNum = "443c64dd5056b5be23b700224699295e733e0452"
5+
46 func getNumberByKey (key) = valueOrElse(getInteger(this, key), 0)
57
68
166168
167169
168170 @Callable(i)
169-func lockNsbtSP (receiver,share) = internalLockNeutrino(NSBTTYPE, i, receiver, share)
171+func lockNsbtSP (receiver,share) = throw("nsbt staking has been move to a new contract, please check Neutrino web site for more info")
170172
171173
172174
173175 @Callable(i)
174-func lockNsbt () = internalLockNeutrino(NSBTTYPE, i, toString(i.caller), 100)
176+func lockNsbt () = throw("nsbt staking has been move to a new contract, please check Neutrino web site for more info")
175177
176178
177179
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let revisionNum = "443c64dd5056b5be23b700224699295e733e0452"
5+
46 func getNumberByKey (key) = valueOrElse(getInteger(this, key), 0)
57
68
79 func getStringByKey (key) = valueOrElse(getString(this, key), "")
810
911
1012 func getBoolByKey (key) = valueOrElse(getBoolean(this, key), false)
1113
1214
1315 func getNumberByAddressAndKey (address,key) = valueOrElse(getInteger(addressFromStringValue(address), key), 0)
1416
1517
1618 func getStringByAddressAndKey (address,key) = valueOrElse(getString(address, key), "")
1719
1820
1921 let NeutrinoAssetIdKey = "neutrino_asset_id"
2022
2123 let NeutrinoContractKey = "neutrino_contract"
2224
2325 let BalanceKey = "rpd_balance"
2426
2527 let ControlContractKey = "control_contract"
2628
2729 let NsbtAssetIdKey = "bond_asset_id"
2830
2931 let AdminsKey = "admins"
3032
3133 let USDNTYPE = "USDN"
3234
3335 let NSBTTYPE = "NSBT"
3436
3537 func getUserBalanceKey (owner,assetId) = makeString([BalanceKey, assetId, owner], "_")
3638
3739
3840 func getContractBalanceKey (assetId) = ((BalanceKey + "_") + assetId)
3941
4042
4143 func getExpireProposalKey (hash) = (("proposal_expire" + "_") + hash)
4244
4345
4446 func getOwnerProposalKey (hash) = (("proposal_owner" + "_") + hash)
4547
4648
4749 func getArgumentsProposalKey (hash) = (("proposal_arguments" + "_") + hash)
4850
4951
5052 func getVoteKey (owner,hash) = (((("proposal_vote" + "_") + owner) + "_") + hash)
5153
5254
5355 func convertJsonArrayToList (jsonArray) = split(jsonArray, ",")
5456
5557
5658 let neutrinoContract = addressFromStringValue(getStringByKey(NeutrinoContractKey))
5759
5860 let controlContract = addressFromStringValue(getStringByAddressAndKey(neutrinoContract, ControlContractKey))
5961
6062 let neutrinoAssetId = fromBase58String(getStringByAddressAndKey(neutrinoContract, NeutrinoAssetIdKey))
6163
6264 let nsbtAssetIdStr = getStringByAddressAndKey(neutrinoContract, NsbtAssetIdKey)
6365
6466 let nsbtAssetId = fromBase58String(nsbtAssetIdStr)
6567
6668 func getContractBalance (assetId) = getNumberByKey(getContractBalanceKey(assetId))
6769
6870
6971 func getUserBalance (owner,assetId) = getNumberByKey(getUserBalanceKey(owner, assetId))
7072
7173
7274 func getRewardsConfigKey (owner,share,receiver) = makeString(["stakingconfig", owner, toString(share), receiver], "_")
7375
7476
7577 func getCurrentRewardsConfigKey (owner) = ("stakingconfig_current_" + owner)
7678
7779
7880 func getRewardsConfigStartKey (configKey,isStart) = (configKey + (if (isStart)
7981 then "_start"
8082 else "_end"))
8183
8284
8385 func getRewardConfigInitialShare (owner) = (owner + "_initialShare")
8486
8587
8688 func getValidStakingAssetOrFail (stakingType,assetId) = if (if ((stakingType == USDNTYPE))
8789 then (assetId != neutrinoAssetId)
8890 else false)
8991 then throw("can use USDN only")
9092 else if (if ((stakingType == NSBTTYPE))
9193 then (assetId != nsbtAssetId)
9294 else false)
9395 then throw("can use NSBT only")
9496 else if (if ((stakingType != USDNTYPE))
9597 then (stakingType != NSBTTYPE)
9698 else false)
9799 then throw(("unsupported staking type " + stakingType))
98100 else assetId
99101
100102
101103 func internalLockNeutrino (stakingType,i,receiver,share) = {
102104 let pmt = value(i.payments[0])
103105 let assetId = getValidStakingAssetOrFail(stakingType, value(pmt.assetId))
104106 if (!(isDefined(addressFromString(receiver))))
105107 then throw(("Invalid address format " + receiver))
106108 else if ((share > 100))
107109 then throw("staking rewards share cannot be higher than 100%")
108110 else if ((1 > share))
109111 then throw("staking rewards share cannot be lower than 1%")
110112 else {
111113 let account = toString(i.caller)
112114 let assetIdString = toBase58String(assetId)
113115 let currentConfig = getStringByKey(getCurrentRewardsConfigKey(account))
114116 let correctData = if ((currentConfig != ""))
115117 then {
116118 let currentConfigData = split(currentConfig, "_")
117119 let currShare = parseIntValue(currentConfigData[2])
118120 let currReceiver = currentConfigData[3]
119121 let notMigratedInitialShare = getNumberByKey(getRewardConfigInitialShare(account))
120122 let actualInitialShare = if ((notMigratedInitialShare == 0))
121123 then currShare
122124 else notMigratedInitialShare
123125 let newShare = if (if ((actualInitialShare > share))
124126 then true
125127 else (currReceiver != receiver))
126128 then actualInitialShare
127129 else share
128130 [toString(actualInitialShare), toString(newShare), currReceiver]
129131 }
130132 else [toString(share), toString(share), receiver]
131133 let correctInitialShare = parseIntValue(correctData[0])
132134 let correctShare = parseIntValue(correctData[1])
133135 let correctReceiver = correctData[2]
134136 let newCurrentConfig = getRewardsConfigKey(account, correctShare, correctReceiver)
135137 let isNewConfig = !((currentConfig == newCurrentConfig))
136138 let end = if (isNewConfig)
137139 then height
138140 else 0
139141 let start = if (isNewConfig)
140142 then height
141143 else getNumberByKey(getRewardsConfigStartKey(newCurrentConfig, true))
142144 $Tuple2([IntegerEntry(getContractBalanceKey(assetIdString), (getContractBalance(assetIdString) + pmt.amount)), IntegerEntry(getUserBalanceKey(account, assetIdString), (getUserBalance(account, assetIdString) + pmt.amount)), IntegerEntry(getRewardsConfigStartKey(currentConfig, false), end), IntegerEntry(getRewardsConfigStartKey(newCurrentConfig, true), start), IntegerEntry(getRewardConfigInitialShare(account), correctInitialShare), StringEntry(getCurrentRewardsConfigKey(account), newCurrentConfig)], unit)
143145 }
144146 }
145147
146148
147149 func internalUnlock (stakingType,i,unlockAmount,assetIdParam) = {
148150 let account = toString(i.caller)
149151 let assetId = getValidStakingAssetOrFail(stakingType, fromBase58String(assetIdParam))
150152 let assetIdString = toBase58String(assetId)
151153 let balance = (getUserBalance(account, assetIdString) - unlockAmount)
152154 if ((0 > balance))
153155 then throw("invalid amount")
154156 else $Tuple2([IntegerEntry(getContractBalanceKey(assetIdString), (getContractBalance(assetIdString) - unlockAmount)), IntegerEntry(getUserBalanceKey(account, assetIdString), balance), ScriptTransfer(addressFromStringValue(account), unlockAmount, assetId)], unit)
155157 }
156158
157159
158160 @Callable(i)
159161 func lockNeutrinoSP (receiver,share) = internalLockNeutrino(USDNTYPE, i, receiver, share)
160162
161163
162164
163165 @Callable(i)
164166 func lockNeutrino () = internalLockNeutrino(USDNTYPE, i, toString(i.caller), 100)
165167
166168
167169
168170 @Callable(i)
169-func lockNsbtSP (receiver,share) = internalLockNeutrino(NSBTTYPE, i, receiver, share)
171+func lockNsbtSP (receiver,share) = throw("nsbt staking has been move to a new contract, please check Neutrino web site for more info")
170172
171173
172174
173175 @Callable(i)
174-func lockNsbt () = internalLockNeutrino(NSBTTYPE, i, toString(i.caller), 100)
176+func lockNsbt () = throw("nsbt staking has been move to a new contract, please check Neutrino web site for more info")
175177
176178
177179
178180 @Callable(i)
179181 func unlockNeutrino (unlockAmount,assetIdString) = internalUnlock(USDNTYPE, i, unlockAmount, assetIdString)
180182
181183
182184
183185 @Callable(i)
184186 func unlockNsbt (unlockAmount,assetIdString) = internalUnlock(NSBTTYPE, i, unlockAmount, assetIdString)
185187
186188
187189 @Verifier(tx)
188190 func verify () = {
189191 let pubKeyAdminsList = ["GJdLSaLiv5K7xuejac8mcRcHoyo3dPrESrvktG3a6MAR", "FWVffYr2ALmHMejZm3WqeLz6Sdym3gLFGtJn4KTwyU5x", "3Wh2LaWcb5gg7K2pPcW3Ep6EAuRBzYkAgrdpt43jTDFa", "5WRXFSjwcTbNfKcJs8ZqXmSSWYsSVJUtMvMqZj5hH4Nc"]
190192 let count = ((((if (sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(pubKeyAdminsList[0])))
191193 then 1
192194 else 0) + (if (sigVerify(tx.bodyBytes, tx.proofs[1], fromBase58String(pubKeyAdminsList[1])))
193195 then 1
194196 else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[2], fromBase58String(pubKeyAdminsList[2])))
195197 then 1
196198 else 0)) + (if (sigVerify(tx.bodyBytes, tx.proofs[3], fromBase58String(pubKeyAdminsList[3])))
197199 then 2
198200 else 0))
199201 (count >= 3)
200202 }
201203

github/deemru/w8io/786bc32 
50.45 ms