tx · BJUp8B7ywj4qHVc3vcm3r98HCoQY7MQVpZtuL46mRAVt

3MuqubsQAq9mrsN65SePHeThcN3JVAbgZ9d:  -0.01500000 Waves

2023.05.19 15:23 [2584839] smart account 3MuqubsQAq9mrsN65SePHeThcN3JVAbgZ9d > SELF 0.00000000 Waves

{ "type": 13, "id": "BJUp8B7ywj4qHVc3vcm3r98HCoQY7MQVpZtuL46mRAVt", "fee": 1500000, "feeAssetId": null, "timestamp": 1684499054029, "version": 2, "chainId": 84, "sender": "3MuqubsQAq9mrsN65SePHeThcN3JVAbgZ9d", "senderPublicKey": "GWTozVWP9MvUxrEuz1BPrNAbtLYAec9LrT4U82jWG6KX", "proofs": [ "2f8NCKN6cbPrjZvHTqj3YqvLtzLn2wCcme9qc38PAx5zn19J88NiYab2cAVsXTfLRxTTxjeGedLBpoDvRdTJjeTB" ], "script": "base64:BgIbCAISBwoFCAgBAQESABIDCgEBEgASAwoBARIAHAAJc2VwYXJhdG9yAgJfXwAQY29udHJhY3RGaWxlbmFtZQIZdm90aW5nX2VtaXNzaW9uX3JhdGUucmlkZQAOa2V5RXBvY2hMZW5ndGgJALkJAgkAzAgCAgIlcwkAzAgCAgtlcG9jaExlbmd0aAUDbmlsBQlzZXBhcmF0b3IAE2tleUVtaXNzaW9uQ29udHJhY3QJALkJAgkAzAgCAgIlcwkAzAgCAhBlbWlzc2lvbkNvbnRyYWN0BQNuaWwFCXNlcGFyYXRvcgATa2V5Qm9vc3RpbmdDb250cmFjdAkAuQkCCQDMCAICAiVzCQDMCAICEGJvb3N0aW5nQ29udHJhY3QFA25pbAUJc2VwYXJhdG9yAAxrZXlUaHJlc2hvbGQJALkJAgkAzAgCAgIlcwkAzAgCAg92b3RpbmdUaHJlc2hvbGQFA25pbAUJc2VwYXJhdG9yAA9rZXlSYXRlUGVyQmxvY2sJALkJAgkAzAgCAgQlcyVzCQDMCAICDHJhdGVQZXJCbG9jawkAzAgCAgdjdXJyZW50BQNuaWwFCXNlcGFyYXRvcgASa2V5UmF0ZVBlckJsb2NrTWF4CQC5CQIJAMwIAgIEJXMlcwkAzAgCAg9yYXRlUGVyQmxvY2tNYXgJAMwIAgIHY3VycmVudAUDbmlsBQlzZXBhcmF0b3IAEWtleVJhdGVDaGFuZ2VTdGVwCQC5CQIJAMwIAgICJXMJAMwIAgIOcmF0ZUNoYW5nZVN0ZXAFA25pbAUJc2VwYXJhdG9yAA5rZXlTdGFydEhlaWdodAkAuQkCCQDMCAICAiVzCQDMCAICC3N0YXJ0SGVpZ2h0BQNuaWwFCXNlcGFyYXRvcgAPa2V5Vm90aW5nUmVzdWx0CQC5CQIJAMwIAgICJXMJAMwIAgIMdm90aW5nUmVzdWx0BQNuaWwFCXNlcGFyYXRvcgEIdGhyb3dFcnIBAXMJAAIBCQCsAgIJAKwCAgUQY29udHJhY3RGaWxlbmFtZQICOiAFAXMBD2dldFN0cmluZ09yRmFpbAEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJ0IAgUEdGhpcwUDa2V5CQCsAgIFA2tleQIPIGlzIG5vdCBkZWZpbmVkAQxnZXRJbnRPckZhaWwBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFBHRoaXMFA2tleQkArAICBQNrZXkCDyBpcyBub3QgZGVmaW5lZAEKdG90YWxWb3RlcwMNdG90YWxJbmNyZWFzZQx0b3RhbEN1cnJlbnQNdG90YWxEZWNyZWFzZQkAuQkCCQDMCAICBiVkJWQlZAkAzAgCBQ10b3RhbEluY3JlYXNlCQDMCAIFDHRvdGFsQ3VycmVudAkAzAgCBQ10b3RhbERlY3JlYXNlBQNuaWwFCXNlcGFyYXRvcgEHa2V5Vm90ZQIMdm90ZXJBZGRyZXNzC3N0YXJ0SGVpZ2h0CQC5CQIJAMwIAgIGJXMlcyVkCQDMCAICBHZvdGUJAMwIAgUMdm90ZXJBZGRyZXNzCQDMCAIJAKQDAQULc3RhcnRIZWlnaHQFA25pbAUJc2VwYXJhdG9yAQxrZXlWb3RlVmFsdWUCCWd3eEFtb3VudAR2b3RlBANrZXkDCQAAAgUEdm90ZQABCQC5CQIJAMwIAgIEJWQlcwkAzAgCBQlnd3hBbW91bnQJAMwIAgIIaW5jcmVhc2UFA25pbAUJc2VwYXJhdG9yAwkAAAIFBHZvdGUA////////////AQkAuQkCCQDMCAICBCVkJXMJAMwIAgUJZ3d4QW1vdW50CQDMCAICCGRlY3JlYXNlBQNuaWwFCXNlcGFyYXRvcgkAuQkCCQDMCAICBCVkJXMJAMwIAgUJZ3d4QW1vdW50CQDMCAICB2N1cnJlbnQFA25pbAUJc2VwYXJhdG9yBQNrZXkAEGJvb3N0aW5nQ29udHJhY3QJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAQ9nZXRTdHJpbmdPckZhaWwBBRNrZXlCb29zdGluZ0NvbnRyYWN0ABBlbWlzc2lvbkNvbnRyYWN0CQERQGV4dHJOYXRpdmUoMTA2MikBCQEPZ2V0U3RyaW5nT3JGYWlsAQUTa2V5RW1pc3Npb25Db250cmFjdAETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAIXJXNfX21hbmFnZXJWYXVsdEFkZHJlc3MBHGdldE1hbmFnZXJWYXVsdEFkZHJlc3NPclRoaXMABAckbWF0Y2gwCQCiCAEJARZrZXlNYW5hZ2VyVmF1bHRBZGRyZXNzAAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJARFAZXh0ck5hdGl2ZSgxMDYyKQEFAXMFBHRoaXMBFm1hbmFnZXJQdWJsaWNLZXlPclVuaXQABBNtYW5hZ2VyVmF1bHRBZGRyZXNzCQEcZ2V0TWFuYWdlclZhdWx0QWRkcmVzc09yVGhpcwAEByRtYXRjaDAJAJ0IAgUTbWFuYWdlclZhdWx0QWRkcmVzcwkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEJaXNNYW5hZ2VyAQFpBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAJAAACCAUBaQ9jYWxsZXJQdWJsaWNLZXkFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQJAAACCAUBaQZjYWxsZXIFBHRoaXMJAAIBAgtNYXRjaCBlcnJvcgELbXVzdE1hbmFnZXIBAWkDCQEJaXNNYW5hZ2VyAQUBaQYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAQVhc0ludAEDdmFsBAckbWF0Y2gwBQN2YWwDCQABAgUHJG1hdGNoMAIDSW50BAZ2YWxJbnQFByRtYXRjaDAFBnZhbEludAkBCHRocm93RXJyAQIbZmFpbGVkIHRvIGNhc3QgaW50byBJbnRlZ2VyAQtjYWxjTmV3UmF0ZQMPcmF0ZVBlckJsb2NrTWF4DHJhdGVQZXJCbG9jawpjaGFuZ2VTdGVwBAptYXhBbGxvd2VkCQBrAwBkBQ9yYXRlUGVyQmxvY2tNYXgAeAQNaW5jcmVhc2VkUmF0ZQkAlwMBCQDMCAIJAGsDCQBkAgBkBQpjaGFuZ2VTdGVwBQxyYXRlUGVyQmxvY2sAZAkAzAgCBQptYXhBbGxvd2VkBQNuaWwEDWRlY3JlYXNlZFJhdGUJAJYDAQkAzAgCCQBrAwkAZQIAZAUKY2hhbmdlU3RlcAUMcmF0ZVBlckJsb2NrAGQJAMwIAgAABQNuaWwJAJUKAwUNaW5jcmVhc2VkUmF0ZQUMcmF0ZVBlckJsb2NrBQ1kZWNyZWFzZWRSYXRlARxnZXRSYXRlQ2hhbmdlQW1vdW50c0lOVEVSTkFMAAQPcmF0ZVBlckJsb2NrTWF4CQERQGV4dHJOYXRpdmUoMTA1MCkCBRBlbWlzc2lvbkNvbnRyYWN0BRJrZXlSYXRlUGVyQmxvY2tNYXgEDHJhdGVQZXJCbG9jawkBEUBleHRyTmF0aXZlKDEwNTApAgUQZW1pc3Npb25Db250cmFjdAUPa2V5UmF0ZVBlckJsb2NrBA5yYXRlQ2hhbmdlU3RlcAkBEUBleHRyTmF0aXZlKDEwNTApAgUEdGhpcwURa2V5UmF0ZUNoYW5nZVN0ZXAJAQtjYWxjTmV3UmF0ZQMFD3JhdGVQZXJCbG9ja01heAUMcmF0ZVBlckJsb2NrBQ5yYXRlQ2hhbmdlU3RlcAYBaQELY29uc3RydWN0b3IFE2Jvb3N0aW5nQ29udHJhY3RQcm0TZW1pc3Npb25Db250cmFjdFBybRF2b3RpbmdEdXJhdGlvblBybQl0aHJlc2hvbGQOcmF0ZUNoYW5nZVN0ZXAEBmNoZWNrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQEJaXNEZWZpbmVkAQkApggBBRNib29zdGluZ0NvbnRyYWN0UHJtBgkBCHRocm93RXJyAQIhSW52YWxpZCBib29zdGluZyBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQEJaXNEZWZpbmVkAQkApggBBRNlbWlzc2lvbkNvbnRyYWN0UHJtBgkBCHRocm93RXJyAQIhSW52YWxpZCBlbWlzc2lvbiBjb250cmFjdCBhZGRyZXNzCQDMCAIDCQBmAgURdm90aW5nRHVyYXRpb25Qcm0AAAYJAQh0aHJvd0VycgECF0ludmFsaWQgdm90aW5nIGR1cmF0aW9uCQDMCAIDCQBmAgUJdGhyZXNob2xkAAAGCQEIdGhyb3dFcnIBAhFpbnZhbGlkIHRocmVzaG9sZAkAzAgCAwkAZgIFDnJhdGVDaGFuZ2VTdGVwAAAGCQEIdGhyb3dFcnIBAhZpbnZhbGlkIHJhdGVDaGFuZ2VTdGVwBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBRNrZXlCb29zdGluZ0NvbnRyYWN0BRNib29zdGluZ0NvbnRyYWN0UHJtCQDMCAIJAQtTdHJpbmdFbnRyeQIFE2tleUVtaXNzaW9uQ29udHJhY3QFE2VtaXNzaW9uQ29udHJhY3RQcm0JAMwIAgkBDEludGVnZXJFbnRyeQIFDmtleUVwb2NoTGVuZ3RoBRF2b3RpbmdEdXJhdGlvblBybQkAzAgCCQEMSW50ZWdlckVudHJ5AgUMa2V5VGhyZXNob2xkBQl0aHJlc2hvbGQJAMwIAgkBDEludGVnZXJFbnRyeQIFEWtleVJhdGVDaGFuZ2VTdGVwBQ5yYXRlQ2hhbmdlU3RlcAkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa2V5U3RhcnRIZWlnaHQFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQ9rZXlWb3RpbmdSZXN1bHQJAQp0b3RhbFZvdGVzAwIBMAIBMAIBMAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBHGdldFJhdGVDaGFuZ2VBbW91bnRzUkVBRE9OTFkACQCUCgIFA25pbAkBHGdldFJhdGVDaGFuZ2VBbW91bnRzSU5URVJOQUwAAWkBBHZvdGUBB2luRmF2b3IEC3N0YXJ0SGVpZ2h0CQERQGV4dHJOYXRpdmUoMTA1NSkBBQ5rZXlTdGFydEhlaWdodAQSdm90aW5nRmluaXNoSGVpZ2h0CQBkAgULc3RhcnRIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFDmtleUVwb2NoTGVuZ3RoBAZjaGVja3MJAMwIAgMJAGYCBRJ2b3RpbmdGaW5pc2hIZWlnaHQFBmhlaWdodAYJAQh0aHJvd0VycgECEHRvbyBsYXRlIHRvIHZvdGUJAMwIAgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIAAQkAzAgCAAAJAMwIAgD///////////8BBQNuaWwFB2luRmF2b3IGCQEIdGhyb3dFcnIBAhJub3QgdmFsaWQgYXJndW1lbnQFA25pbAMJAAACBQZjaGVja3MFBmNoZWNrcwQJZ3d4QW1vdW50CQD8BwQFEGJvb3N0aW5nQ29udHJhY3QCIGdldFVzZXJHd3hBbW91bnRBdEhlaWdodFJFQURPTkxZCQDMCAIJAKUIAQgFAWkGY2FsbGVyCQDMCAIFEnZvdGluZ0ZpbmlzaEhlaWdodAUDbmlsBQNuaWwEB25vdFplcm8DCQBmAgkBBWFzSW50AQUJZ3d4QW1vdW50AAAGCQEIdGhyb3dFcnIBAhJ5b3UgZG9uJ3QgaGF2ZSBnd3gDCQAAAgUHbm90WmVybwUHbm90WmVybwQEdm90ZQQHJG1hdGNoMAkAoggBCQEHa2V5Vm90ZQIJAKUIAQgFAWkGY2FsbGVyBQtzdGFydEhlaWdodAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAEBHZvdGUJALUJAgUBcwUJc2VwYXJhdG9yBAl2b3RlVmFsdWUJAJEDAgUEdm90ZQABBAh2b3RlVHlwZQkAkQMCBQR2b3RlAAIEEWlzVm90ZVR5cGVTaW1pbGFyAwMDCQAAAgUIdm90ZVR5cGUCCGluY3JlYXNlCQAAAgUHaW5GYXZvcgABBwYDCQAAAgUIdm90ZVR5cGUCCGRlY3JlYXNlCQAAAgUHaW5GYXZvcgD///////////8BBwYDCQAAAgUIdm90ZVR5cGUCB2N1cnJlbnQJAAACBQdpbkZhdm9yAAAHBBJpc1ZvdGVWYWx1ZVNpbWlsYXIDBRFpc1ZvdGVUeXBlU2ltaWxhcgkAAAIJAQVhc0ludAEFCWd3eEFtb3VudAkBDXBhcnNlSW50VmFsdWUBBQl2b3RlVmFsdWUHBBBpc05ld1ZvdGVTaW1pbGFyAwMFEWlzVm90ZVR5cGVTaW1pbGFyBRJpc1ZvdGVWYWx1ZVNpbWlsYXIHCQEIdGhyb3dFcnIBAhF5b3UgYWxyZWFkeSB2b3RlZAkA/AcEBQR0aGlzAgpjYW5jZWxWb3RlBQNuaWwFA25pbAUQaXNOZXdWb3RlU2ltaWxhcgMJAAECBQckbWF0Y2gwAgRVbml0BAF1BQckbWF0Y2gwBQF1CQACAQILTWF0Y2ggZXJyb3IDCQAAAgUEdm90ZQUEdm90ZQQMdm90aW5nUmVzdWx0CQC1CQIJARFAZXh0ck5hdGl2ZSgxMDU4KQEFD2tleVZvdGluZ1Jlc3VsdAUJc2VwYXJhdG9yBBB2b3Rlc0ZvckluY3JlYXNlCQCRAwIFDHZvdGluZ1Jlc3VsdAABBA92b3Rlc0ZvckN1cnJlbnQJAJEDAgUMdm90aW5nUmVzdWx0AAIEEHZvdGVzRm9yRGVjcmVhc2UJAJEDAgUMdm90aW5nUmVzdWx0AAMEG25ld1Bvc2l0aXZlQW5kTmVnYXRpdmVWb3RlcwMJAAACBQdpbkZhdm9yAAEEEG5ld1Bvc2l0aXZlVm90ZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEFEHZvdGVzRm9ySW5jcmVhc2UJAQVhc0ludAEFCWd3eEFtb3VudAkAzAgCCQCkAwEFEG5ld1Bvc2l0aXZlVm90ZXMJAMwIAgUPdm90ZXNGb3JDdXJyZW50CQDMCAIFEHZvdGVzRm9yRGVjcmVhc2UFA25pbAMJAAACBQdpbkZhdm9yAP///////////wEEEG5ld05lZ2F0aXZlVm90ZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD3ZvdGVzRm9yQ3VycmVudAkBBWFzSW50AQUJZ3d4QW1vdW50CQDMCAIFEHZvdGVzRm9ySW5jcmVhc2UJAMwIAgUPdm90ZXNGb3JDdXJyZW50CQDMCAIJAKQDAQUQbmV3TmVnYXRpdmVWb3RlcwUDbmlsBA9uZXdDdXJyZW50Vm90ZXMJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD3ZvdGVzRm9yQ3VycmVudAkBBWFzSW50AQUJZ3d4QW1vdW50CQDMCAIFEHZvdGVzRm9ySW5jcmVhc2UJAMwIAgkApAMBBQ9uZXdDdXJyZW50Vm90ZXMJAMwIAgUQdm90ZXNGb3JEZWNyZWFzZQUDbmlsBAd2b3RlS2V5CQEHa2V5Vm90ZQIJAKUIAQgFAWkGY2FsbGVyBQtzdGFydEhlaWdodAQJdm90ZVZhbHVlCQEMa2V5Vm90ZVZhbHVlAgkApAMBCQEFYXNJbnQBBQlnd3hBbW91bnQFB2luRmF2b3IJAJQKAgkAzAgCCQELU3RyaW5nRW50cnkCBQ9rZXlWb3RpbmdSZXN1bHQJAQp0b3RhbFZvdGVzAwkAkQMCBRtuZXdQb3NpdGl2ZUFuZE5lZ2F0aXZlVm90ZXMAAAkAkQMCBRtuZXdQb3NpdGl2ZUFuZE5lZ2F0aXZlVm90ZXMAAQkAkQMCBRtuZXdQb3NpdGl2ZUFuZE5lZ2F0aXZlVm90ZXMAAgkAzAgCCQELU3RyaW5nRW50cnkCBQd2b3RlS2V5BQl2b3RlVmFsdWUFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjYW5jZWxWb3RlAAQLc3RhcnRIZWlnaHQJARFAZXh0ck5hdGl2ZSgxMDU1KQEFDmtleVN0YXJ0SGVpZ2h0BBJ2b3RpbmdGaW5pc2hIZWlnaHQJAGQCBQtzdGFydEhlaWdodAkBEUBleHRyTmF0aXZlKDEwNTUpAQUOa2V5RXBvY2hMZW5ndGgEC3VzZXJBZGRyZXNzAwkAAAIIBQFpBmNhbGxlcgUEdGhpcwkApQgBCAUBaQxvcmlnaW5DYWxsZXIJAKUIAQgFAWkGY2FsbGVyBAZjaGVja3MJAMwIAgMJAGYCBRJ2b3RpbmdGaW5pc2hIZWlnaHQFBmhlaWdodAYJAQh0aHJvd0VycgECF3RvbyBsYXRlIHRvIGNhbmNlbCB2b3RlCQDMCAIDCQEJaXNEZWZpbmVkAQkAoggBBQ9rZXlWb3RpbmdSZXN1bHQGCQEIdGhyb3dFcnIBAgdubyB2b3RlCQDMCAIDCQEJaXNEZWZpbmVkAQkAoggBCQEHa2V5Vm90ZQIFC3VzZXJBZGRyZXNzBQtzdGFydEhlaWdodAYJAQh0aHJvd0VycgECDG5vIHVzZXIgdm90ZQUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzBAR2b3RlCQC1CQIJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAQdrZXlWb3RlAgULdXNlckFkZHJlc3MFC3N0YXJ0SGVpZ2h0BQlzZXBhcmF0b3IECXZvdGVWYWx1ZQkAkQMCBQR2b3RlAAEECHZvdGVUeXBlCQCRAwIFBHZvdGUAAgQMdm90aW5nUmVzdWx0CQC1CQIJARFAZXh0ck5hdGl2ZSgxMDU4KQEFD2tleVZvdGluZ1Jlc3VsdAUJc2VwYXJhdG9yBBB2b3Rlc0ZvckluY3JlYXNlCQCRAwIFDHZvdGluZ1Jlc3VsdAABBA92b3Rlc0ZvckN1cnJlbnQJAJEDAgUMdm90aW5nUmVzdWx0AAIEEHZvdGVzRm9yRGVjcmVhc2UJAJEDAgUMdm90aW5nUmVzdWx0AAMEB2FjdGlvbnMDCQAAAgUIdm90ZVR5cGUCCGluY3JlYXNlBBBuZXdJbmNyZWFzZVZvdGVzCQBlAgkBDXBhcnNlSW50VmFsdWUBBRB2b3Rlc0ZvckluY3JlYXNlCQENcGFyc2VJbnRWYWx1ZQEFCXZvdGVWYWx1ZQkAzAgCCQELU3RyaW5nRW50cnkCBQ9rZXlWb3RpbmdSZXN1bHQJAQp0b3RhbFZvdGVzAwkApAMBBRBuZXdJbmNyZWFzZVZvdGVzBQ92b3Rlc0ZvckN1cnJlbnQFEHZvdGVzRm9yRGVjcmVhc2UFA25pbAMJAAACBQh2b3RlVHlwZQIIZGVjcmVhc2UEEG5ld0RlY3JlYXNlVm90ZXMJAGUCCQENcGFyc2VJbnRWYWx1ZQEFEHZvdGVzRm9yRGVjcmVhc2UJAQ1wYXJzZUludFZhbHVlAQUJdm90ZVZhbHVlCQDMCAIJAQtTdHJpbmdFbnRyeQIFD2tleVZvdGluZ1Jlc3VsdAkBCnRvdGFsVm90ZXMDBRB2b3Rlc0ZvckluY3JlYXNlBQ92b3Rlc0ZvckN1cnJlbnQJAKQDAQUQbmV3RGVjcmVhc2VWb3RlcwUDbmlsBA9uZXdDdXJyZW50Vm90ZXMJAGUCCQENcGFyc2VJbnRWYWx1ZQEFD3ZvdGVzRm9yQ3VycmVudAkBDXBhcnNlSW50VmFsdWUBBQl2b3RlVmFsdWUJAMwIAgkBC1N0cmluZ0VudHJ5AgUPa2V5Vm90aW5nUmVzdWx0CQEKdG90YWxWb3RlcwMFEHZvdGVzRm9ySW5jcmVhc2UJAKQDAQUPbmV3Q3VycmVudFZvdGVzBRB2b3Rlc0ZvckRlY3JlYXNlBQNuaWwEDmRlZmF1bHRBY3Rpb25zCQDMCAIJAQtEZWxldGVFbnRyeQEJAQdrZXlWb3RlAgULdXNlckFkZHJlc3MFC3N0YXJ0SGVpZ2h0BQNuaWwJAM4IAgUHYWN0aW9ucwUOZGVmYXVsdEFjdGlvbnMJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEMc2V0VGhyZXNob2xkAQxuZXdUaHJlc2hvbGQEBmNoZWNrcwkAzAgCCQELbXVzdE1hbmFnZXIBBQFpCQDMCAIDCQBmAgUMbmV3VGhyZXNob2xkAAAGCQEIdGhyb3dFcnIBAhFpbnZhbGlkIHRocmVzaG9sZAUDbmlsAwkAAAIFBmNoZWNrcwUGY2hlY2tzCQCUCgIJAMwIAgkBDEludGVnZXJFbnRyeQIFDGtleVRocmVzaG9sZAUMbmV3VGhyZXNob2xkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEIZmluYWxpemUABBJ2b3RpbmdGaW5pc2hIZWlnaHQJAGQCCQERQGV4dHJOYXRpdmUoMTA1NSkBBQ5rZXlTdGFydEhlaWdodAkBBXZhbHVlAQkAnwgBBQ5rZXlFcG9jaExlbmd0aAQGY2hlY2tzCQDMCAIDCQBnAgUGaGVpZ2h0BRJ2b3RpbmdGaW5pc2hIZWlnaHQGCQEIdGhyb3dFcnIBAiJpbnN1ZmZpY2llbnQgaGVpZ2h0IGZvciBjb21wbGV0aW9uBQNuaWwDCQAAAgUGY2hlY2tzBQZjaGVja3MEDHZvdGluZ1Jlc3VsdAkAtQkCCQEFdmFsdWUBCQCiCAEFD2tleVZvdGluZ1Jlc3VsdAUJc2VwYXJhdG9yBBB2b3Rlc0ZvckluY3JlYXNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMdm90aW5nUmVzdWx0AAEED3ZvdGVzRm9yQ3VycmVudAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFDHZvdGluZ1Jlc3VsdAACBBB2b3Rlc0ZvckRlY3JlYXNlCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUMdm90aW5nUmVzdWx0AAMECGFsbFZvdGVzCQBkAgkAZAIFEHZvdGVzRm9ySW5jcmVhc2UFD3ZvdGVzRm9yQ3VycmVudAUQdm90ZXNGb3JEZWNyZWFzZQQJdGhyZXNob2xkCQEMZ2V0SW50T3JGYWlsAQUMa2V5VGhyZXNob2xkBAskdDA5NDYyOTU0MgkBHGdldFJhdGVDaGFuZ2VBbW91bnRzSU5URVJOQUwABA1pbmNyZWFzZWRSYXRlCAULJHQwOTQ2Mjk1NDICXzEEC2N1cnJlbnRSYXRlCAULJHQwOTQ2Mjk1NDICXzIEDWRlY3JlYXNlZFJhdGUIBQskdDA5NDYyOTU0MgJfMwQJdm90ZXNMaXN0CQDMCAIFEHZvdGVzRm9ySW5jcmVhc2UJAMwIAgUPdm90ZXNGb3JDdXJyZW50CQDMCAIFEHZvdGVzRm9yRGVjcmVhc2UFA25pbAQHbmV3UmF0ZQMDCQBmAgUJdGhyZXNob2xkBQhhbGxWb3RlcwYJAAACBQ92b3Rlc0ZvckN1cnJlbnQJAJYDAQUJdm90ZXNMaXN0BQR1bml0AwkAAAIFEHZvdGVzRm9ySW5jcmVhc2UJAJYDAQUJdm90ZXNMaXN0BQ1pbmNyZWFzZWRSYXRlBQ1kZWNyZWFzZWRSYXRlBBFjaGFuZ2VSYXRlSW52b2tlcwQHJG1hdGNoMAUHbmV3UmF0ZQMJAAECBQckbWF0Y2gwAgNJbnQEAXIFByRtYXRjaDAEEmVtaXNzaW9uQ2hhbmdlUmF0ZQkA/AcEBRBlbWlzc2lvbkNvbnRyYWN0AhJjaGFuZ2VSYXRlUGVyQmxvY2sJAMwIAgUBcgUDbmlsBQNuaWwDCQAAAgUSZW1pc3Npb25DaGFuZ2VSYXRlBRJlbWlzc2lvbkNoYW5nZVJhdGUEFWJvb3N0aW5FbWlzc2lvblVwZGF0ZQkA/AcEBRBib29zdGluZ0NvbnRyYWN0AhVvbkJvb3N0RW1pc3Npb25VcGRhdGUFA25pbAUDbmlsAwkAAAIFFWJvb3N0aW5FbWlzc2lvblVwZGF0ZQUVYm9vc3RpbkVtaXNzaW9uVXBkYXRlCQCUCgIFEmVtaXNzaW9uQ2hhbmdlUmF0ZQUVYm9vc3RpbkVtaXNzaW9uVXBkYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuBQR1bml0AwkAAAIFEWNoYW5nZVJhdGVJbnZva2VzBRFjaGFuZ2VSYXRlSW52b2tlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgUOa2V5U3RhcnRIZWlnaHQFBmhlaWdodAkAzAgCCQELU3RyaW5nRW50cnkCBQ9rZXlWb3RpbmdSZXN1bHQJAQp0b3RhbFZvdGVzAwIBMAIBMAIBMAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5A5WWlA==", "height": 2584839, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: AKjNfCdj57XgrEKNhJbUNidDzfpdt8edMHyLi8vV1yHZ Next: AvqQYwpe9be1vJFq8QapTrJUDMAwvGGdKbBT8nCYTamX Diff:
OldNewDifferences
327327 if ($isInstanceOf(F, "Int"))
328328 then {
329329 let aH = F
330- invoke(B, "changeRatePerBlock", [aH], nil)
330+ let aI = invoke(B, "changeRatePerBlock", [aH], nil)
331+ if ((aI == aI))
332+ then {
333+ let aJ = invoke(A, "onBoostEmissionUpdate", nil, nil)
334+ if ((aJ == aJ))
335+ then $Tuple2(aI, aJ)
336+ else throw("Strict value is not equal to itself.")
337+ }
338+ else throw("Strict value is not equal to itself.")
331339 }
332340 else unit
333341 }
339347 }
340348
341349
342-@Verifier(aI)
343-func aJ () = {
344- let aK = {
350+@Verifier(aK)
351+func aL () = {
352+ let aM = {
345353 let F = G()
346354 if ($isInstanceOf(F, "ByteVector"))
347355 then {
349357 K
350358 }
351359 else if ($isInstanceOf(F, "Unit"))
352- then aI.senderPublicKey
360+ then aK.senderPublicKey
353361 else throw("Match error")
354362 }
355- sigVerify(aI.bodyBytes, aI.proofs[0], aK)
363+ sigVerify(aK.bodyBytes, aK.proofs[0], aM)
356364 }
357365
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "__"
55
66 let b = "voting_emission_rate.ride"
77
88 let c = makeString(["%s", "epochLength"], a)
99
1010 let d = makeString(["%s", "emissionContract"], a)
1111
1212 let e = makeString(["%s", "boostingContract"], a)
1313
1414 let f = makeString(["%s", "votingThreshold"], a)
1515
1616 let g = makeString(["%s%s", "ratePerBlock", "current"], a)
1717
1818 let h = makeString(["%s%s", "ratePerBlockMax", "current"], a)
1919
2020 let i = makeString(["%s", "rateChangeStep"], a)
2121
2222 let j = makeString(["%s", "startHeight"], a)
2323
2424 let k = makeString(["%s", "votingResult"], a)
2525
2626 func l (m) = throw(((b + ": ") + m))
2727
2828
2929 func n (o) = valueOrErrorMessage(getString(this, o), (o + " is not defined"))
3030
3131
3232 func p (o) = valueOrErrorMessage(getInteger(this, o), (o + " is not defined"))
3333
3434
3535 func q (r,s,t) = makeString(["%d%d%d", r, s, t], a)
3636
3737
3838 func u (v,w) = makeString(["%s%s%d", "vote", v, toString(w)], a)
3939
4040
4141 func x (y,z) = {
4242 let o = if ((z == 1))
4343 then makeString(["%d%s", y, "increase"], a)
4444 else if ((z == -1))
4545 then makeString(["%d%s", y, "decrease"], a)
4646 else makeString(["%d%s", y, "current"], a)
4747 o
4848 }
4949
5050
5151 let A = addressFromStringValue(n(e))
5252
5353 let B = addressFromStringValue(n(d))
5454
5555 func C () = "%s__managerPublicKey"
5656
5757
5858 func D () = "%s__managerVaultAddress"
5959
6060
6161 func E () = {
6262 let F = getString(D())
6363 if ($isInstanceOf(F, "String"))
6464 then {
6565 let m = F
6666 addressFromStringValue(m)
6767 }
6868 else this
6969 }
7070
7171
7272 func G () = {
7373 let H = E()
7474 let F = getString(H, C())
7575 if ($isInstanceOf(F, "String"))
7676 then {
7777 let m = F
7878 fromBase58String(m)
7979 }
8080 else if ($isInstanceOf(F, "Unit"))
8181 then unit
8282 else throw("Match error")
8383 }
8484
8585
8686 func I (J) = {
8787 let F = G()
8888 if ($isInstanceOf(F, "ByteVector"))
8989 then {
9090 let K = F
9191 (J.callerPublicKey == K)
9292 }
9393 else if ($isInstanceOf(F, "Unit"))
9494 then (J.caller == this)
9595 else throw("Match error")
9696 }
9797
9898
9999 func L (J) = if (I(J))
100100 then true
101101 else l("permission denied")
102102
103103
104104 func M (N) = {
105105 let F = N
106106 if ($isInstanceOf(F, "Int"))
107107 then {
108108 let O = F
109109 O
110110 }
111111 else l("failed to cast into Integer")
112112 }
113113
114114
115115 func P (Q,R,S) = {
116116 let T = fraction(100, Q, 120)
117117 let U = min([fraction((100 + S), R, 100), T])
118118 let V = max([fraction((100 - S), R, 100), 0])
119119 $Tuple3(U, R, V)
120120 }
121121
122122
123123 func W () = {
124124 let Q = getIntegerValue(B, h)
125125 let R = getIntegerValue(B, g)
126126 let X = getIntegerValue(this, i)
127127 P(Q, R, X)
128128 }
129129
130130
131131 @Callable(J)
132132 func constructor (Y,Z,aa,ab,X) = {
133133 let ac = [L(J), if (isDefined(addressFromString(Y)))
134134 then true
135135 else l("Invalid boosting contract address"), if (isDefined(addressFromString(Z)))
136136 then true
137137 else l("Invalid emission contract address"), if ((aa > 0))
138138 then true
139139 else l("Invalid voting duration"), if ((ab > 0))
140140 then true
141141 else l("invalid threshold"), if ((X > 0))
142142 then true
143143 else l("invalid rateChangeStep")]
144144 if ((ac == ac))
145145 then $Tuple2([StringEntry(e, Y), StringEntry(d, Z), IntegerEntry(c, aa), IntegerEntry(f, ab), IntegerEntry(i, X), IntegerEntry(j, height), StringEntry(k, q("0", "0", "0"))], unit)
146146 else throw("Strict value is not equal to itself.")
147147 }
148148
149149
150150
151151 @Callable(J)
152152 func getRateChangeAmountsREADONLY () = $Tuple2(nil, W())
153153
154154
155155
156156 @Callable(J)
157157 func vote (ad) = {
158158 let w = getIntegerValue(j)
159159 let ae = (w + getIntegerValue(c))
160160 let ac = [if ((ae > height))
161161 then true
162162 else l("too late to vote"), if (containsElement([1, 0, -1], ad))
163163 then true
164164 else l("not valid argument")]
165165 if ((ac == ac))
166166 then {
167167 let y = invoke(A, "getUserGwxAmountAtHeightREADONLY", [toString(J.caller), ae], nil)
168168 let af = if ((M(y) > 0))
169169 then true
170170 else l("you don't have gwx")
171171 if ((af == af))
172172 then {
173173 let z = {
174174 let F = getString(u(toString(J.caller), w))
175175 if ($isInstanceOf(F, "String"))
176176 then {
177177 let m = F
178178 let z = split(m, a)
179179 let ag = z[1]
180180 let ah = z[2]
181181 let ai = if (if (if ((ah == "increase"))
182182 then (ad == 1)
183183 else false)
184184 then true
185185 else if ((ah == "decrease"))
186186 then (ad == -1)
187187 else false)
188188 then true
189189 else if ((ah == "current"))
190190 then (ad == 0)
191191 else false
192192 let aj = if (ai)
193193 then (M(y) == parseIntValue(ag))
194194 else false
195195 let ak = if (if (ai)
196196 then aj
197197 else false)
198198 then l("you already voted")
199199 else invoke(this, "cancelVote", nil, nil)
200200 ak
201201 }
202202 else if ($isInstanceOf(F, "Unit"))
203203 then {
204204 let al = F
205205 al
206206 }
207207 else throw("Match error")
208208 }
209209 if ((z == z))
210210 then {
211211 let am = split(getStringValue(k), a)
212212 let an = am[1]
213213 let ao = am[2]
214214 let ap = am[3]
215215 let aq = if ((ad == 1))
216216 then {
217217 let ar = (parseIntValue(an) + M(y))
218218 [toString(ar), ao, ap]
219219 }
220220 else if ((ad == -1))
221221 then {
222222 let as = (parseIntValue(ao) + M(y))
223223 [an, ao, toString(as)]
224224 }
225225 else {
226226 let at = (parseIntValue(ao) + M(y))
227227 [an, toString(at), ap]
228228 }
229229 let au = u(toString(J.caller), w)
230230 let ag = x(toString(M(y)), ad)
231231 $Tuple2([StringEntry(k, q(aq[0], aq[1], aq[2])), StringEntry(au, ag)], unit)
232232 }
233233 else throw("Strict value is not equal to itself.")
234234 }
235235 else throw("Strict value is not equal to itself.")
236236 }
237237 else throw("Strict value is not equal to itself.")
238238 }
239239
240240
241241
242242 @Callable(J)
243243 func cancelVote () = {
244244 let w = getIntegerValue(j)
245245 let ae = (w + getIntegerValue(c))
246246 let av = if ((J.caller == this))
247247 then toString(J.originCaller)
248248 else toString(J.caller)
249249 let ac = [if ((ae > height))
250250 then true
251251 else l("too late to cancel vote"), if (isDefined(getString(k)))
252252 then true
253253 else l("no vote"), if (isDefined(getString(u(av, w))))
254254 then true
255255 else l("no user vote")]
256256 if ((ac == ac))
257257 then {
258258 let z = split(getStringValue(u(av, w)), a)
259259 let ag = z[1]
260260 let ah = z[2]
261261 let am = split(getStringValue(k), a)
262262 let an = am[1]
263263 let ao = am[2]
264264 let ap = am[3]
265265 let aw = if ((ah == "increase"))
266266 then {
267267 let ax = (parseIntValue(an) - parseIntValue(ag))
268268 [StringEntry(k, q(toString(ax), ao, ap))]
269269 }
270270 else if ((ah == "decrease"))
271271 then {
272272 let ay = (parseIntValue(ap) - parseIntValue(ag))
273273 [StringEntry(k, q(an, ao, toString(ay)))]
274274 }
275275 else {
276276 let at = (parseIntValue(ao) - parseIntValue(ag))
277277 [StringEntry(k, q(an, toString(at), ap))]
278278 }
279279 let az = [DeleteEntry(u(av, w))]
280280 (aw ++ az)
281281 }
282282 else throw("Strict value is not equal to itself.")
283283 }
284284
285285
286286
287287 @Callable(J)
288288 func setThreshold (aA) = {
289289 let ac = [L(J), if ((aA > 0))
290290 then true
291291 else l("invalid threshold")]
292292 if ((ac == ac))
293293 then $Tuple2([IntegerEntry(f, aA)], unit)
294294 else throw("Strict value is not equal to itself.")
295295 }
296296
297297
298298
299299 @Callable(J)
300300 func finalize () = {
301301 let ae = (getIntegerValue(j) + value(getInteger(c)))
302302 let ac = [if ((height >= ae))
303303 then true
304304 else l("insufficient height for completion")]
305305 if ((ac == ac))
306306 then {
307307 let am = split(value(getString(k)), a)
308308 let an = parseIntValue(am[1])
309309 let ao = parseIntValue(am[2])
310310 let ap = parseIntValue(am[3])
311311 let aB = ((an + ao) + ap)
312312 let ab = p(f)
313313 let aC = W()
314314 let U = aC._1
315315 let aD = aC._2
316316 let V = aC._3
317317 let aE = [an, ao, ap]
318318 let aF = if (if ((ab > aB))
319319 then true
320320 else (ao == max(aE)))
321321 then unit
322322 else if ((an == max(aE)))
323323 then U
324324 else V
325325 let aG = {
326326 let F = aF
327327 if ($isInstanceOf(F, "Int"))
328328 then {
329329 let aH = F
330- invoke(B, "changeRatePerBlock", [aH], nil)
330+ let aI = invoke(B, "changeRatePerBlock", [aH], nil)
331+ if ((aI == aI))
332+ then {
333+ let aJ = invoke(A, "onBoostEmissionUpdate", nil, nil)
334+ if ((aJ == aJ))
335+ then $Tuple2(aI, aJ)
336+ else throw("Strict value is not equal to itself.")
337+ }
338+ else throw("Strict value is not equal to itself.")
331339 }
332340 else unit
333341 }
334342 if ((aG == aG))
335343 then [IntegerEntry(j, height), StringEntry(k, q("0", "0", "0"))]
336344 else throw("Strict value is not equal to itself.")
337345 }
338346 else throw("Strict value is not equal to itself.")
339347 }
340348
341349
342-@Verifier(aI)
343-func aJ () = {
344- let aK = {
350+@Verifier(aK)
351+func aL () = {
352+ let aM = {
345353 let F = G()
346354 if ($isInstanceOf(F, "ByteVector"))
347355 then {
348356 let K = F
349357 K
350358 }
351359 else if ($isInstanceOf(F, "Unit"))
352- then aI.senderPublicKey
360+ then aK.senderPublicKey
353361 else throw("Match error")
354362 }
355- sigVerify(aI.bodyBytes, aI.proofs[0], aK)
363+ sigVerify(aK.bodyBytes, aK.proofs[0], aM)
356364 }
357365

github/deemru/w8io/169f3d6 
50.29 ms