tx · 5MYZX5xPqDiL52pBKoZgh2V9PZYVg7CBdc66twaJ9Y6C

3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh:  -0.01400000 Waves

2022.07.27 17:23 [2158339] smart account 3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh > SELF 0.00000000 Waves

{ "type": 13, "id": "5MYZX5xPqDiL52pBKoZgh2V9PZYVg7CBdc66twaJ9Y6C", "fee": 1400000, "feeAssetId": null, "timestamp": 1658931888539, "version": 1, "sender": "3NAsFvuLwxz1iUtZ9fmhfmSN16r9NEsPqsh", "senderPublicKey": "33fpjdpM9FMu87RZKePniPardKqQXM96sm7VhAk3JEVQ", "proofs": [ "2FaEFbbr88VeJG2Mw3TGRtnhmWgTupM1EuAFPxmuSmTNMeeWQptb42H48evWbLDZhpTCAmdqNyFSdbfqxHy7hmtd" ], "script": "base64:BgIyCAISBQoDCAgIEgYKBAgICAISBQoDCAgEEgYKBAgIAQESAwoBCBIECgIICBIDCgEIEgAUAAlzZXBhcmF0b3ICAl9fABNrZXlCYWNrZW5kUHVibGljS2V5CQC5CQIJAMwIAgICJXMJAMwIAgIQYmFja2VuZFB1YmxpY0tleQUDbmlsBQlzZXBhcmF0b3IBG2tleUV4aXN0c1JlZmVycmVyVG9SZWZlcnJhbAMLcHJvZ3JhbU5hbWUPcmVmZXJyZXJBZGRyZXNzD3JlZmVycmFsQWRkcmVzcwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICGGV4aXN0c1JlZmVycmVyVG9SZWZlcnJhbAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJlckFkZHJlc3MJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEKa2V5Q2xhaW1lZAILcHJvZ3JhbU5hbWUOY2xhaW1lckFkZHJlc3MJALkJAgkAzAgCAgglcyVzJXMlcwkAzAgCAgdjbGFpbWVkCQDMCAIFC3Byb2dyYW1OYW1lCQDMCAIFDmNsYWltZXJBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEMa2V5VW5jbGFpbWVkAgtwcm9ncmFtTmFtZQ5jbGFpbWVyQWRkcmVzcwkAuQkCCQDMCAICCCVzJXMlcyVzCQDMCAICCXVuY2xhaW1lZAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ5jbGFpbWVyQWRkcmVzcwUDbmlsBQlzZXBhcmF0b3IBC2tleVJlZmVycmVyAgtwcm9ncmFtTmFtZQ9yZWZlcnJhbEFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIIcmVmZXJyZXIJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEOa2V5UHJvZ3JhbU5hbWUBC3Byb2dyYW1OYW1lCQC5CQIJAMwIAgIEJXMlcwkAzAgCAgtwcm9ncmFtTmFtZQkAzAgCBQtwcm9ncmFtTmFtZQUDbmlsBQlzZXBhcmF0b3IBFWtleVRvdGFsUmVmZXJyYWxDb3VudAILcHJvZ3JhbU5hbWUPcmVmZXJyZXJBZGRyZXNzCQC5CQIJAMwIAgIGJXMlcyVzCQDMCAICEnRvdGFsUmVmZXJyYWxDb3VudAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARZrZXlBY3RpdmVSZWZlcnJhbENvdW50Agtwcm9ncmFtTmFtZQ9yZWZlcnJlckFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgITYWN0aXZlUmVmZXJyYWxDb3VudAkAzAgCBQtwcm9ncmFtTmFtZQkAzAgCBQ9yZWZlcnJlckFkZHJlc3MFA25pbAUJc2VwYXJhdG9yARNrZXlJc1JlZmVycmFsQWN0aXZlAgtwcm9ncmFtTmFtZQ9yZWZlcnJhbEFkZHJlc3MJALkJAgkAzAgCAgYlcyVzJXMJAMwIAgIOYWN0aXZlUmVmZXJyYWwJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyYWxBZGRyZXNzBQNuaWwFCXNlcGFyYXRvcgEPa2V5Q2xhaW1lZFRvdGFsAQtwcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIMY2xhaW1lZFRvdGFsCQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgEQa2V5UmV3YXJkQXNzZXRJZAELcHJvZ3JhbU5hbWUJALkJAgkAzAgCAgQlcyVzCQDMCAICDXJld2FyZEFzc2V0SWQJAMwIAgULcHJvZ3JhbU5hbWUFA25pbAUJc2VwYXJhdG9yARNrZXlUcmVhc3VyeUNvbnRyYWN0AQtwcm9ncmFtTmFtZQkAuQkCCQDMCAICBCVzJXMJAMwIAgIQdHJlYXN1cnlDb250cmFjdAkAzAgCBQtwcm9ncmFtTmFtZQUDbmlsBQlzZXBhcmF0b3IBGWtleUltcGxlbWVudGF0aW9uQ29udHJhY3QBC3Byb2dyYW1OYW1lCQC5CQIJAMwIAgIEJXMlcwkAzAgCAhZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0CQDMCAIFC3Byb2dyYW1OYW1lBQNuaWwFCXNlcGFyYXRvcgETa2V5TWFuYWdlclB1YmxpY0tleQACFCVzX19tYW5hZ2VyUHVibGljS2V5ARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQACGyVzX19wZW5kaW5nTWFuYWdlclB1YmxpY0tleQEIdGhyb3dFcnIBA21zZwkAAgEJALkJAgkAzAgCAg5yZWZlcnJhbC5yaWRlOgkAzAgCBQNtc2cFA25pbAIBIAEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAAEByRtYXRjaDAJAKIIAQkBE2tleU1hbmFnZXJQdWJsaWNLZXkAAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkA2QQBBQFzAwkAAQIFByRtYXRjaDACBFVuaXQFBHVuaXQJAAIBAgtNYXRjaCBlcnJvcgEdcGVuZGluZ01hbmFnZXJQdWJsaWNLZXlPclVuaXQABAckbWF0Y2gwCQCiCAEJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQADCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQDZBAEFAXMDCQABAgUHJG1hdGNoMAIEVW5pdAUEdW5pdAkAAgECC01hdGNoIGVycm9yAQttdXN0TWFuYWdlcgEBaQQCcGQJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkBAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDADCQAAAggFAWkPY2FsbGVyUHVibGljS2V5BQJwawYFAnBkAwkAAQIFByRtYXRjaDACBFVuaXQDCQAAAggFAWkGY2FsbGVyBQR0aGlzBgUCcGQJAAIBAgtNYXRjaCBlcnJvcggBaQEVY3JlYXRlUmVmZXJyYWxQcm9ncmFtAwtwcm9ncmFtTmFtZRB0cmVhc3VyeUNvbnRyYWN0FmltcGxlbWVudGF0aW9uQ29udHJhY3QEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQQY2hlY2tQcm9ncmFtTmFtZQMJAAACCQCgCAEJAQ5rZXlQcm9ncmFtTmFtZQEFC3Byb2dyYW1OYW1lBQR1bml0BgkBCHRocm93RXJyAQIbcHJvZ3JhbSBuYW1lIGFscmVhZHkgZXhpc3RzAwkAAAIFEGNoZWNrUHJvZ3JhbU5hbWUFEGNoZWNrUHJvZ3JhbU5hbWUEEnByb2dyYW1OYW1lSXNWYWxpZAMJAQEhAQkBCGNvbnRhaW5zAgULcHJvZ3JhbU5hbWUFCXNlcGFyYXRvcgkBASEBCQEIY29udGFpbnMCBQtwcm9ncmFtTmFtZQIBIAcEEmNoZWNrUHJvZ3JhbUV4aXN0cwMFEnByb2dyYW1OYW1lSXNWYWxpZAYJAQh0aHJvd0VycgECFGludmFsaWQgcHJvZ3JhbSBuYW1lAwkAAAIFEmNoZWNrUHJvZ3JhbUV4aXN0cwUSY2hlY2tQcm9ncmFtRXhpc3RzCQCUCgIJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ5rZXlQcm9ncmFtTmFtZQEFC3Byb2dyYW1OYW1lBgkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5VHJlYXN1cnlDb250cmFjdAEFC3Byb2dyYW1OYW1lBRB0cmVhc3VyeUNvbnRyYWN0CQDMCAIJAQtTdHJpbmdFbnRyeQIJARlrZXlJbXBsZW1lbnRhdGlvbkNvbnRyYWN0AQULcHJvZ3JhbU5hbWUFFmltcGxlbWVudGF0aW9uQ29udHJhY3QFA25pbAUEdW5pdAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQpjcmVhdGVQYWlyBAtwcm9ncmFtTmFtZQ9yZWZlcnJlckFkZHJlc3MPcmVmZXJyYWxBZGRyZXNzCXNpZ25hdHVyZQQSY2hlY2tQcm9ncmFtRXhpc3RzAwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEOa2V5UHJvZ3JhbU5hbWUBBQtwcm9ncmFtTmFtZQcGCQEIdGhyb3dFcnIBAhZwcm9ncmFtIGRvZXMgbm90IGV4aXN0AwkAAAIFEmNoZWNrUHJvZ3JhbUV4aXN0cwUSY2hlY2tQcm9ncmFtRXhpc3RzBCBwYWlyUmVmZXJyZXJUb1JlZmVycmFsRXhpc3RDaGVjawMJAAACCQCiCAEJARtrZXlFeGlzdHNSZWZlcnJlclRvUmVmZXJyYWwDBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBQ9yZWZlcnJhbEFkZHJlc3MFBHVuaXQGCQEIdGhyb3dFcnIBAhNwYWlyIGFscmVhZHkgZXhpc3RzAwkAAAIFIHBhaXJSZWZlcnJlclRvUmVmZXJyYWxFeGlzdENoZWNrBSBwYWlyUmVmZXJyZXJUb1JlZmVycmFsRXhpc3RDaGVjawQEcGFpcgkAmwMBCQC5CQIJAMwIAgULcHJvZ3JhbU5hbWUJAMwIAgUPcmVmZXJyZXJBZGRyZXNzCQDMCAIFD3JlZmVycmFsQWRkcmVzcwUDbmlsAgE6BBBiYWNrZW5kUHVibGljS2V5CQDZBAEJAQV2YWx1ZQEJAKIIAQUTa2V5QmFja2VuZFB1YmxpY0tleQQRdmFsaWRhdGVTaWduYXR1cmUDCQD0AwMFBHBhaXIFCXNpZ25hdHVyZQUQYmFja2VuZFB1YmxpY0tleQYJAQh0aHJvd0VycgECDWJhZCBzaWduYXR1cmUDCQAAAgURdmFsaWRhdGVTaWduYXR1cmUFEXZhbGlkYXRlU2lnbmF0dXJlBBJ0b3RhbFJlZmVycmFsQ291bnQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBFWtleVRvdGFsUmVmZXJyYWxDb3VudAIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MAAAQVbmV3VG90YWxSZWZlcnJhbENvdW50CQBkAgUSdG90YWxSZWZlcnJhbENvdW50AAEJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBG2tleUV4aXN0c1JlZmVycmVyVG9SZWZlcnJhbAMFC3Byb2dyYW1OYW1lBQ9yZWZlcnJlckFkZHJlc3MFD3JlZmVycmFsQWRkcmVzcwYJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlUb3RhbFJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBRVuZXdUb3RhbFJlZmVycmFsQ291bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVJlZmVycmVyAgULcHJvZ3JhbU5hbWUFD3JlZmVycmFsQWRkcmVzcwUPcmVmZXJyZXJBZGRyZXNzBQNuaWwFBHVuaXQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEWdXBkYXRlUmVmZXJyYWxBY3Rpdml0eQMLcHJvZ3JhbU5hbWUPcmVmZXJyYWxBZGRyZXNzCGlzQWN0aXZlBBZpbXBsZW1lbnRhdGlvbkNvbnRyYWN0CQEFdmFsdWUBCQCiCAEJARlrZXlJbXBsZW1lbnRhdGlvbkNvbnRyYWN0AQULcHJvZ3JhbU5hbWUEEGlzUmVmZXJyYWxBY3RpdmUJAQIhPQIJAKAIAQkBE2tleUlzUmVmZXJyYWxBY3RpdmUCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBQR1bml0BA9yZWZlcnJlckFkZHJlc3MJAQV2YWx1ZQEJAKIIAQkBC2tleVJlZmVycmVyAgULcHJvZ3JhbU5hbWUFD3JlZmVycmFsQWRkcmVzcwQLY2hlY2tDYWxsZXIDCQAAAgkApQgBCAUBaQZjYWxsZXIFFmltcGxlbWVudGF0aW9uQ29udHJhY3QGCQEIdGhyb3dFcnIBAhFwZXJtaXNzaW9uIGRlbmllZAMJAAACBQtjaGVja0NhbGxlcgULY2hlY2tDYWxsZXIEBnVwZGF0ZQMJAAACBRBpc1JlZmVycmFsQWN0aXZlBQhpc0FjdGl2ZQkAlAoCBQNuaWwFBHVuaXQEBnVwZGF0ZQMJAAACBQhpc0FjdGl2ZQYEFm5ld0FjdGl2ZVJlZmVycmFsQ291bnQJAGQCCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlBY3RpdmVSZWZlcnJhbENvdW50AgULcHJvZ3JhbU5hbWUFD3JlZmVycmVyQWRkcmVzcwAAAAEJAJQKAgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBE2tleUlzUmVmZXJyYWxBY3RpdmUCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleUFjdGl2ZVJlZmVycmFsQ291bnQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzBRZuZXdBY3RpdmVSZWZlcnJhbENvdW50BQNuaWwFBHVuaXQEFm5ld0FjdGl2ZVJlZmVycmFsQ291bnQJAGUCCQELdmFsdWVPckVsc2UCCQCfCAEJARZrZXlBY3RpdmVSZWZlcnJhbENvdW50AgULcHJvZ3JhbU5hbWUFD3JlZmVycmVyQWRkcmVzcwAAAAEJAJQKAgkAzAgCCQELRGVsZXRlRW50cnkBCQETa2V5SXNSZWZlcnJhbEFjdGl2ZQIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJARZrZXlBY3RpdmVSZWZlcnJhbENvdW50AgULcHJvZ3JhbU5hbWUFD3JlZmVycmVyQWRkcmVzcwUWbmV3QWN0aXZlUmVmZXJyYWxDb3VudAUDbmlsBQR1bml0BQZ1cGRhdGUFBnVwZGF0ZQkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgFpAQxpbmNVbmNsYWltZWQEC3Byb2dyYW1OYW1lD3JlZmVycmFsQWRkcmVzcw5yZWZlcnJlclJld2FyZA5yZWZlcnJhbFJld2FyZAQWaW1wbGVtZW50YXRpb25Db250cmFjdAkBBXZhbHVlAQkAoggBCQEZa2V5SW1wbGVtZW50YXRpb25Db250cmFjdAEFC3Byb2dyYW1OYW1lBAtjaGVja0NhbGxlcgMJAAACCQClCAEIBQFpBmNhbGxlcgUWaW1wbGVtZW50YXRpb25Db250cmFjdAYJAQh0aHJvd0VycgECEXBlcm1pc3Npb24gZGVuaWVkAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQPcmVmZXJyZXJBZGRyZXNzCQEFdmFsdWUBCQCiCAEJAQtrZXlSZWZlcnJlcgIFC3Byb2dyYW1OYW1lBQ9yZWZlcnJhbEFkZHJlc3MEEXJlZmVycmVyVW5jbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlVbmNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyZXJBZGRyZXNzAAAEEXJlZmVycmFsVW5jbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJAQxrZXlVbmNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzAAAEFG5ld1JlZmVycmVyVW5jbGFpbWVkCQBkAgURcmVmZXJyZXJVbmNsYWltZWQFDnJlZmVycmVyUmV3YXJkBBRuZXdSZWZlcnJhbFVuY2xhaW1lZAkAZAIFEXJlZmVycmFsVW5jbGFpbWVkBQ5yZWZlcnJhbFJld2FyZAkAlAoCCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEMa2V5VW5jbGFpbWVkAgULcHJvZ3JhbU5hbWUFD3JlZmVycmVyQWRkcmVzcwUUbmV3UmVmZXJyZXJVbmNsYWltZWQJAMwIAgkBDEludGVnZXJFbnRyeQIJAQxrZXlVbmNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBRRuZXdSZWZlcnJhbFVuY2xhaW1lZAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBBWNsYWltAQtwcm9ncmFtTmFtZQQSY2hlY2tQcm9ncmFtRXhpc3RzAwkBC3ZhbHVlT3JFbHNlAgkAoAgBCQEOa2V5UHJvZ3JhbU5hbWUBBQtwcm9ncmFtTmFtZQcGCQEIdGhyb3dFcnIBAhZwcm9ncmFtIGRvZXMgbm90IGV4aXN0AwkAAAIFEmNoZWNrUHJvZ3JhbUV4aXN0cwUSY2hlY2tQcm9ncmFtRXhpc3RzBAxjbGFpbWVkVG90YWwJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBD2tleUNsYWltZWRUb3RhbAEFC3Byb2dyYW1OYW1lAAAEDmNsYWltZXJDbGFpbWVkCQELdmFsdWVPckVsc2UCCQCfCAEJAQprZXlDbGFpbWVkAgULcHJvZ3JhbU5hbWUJAKUIAQgFAWkGY2FsbGVyAAAEEGNsYWltZXJVbmNsYWltZWQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDGtleVVuY2xhaW1lZAIFC3Byb2dyYW1OYW1lCQClCAEIBQFpBmNhbGxlcgAABBB0cmVhc3VyeUNvbnRyYWN0CQEFdmFsdWUBCQCmCAEJAQV2YWx1ZQEJAKIIAQkBE2tleVRyZWFzdXJ5Q29udHJhY3QBBQtwcm9ncmFtTmFtZQQNcmV3YXJkQXNzZXRJZAkA2QQBCQEFdmFsdWUBCQCiCAEJARBrZXlSZXdhcmRBc3NldElkAQULcHJvZ3JhbU5hbWUEDWNoZWNrQ2FuQ2xhaW0DCQBmAgUQY2xhaW1lclVuY2xhaW1lZAAABgkBCHRocm93RXJyAQIQbm90aGluZyB0byBjbGFpbQMJAAACBQ1jaGVja0NhbkNsYWltBQ1jaGVja0NhbkNsYWltBBFuZXdDbGFpbWVyQ2xhaW1lZAkAZAIFDmNsYWltZXJDbGFpbWVkBRBjbGFpbWVyVW5jbGFpbWVkBA9uZXdDbGFpbWVkVG90YWwJAGQCBQxjbGFpbWVkVG90YWwFEGNsYWltZXJVbmNsYWltZWQEDWJhbGFuY2VCZWZvcmUJAQV2YWx1ZQEJAPAHAgUEdGhpcwUNcmV3YXJkQXNzZXRJZAMJAAACBQ1iYWxhbmNlQmVmb3JlBQ1iYWxhbmNlQmVmb3JlBANyZXMJAPwHBAUQdHJlYXN1cnlDb250cmFjdAIWd2l0aGRyYXdSZWZlcnJhbFJld2FyZAkAzAgCBRBjbGFpbWVyVW5jbGFpbWVkBQNuaWwFA25pbAMJAAACBQNyZXMFA3JlcwQMYmFsYW5jZUFmdGVyCQEFdmFsdWUBCQDwBwIFBHRoaXMFDXJld2FyZEFzc2V0SWQDCQAAAgUMYmFsYW5jZUFmdGVyBQxiYWxhbmNlQWZ0ZXIEC2JhbGFuY2VEaWZmCQBlAgUMYmFsYW5jZUFmdGVyBQ1iYWxhbmNlQmVmb3JlAwkAAAIFC2JhbGFuY2VEaWZmBQtiYWxhbmNlRGlmZgQMY2hlY2tCYWxhbmNlAwkAAAIFC2JhbGFuY2VEaWZmBRBjbGFpbWVyVW5jbGFpbWVkBgkBCHRocm93RXJyAQIpaW5zdWZmaWNpZW50IGJhbGFuY2Ugb24gcmVmZXJyYWwgY29udHJhY3QDCQAAAgUMY2hlY2tCYWxhbmNlBQxjaGVja0JhbGFuY2UJAJQKAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBCmtleUNsYWltZWQCBQtwcm9ncmFtTmFtZQkApQgBCAUBaQZjYWxsZXIFEW5ld0NsYWltZXJDbGFpbWVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5Q2xhaW1lZFRvdGFsAQULcHJvZ3JhbU5hbWUFD25ld0NsYWltZWRUb3RhbAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleVVuY2xhaW1lZAIFC3Byb2dyYW1OYW1lCQClCAEIBQFpBmNhbGxlcgAACQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgUQY2xhaW1lclVuY2xhaW1lZAUNcmV3YXJkQXNzZXRJZAUDbmlsBQR1bml0CQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAWkBDWNsYWltUkVBRE9OTFkCC3Byb2dyYW1OYW1lD3JlZmVycmFsQWRkcmVzcwQOY2xhaW1lckNsYWltZWQJAQV2YWx1ZQEJAJ8IAQkBCmtleUNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBBBjbGFpbWVyVW5jbGFpbWVkCQEFdmFsdWUBCQCfCAEJAQxrZXlVbmNsYWltZWQCBQtwcm9ncmFtTmFtZQUPcmVmZXJyYWxBZGRyZXNzBBFuZXdDbGFpbWVyQ2xhaW1lZAkAZAIFDmNsYWltZXJDbGFpbWVkBRBjbGFpbWVyVW5jbGFpbWVkCQCUCgIFA25pbAURbmV3Q2xhaW1lckNsYWltZWQBaQEKc2V0TWFuYWdlcgEXcGVuZGluZ01hbmFnZXJQdWJsaWNLZXkEC2NoZWNrQ2FsbGVyCQELbXVzdE1hbmFnZXIBBQFpAwkAAAIFC2NoZWNrQ2FsbGVyBQtjaGVja0NhbGxlcgQVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDZBAEFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5AwkAAAIFFWNoZWNrTWFuYWdlclB1YmxpY0tleQUVY2hlY2tNYW5hZ2VyUHVibGljS2V5CQDMCAIJAQtTdHJpbmdFbnRyeQIJARprZXlQZW5kaW5nTWFuYWdlclB1YmxpY0tleQAFF3BlbmRpbmdNYW5hZ2VyUHVibGljS2V5BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BaQEOY29uZmlybU1hbmFnZXIABAJwbQkBHXBlbmRpbmdNYW5hZ2VyUHVibGljS2V5T3JVbml0AAQFaGFzUE0DCQEJaXNEZWZpbmVkAQUCcG0GCQEIdGhyb3dFcnIBAhJubyBwZW5kaW5nIG1hbmFnZXIDCQAAAgUFaGFzUE0FBWhhc1BNBAdjaGVja1BNAwkAAAIIBQFpD2NhbGxlclB1YmxpY0tleQkBBXZhbHVlAQUCcG0GCQEIdGhyb3dFcnIBAht5b3UgYXJlIG5vdCBwZW5kaW5nIG1hbmFnZXIDCQAAAgUHY2hlY2tQTQUHY2hlY2tQTQkAzAgCCQELU3RyaW5nRW50cnkCCQETa2V5TWFuYWdlclB1YmxpY0tleQAJANgEAQkBBXZhbHVlAQUCcG0JAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGmtleVBlbmRpbmdNYW5hZ2VyUHVibGljS2V5AAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAQPdGFyZ2V0UHVibGljS2V5BAckbWF0Y2gwCQEWbWFuYWdlclB1YmxpY0tleU9yVW5pdAADCQABAgUHJG1hdGNoMAIKQnl0ZVZlY3RvcgQCcGsFByRtYXRjaDAFAnBrAwkAAQIFByRtYXRjaDACBFVuaXQIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAAIBAgtNYXRjaCBlcnJvcgkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAUPdGFyZ2V0UHVibGljS2V5DFsZNQ==", "chainId": 84, "height": 2158339, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 7oreTEse9T69bjn3AiR4u1nFZbDpVeUF7XeiiPxoxD2A Next: tqUVyEnCKQJeduBwyEUrsVednsc1jkq7hqdj6UnZV2K Diff:
OldNewDifferences
199199
200200 @Callable(i)
201201 func claim (programName) = {
202- let claimedTotal = value(getInteger(keyClaimedTotal(programName)))
203- let claimerClaimed = value(getInteger(keyClaimed(programName, toString(i.caller))))
204- let claimerUnclaimed = value(getInteger(keyUnclaimed(programName, toString(i.caller))))
205- let treasuryContract = value(addressFromString(value(getString(keyTreasuryContract(programName)))))
206- let rewardAssetId = fromBase58String(value(getString(keyRewardAssetId(programName))))
207- let checkCanClaim = if ((claimerUnclaimed > 0))
202+ let checkProgramExists = if (valueOrElse(getBoolean(keyProgramName(programName)), false))
208203 then true
209- else throwErr("nothing to claim")
210- if ((checkCanClaim == checkCanClaim))
204+ else throwErr("program does not exist")
205+ if ((checkProgramExists == checkProgramExists))
211206 then {
212- let newClaimerClaimed = (claimerClaimed + claimerUnclaimed)
213- let newClaimedTotal = (claimedTotal + claimerUnclaimed)
214- let balanceBefore = value(assetBalance(this, rewardAssetId))
215- if ((balanceBefore == balanceBefore))
207+ let claimedTotal = valueOrElse(getInteger(keyClaimedTotal(programName)), 0)
208+ let claimerClaimed = valueOrElse(getInteger(keyClaimed(programName, toString(i.caller))), 0)
209+ let claimerUnclaimed = valueOrElse(getInteger(keyUnclaimed(programName, toString(i.caller))), 0)
210+ let treasuryContract = value(addressFromString(value(getString(keyTreasuryContract(programName)))))
211+ let rewardAssetId = fromBase58String(value(getString(keyRewardAssetId(programName))))
212+ let checkCanClaim = if ((claimerUnclaimed > 0))
213+ then true
214+ else throwErr("nothing to claim")
215+ if ((checkCanClaim == checkCanClaim))
216216 then {
217- let res = invoke(treasuryContract, "withdrawReferralReward", [claimerUnclaimed], nil)
218- if ((res == res))
217+ let newClaimerClaimed = (claimerClaimed + claimerUnclaimed)
218+ let newClaimedTotal = (claimedTotal + claimerUnclaimed)
219+ let balanceBefore = value(assetBalance(this, rewardAssetId))
220+ if ((balanceBefore == balanceBefore))
219221 then {
220- let balanceAfter = value(assetBalance(this, rewardAssetId))
221- if ((balanceAfter == balanceAfter))
222+ let res = invoke(treasuryContract, "withdrawReferralReward", [claimerUnclaimed], nil)
223+ if ((res == res))
222224 then {
223- let balanceDiff = (balanceAfter - balanceBefore)
224- if ((balanceDiff == balanceDiff))
225+ let balanceAfter = value(assetBalance(this, rewardAssetId))
226+ if ((balanceAfter == balanceAfter))
225227 then {
226- let checkBalance = if ((balanceDiff == claimerUnclaimed))
227- then true
228- else throwErr("insufficient balance on referral contract")
229- if ((checkBalance == checkBalance))
230- 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)
228+ let balanceDiff = (balanceAfter - balanceBefore)
229+ if ((balanceDiff == balanceDiff))
230+ then {
231+ let checkBalance = if ((balanceDiff == claimerUnclaimed))
232+ then true
233+ else throwErr("insufficient balance on referral contract")
234+ if ((checkBalance == checkBalance))
235+ 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)
236+ else throw("Strict value is not equal to itself.")
237+ }
231238 else throw("Strict value is not equal to itself.")
232239 }
233240 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "__"
55
66 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 {
9595 let checkProgramName = if ((getBoolean(keyProgramName(programName)) == unit))
9696 then true
9797 else throwErr("program name already exists")
9898 if ((checkProgramName == checkProgramName))
9999 then {
100100 let programNameIsValid = if (!(contains(programName, separator)))
101101 then !(contains(programName, " "))
102102 else false
103103 let checkProgramExists = if (programNameIsValid)
104104 then true
105105 else throwErr("invalid program name")
106106 if ((checkProgramExists == checkProgramExists))
107107 then $Tuple2([BooleanEntry(keyProgramName(programName), true), StringEntry(keyTreasuryContract(programName), treasuryContract), StringEntry(keyImplementationContract(programName), implementationContract)], unit)
108108 else throw("Strict value is not equal to itself.")
109109 }
110110 else throw("Strict value is not equal to itself.")
111111 }
112112 else throw("Strict value is not equal to itself.")
113113 }
114114
115115
116116
117117 @Callable(i)
118118 func createPair (programName,referrerAddress,referralAddress,signature) = {
119119 let checkProgramExists = if (valueOrElse(getBoolean(keyProgramName(programName)), false))
120120 then true
121121 else throwErr("program does not exist")
122122 if ((checkProgramExists == checkProgramExists))
123123 then {
124124 let pairReferrerToReferralExistCheck = if ((getString(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress)) == unit))
125125 then true
126126 else throwErr("pair already exists")
127127 if ((pairReferrerToReferralExistCheck == pairReferrerToReferralExistCheck))
128128 then {
129129 let pair = toBytes(makeString([programName, referrerAddress, referralAddress], ":"))
130130 let backendPublicKey = fromBase58String(value(getString(keyBackendPublicKey)))
131131 let validateSignature = if (sigVerify(pair, signature, backendPublicKey))
132132 then true
133133 else throwErr("bad signature")
134134 if ((validateSignature == validateSignature))
135135 then {
136136 let totalReferralCount = valueOrElse(getInteger(keyTotalReferralCount(programName, referrerAddress)), 0)
137137 let newTotalReferralCount = (totalReferralCount + 1)
138138 $Tuple2([BooleanEntry(keyExistsReferrerToReferral(programName, referrerAddress, referralAddress), true), IntegerEntry(keyTotalReferralCount(programName, referrerAddress), newTotalReferralCount), StringEntry(keyReferrer(programName, referralAddress), referrerAddress)], unit)
139139 }
140140 else throw("Strict value is not equal to itself.")
141141 }
142142 else throw("Strict value is not equal to itself.")
143143 }
144144 else throw("Strict value is not equal to itself.")
145145 }
146146
147147
148148
149149 @Callable(i)
150150 func updateReferralActivity (programName,referralAddress,isActive) = {
151151 let implementationContract = value(getString(keyImplementationContract(programName)))
152152 let isReferralActive = (getBoolean(keyIsReferralActive(programName, referralAddress)) != unit)
153153 let referrerAddress = value(getString(keyReferrer(programName, referralAddress)))
154154 let checkCaller = if ((toString(i.caller) == implementationContract))
155155 then true
156156 else throwErr("permission denied")
157157 if ((checkCaller == checkCaller))
158158 then {
159159 let update = if ((isReferralActive == isActive))
160160 then $Tuple2(nil, unit)
161161 else {
162162 let update = if ((isActive == true))
163163 then {
164164 let newActiveReferralCount = (valueOrElse(getInteger(keyActiveReferralCount(programName, referrerAddress)), 0) + 1)
165165 $Tuple2([BooleanEntry(keyIsReferralActive(programName, referralAddress), true), IntegerEntry(keyActiveReferralCount(programName, referrerAddress), newActiveReferralCount)], unit)
166166 }
167167 else {
168168 let newActiveReferralCount = (valueOrElse(getInteger(keyActiveReferralCount(programName, referrerAddress)), 0) - 1)
169169 $Tuple2([DeleteEntry(keyIsReferralActive(programName, referralAddress)), IntegerEntry(keyActiveReferralCount(programName, referrerAddress), newActiveReferralCount)], unit)
170170 }
171171 update
172172 }
173173 update
174174 }
175175 else throw("Strict value is not equal to itself.")
176176 }
177177
178178
179179
180180 @Callable(i)
181181 func incUnclaimed (programName,referralAddress,referrerReward,referralReward) = {
182182 let implementationContract = value(getString(keyImplementationContract(programName)))
183183 let checkCaller = if ((toString(i.caller) == implementationContract))
184184 then true
185185 else throwErr("permission denied")
186186 if ((checkCaller == checkCaller))
187187 then {
188188 let referrerAddress = value(getString(keyReferrer(programName, referralAddress)))
189189 let referrerUnclaimed = valueOrElse(getInteger(keyUnclaimed(programName, referrerAddress)), 0)
190190 let referralUnclaimed = valueOrElse(getInteger(keyUnclaimed(programName, referralAddress)), 0)
191191 let newReferrerUnclaimed = (referrerUnclaimed + referrerReward)
192192 let newReferralUnclaimed = (referralUnclaimed + referralReward)
193193 $Tuple2([IntegerEntry(keyUnclaimed(programName, referrerAddress), newReferrerUnclaimed), IntegerEntry(keyUnclaimed(programName, referralAddress), newReferralUnclaimed)], unit)
194194 }
195195 else throw("Strict value is not equal to itself.")
196196 }
197197
198198
199199
200200 @Callable(i)
201201 func claim (programName) = {
202- let claimedTotal = value(getInteger(keyClaimedTotal(programName)))
203- let claimerClaimed = value(getInteger(keyClaimed(programName, toString(i.caller))))
204- let claimerUnclaimed = value(getInteger(keyUnclaimed(programName, toString(i.caller))))
205- let treasuryContract = value(addressFromString(value(getString(keyTreasuryContract(programName)))))
206- let rewardAssetId = fromBase58String(value(getString(keyRewardAssetId(programName))))
207- let checkCanClaim = if ((claimerUnclaimed > 0))
202+ let checkProgramExists = if (valueOrElse(getBoolean(keyProgramName(programName)), false))
208203 then true
209- else throwErr("nothing to claim")
210- if ((checkCanClaim == checkCanClaim))
204+ else throwErr("program does not exist")
205+ if ((checkProgramExists == checkProgramExists))
211206 then {
212- let newClaimerClaimed = (claimerClaimed + claimerUnclaimed)
213- let newClaimedTotal = (claimedTotal + claimerUnclaimed)
214- let balanceBefore = value(assetBalance(this, rewardAssetId))
215- if ((balanceBefore == balanceBefore))
207+ let claimedTotal = valueOrElse(getInteger(keyClaimedTotal(programName)), 0)
208+ let claimerClaimed = valueOrElse(getInteger(keyClaimed(programName, toString(i.caller))), 0)
209+ let claimerUnclaimed = valueOrElse(getInteger(keyUnclaimed(programName, toString(i.caller))), 0)
210+ let treasuryContract = value(addressFromString(value(getString(keyTreasuryContract(programName)))))
211+ let rewardAssetId = fromBase58String(value(getString(keyRewardAssetId(programName))))
212+ let checkCanClaim = if ((claimerUnclaimed > 0))
213+ then true
214+ else throwErr("nothing to claim")
215+ if ((checkCanClaim == checkCanClaim))
216216 then {
217- let res = invoke(treasuryContract, "withdrawReferralReward", [claimerUnclaimed], nil)
218- if ((res == res))
217+ let newClaimerClaimed = (claimerClaimed + claimerUnclaimed)
218+ let newClaimedTotal = (claimedTotal + claimerUnclaimed)
219+ let balanceBefore = value(assetBalance(this, rewardAssetId))
220+ if ((balanceBefore == balanceBefore))
219221 then {
220- let balanceAfter = value(assetBalance(this, rewardAssetId))
221- if ((balanceAfter == balanceAfter))
222+ let res = invoke(treasuryContract, "withdrawReferralReward", [claimerUnclaimed], nil)
223+ if ((res == res))
222224 then {
223- let balanceDiff = (balanceAfter - balanceBefore)
224- if ((balanceDiff == balanceDiff))
225+ let balanceAfter = value(assetBalance(this, rewardAssetId))
226+ if ((balanceAfter == balanceAfter))
225227 then {
226- let checkBalance = if ((balanceDiff == claimerUnclaimed))
227- then true
228- else throwErr("insufficient balance on referral contract")
229- if ((checkBalance == checkBalance))
230- 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)
228+ let balanceDiff = (balanceAfter - balanceBefore)
229+ if ((balanceDiff == balanceDiff))
230+ then {
231+ let checkBalance = if ((balanceDiff == claimerUnclaimed))
232+ then true
233+ else throwErr("insufficient balance on referral contract")
234+ if ((checkBalance == checkBalance))
235+ 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)
236+ else throw("Strict value is not equal to itself.")
237+ }
231238 else throw("Strict value is not equal to itself.")
232239 }
233240 else throw("Strict value is not equal to itself.")
234241 }
235242 else throw("Strict value is not equal to itself.")
236243 }
237244 else throw("Strict value is not equal to itself.")
238245 }
239246 else throw("Strict value is not equal to itself.")
240247 }
241248 else throw("Strict value is not equal to itself.")
242249 }
243250
244251
245252
246253 @Callable(i)
247254 func claimREADONLY (programName,referralAddress) = {
248255 let claimerClaimed = value(getInteger(keyClaimed(programName, referralAddress)))
249256 let claimerUnclaimed = value(getInteger(keyUnclaimed(programName, referralAddress)))
250257 let newClaimerClaimed = (claimerClaimed + claimerUnclaimed)
251258 $Tuple2(nil, newClaimerClaimed)
252259 }
253260
254261
255262
256263 @Callable(i)
257264 func setManager (pendingManagerPublicKey) = {
258265 let checkCaller = mustManager(i)
259266 if ((checkCaller == checkCaller))
260267 then {
261268 let checkManagerPublicKey = fromBase58String(pendingManagerPublicKey)
262269 if ((checkManagerPublicKey == checkManagerPublicKey))
263270 then [StringEntry(keyPendingManagerPublicKey(), pendingManagerPublicKey)]
264271 else throw("Strict value is not equal to itself.")
265272 }
266273 else throw("Strict value is not equal to itself.")
267274 }
268275
269276
270277
271278 @Callable(i)
272279 func confirmManager () = {
273280 let pm = pendingManagerPublicKeyOrUnit()
274281 let hasPM = if (isDefined(pm))
275282 then true
276283 else throwErr("no pending manager")
277284 if ((hasPM == hasPM))
278285 then {
279286 let checkPM = if ((i.callerPublicKey == value(pm)))
280287 then true
281288 else throwErr("you are not pending manager")
282289 if ((checkPM == checkPM))
283290 then [StringEntry(keyManagerPublicKey(), toBase58String(value(pm))), DeleteEntry(keyPendingManagerPublicKey())]
284291 else throw("Strict value is not equal to itself.")
285292 }
286293 else throw("Strict value is not equal to itself.")
287294 }
288295
289296
290297 @Verifier(tx)
291298 func verify () = {
292299 let targetPublicKey = match managerPublicKeyOrUnit() {
293300 case pk: ByteVector =>
294301 pk
295302 case _: Unit =>
296303 tx.senderPublicKey
297304 case _ =>
298305 throw("Match error")
299306 }
300307 sigVerify(tx.bodyBytes, tx.proofs[0], targetPublicKey)
301308 }
302309

github/deemru/w8io/169f3d6 
44.90 ms