tx · EV5YW1beov4z2RbLv43sHGzkXaLY4NP94ukUEubTz7Np

3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh:  -0.01000000 Waves

2023.04.19 10:58 [2541177] smart account 3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh > SELF 0.00000000 Waves

{ "type": 13, "id": "EV5YW1beov4z2RbLv43sHGzkXaLY4NP94ukUEubTz7Np", "fee": 1000000, "feeAssetId": null, "timestamp": 1681891116394, "version": 2, "chainId": 84, "sender": "3N4ziXSMRverXyxHDUKKMR9MHXnB3TyU3Yh", "senderPublicKey": "EU9obW1yVhR8qug3EmXPeew3DMagvJFQzY5Ku8bmcsU7", "proofs": [ "3uGFL35wv6UeqXXTQNUF9ZCie5D2unowtywep2EAnMLS3xXLbkRvKLkaaqT6zqXgracFppo4HSopLVykjAyXboKC" ], "script": "base64:BgIZCAISABIDCgEIEgASABIDCgEIEgMKAQgSACMAA1NFUAICX18AEGNvbnRyYWN0RmlsZW5hbWUCEm1hbmFnZXJfdmF1bHQucmlkZQEIdGhyb3dFcnIBAXMJAAIBCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkACQC5CQIJAMwIAgICJXMJAMwIAgIQbWFuYWdlclB1YmxpY0tleQUDbmlsBQNTRVABGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAkAuQkCCQDMCAICAiVzCQDMCAICF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwFA1NFUAEaa2V5Q3VycmVudE1hbmFnZXJQdWJsaWNLZXkACQC5CQIJAMwIAgICJXMJAMwIAgIXY3VycmVudE1hbmFnZXJQdWJsaWNLZXkFA25pbAUDU0VQARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEQbWFuYWdlclB1YmxpY0tleQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAgpzZXRNYW5hZ2VyCQDMCAIFEG1hbmFnZXJQdWJsaWNLZXkFA25pbAUDU0VQARRrZXlTZXROZXdNYW5hZ2VyVm90ZQIQbWFuYWdlclB1YmxpY0tleQVhZG1pbgkAuQkCCQDMCAIJARprZXlTZXROZXdNYW5hZ2VyVm90ZVByZWZpeAEFEG1hbmFnZXJQdWJsaWNLZXkJAMwIAgUFYWRtaW4FA25pbAUDU0VQARRnZXRTZXROZXdNYW5hZ2VyVm90ZQIQbWFuYWdlclB1YmxpY0tleQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEUa2V5U2V0TmV3TWFuYWdlclZvdGUCBRBtYW5hZ2VyUHVibGljS2V5BQVhZG1pbgAAAR5rZXlEZWFjdGl2YXRlTWFuYWdlclZvdGVQcmVmaXgACQC5CQIJAMwIAgIEJXMlcwkAzAgCAhFkZWFjdGl2YXRlTWFuYWdlcgUDbmlsBQNTRVABGGtleURlYWN0aXZhdGVNYW5hZ2VyVm90ZQEFYWRtaW4JALkJAgkAzAgCCQEea2V5RGVhY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAkAzAgCBQVhZG1pbgUDbmlsBQNTRVABGGdldERlYWN0aXZhdGVNYW5hZ2VyVm90ZQEFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBGGtleURlYWN0aXZhdGVNYW5hZ2VyVm90ZQEFBWFkbWluAAABHGtleUFjdGl2YXRlTWFuYWdlclZvdGVQcmVmaXgACQC5CQIJAMwIAgIEJXMlcwkAzAgCAg9hY3RpdmF0ZU1hbmFnZXIFA25pbAUDU0VQARZrZXlBY3RpdmF0ZU1hbmFnZXJWb3RlAQVhZG1pbgkAuQkCCQDMCAIJARxrZXlBY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAkAzAgCBQVhZG1pbgUDbmlsBQNTRVABFmdldEFjdGl2YXRlTWFuYWdlclZvdGUBBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlBY3RpdmF0ZU1hbmFnZXJWb3RlAQUFYWRtaW4AAAEYa2V5QWRkTmV3QWRtaW5Wb3RlUHJlZml4AQ5hZG1pbkNhbmRpZGF0ZQkAuQkCCQDMCAICBiVzJXMlcwkAzAgCAghhZGRBZG1pbgkAzAgCBQ5hZG1pbkNhbmRpZGF0ZQUDbmlsBQNTRVABEmtleUFkZE5ld0FkbWluVm90ZQIOYWRtaW5DYW5kaWRhdGUFYWRtaW4JALkJAgkAzAgCCQEYa2V5QWRkTmV3QWRtaW5Wb3RlUHJlZml4AQUOYWRtaW5DYW5kaWRhdGUJAMwIAgUFYWRtaW4FA25pbAUDU0VQARJnZXRBZGROZXdBZG1pblZvdGUCDmFkbWluQ2FuZGlkYXRlBWFkbWluCQELdmFsdWVPckVsc2UCCQCfCAEJARJrZXlBZGROZXdBZG1pblZvdGUCBQ5hZG1pbkNhbmRpZGF0ZQUFYWRtaW4AAAEYa2V5UmVtb3ZlQWRtaW5Wb3RlUHJlZml4AQ9yZW1vdmVDYW5kaWRhdGUJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgILcmVtb3ZlQWRtaW4JAMwIAgUPcmVtb3ZlQ2FuZGlkYXRlBQNuaWwFA1NFUAESa2V5UmVtb3ZlQWRtaW5Wb3RlAg9yZW1vdmVDYW5kaWRhdGUFYWRtaW4JALkJAgkAzAgCCQEYa2V5UmVtb3ZlQWRtaW5Wb3RlUHJlZml4AQUPcmVtb3ZlQ2FuZGlkYXRlCQDMCAIFBWFkbWluBQNuaWwFA1NFUAESZ2V0UmVtb3ZlQWRtaW5Wb3RlAg9yZW1vdmVDYW5kaWRhdGUFYWRtaW4JAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBEmtleVJlbW92ZUFkbWluVm90ZQIFD3JlbW92ZUNhbmRpZGF0ZQUFYWRtaW4AAAEba2V5VW5sb2NrVmVyaWZpZXJWb3RlUHJlZml4AAkAuQkCCQDMCAICBCVzJXMJAMwIAgIPYWN0aXZhdGVNYW5hZ2VyBQNuaWwFA1NFUAEVa2V5VW5sb2NrVmVyaWZpZXJWb3RlAQVhZG1pbgkAuQkCCQDMCAIJARtrZXlVbmxvY2tWZXJpZmllclZvdGVQcmVmaXgACQDMCAIFBWFkbWluBQNuaWwFA1NFUAEVZ2V0VW5sb2NrVmVyaWZpZXJWb3RlAQVhZG1pbgkBC3ZhbHVlT3JFbHNlAgkAnwgBCQEVa2V5VW5sb2NrVmVyaWZpZXJWb3RlAQUFYWRtaW4AAAETa2V5QWRtaW5BZGRyZXNzTGlzdAAJALkJAgkAzAgCAgIlcwkAzAgCAhBhZG1pbkFkZHJlc3NMaXN0BQNuaWwFA1NFUAEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQ1nZXRBZG1pbnNMaXN0AAkAtQkCCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMJARNrZXlBZG1pbkFkZHJlc3NMaXN0AAIABQNTRVABDWlzSW5BZG1pbkxpc3QBB2FkZHJlc3MEByRtYXRjaDAJAM8IAgkBDWdldEFkbWluc0xpc3QABQdhZGRyZXNzAwkAAQIFByRtYXRjaDACA0ludAQBdAUHJG1hdGNoMAYHARJnZW5Wb3Rlc0tleXNIZWxwZXICAWEMYWRtaW5BZGRyZXNzBAskdDAzMzU4MzM4MgUBYQQGcmVzdWx0CAULJHQwMzM1ODMzODICXzEEBnByZWZpeAgFCyR0MDMzNTgzMzgyAl8yCQCUCgIJAM0IAgUGcmVzdWx0CQC5CQIJAMwIAgUGcHJlZml4CQDMCAIFDGFkbWluQWRkcmVzcwUDbmlsBQNTRVAFBnByZWZpeAEMZ2VuVm90ZXNLZXlzAQlrZXlQcmVmaXgECWFkbWluTGlzdAkBE2tleUFkbWluQWRkcmVzc0xpc3QACgACJGwJAQ1nZXRBZG1pbnNMaXN0AAoAAiRzCQCQAwEFAiRsCgAFJGFjYzAJAJQKAgUDbmlsBQlrZXlQcmVmaXgKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBEmdlblZvdGVzS2V5c0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEQY291bnRWb3Rlc0hlbHBlcgIGcmVzdWx0B3ZvdGVLZXkJAGQCBQZyZXN1bHQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQUHdm90ZUtleQAAAQpjb3VudFZvdGVzAQZwcmVmaXgEBXZvdGVzCAkBDGdlblZvdGVzS2V5cwEFBnByZWZpeAJfMQoAAiRsBQV2b3RlcwoAAiRzCQCQAwEFAiRsCgAFJGFjYzAAAAoBBSRmMF8xAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQEQY291bnRWb3Rlc0hlbHBlcgIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQIUTGlzdCBzaXplIGV4Y2VlZHMgMTAJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFAAYABwAIAAkACgEQY2xlYXJWb3Rlc0hlbHBlcgIGcmVzdWx0A2tleQkAzQgCBQZyZXN1bHQJAQtEZWxldGVFbnRyeQEFA2tleQEUZ2V0Q2xlYXJWb3Rlc0VudHJpZXMBBnByZWZpeAQFdm90ZXMICQEMZ2VuVm90ZXNLZXlzAQUGcHJlZml4Al8xCgACJGwFBXZvdGVzCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJARBjbGVhclZvdGVzSGVscGVyAgUCJGEJAJEDAgUCJGwFAiRpCgEFJGYwXzICAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAAIBAhRMaXN0IHNpemUgZXhjZWVkcyAxMAkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwAEAAUABgAHAAgACQAKAQx2b3RlSU5URVJOQUwFE2NhbGxlckFkZHJlc3NTdHJpbmcQYWRtaW5DdXJyZW50Vm90ZQlrZXlQcmVmaXgIbWluVm90ZXMKdm90ZVJlc3VsdAQHdm90ZUtleQkAuQkCCQDMCAIFCWtleVByZWZpeAkAzAgCBRNjYWxsZXJBZGRyZXNzU3RyaW5nBQNuaWwFA1NFUAMJAQ1pc0luQWRtaW5MaXN0AQUTY2FsbGVyQWRkcmVzc1N0cmluZwMJAAACBRBhZG1pbkN1cnJlbnRWb3RlAAEJAQh0aHJvd0VycgEJAKwCAgUHdm90ZUtleQISIHlvdSBhbHJlYWR5IHZvdGVkBAV2b3RlcwkBCmNvdW50Vm90ZXMBBQlrZXlQcmVmaXgDCQBnAgkAZAIFBXZvdGVzAAEFCG1pblZvdGVzBBFjbGVhclZvdGVzRW50cmllcwkBFGdldENsZWFyVm90ZXNFbnRyaWVzAQUJa2V5UHJlZml4CQDOCAIFEWNsZWFyVm90ZXNFbnRyaWVzBQp2b3RlUmVzdWx0CQDMCAIJAQxJbnRlZ2VyRW50cnkCBQd2b3RlS2V5AAEFA25pbAkBCHRocm93RXJyAQkArAICCQCsAgICCUFkZHJlc3M6IAUTY2FsbGVyQWRkcmVzc1N0cmluZwISIG5vdCBpbiBBZG1pbiBsaXN0BwFpAQ5jb25maXJtTWFuYWdlcgAEAnBtCQEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAVoYXNQTQMJAQlpc0RlZmluZWQBBQJwbQYJAQh0aHJvd0VycgECEm5vIHBlbmRpbmcgbWFuYWdlcgMJAAACBQVoYXNQTQUFaGFzUE0EB2NoZWNrUE0DCQAAAggFAWkPY2FsbGVyUHVibGljS2V5CQEFdmFsdWUBBQJwbQYJAQh0aHJvd0VycgECG3lvdSBhcmUgbm90IHBlbmRpbmcgbWFuYWdlcgMJAAACBQdjaGVja1BNBQdjaGVja1BNCQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlDdXJyZW50TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0FA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARB2b3RlRm9yTmV3TWFuZ2VyARNuZXdNYW5hZ2VyUHVibGljS2V5BBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBGmtleVNldE5ld01hbmFnZXJWb3RlUHJlZml4AQUTbmV3TWFuYWdlclB1YmxpY0tleQQQYWRtaW5DdXJyZW50Vm90ZQkBFGdldFNldE5ld01hbmFnZXJWb3RlAgUTbmV3TWFuYWdlclB1YmxpY0tleQUTY2FsbGVyQWRkcmVzc1N0cmluZwQIbWluVm90ZXMAAgQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFE25ld01hbmFnZXJQdWJsaWNLZXkFA25pbAkBDHZvdGVJTlRFUk5BTAUFE2NhbGxlckFkZHJlc3NTdHJpbmcFEGFkbWluQ3VycmVudFZvdGUFCWtleVByZWZpeAUIbWluVm90ZXMFBnJlc3VsdAFpARFkZWFjdGl2YXRlTWFuYWdlcgAEE2NhbGxlckFkZHJlc3NTdHJpbmcJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJa2V5UHJlZml4CQEea2V5RGVhY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAQQYWRtaW5DdXJyZW50Vm90ZQkBGGdldERlYWN0aXZhdGVNYW5hZ2VyVm90ZQEFE2NhbGxlckFkZHJlc3NTdHJpbmcECG1pblZvdGVzAAEEBnJlc3VsdAkAzAgCCQELU3RyaW5nRW50cnkCCQEZa2V5QWN0aXZlTWFuYWdlclB1YmxpY0tleQACCGRpc2FibGVkBQNuaWwJAQx2b3RlSU5URVJOQUwFBRNjYWxsZXJBZGRyZXNzU3RyaW5nBRBhZG1pbkN1cnJlbnRWb3RlBQlrZXlQcmVmaXgFCG1pblZvdGVzBQZyZXN1bHQBaQEPYWN0aXZhdGVNYW5hZ2VyAAQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARxrZXlBY3RpdmF0ZU1hbmFnZXJWb3RlUHJlZml4AAQQYWRtaW5DdXJyZW50Vm90ZQkBFmdldEFjdGl2YXRlTWFuYWdlclZvdGUBBRNjYWxsZXJBZGRyZXNzU3RyaW5nBAhtaW5Wb3RlcwACBBRjdXJyZW50TWFuYWdlclN0cmluZwkBEUBleHRyTmF0aXZlKDEwNTgpAQkBGmtleUN1cnJlbnRNYW5hZ2VyUHVibGljS2V5AAQGcmVzdWx0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlBY3RpdmVNYW5hZ2VyUHVibGljS2V5AAUUY3VycmVudE1hbmFnZXJTdHJpbmcFA25pbAkBDHZvdGVJTlRFUk5BTAUFE2NhbGxlckFkZHJlc3NTdHJpbmcFEGFkbWluQ3VycmVudFZvdGUFCWtleVByZWZpeAUIbWluVm90ZXMFBnJlc3VsdAFpAQthZGROZXdBZG1pbgEPbmV3QWRtaW5BZGRyZXNzBBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBGGtleUFkZE5ld0FkbWluVm90ZVByZWZpeAEFD25ld0FkbWluQWRkcmVzcwQQYWRtaW5DdXJyZW50Vm90ZQkBEmdldEFkZE5ld0FkbWluVm90ZQIFD25ld0FkbWluQWRkcmVzcwUTY2FsbGVyQWRkcmVzc1N0cmluZwQIbWluVm90ZXMAAgQQY3VycmVudEFkbWluTGlzdAkBDWdldEFkbWluc0xpc3QABAckbWF0Y2gwCQDPCAIFEGN1cnJlbnRBZG1pbkxpc3QFD25ld0FkbWluQWRkcmVzcwMJAAECBQckbWF0Y2gwAgNJbnQEAWEFByRtYXRjaDAJAQh0aHJvd0VycgEJAKwCAgUPbmV3QWRtaW5BZGRyZXNzAhYgYWxyZWFkeSBpbiBBZG1pbiBMaXN0BAxuZXdBZG1pbkxpc3QJAM0IAgUQY3VycmVudEFkbWluTGlzdAUPbmV3QWRtaW5BZGRyZXNzBAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIFDG5ld0FkbWluTGlzdAUDU0VQBQNuaWwJAQx2b3RlSU5URVJOQUwFBRNjYWxsZXJBZGRyZXNzU3RyaW5nBRBhZG1pbkN1cnJlbnRWb3RlBQlrZXlQcmVmaXgFCG1pblZvdGVzBQZyZXN1bHQBaQELcmVtb3ZlQWRtaW4BD3JlbW92ZUNhbmRpZGF0ZQQTY2FsbGVyQWRkcmVzc1N0cmluZwkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBAlrZXlQcmVmaXgJARhrZXlSZW1vdmVBZG1pblZvdGVQcmVmaXgBBQ9yZW1vdmVDYW5kaWRhdGUEEGFkbWluQ3VycmVudFZvdGUJARJnZXRSZW1vdmVBZG1pblZvdGUCBQ9yZW1vdmVDYW5kaWRhdGUFE2NhbGxlckFkZHJlc3NTdHJpbmcECG1pblZvdGVzAAIEEGN1cnJlbnRBZG1pbkxpc3QJAQ1nZXRBZG1pbnNMaXN0AAQHJG1hdGNoMAkAzwgCBRBjdXJyZW50QWRtaW5MaXN0BQ9yZW1vdmVDYW5kaWRhdGUDCQABAgUHJG1hdGNoMAIDSW50BAVpbmRleAUHJG1hdGNoMAQMbmV3QWRtaW5MaXN0CQDRCAIFEGN1cnJlbnRBZG1pbkxpc3QFBWluZGV4BAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBE2tleUFkbWluQWRkcmVzc0xpc3QACQC5CQIFDG5ld0FkbWluTGlzdAUDU0VQBQNuaWwJAQx2b3RlSU5URVJOQUwFBRNjYWxsZXJBZGRyZXNzU3RyaW5nBRBhZG1pbkN1cnJlbnRWb3RlBQlrZXlQcmVmaXgFCG1pblZvdGVzBQZyZXN1bHQJAQh0aHJvd0VycgEJAKwCAgUPcmVtb3ZlQ2FuZGlkYXRlAhggbm90IGZvdW5kIGluIEFkbWluIExpc3QBaQEOdW5sb2NrVmFyaWZpZXIABBNjYWxsZXJBZGRyZXNzU3RyaW5nCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMECWtleVByZWZpeAkBHGtleUFjdGl2YXRlTWFuYWdlclZvdGVQcmVmaXgABBBhZG1pbkN1cnJlbnRWb3RlCQEWZ2V0QWN0aXZhdGVNYW5hZ2VyVm90ZQEFE2NhbGxlckFkZHJlc3NTdHJpbmcECG1pblZvdGVzAAIEFHBlbmRpbmdNYW5hZ2VyU3RyaW5nCQERQGV4dHJOYXRpdmUoMTA1OCkBCQEaa2V5UGVuZGluZ01hbmFnZXJQdWJsaWNLZXkABAZyZXN1bHQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGWtleUFjdGl2ZU1hbmFnZXJQdWJsaWNLZXkABRRwZW5kaW5nTWFuYWdlclN0cmluZwUDbmlsCQEMdm90ZUlOVEVSTkFMBQUTY2FsbGVyQWRkcmVzc1N0cmluZwUQYWRtaW5DdXJyZW50Vm90ZQUJa2V5UHJlZml4BQhtaW5Wb3RlcwUGcmVzdWx0AEg9Fpw=", "height": 2541177, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 14mZMMtP6knjarfWVxSygk3Pb7U1kuhq9VVFQxMx1ibh Next: 2QF3YFjKo3NFapttqniLW3RFvHWQ5bNs2co4kzeT9cEk Diff:
OldNewDifferences
1212
1313
1414 func keyPendingManagerPublicKey () = makeString(["%s", "pendingManagerPublicKey"], SEP)
15+
16+
17+func keyCurrentManagerPublicKey () = makeString(["%s", "currentManagerPublicKey"], SEP)
1518
1619
1720 func keySetNewManagerVotePrefix (managerPublicKey) = makeString(["%s%s%s", "setManager", managerPublicKey], SEP)
5962 func getRemoveAdminVote (removeCandidate,admin) = valueOrElse(getInteger(keyRemoveAdminVote(removeCandidate, admin)), 0)
6063
6164
65+func keyUnlockVerifierVotePrefix () = makeString(["%s%s", "activateManager"], SEP)
66+
67+
68+func keyUnlockVerifierVote (admin) = makeString([keyUnlockVerifierVotePrefix(), admin], SEP)
69+
70+
71+func getUnlockVerifierVote (admin) = valueOrElse(getInteger(keyUnlockVerifierVote(admin)), 0)
72+
73+
6274 func keyAdminAddressList () = makeString(["%s", "adminAddressList"], SEP)
6375
6476
8496
8597
8698 func genVotesKeysHelper (a,adminAddress) = {
87- let $t029532977 = a
88- let result = $t029532977._1
89- let prefix = $t029532977._2
99+ let $t033583382 = a
100+ let result = $t033583382._1
101+ let prefix = $t033583382._2
90102 $Tuple2((result :+ makeString([prefix, adminAddress], SEP)), prefix)
91103 }
92104
178190 then true
179191 else throwErr("you are not pending manager")
180192 if ((checkPM == checkPM))
181- then [StringEntry(keyActiveManagerPublicKey(), toBase58String(value(pm)))]
193+ then [StringEntry(keyCurrentManagerPublicKey(), toBase58String(value(pm)))]
182194 else throw("Strict value is not equal to itself.")
183195 }
184196 else throw("Strict value is not equal to itself.")
204216 let keyPrefix = keyDeactivateManagerVotePrefix()
205217 let adminCurrentVote = getDeactivateManagerVote(callerAddressString)
206218 let minVotes = 1
207- let result = [DeleteEntry(keyActiveManagerPublicKey())]
219+ let result = [StringEntry(keyActiveManagerPublicKey(), "disabled")]
208220 voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
209221 }
210222
216228 let keyPrefix = keyActivateManagerVotePrefix()
217229 let adminCurrentVote = getActivateManagerVote(callerAddressString)
218230 let minVotes = 2
219- let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
220- let result = [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)]
231+ let currentManagerString = getStringValue(keyCurrentManagerPublicKey())
232+ let result = [StringEntry(keyActiveManagerPublicKey(), currentManagerString)]
221233 voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
222234 }
223235
260272 }
261273
262274
275+
276+@Callable(i)
277+func unlockVarifier () = {
278+ let callerAddressString = toBase58String(i.caller.bytes)
279+ let keyPrefix = keyActivateManagerVotePrefix()
280+ let adminCurrentVote = getActivateManagerVote(callerAddressString)
281+ let minVotes = 2
282+ let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
283+ let result = [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)]
284+ voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
285+ }
286+
287+
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let SEP = "__"
55
66 let contractFilename = "manager_vault.ride"
77
88 func throwErr (s) = throw(((contractFilename + ": ") + s))
99
1010
1111 func keyActiveManagerPublicKey () = makeString(["%s", "managerPublicKey"], SEP)
1212
1313
1414 func keyPendingManagerPublicKey () = makeString(["%s", "pendingManagerPublicKey"], SEP)
15+
16+
17+func keyCurrentManagerPublicKey () = makeString(["%s", "currentManagerPublicKey"], SEP)
1518
1619
1720 func keySetNewManagerVotePrefix (managerPublicKey) = makeString(["%s%s%s", "setManager", managerPublicKey], SEP)
1821
1922
2023 func keySetNewManagerVote (managerPublicKey,admin) = makeString([keySetNewManagerVotePrefix(managerPublicKey), admin], SEP)
2124
2225
2326 func getSetNewManagerVote (managerPublicKey,admin) = valueOrElse(getInteger(keySetNewManagerVote(managerPublicKey, admin)), 0)
2427
2528
2629 func keyDeactivateManagerVotePrefix () = makeString(["%s%s", "deactivateManager"], SEP)
2730
2831
2932 func keyDeactivateManagerVote (admin) = makeString([keyDeactivateManagerVotePrefix(), admin], SEP)
3033
3134
3235 func getDeactivateManagerVote (admin) = valueOrElse(getInteger(keyDeactivateManagerVote(admin)), 0)
3336
3437
3538 func keyActivateManagerVotePrefix () = makeString(["%s%s", "activateManager"], SEP)
3639
3740
3841 func keyActivateManagerVote (admin) = makeString([keyActivateManagerVotePrefix(), admin], SEP)
3942
4043
4144 func getActivateManagerVote (admin) = valueOrElse(getInteger(keyActivateManagerVote(admin)), 0)
4245
4346
4447 func keyAddNewAdminVotePrefix (adminCandidate) = makeString(["%s%s%s", "addAdmin", adminCandidate], SEP)
4548
4649
4750 func keyAddNewAdminVote (adminCandidate,admin) = makeString([keyAddNewAdminVotePrefix(adminCandidate), admin], SEP)
4851
4952
5053 func getAddNewAdminVote (adminCandidate,admin) = valueOrElse(getInteger(keyAddNewAdminVote(adminCandidate, admin)), 0)
5154
5255
5356 func keyRemoveAdminVotePrefix (removeCandidate) = makeString(["%s%s%s", "removeAdmin", removeCandidate], SEP)
5457
5558
5659 func keyRemoveAdminVote (removeCandidate,admin) = makeString([keyRemoveAdminVotePrefix(removeCandidate), admin], SEP)
5760
5861
5962 func getRemoveAdminVote (removeCandidate,admin) = valueOrElse(getInteger(keyRemoveAdminVote(removeCandidate, admin)), 0)
6063
6164
65+func keyUnlockVerifierVotePrefix () = makeString(["%s%s", "activateManager"], SEP)
66+
67+
68+func keyUnlockVerifierVote (admin) = makeString([keyUnlockVerifierVotePrefix(), admin], SEP)
69+
70+
71+func getUnlockVerifierVote (admin) = valueOrElse(getInteger(keyUnlockVerifierVote(admin)), 0)
72+
73+
6274 func keyAdminAddressList () = makeString(["%s", "adminAddressList"], SEP)
6375
6476
6577 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
6678 case s: String =>
6779 fromBase58String(s)
6880 case _: Unit =>
6981 unit
7082 case _ =>
7183 throw("Match error")
7284 }
7385
7486
7587 func getAdminsList () = split(valueOrElse(getString(this, keyAdminAddressList()), ""), SEP)
7688
7789
7890 func isInAdminList (address) = match indexOf(getAdminsList(), address) {
7991 case t: Int =>
8092 true
8193 case _ =>
8294 false
8395 }
8496
8597
8698 func genVotesKeysHelper (a,adminAddress) = {
87- let $t029532977 = a
88- let result = $t029532977._1
89- let prefix = $t029532977._2
99+ let $t033583382 = a
100+ let result = $t033583382._1
101+ let prefix = $t033583382._2
90102 $Tuple2((result :+ makeString([prefix, adminAddress], SEP)), prefix)
91103 }
92104
93105
94106 func genVotesKeys (keyPrefix) = {
95107 let adminList = keyAdminAddressList()
96108 let $l = getAdminsList()
97109 let $s = size($l)
98110 let $acc0 = $Tuple2(nil, keyPrefix)
99111 func $f0_1 ($a,$i) = if (($i >= $s))
100112 then $a
101113 else genVotesKeysHelper($a, $l[$i])
102114
103115 func $f0_2 ($a,$i) = if (($i >= $s))
104116 then $a
105117 else throw("List size exceeds 10")
106118
107119 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
108120 }
109121
110122
111123 func countVotesHelper (result,voteKey) = (result + valueOrElse(getInteger(voteKey), 0))
112124
113125
114126 func countVotes (prefix) = {
115127 let votes = genVotesKeys(prefix)._1
116128 let $l = votes
117129 let $s = size($l)
118130 let $acc0 = 0
119131 func $f0_1 ($a,$i) = if (($i >= $s))
120132 then $a
121133 else countVotesHelper($a, $l[$i])
122134
123135 func $f0_2 ($a,$i) = if (($i >= $s))
124136 then $a
125137 else throw("List size exceeds 10")
126138
127139 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
128140 }
129141
130142
131143 func clearVotesHelper (result,key) = (result :+ DeleteEntry(key))
132144
133145
134146 func getClearVotesEntries (prefix) = {
135147 let votes = genVotesKeys(prefix)._1
136148 let $l = votes
137149 let $s = size($l)
138150 let $acc0 = nil
139151 func $f0_1 ($a,$i) = if (($i >= $s))
140152 then $a
141153 else clearVotesHelper($a, $l[$i])
142154
143155 func $f0_2 ($a,$i) = if (($i >= $s))
144156 then $a
145157 else throw("List size exceeds 10")
146158
147159 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5), 6), 7), 8), 9), 10)
148160 }
149161
150162
151163 func voteINTERNAL (callerAddressString,adminCurrentVote,keyPrefix,minVotes,voteResult) = {
152164 let voteKey = makeString([keyPrefix, callerAddressString], SEP)
153165 if (isInAdminList(callerAddressString))
154166 then if ((adminCurrentVote == 1))
155167 then throwErr((voteKey + " you already voted"))
156168 else {
157169 let votes = countVotes(keyPrefix)
158170 if (((votes + 1) >= minVotes))
159171 then {
160172 let clearVotesEntries = getClearVotesEntries(keyPrefix)
161173 (clearVotesEntries ++ voteResult)
162174 }
163175 else [IntegerEntry(voteKey, 1)]
164176 }
165177 else throwErr((("Address: " + callerAddressString) + " not in Admin list"))
166178 }
167179
168180
169181 @Callable(i)
170182 func confirmManager () = {
171183 let pm = pendingManagerPublicKeyOrUnit()
172184 let hasPM = if (isDefined(pm))
173185 then true
174186 else throwErr("no pending manager")
175187 if ((hasPM == hasPM))
176188 then {
177189 let checkPM = if ((i.callerPublicKey == value(pm)))
178190 then true
179191 else throwErr("you are not pending manager")
180192 if ((checkPM == checkPM))
181- then [StringEntry(keyActiveManagerPublicKey(), toBase58String(value(pm)))]
193+ then [StringEntry(keyCurrentManagerPublicKey(), toBase58String(value(pm)))]
182194 else throw("Strict value is not equal to itself.")
183195 }
184196 else throw("Strict value is not equal to itself.")
185197 }
186198
187199
188200
189201 @Callable(i)
190202 func voteForNewManger (newManagerPublicKey) = {
191203 let callerAddressString = toBase58String(i.caller.bytes)
192204 let keyPrefix = keySetNewManagerVotePrefix(newManagerPublicKey)
193205 let adminCurrentVote = getSetNewManagerVote(newManagerPublicKey, callerAddressString)
194206 let minVotes = 2
195207 let result = [StringEntry(keyPendingManagerPublicKey(), newManagerPublicKey)]
196208 voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
197209 }
198210
199211
200212
201213 @Callable(i)
202214 func deactivateManager () = {
203215 let callerAddressString = toBase58String(i.caller.bytes)
204216 let keyPrefix = keyDeactivateManagerVotePrefix()
205217 let adminCurrentVote = getDeactivateManagerVote(callerAddressString)
206218 let minVotes = 1
207- let result = [DeleteEntry(keyActiveManagerPublicKey())]
219+ let result = [StringEntry(keyActiveManagerPublicKey(), "disabled")]
208220 voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
209221 }
210222
211223
212224
213225 @Callable(i)
214226 func activateManager () = {
215227 let callerAddressString = toBase58String(i.caller.bytes)
216228 let keyPrefix = keyActivateManagerVotePrefix()
217229 let adminCurrentVote = getActivateManagerVote(callerAddressString)
218230 let minVotes = 2
219- let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
220- let result = [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)]
231+ let currentManagerString = getStringValue(keyCurrentManagerPublicKey())
232+ let result = [StringEntry(keyActiveManagerPublicKey(), currentManagerString)]
221233 voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
222234 }
223235
224236
225237
226238 @Callable(i)
227239 func addNewAdmin (newAdminAddress) = {
228240 let callerAddressString = toBase58String(i.caller.bytes)
229241 let keyPrefix = keyAddNewAdminVotePrefix(newAdminAddress)
230242 let adminCurrentVote = getAddNewAdminVote(newAdminAddress, callerAddressString)
231243 let minVotes = 2
232244 let currentAdminList = getAdminsList()
233245 match indexOf(currentAdminList, newAdminAddress) {
234246 case a: Int =>
235247 throwErr((newAdminAddress + " already in Admin List"))
236248 case _ =>
237249 let newAdminList = (currentAdminList :+ newAdminAddress)
238250 let result = [StringEntry(keyAdminAddressList(), makeString(newAdminList, SEP))]
239251 voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
240252 }
241253 }
242254
243255
244256
245257 @Callable(i)
246258 func removeAdmin (removeCandidate) = {
247259 let callerAddressString = toBase58String(i.caller.bytes)
248260 let keyPrefix = keyRemoveAdminVotePrefix(removeCandidate)
249261 let adminCurrentVote = getRemoveAdminVote(removeCandidate, callerAddressString)
250262 let minVotes = 2
251263 let currentAdminList = getAdminsList()
252264 match indexOf(currentAdminList, removeCandidate) {
253265 case index: Int =>
254266 let newAdminList = removeByIndex(currentAdminList, index)
255267 let result = [StringEntry(keyAdminAddressList(), makeString(newAdminList, SEP))]
256268 voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
257269 case _ =>
258270 throwErr((removeCandidate + " not found in Admin List"))
259271 }
260272 }
261273
262274
275+
276+@Callable(i)
277+func unlockVarifier () = {
278+ let callerAddressString = toBase58String(i.caller.bytes)
279+ let keyPrefix = keyActivateManagerVotePrefix()
280+ let adminCurrentVote = getActivateManagerVote(callerAddressString)
281+ let minVotes = 2
282+ let pendingManagerString = getStringValue(keyPendingManagerPublicKey())
283+ let result = [StringEntry(keyActiveManagerPublicKey(), pendingManagerString)]
284+ voteINTERNAL(callerAddressString, adminCurrentVote, keyPrefix, minVotes, result)
285+ }
286+
287+

github/deemru/w8io/026f985 
39.12 ms