tx · 2X75fJjWWvjP73CWsKSA7WinFVexpqgyGvNyG8TLuWxv

3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh:  -0.01400000 Waves

2022.07.27 16:36 [2158285] smart account 3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh > SELF 0.00000000 Waves

{ "type": 13, "id": "2X75fJjWWvjP73CWsKSA7WinFVexpqgyGvNyG8TLuWxv", "fee": 1400000, "feeAssetId": null, "timestamp": 1658929025170, "version": 1, "sender": "3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh", "senderPublicKey": "33fpjdpM9FMu87RZKePniPardKqQXM96sm7VhAk3JEVQ", "proofs": [ "5QCcnweMZPuGpENHJAzBGD8297bmfpCpmze1k4jH2J3v4omXWRUanQ4c3h3wZVwhM8yWRkFBkYQFjwazqvYV1kRh" ], "script": "base64:BgIyCAISBQoDCAgIEgYKBAgICAISBQoDCAgEEgYKBAgIAQESAwoBCBIECgIICBIDCgEIEgAUAAlzZXBhcmF0b3ICAl9fABNrZXlCYWNrZW5kUHVibGljS2V5CQC5CQIJAMwIAgICJXMJAMwIAgIQYmFja2VuZFB1YmxpY0tleQUDbmlsBQlzZXBhcmF0b3IBG2tleUV4aXN0c1JlZmVycmVyVG9SZWZlcnJhbAMLcHJvZ3JhbU5hbWUPcmVmZXJyZXJBZGRyZXNzD3JlZmVycmFsQWRkcmVzcwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICGGV4aXN0c1JlZmVycmVyVG9SZWZlcnJhbAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJlckFkZHJlc3MJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEKa2V5Q2xhaW1lZAILcHJvZ3JhbU5hbWUOY2xhaW1lckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAgdjbGFpbWVkCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFDmNsYWltZXJBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEMa2V5VW5jbGFpbWVkAgtwcm9ncmFtTmFtZQ5jbGFpbWVyQWRkcmVzcwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICCXVuY2xhaW1lZAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ5jbGFpbWVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBC2tleVJlZmVycmVyAgtwcm9ncmFtTmFtZQ9yZWZlcnJhbEFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIIcmVmZXJyZXIJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEOa2V5UHJvZ3JhbU5hbWUBC3Byb2dyYW1OYW1lCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgtwcm9ncmFtTmFtZQkAzAgCBQtwcm9ncmFtTmFtZQUDbmlsBQlzZXBhcmF0b3IBFWtleVRvdGFsUmVmZXJyYWxDb3VudAILcHJvZ3JhbU5hbWUPcmVmZXJyZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICEnRvdGFsUmVmZXJyYWxDb3VudAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARZrZXlBY3RpdmVSZWZlcnJhbENvdW50Agtwcm9ncmFtTmFtZQ9yZWZlcnJlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgITYWN0aXZlUmVmZXJyYWxDb3VudAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARNrZXlJc1JlZmVycmFsQWN0aXZlAgtwcm9ncmFtTmFtZQ9yZWZlcnJhbEFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIOYWN0aXZlUmVmZXJyYWwJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEPa2V5Q2xhaW1lZFRvdGFsAQtwcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIMY2xhaW1lZFRvdGFsCQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgEQa2V5UmV3YXJkQXNzZXRJZAELcHJvZ3JhbU5hbWUJALkJAgkAzAgCAgQlcyVzCQDMCAICDXJld2FyZEFzc2V0SWQJAMwIAgULcHJvZ3JhbU5hbWUFA25pbAUJc2VwYXJhdG9yARNrZXlUcmVhc3VyeUNvbnRyYWN0AQtwcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdHJlYXN1cnlDb250cmFjdAkAzAgCBQtwcm9ncmFtTmFtZQUDbmlsBQlzZXBhcmF0b3IBGWtleUltcGxlbWVudGF0aW9uQ29udHJhY3QBC3Byb2dyYW1OYW1lCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0CQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEIdGhyb3dFcnIBA21zZwkAAgEJALkJAgkAzAgCAg5yZWZlcnJhbC5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQttdXN0TWFuYWdlcgEBaQQCcGQJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvcggBaQEVY3JlYXRlUmVmZXJyYWxQcm9ncmFtAwtwcm9ncmFtTmFtZRB0cmVhc3VyeUNvbnRyYWN0FmltcGxlbWVudGF0aW9uQ29udHJhY3QEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQQY2hlY2tQcm9ncmFtTmFtZQMJAAACCQCgCAEJAQ5rZXlQcm9ncmFtTmFtZQEFC3Byb2dyYW1OYW1lBQR1bml0BgkBCHRocm93RXJyAQIbcHJvZ3JhbSBuYW1lIGFscmVhZHkgZXhpc3RzAwkAAAIFEGNoZWNrUHJvZ3JhbU5hbWUFEGNoZWNrUHJvZ3JhbU5hbWUEEnByb2dyYW1OYW1lSXNWYWxpZAMJAQEhAQkBCGNvbnRhaW5zAgULcHJvZ3JhbU5hbWUFCXNlcGFyYXRvcgkBASEBCQEIY29udGFpbnMCBQtwcm9ncmFtTmFtZQIBIAcEEmNoZWNrUHJvZ3JhbUV4aXN0cwMFEnByb2dyYW1OYW1lSXNWYWxpZAYJAQh0aHJvd0VycgECFGludmFsaWQgcHJvZ3JhbSBuYW1lAwkAAAIFEmNoZWNrUHJvZ3JhbUV4aXN0cwUSY2hlY2tQcm9ncmFtRXhpc3RzCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ5rZXlQcm9ncmFtTmFtZQEFC3Byb2dyYW1OYW1lBgkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5VHJlYXN1cnlDb250cmFjdAEFC3Byb2dyYW1OYW1lBRB0cmVhc3VyeUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlJbXBsZW1lbnRhdGlvbkNvbnRyYWN0AQULcHJvZ3JhbU5hbWUFFmltcGxlbWVudGF0aW9uQ29udHJhY3QFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjcmVhdGVQYWlyBAtwcm9ncmFtTmFtZQ9yZWZlcnJlckFkZHJlc3MPcmVmZXJyYWxBZGRyZXNzCXNpZ25hdHVyZQQSY2hlY2tQcm9ncmFtRXhpc3RzAwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEOa2V5UHJvZ3JhbU5hbWUBBQtwcm9ncmFtTmFtZQcGCQEIdGhyb3dFcnIBAhZwcm9ncmFtIGRvZXMgbm90IGV4aXN0AwkAAAIFEmNoZWNrUHJvZ3JhbUV4aXN0cwUSY2hlY2tQcm9ncmFtRXhpc3RzBCBwYWlyUmVmZXJyZXJUb1JlZmVycmFsRXhpc3RDaGVjawMJAAACCQCiCAEJARtrZXlFeGlzdHNSZWZlcnJlclRvUmVmZXJyYWwDBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBQ9yZWZlcnJhbEFkZHJlc3MFBHVuaXQGCQEIdGhyb3dFcnIBAhNwYWlyIGFscmVhZHkgZXhpc3RzAwkAAAIFIHBhaXJSZWZlcnJlclRvUmVmZXJyYWxFeGlzdENoZWNrBSBwYWlyUmVmZXJyZXJUb1JlZmVycmFsRXhpc3RDaGVjawQEcGFpcgkAmwMBCQC5CQIJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyZXJBZGRyZXNzCQDMCAIFD3JlZmVycmFsQWRkcmVzcwUDbmlsAgE6BBBiYWNrZW5kUHVibGljS2V5CQDZBAEJAQV2YWx1ZQEJAKIIAQUTa2V5QmFja2VuZFB1YmxpY0tleQQRdmFsaWRhdGVTaWduYXR1cmUDCQD0AwMFBHBhaXIFCXNpZ25hdHVyZQUQYmFja2VuZFB1YmxpY0tleQYJAQh0aHJvd0VycgECDWJhZCBzaWduYXR1cmUDCQAAAgURdmFsaWRhdGVTaWduYXR1cmUFEXZhbGlkYXRlU2lnbmF0dXJlBBJ0b3RhbFJlZmVycmFsQ291bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWtleVRvdGFsUmVmZXJyYWxDb3VudAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MAAAQVbmV3VG90YWxSZWZlcnJhbENvdW50CQBkAgUSdG90YWxSZWZlcnJhbENvdW50AAEJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBG2tleUV4aXN0c1JlZmVycmVyVG9SZWZlcnJhbAMFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MFD3JlZmVycmFsQWRkcmVzcwYJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlUb3RhbFJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBRVuZXdUb3RhbFJlZmVycmFsQ291bnQFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpARZ1cGRhdGVSZWZlcnJhbEFjdGl2aXR5Awtwcm9ncmFtTmFtZQ9yZWZlcnJhbEFkZHJlc3MIaXNBY3RpdmUEFmltcGxlbWVudGF0aW9uQ29udHJhY3QJAQV2YWx1ZQEJAKIIAQkBGWtleUltcGxlbWVudGF0aW9uQ29udHJhY3QBBQtwcm9ncmFtTmFtZQQQaXNSZWZlcnJhbEFjdGl2ZQkBAiE9AgkAoAgBCQETa2V5SXNSZWZlcnJhbEFjdGl2ZQIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MFBHVuaXQED3JlZmVycmVyQWRkcmVzcwkBBXZhbHVlAQkAoggBCQELa2V5UmVmZXJyZXICBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBAtjaGVja0NhbGxlcgMJAAACCQClCAEIBQFpBmNhbGxlcgUWaW1wbGVtZW50YXRpb25Db250cmFjdAYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQGdXBkYXRlAwkAAAIFEGlzUmVmZXJyYWxBY3RpdmUFCGlzQWN0aXZlCQCUCgIFA25pbAUEdW5pdAQGdXBkYXRlAwkAAAIFCGlzQWN0aXZlBgQWbmV3QWN0aXZlUmVmZXJyYWxDb3VudAkAZAIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzAAAAAQkAlAoCCQDMCAIJAQxCb29sZWFuRW50cnkCCQETa2V5SXNSZWZlcnJhbEFjdGl2ZQIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MGCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEWa2V5QWN0aXZlUmVmZXJyYWxDb3VudAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MFFm5ld0FjdGl2ZVJlZmVycmFsQ291bnQFA25pbAUEdW5pdAQWbmV3QWN0aXZlUmVmZXJyYWxDb3VudAkAZQIJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzAAAAAQkAlAoCCQDMCAIJAQtEZWxldGVFbnRyeQEJARNrZXlJc1JlZmVycmFsQWN0aXZlAgULcHJvZ3JhbU5hbWUFD3JlZmVycmFsQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBRZuZXdBY3RpdmVSZWZlcnJhbENvdW50BQNuaWwFBHVuaXQFBnVwZGF0ZQUGdXBkYXRlCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDGluY1VuY2xhaW1lZAQLcHJvZ3JhbU5hbWUPcmVmZXJyYWxBZGRyZXNzDnJlZmVycmVyUmV3YXJkDnJlZmVycmFsUmV3YXJkBBZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0CQEFdmFsdWUBCQCiCAEJARlrZXlJbXBsZW1lbnRhdGlvbkNvbnRyYWN0AQULcHJvZ3JhbU5hbWUEC2NoZWNrQ2FsbGVyAwkAAAIJAKUIAQgFAWkGY2FsbGVyBRZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0BgkBCHRocm93RXJyAQIRcGVybWlzc2lvbiBkZW5pZWQDCQAAAgULY2hlY2tDYWxsZXIFC2NoZWNrQ2FsbGVyBA9yZWZlcnJlckFkZHJlc3MJAQV2YWx1ZQEJAKIIAQkBC2tleVJlZmVycmVyAgULcHJvZ3JhbU5hbWUFD3JlZmVycmFsQWRkcmVzcwQRcmVmZXJyZXJVbmNsYWltZWQJAQV2YWx1ZQEJAJ8IAQkBDGtleVVuY2xhaW1lZAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MEEXJlZmVycmFsVW5jbGFpbWVkCQEFdmFsdWUBCQCfCAEJAQxrZXlVbmNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBBRuZXdSZWZlcnJlclVuY2xhaW1lZAkAZAIFEXJlZmVycmVyVW5jbGFpbWVkBQ5yZWZlcnJlclJld2FyZAQUbmV3UmVmZXJyYWxVbmNsYWltZWQJAGQCBRFyZWZlcnJhbFVuY2xhaW1lZAUOcmVmZXJyYWxSZXdhcmQJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBRRuZXdSZWZlcnJlclVuY2xhaW1lZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVuY2xhaW1lZAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MFFG5ld1JlZmVycmFsVW5jbGFpbWVkBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEFY2xhaW0BC3Byb2dyYW1OYW1lBAxjbGFpbWVkVG90YWwJAQV2YWx1ZQEJAJ8IAQkBD2tleUNsYWltZWRUb3RhbAEFC3Byb2dyYW1OYW1lBA5jbGFpbWVyQ2xhaW1lZAkBBXZhbHVlAQkAnwgBCQEKa2V5Q2xhaW1lZAIFC3Byb2dyYW1OYW1lCQClCAEIBQFpBmNhbGxlcgQQY2xhaW1lclVuY2xhaW1lZAkBBXZhbHVlAQkAnwgBCQEMa2V5VW5jbGFpbWVkAgULcHJvZ3JhbU5hbWUJAKUIAQgFAWkGY2FsbGVyBBB0cmVhc3VyeUNvbnRyYWN0CQEFdmFsdWUBCQCmCAEJAQV2YWx1ZQEJAKIIAQkBE2tleVRyZWFzdXJ5Q29udHJhY3QBBQtwcm9ncmFtTmFtZQQNcmV3YXJkQXNzZXRJZAkA2QQBCQEFdmFsdWUBCQCiCAEJARBrZXlSZXdhcmRBc3NldElkAQULcHJvZ3JhbU5hbWUEDWNoZWNrQ2FuQ2xhaW0DCQBmAgUQY2xhaW1lclVuY2xhaW1lZAAABgkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQMJAAACBQ1jaGVja0NhbkNsYWltBQ1jaGVja0NhbkNsYWltBBFuZXdDbGFpbWVyQ2xhaW1lZAkAZAIFDmNsYWltZXJDbGFpbWVkBRBjbGFpbWVyVW5jbGFpbWVkBA9uZXdDbGFpbWVkVG90YWwJAGQCBQxjbGFpbWVkVG90YWwFEGNsYWltZXJVbmNsYWltZWQEDWJhbGFuY2VCZWZvcmUJAQV2YWx1ZQEJAPAHAgUEdGhpcwUNcmV3YXJkQXNzZXRJZAMJAAACBQ1iYWxhbmNlQmVmb3JlBQ1iYWxhbmNlQmVmb3JlBANyZXMJAPwHBAUQdHJlYXN1cnlDb250cmFjdAIWd2l0aGRyYXdSZWZlcnJhbFJld2FyZAkAzAgCBRBjbGFpbWVyVW5jbGFpbWVkBQNuaWwFA25pbAMJAAACBQNyZXMFA3JlcwQMYmFsYW5jZUFmdGVyCQEFdmFsdWUBCQDwBwIFBHRoaXMFDXJld2FyZEFzc2V0SWQDCQAAAgUMYmFsYW5jZUFmdGVyBQxiYWxhbmNlQWZ0ZXIEC2JhbGFuY2VEaWZmCQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlAwkAAAIFC2JhbGFuY2VEaWZmBQtiYWxhbmNlRGlmZgQMY2hlY2tCYWxhbmNlAwkAAAIFC2JhbGFuY2VEaWZmBRBjbGFpbWVyVW5jbGFpbWVkBgkBCHRocm93RXJyAQIpaW5zdWZmaWNpZW50IGJhbGFuY2Ugb24gcmVmZXJyYWwgY29udHJhY3QDCQAAAgUMY2hlY2tCYWxhbmNlBQxjaGVja0JhbGFuY2UJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUNsYWltZWQCBQtwcm9ncmFtTmFtZQkApQgBCAUBaQZjYWxsZXIFEW5ld0NsYWltZXJDbGFpbWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Q2xhaW1lZFRvdGFsAQULcHJvZ3JhbU5hbWUFD25ld0NsYWltZWRUb3RhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVuY2xhaW1lZAIFC3Byb2dyYW1OYW1lCQClCAEIBQFpBmNhbGxlcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUQY2xhaW1lclVuY2xhaW1lZAUNcmV3YXJkQXNzZXRJZAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNsYWltUkVBRE9OTFkCC3Byb2dyYW1OYW1lD3JlZmVycmFsQWRkcmVzcwQOY2xhaW1lckNsYWltZWQJAQV2YWx1ZQEJAJ8IAQkBCmtleUNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBBBjbGFpbWVyVW5jbGFpbWVkCQEFdmFsdWUBCQCfCAEJAQxrZXlVbmNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBBFuZXdDbGFpbWVyQ2xhaW1lZAkAZAIFDmNsYWltZXJDbGFpbWVkBRBjbGFpbWVyVW5jbGFpbWVkCQCUCgIFA25pbAURbmV3Q2xhaW1lckNsYWltZWQBaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQEIdGhyb3dFcnIBAhJubyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQEIdGhyb3dFcnIBAht5b3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V50ZrN6w==", "chainId": 84, "height": 2158285, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: Agy9bF4xqPBL3cMu2uDEkpo3LLg9xd5Lcda2KenXvhJk Next: 4FPZ3eT275eDr3LBWrwprJStuQMLjGjhnohVNgPQ8Jb6 Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "__"
55
6-let keyBackendPublicKey = makeString(["%s", "backendPulbicKey"], separator)
6+let keyBackendPublicKey = makeString(["%s", "backendPublicKey"], separator)
77
88 func keyExistsReferrerToReferral (programName,referrerAddress,referralAddress) = makeString(["%s%s%s%s", "existsReferrerToReferral", programName, referrerAddress, referralAddress], separator)
99
9292 let checkCaller = mustManager(i)
9393 if ((checkCaller == checkCaller))
9494 then {
95- let checkProgramName = if ((getBoolean(programName) == unit))
95+ let checkProgramName = if ((getBoolean(keyProgramName(programName)) == unit))
9696 then true
9797 else throwErr("program name already exists")
9898 if ((checkProgramName == checkProgramName))
99- then $Tuple2([BooleanEntry(keyProgramName(programName), true), StringEntry(keyTreasuryContract(programName), treasuryContract), StringEntry(keyImplementationContract(programName), implementationContract)], unit)
99+ then {
100+ let programNameIsValid = if (!(contains(programName, separator)))
101+ then !(contains(programName, " "))
102+ else false
103+ let checkProgramExists = if (programNameIsValid)
104+ then true
105+ else throwErr("invalid program name")
106+ if ((checkProgramExists == checkProgramExists))
107+ then $Tuple2([BooleanEntry(keyProgramName(programName), true), StringEntry(keyTreasuryContract(programName), treasuryContract), StringEntry(keyImplementationContract(programName), implementationContract)], unit)
108+ else throw("Strict value is not equal to itself.")
109+ }
100110 else throw("Strict value is not equal to itself.")
101111 }
102112 else throw("Strict value is not equal to itself.")
106116
107117 @Callable(i)
108118 func createPair (programName,referrerAddress,referralAddress,signature) = {
109- let pairReferrerToReferralExistCheck = if ((getString(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress)) == unit))
119+ let checkProgramExists = if (valueOrElse(getBoolean(keyProgramName(programName)), false))
110120 then true
111- else throwErr("pair already exists")
112- if ((pairReferrerToReferralExistCheck == pairReferrerToReferralExistCheck))
121+ else throwErr("program does not exist")
122+ if ((checkProgramExists == checkProgramExists))
113123 then {
114- let pair = toBytes(makeString([programName, referrerAddress, referralAddress], ":"))
115- let backendPublicKey = toBytes(value(getString(keyBackendPublicKey)))
116- let validateSignature = if (sigVerify(pair, signature, backendPublicKey))
124+ let pairReferrerToReferralExistCheck = if ((getString(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress)) == unit))
117125 then true
118- else throwErr("bad signature")
119- if ((validateSignature == validateSignature))
126+ else throwErr("pair already exists")
127+ if ((pairReferrerToReferralExistCheck == pairReferrerToReferralExistCheck))
120128 then {
121- let totalReferralCount = valueOrElse(getInteger(keyTotalReferralCount(programName, referrerAddress)), 0)
122- let newTotalReferralCount = (totalReferralCount + 1)
123- $Tuple2([BooleanEntry(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress), true), IntegerEntry(keyTotalReferralCount(programName, referrerAddress), newTotalReferralCount)], unit)
129+ let pair = toBytes(makeString([programName, referrerAddress, referralAddress], ":"))
130+ let backendPublicKey = fromBase58String(value(getString(keyBackendPublicKey)))
131+ let validateSignature = if (sigVerify(pair, signature, backendPublicKey))
132+ then true
133+ else throwErr("bad signature")
134+ if ((validateSignature == validateSignature))
135+ then {
136+ let totalReferralCount = valueOrElse(getInteger(keyTotalReferralCount(programName, referrerAddress)), 0)
137+ let newTotalReferralCount = (totalReferralCount + 1)
138+ $Tuple2([BooleanEntry(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress), true), IntegerEntry(keyTotalReferralCount(programName, referrerAddress), newTotalReferralCount)], unit)
139+ }
140+ else throw("Strict value is not equal to itself.")
124141 }
125142 else throw("Strict value is not equal to itself.")
126143 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "__"
55
6-let keyBackendPublicKey = makeString(["%s", "backendPulbicKey"], separator)
6+let keyBackendPublicKey = makeString(["%s", "backendPublicKey"], separator)
77
88 func keyExistsReferrerToReferral (programName,referrerAddress,referralAddress) = makeString(["%s%s%s%s", "existsReferrerToReferral", programName, referrerAddress, referralAddress], separator)
99
1010
1111 func keyClaimed (programName,claimerAddress) = makeString(["%s%s%s%s", "claimed", programName, claimerAddress], separator)
1212
1313
1414 func keyUnclaimed (programName,claimerAddress) = makeString(["%s%s%s%s", "unclaimed", programName, claimerAddress], separator)
1515
1616
1717 func keyReferrer (programName,referralAddress) = makeString(["%s%s%s", "referrer", programName, referralAddress], separator)
1818
1919
2020 func keyProgramName (programName) = makeString(["%s%s", "programName", programName], separator)
2121
2222
2323 func keyTotalReferralCount (programName,referrerAddress) = makeString(["%s%s%s", "totalReferralCount", programName, referrerAddress], separator)
2424
2525
2626 func keyActiveReferralCount (programName,referrerAddress) = makeString(["%s%s%s", "activeReferralCount", programName, referrerAddress], separator)
2727
2828
2929 func keyIsReferralActive (programName,referralAddress) = makeString(["%s%s%s", "activeReferral", programName, referralAddress], separator)
3030
3131
3232 func keyClaimedTotal (programName) = makeString(["%s%s", "claimedTotal", programName], separator)
3333
3434
3535 func keyRewardAssetId (programName) = makeString(["%s%s", "rewardAssetId", programName], separator)
3636
3737
3838 func keyTreasuryContract (programName) = makeString(["%s%s", "treasuryContract", programName], separator)
3939
4040
4141 func keyImplementationContract (programName) = makeString(["%s%s", "implementationContract", programName], separator)
4242
4343
4444 func keyManagerPublicKey () = "%s__managerPublicKey"
4545
4646
4747 func keyPendingManagerPublicKey () = "%s__pendingManagerPublicKey"
4848
4949
5050 func throwErr (msg) = throw(makeString(["referral.ride:", msg], " "))
5151
5252
5353 func managerPublicKeyOrUnit () = match getString(keyManagerPublicKey()) {
5454 case s: String =>
5555 fromBase58String(s)
5656 case _: Unit =>
5757 unit
5858 case _ =>
5959 throw("Match error")
6060 }
6161
6262
6363 func pendingManagerPublicKeyOrUnit () = match getString(keyPendingManagerPublicKey()) {
6464 case s: String =>
6565 fromBase58String(s)
6666 case _: Unit =>
6767 unit
6868 case _ =>
6969 throw("Match error")
7070 }
7171
7272
7373 func mustManager (i) = {
7474 let pd = throwErr("permission denied")
7575 match managerPublicKeyOrUnit() {
7676 case pk: ByteVector =>
7777 if ((i.callerPublicKey == pk))
7878 then true
7979 else pd
8080 case _: Unit =>
8181 if ((i.caller == this))
8282 then true
8383 else pd
8484 case _ =>
8585 throw("Match error")
8686 }
8787 }
8888
8989
9090 @Callable(i)
9191 func createReferralProgram (programName,treasuryContract,implementationContract) = {
9292 let checkCaller = mustManager(i)
9393 if ((checkCaller == checkCaller))
9494 then {
95- let checkProgramName = if ((getBoolean(programName) == unit))
95+ let checkProgramName = if ((getBoolean(keyProgramName(programName)) == unit))
9696 then true
9797 else throwErr("program name already exists")
9898 if ((checkProgramName == checkProgramName))
99- then $Tuple2([BooleanEntry(keyProgramName(programName), true), StringEntry(keyTreasuryContract(programName), treasuryContract), StringEntry(keyImplementationContract(programName), implementationContract)], unit)
99+ then {
100+ let programNameIsValid = if (!(contains(programName, separator)))
101+ then !(contains(programName, " "))
102+ else false
103+ let checkProgramExists = if (programNameIsValid)
104+ then true
105+ else throwErr("invalid program name")
106+ if ((checkProgramExists == checkProgramExists))
107+ then $Tuple2([BooleanEntry(keyProgramName(programName), true), StringEntry(keyTreasuryContract(programName), treasuryContract), StringEntry(keyImplementationContract(programName), implementationContract)], unit)
108+ else throw("Strict value is not equal to itself.")
109+ }
100110 else throw("Strict value is not equal to itself.")
101111 }
102112 else throw("Strict value is not equal to itself.")
103113 }
104114
105115
106116
107117 @Callable(i)
108118 func createPair (programName,referrerAddress,referralAddress,signature) = {
109- let pairReferrerToReferralExistCheck = if ((getString(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress)) == unit))
119+ let checkProgramExists = if (valueOrElse(getBoolean(keyProgramName(programName)), false))
110120 then true
111- else throwErr("pair already exists")
112- if ((pairReferrerToReferralExistCheck == pairReferrerToReferralExistCheck))
121+ else throwErr("program does not exist")
122+ if ((checkProgramExists == checkProgramExists))
113123 then {
114- let pair = toBytes(makeString([programName, referrerAddress, referralAddress], ":"))
115- let backendPublicKey = toBytes(value(getString(keyBackendPublicKey)))
116- let validateSignature = if (sigVerify(pair, signature, backendPublicKey))
124+ let pairReferrerToReferralExistCheck = if ((getString(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress)) == unit))
117125 then true
118- else throwErr("bad signature")
119- if ((validateSignature == validateSignature))
126+ else throwErr("pair already exists")
127+ if ((pairReferrerToReferralExistCheck == pairReferrerToReferralExistCheck))
120128 then {
121- let totalReferralCount = valueOrElse(getInteger(keyTotalReferralCount(programName, referrerAddress)), 0)
122- let newTotalReferralCount = (totalReferralCount + 1)
123- $Tuple2([BooleanEntry(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress), true), IntegerEntry(keyTotalReferralCount(programName, referrerAddress), newTotalReferralCount)], unit)
129+ let pair = toBytes(makeString([programName, referrerAddress, referralAddress], ":"))
130+ let backendPublicKey = fromBase58String(value(getString(keyBackendPublicKey)))
131+ let validateSignature = if (sigVerify(pair, signature, backendPublicKey))
132+ then true
133+ else throwErr("bad signature")
134+ if ((validateSignature == validateSignature))
135+ then {
136+ let totalReferralCount = valueOrElse(getInteger(keyTotalReferralCount(programName, referrerAddress)), 0)
137+ let newTotalReferralCount = (totalReferralCount + 1)
138+ $Tuple2([BooleanEntry(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress), true), IntegerEntry(keyTotalReferralCount(programName, referrerAddress), newTotalReferralCount)], unit)
139+ }
140+ else throw("Strict value is not equal to itself.")
124141 }
125142 else throw("Strict value is not equal to itself.")
126143 }
127144 else throw("Strict value is not equal to itself.")
128145 }
129146
130147
131148
132149 @Callable(i)
133150 func updateReferralActivity (programName,referralAddress,isActive) = {
134151 let implementationContract = value(getString(keyImplementationContract(programName)))
135152 let isReferralActive = (getBoolean(keyIsReferralActive(programName, referralAddress)) != unit)
136153 let referrerAddress = value(getString(keyReferrer(programName, referralAddress)))
137154 let checkCaller = if ((toString(i.caller) == implementationContract))
138155 then true
139156 else throwErr("permission denied")
140157 if ((checkCaller == checkCaller))
141158 then {
142159 let update = if ((isReferralActive == isActive))
143160 then $Tuple2(nil, unit)
144161 else {
145162 let update = if ((isActive == true))
146163 then {
147164 let newActiveReferralCount = (valueOrElse(getInteger(keyActiveReferralCount(programName, referrerAddress)), 0) + 1)
148165 $Tuple2([BooleanEntry(keyIsReferralActive(programName, referralAddress), true), IntegerEntry(keyActiveReferralCount(programName, referrerAddress), newActiveReferralCount)], unit)
149166 }
150167 else {
151168 let newActiveReferralCount = (valueOrElse(getInteger(keyActiveReferralCount(programName, referrerAddress)), 0) - 1)
152169 $Tuple2([DeleteEntry(keyIsReferralActive(programName, referralAddress)), IntegerEntry(keyActiveReferralCount(programName, referrerAddress), newActiveReferralCount)], unit)
153170 }
154171 update
155172 }
156173 update
157174 }
158175 else throw("Strict value is not equal to itself.")
159176 }
160177
161178
162179
163180 @Callable(i)
164181 func incUnclaimed (programName,referralAddress,referrerReward,referralReward) = {
165182 let implementationContract = value(getString(keyImplementationContract(programName)))
166183 let checkCaller = if ((toString(i.caller) == implementationContract))
167184 then true
168185 else throwErr("permission denied")
169186 if ((checkCaller == checkCaller))
170187 then {
171188 let referrerAddress = value(getString(keyReferrer(programName, referralAddress)))
172189 let referrerUnclaimed = value(getInteger(keyUnclaimed(programName, referrerAddress)))
173190 let referralUnclaimed = value(getInteger(keyUnclaimed(programName, referralAddress)))
174191 let newReferrerUnclaimed = (referrerUnclaimed + referrerReward)
175192 let newReferralUnclaimed = (referralUnclaimed + referralReward)
176193 $Tuple2([IntegerEntry(keyClaimed(programName, referralAddress), newReferrerUnclaimed), IntegerEntry(keyUnclaimed(programName, referralAddress), newReferralUnclaimed)], unit)
177194 }
178195 else throw("Strict value is not equal to itself.")
179196 }
180197
181198
182199
183200 @Callable(i)
184201 func claim (programName) = {
185202 let claimedTotal = value(getInteger(keyClaimedTotal(programName)))
186203 let claimerClaimed = value(getInteger(keyClaimed(programName, toString(i.caller))))
187204 let claimerUnclaimed = value(getInteger(keyUnclaimed(programName, toString(i.caller))))
188205 let treasuryContract = value(addressFromString(value(getString(keyTreasuryContract(programName)))))
189206 let rewardAssetId = fromBase58String(value(getString(keyRewardAssetId(programName))))
190207 let checkCanClaim = if ((claimerUnclaimed > 0))
191208 then true
192209 else throwErr("nothing to claim")
193210 if ((checkCanClaim == checkCanClaim))
194211 then {
195212 let newClaimerClaimed = (claimerClaimed + claimerUnclaimed)
196213 let newClaimedTotal = (claimedTotal + claimerUnclaimed)
197214 let balanceBefore = value(assetBalance(this, rewardAssetId))
198215 if ((balanceBefore == balanceBefore))
199216 then {
200217 let res = invoke(treasuryContract, "withdrawReferralReward", [claimerUnclaimed], nil)
201218 if ((res == res))
202219 then {
203220 let balanceAfter = value(assetBalance(this, rewardAssetId))
204221 if ((balanceAfter == balanceAfter))
205222 then {
206223 let balanceDiff = (balanceAfter - balanceBefore)
207224 if ((balanceDiff == balanceDiff))
208225 then {
209226 let checkBalance = if ((balanceDiff == claimerUnclaimed))
210227 then true
211228 else throwErr("insufficient balance on referral contract")
212229 if ((checkBalance == checkBalance))
213230 then $Tuple2([IntegerEntry(keyClaimed(programName, toString(i.caller)), newClaimerClaimed), IntegerEntry(keyClaimedTotal(programName), newClaimedTotal), IntegerEntry(keyUnclaimed(programName, toString(i.caller)), 0), ScriptTransfer(i.caller, claimerUnclaimed, rewardAssetId)], unit)
214231 else throw("Strict value is not equal to itself.")
215232 }
216233 else throw("Strict value is not equal to itself.")
217234 }
218235 else throw("Strict value is not equal to itself.")
219236 }
220237 else throw("Strict value is not equal to itself.")
221238 }
222239 else throw("Strict value is not equal to itself.")
223240 }
224241 else throw("Strict value is not equal to itself.")
225242 }
226243
227244
228245
229246 @Callable(i)
230247 func claimREADONLY (programName,referralAddress) = {
231248 let claimerClaimed = value(getInteger(keyClaimed(programName, referralAddress)))
232249 let claimerUnclaimed = value(getInteger(keyUnclaimed(programName, referralAddress)))
233250 let newClaimerClaimed = (claimerClaimed + claimerUnclaimed)
234251 $Tuple2(nil, newClaimerClaimed)
235252 }
236253
237254
238255
239256 @Callable(i)
240257 func setManager (pendingManagerPublicKey) = {
241258 let checkCaller = mustManager(i)
242259 if ((checkCaller == checkCaller))
243260 then {
244261 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
245262 if ((checkManagerPublicKey == checkManagerPublicKey))
246263 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
247264 else throw("Strict value is not equal to itself.")
248265 }
249266 else throw("Strict value is not equal to itself.")
250267 }
251268
252269
253270
254271 @Callable(i)
255272 func confirmManager () = {
256273 let pm = pendingManagerPublicKeyOrUnit()
257274 let hasPM = if (isDefined(pm))
258275 then true
259276 else throwErr("no pending manager")
260277 if ((hasPM == hasPM))
261278 then {
262279 let checkPM = if ((i.callerPublicKey == value(pm)))
263280 then true
264281 else throwErr("you are not pending manager")
265282 if ((checkPM == checkPM))
266283 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
267284 else throw("Strict value is not equal to itself.")
268285 }
269286 else throw("Strict value is not equal to itself.")
270287 }
271288
272289
273290 @Verifier(tx)
274291 func verify () = {
275292 let targetPublicKey = match managerPublicKeyOrUnit() {
276293 case pk: ByteVector =>
277294 pk
278295 case _: Unit =>
279296 tx.senderPublicKey
280297 case _ =>
281298 throw("Match error")
282299 }
283300 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
284301 }
285302

github/deemru/w8io/169f3d6 
100.41 ms