tx · EAfspMPWvgSEhsDSTAVm9BiZPfFp5g4ELj7rc1Ur9Sb7

3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj:  -0.01000000 Waves

2023.01.19 10:56 [2411536] smart account 3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj > SELF 0.00000000 Waves

{ "type": 13, "id": "EAfspMPWvgSEhsDSTAVm9BiZPfFp5g4ELj7rc1Ur9Sb7", "fee": 1000000, "feeAssetId": null, "timestamp": 1674115095529, "version": 2, "chainId": 84, "sender": "3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj", "senderPublicKey": "A2m227AHcq7gWfSU59Q3UJaqkEa7SccFYmJuWHbFrrKE", "proofs": [ "4EGMEZgh75RQfCsgwTxknZCeS4HwHSLS6CCf6UcBxrBDtyUM7myySwWYMnfrnhrRZ6ZHvLzbjLsWQeo1AqqNywps" ], "script": "base64:BgJMCAISBAoCCAgSBAoCBAgSAwoBBBIICgYICAgIAQgSCAoGCAgICAEIEgQKAggIEgUKAwgICBIDCgEIEgYKBAgIAQESBAoCCAgSAwoBCCcAB1ZFUlNJT04CAzEuNQEOZ2V0U3RyaW5nQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkCAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwEPZ2V0SW50ZWdlckJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAAABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEADmRhcHBSdW5uaW5nS2V5AhRjb25mX2RhcHBfaXNfcnVubmluZwARbWFpbnRlbmFuY2VNU0dLZXkCFGNvbmZfbWFpbnRlbmFuY2VfbXNnABJ3aGl0ZWxpc3RlZG9ubHlLZXkCFWNvbmZfd2hpdGVsaXN0ZWRfb25seQALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUOZGFwcFJ1bm5pbmdLZXkGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRFtYWludGVuYW5jZU1TR0tleQIAAA93aGl0ZWxpc3RlZG9ubHkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUSd2hpdGVsaXN0ZWRvbmx5S2V5BgANd2hpdGVsaXN0RGFwcAkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAhNjb25mX3doaXRlbGlzdF9kYXBwAAt1c2VyQWxsb3dlZAIHQUxMT1dFRAAOdXNlclJlZ2lzdGVyZWQCClJFR0lTVEVSRUQADHVzZXJWZXJpZmllZAIIVkVSSUZJRUQADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEnVzZXJDaGFuZ2VSZXF1aXJlZAIPQ0hBTkdFX1JFUVVJUkVEABB1c2VyVW5yZWdpc3RlcmVkAgxVTlJFR0lTVEVSRUQACXVzZXJSZXNldAIFUkVTRVQBC2tleVVzZXJBZGRyAQZjYWxsZXIJAKwCAgIFdXNlcl8FBmNhbGxlcgELa2V5VXNlck5hbWUBBmNhbGxlcgkArAICAgp1c2VyX25hbWVfBQZjYWxsZXIBC2tleVVzZXJEZXNjAQZjYWxsZXIJAKwCAgIKdXNlcl9kZXNjXwUGY2FsbGVyAQ1rZXlVc2VyU29jaWFsAQZjYWxsZXIJAKwCAgIMdXNlcl9zb2NpYWxfBQZjYWxsZXIBDGtleVVzZXJUaHVtYgEGY2FsbGVyCQCsAgICC3VzZXJfdGh1bWJfBQZjYWxsZXIBDWtleVVzZXJTdGF0dXMBBmNhbGxlcgkArAICAgx1c2VyX3N0YXR1c18FBmNhbGxlcgEQa2V5VXNlclJveWFsdGllcwEGY2FsbGVyCQCsAgICD3VzZXJfcm95YWx0aWVzXwUGY2FsbGVyAQtrZXlVc2VyRGF0ZQEGY2FsbGVyCQCsAgICCnVzZXJfZGF0ZV8FBmNhbGxlcgEMa2V5VXNlckVSQzIwAQZjYWxsZXIJAKwCAgILdXNlcl9FUkMyMF8FBmNhbGxlcgESa2V5QXJ0aXN0QWdlbnRBZGRyAQphcnRpc3RBZGRyCQCsAgICDWFydGlzdF9hZ2VudF8FCmFydGlzdEFkZHIBEmtleUFnZW50QXJ0aXN0QWRkcgIJYWdlbnRBZGRyCmFydGlzdEFkZHIJAKwCAgkArAICCQCsAgICBmFnZW50XwUJYWdlbnRBZGRyAgFfBQphcnRpc3RBZGRyAQ9rZXlQcmltYXJ5U2hhcmUBCmFydGlzdEFkZHIJAKwCAgIVYXJ0aXN0X2FnZW50X3ByaW1hcnlfBQphcnRpc3RBZGRyARFrZXlTZWNvbmRhcnlTaGFyZQEKYXJ0aXN0QWRkcgkArAICAhdhcnRpc3RfYWdlbnRfc2Vjb25kYXJ5XwUKYXJ0aXN0QWRkcgELdmFsaWRhdGVDSUQBA2NpZAMJAQhjb250YWlucwIFA2NpZAIBLwMDCQBmAgBMCQCxAgEFA2NpZAkAAAIJALECAQkAkQMCCQC1CQIFA2NpZAIBLwAAADsHCQBmAgAQCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAQcHAQ12YWxpZFVzZXJEYXRhBQZjYWxsZXIEbmFtZQtkZXNjcmlwdGlvbgV0aHVtYgppc0FuVXBkYXRlBAh2YWxpZENJRAMJAQIhPQIJALECAQUFdGh1bWIAAAkBC3ZhbGlkYXRlQ0lEAQUFdGh1bWIGAwkBASEBBQh2YWxpZENJRAkAAgECHENJRCBkb24ndCBtYXRjaCByZXF1aXJlbWVudCEDAwkAAAIFBG5hbWUCAAYJAAACBQtkZXNjcmlwdGlvbgIACQACAQIkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAZgIJALECAQULZGVzY3JpcHRpb24A2AQJAAIBAhk2MDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwkAZgIJALECAQUEbmFtZQAtCQACAQIRNDUgQ2hhci4gbWF4IG5hbWUEBnN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDWtleVVzZXJTdGF0dXMBBQZjYWxsZXIDAwkAAAIFBnN0YXR1cwUNdXNlclN1c3BlbmRlZAYJAAACBQZzdGF0dXMFC3VzZXJSZW1vdmVkCQACAQIbQWNjb3VudCBzdXNwZW5kZWQvIHJlbW92ZWQuAwMJAQEhAQUKaXNBblVwZGF0ZQkAAAIFBnN0YXR1cwUOdXNlclJlZ2lzdGVyZWQHCQACAQISQWxyZWFkeSByZWdpc3RlcmVkAwMDCQEBIQEFCmlzQW5VcGRhdGUJAAACBQZzdGF0dXMCAAcFD3doaXRlbGlzdGVkb25seQcJAAIBAiNDYW4ndCByZWdpc3RlciwgZ2V0IGFwcHJvdmVkIGZpcnN0LgMDAwUKaXNBblVwZGF0ZQkAAAIFBnN0YXR1cwIABwYDBQppc0FuVXBkYXRlCQAAAgUGc3RhdHVzBQt1c2VyQWxsb3dlZAcJAAIBAg5SZWdpc3RlciBmaXJzdAYBEXZhbGlkYXRlTmV3U3RhdHVzAwZzdGF0dXMHYWRkcmVzcw1jdXJyZW50U3RhdHVzBAlhbGxTdGF0dXMJAMwIAgUMdXNlclZlcmlmaWVkCQDMCAIFDnVzZXJSZWdpc3RlcmVkCQDMCAIFDXVzZXJTdXNwZW5kZWQJAMwIAgULdXNlclJlbW92ZWQJAMwIAgULdXNlckFsbG93ZWQJAMwIAgUSdXNlckNoYW5nZVJlcXVpcmVkBQNuaWwEC3N0YXR1c1RvU2V0AwkBD2NvbnRhaW5zRWxlbWVudAIFCWFsbFN0YXR1cwUGc3RhdHVzBQZzdGF0dXMDAwkAAAIFBnN0YXR1cwUJdXNlclJlc2V0CQAAAgUNY3VycmVudFN0YXR1cwULdXNlckFsbG93ZWQHAgAJAAIBAg5Vbmtub3duIHN0YXR1cwQQdXNlcklzUmVnaXN0ZXJlZAkBD2dldEludGVnZXJCeUtleQEJAQtrZXlVc2VyRGF0ZQEFB2FkZHJlc3MDAwkAAAIFEHVzZXJJc1JlZ2lzdGVyZWQAAAkBAiE9AgULc3RhdHVzVG9TZXQFC3VzZXJBbGxvd2VkBwkAAgECMVlvdSBjYW50IHNldCB0aGlzIHN0YXR1cywgdXNlciBpcyBub3QgcmVnaXN0ZXJlZC4DAwkAAAIFDWN1cnJlbnRTdGF0dXMFC3VzZXJBbGxvd2VkCQAAAgULc3RhdHVzVG9TZXQFC3VzZXJBbGxvd2VkBwkAAgECFFVzZXIgYWxyZWFkeSBhbGxvd2VkAwMJAAACBQ1jdXJyZW50U3RhdHVzBQ51c2VyUmVnaXN0ZXJlZAkAAAIFC3N0YXR1c1RvU2V0BQt1c2VyQWxsb3dlZAcJAAIBAiFVc2VyIGFscmVhZHkgYWxsb3dlZCAmIHJlZ2lzdGVyZWQDAwkAAAIFDWN1cnJlbnRTdGF0dXMFDHVzZXJWZXJpZmllZAkAAAIFC3N0YXR1c1RvU2V0BQt1c2VyQWxsb3dlZAcJAAIBAh9Vc2VyIGFscmVhZHkgYWxsb3dlZCAmIHZlcmlmaWVkBQtzdGF0dXNUb1NldAEIbWFrZUpTT04DBG5hbWUFdGh1bWIEZGF0ZQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPeyJ1c2VyX25hbWUiOiAiBQRuYW1lAhEiLCAidXNlcl90aHVtYiI6IgUFdGh1bWICDyIsInVzZXJfZGF0ZSI6IgUEZGF0ZQICIn0BCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAEJZ2V0Q2FsbGVyAgFpBnB1YktleQQGY2FsbGVyAwMJAAACCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAKUIAQUEdGhpcwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAcJAKUIAQkApwgBCQDZBAEFBnB1YktleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNnZXRfc3BvbnNvcmVkX3dhdmVzAwkBAiE9AgUGcHViS2V5AgAJAPwHBAUNd2hpdGVsaXN0RGFwcAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFBnB1YktleQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUTZ2V0X3Nwb25zb3JlZF93YXZlcwUTZ2V0X3Nwb25zb3JlZF93YXZlcwUGY2FsbGVyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCwZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQphcHBSdW5uaW5nAgZpc0xpdmUHbWVzc2FnZQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOZGFwcFJ1bm5pbmdLZXkFBmlzTGl2ZQkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWludGVuYW5jZU1TR0tleQUHbWVzc2FnZQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBEHJlZ2lzdHJhdGlvbk1vZGUBBldMb25seQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUSd2hpdGVsaXN0ZWRvbmx5S2V5BQZXTG9ubHkFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQxyZWdpc3RlclVzZXIGBG5hbWULZGVzY3JpcHRpb24FdGh1bWIGc29jaWFsCXJveWFsdGllcwZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEBmNhbGxlcgkBCWdldENhbGxlcgIFBmludm9rZQUGcHViS2V5BAJpZAkA2AQBCAUGaW52b2tlDXRyYW5zYWN0aW9uSWQECXRpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXADCQEBIQEJAQ12YWxpZFVzZXJEYXRhBQUGY2FsbGVyBQRuYW1lBQtkZXNjcmlwdGlvbgUFdGh1bWIHCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEBGpzb24JAQhtYWtlSlNPTgMJANoEAQkAmwMBBQRuYW1lCQDaBAEJAJsDAQUFdGh1bWIJAKQDAQUJdGltZXN0YW1wAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlVc2VyRGF0ZQEFBmNhbGxlcgUJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlVc2VyQWRkcgEFBmNhbGxlcgkArAICCQCsAgIFAmlkAgFfCQCkAwEFCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5hbWUBBQZjYWxsZXIFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJEZXNjAQUGY2FsbGVyBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclNvY2lhbAEFBmNhbGxlcgUGc29jaWFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyVGh1bWIBBQZjYWxsZXIFBXRodW1iCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBQ51c2VyUmVnaXN0ZXJlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVVzZXJSb3lhbHRpZXMBBQZjYWxsZXIFCXJveWFsdGllcwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICCEFMTE9XRURfBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFDnVzZXJSZWdpc3RlcmVkAgFfBQZjYWxsZXIFBGpzb24FA25pbAZpbnZva2UBCnVwZGF0ZVVzZXIGBG5hbWULZGVzY3JpcHRpb24FdGh1bWIGc29jaWFsCXJveWFsdGllcwZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEBmNhbGxlcgkBCWdldENhbGxlcgIFBmludm9rZQUGcHViS2V5BAZzdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyAwkBASEBCQENdmFsaWRVc2VyRGF0YQUFBmNhbGxlcgUEbmFtZQULZGVzY3JpcHRpb24FBXRodW1iBgkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBARkYXRlCQEPZ2V0SW50ZWdlckJ5S2V5AQkBC2tleVVzZXJEYXRlAQUGY2FsbGVyBARqc29uCQEIbWFrZUpTT04DCQDaBAEJAJsDAQUEbmFtZQkA2gQBCQCbAwEFBXRodW1iCQCkAwEFBGRhdGUDAwkAZgIAAAUJcm95YWx0aWVzBgkAZgIFCXJveWFsdGllcwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5hbWUBBQZjYWxsZXIFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJEZXNjAQUGY2FsbGVyBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclNvY2lhbAEFBmNhbGxlcgUGc29jaWFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyVGh1bWIBBQZjYWxsZXIFBXRodW1iCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5VXNlclJveWFsdGllcwEFBmNhbGxlcgUJcm95YWx0aWVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZzdGF0dXMCAV8FBmNhbGxlcgUEanNvbgUDbmlsBmludm9rZQEMc2V0RVJDMjBVc2VyAgVlcmMyMAZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEBmNhbGxlcgkBCWdldENhbGxlcgIFBmludm9rZQUGcHViS2V5BAZzdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyAwMJAQIhPQIFBnN0YXR1cwUOdXNlclJlZ2lzdGVyZWQJAQIhPQIFBnN0YXR1cwUMdXNlclZlcmlmaWVkBwkAAgECIE5vdCBhbGxvd2VkIHRvIHNldCBFUkMyMCBhZGRyZXNzBAhmaXJzdFR3bwkArwICBQVlcmMyMAACAwMJAQIhPQIFCGZpcnN0VHdvAgIweAYJAQIhPQIJALECAQUFZXJjMjAAKgkAAgECHFRoaXMgaXMgbm90IGFuIGVyYzIwIGFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleVVzZXJFUkMyMAEFBmNhbGxlcgUFZXJjMjAFA25pbAZpbnZva2UBEGNoYW5nZVVzZXJTdGF0dXMDB2FkZHJlc3MGc3RhdHVzBG5vdGUEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgQNY3VycmVudFN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDWtleVVzZXJTdGF0dXMBBQdhZGRyZXNzBAtzdGF0dXNUb1NldAkBEXZhbGlkYXRlTmV3U3RhdHVzAwUGc3RhdHVzBQdhZGRyZXNzBQ1jdXJyZW50U3RhdHVzBARuYW1lCQDaBAEJAJsDAQkBDmdldFN0cmluZ0J5S2V5AQkBC2tleVVzZXJOYW1lAQUHYWRkcmVzcwQFdGh1bWIJANoEAQkAmwMBCQEOZ2V0U3RyaW5nQnlLZXkBCQEMa2V5VXNlclRodW1iAQUHYWRkcmVzcwQEZGF0ZQkBD2dldEludGVnZXJCeUtleQEJAQtrZXlVc2VyRGF0ZQEFB2FkZHJlc3MEBGpzb24JAQhtYWtlSlNPTgMFBG5hbWUFBXRodW1iCQCkAwEFBGRhdGUDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlVc2VyU3RhdHVzAQUHYWRkcmVzcwULc3RhdHVzVG9TZXQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIFDWN1cnJlbnRTdGF0dXMCAV8FB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFC3N0YXR1c1RvU2V0AgFfBQdhZGRyZXNzBQRqc29uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIKdXNlcl9ub3RlXwUHYWRkcmVzcwUEbm90ZQUDbmlsCQACAQIhTm90IGFsbG93ZWQgdG8gY2hhbmdlIHVzZXIgc3RhdHVzBmludm9rZQEKZGVsZXRlVXNlcgEHYWRkcmVzcwQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyBA1jdXJyZW50U3RhdHVzCQEOZ2V0U3RyaW5nQnlLZXkBCQENa2V5VXNlclN0YXR1cwEFB2FkZHJlc3MDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlVc2VyRGF0ZQEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleVVzZXJBZGRyAQUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5VXNlck5hbWUBBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlVc2VyRGVzYwEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDWtleVVzZXJTb2NpYWwBBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQxrZXlVc2VyVGh1bWIBBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIKdXNlcl9ub3RlXwUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgUNY3VycmVudFN0YXR1cwIBXwUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQEQa2V5VXNlclJveWFsdGllcwEFB2FkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVVzZXJTdGF0dXMBBQdhZGRyZXNzBQt1c2VyUmVtb3ZlZAUDbmlsCQACAQILTm90IGFsbG93ZWQBaQEIc2V0QWdlbnQECmFydGlzdEFkZHIJYWdlbnRBZGRyDHByaW1hcnlTaGFyZQ5zZWNvbmRhcnlTaGFyZQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQGY2FsbGVyCQClCAEIBQFpBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDAwkBAiE9AgkAsQIBBQphcnRpc3RBZGRyACMGCQECIT0CCQCxAgEFCWFnZW50QWRkcgAjCQACAQINV3JvbmcgYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5QXJ0aXN0QWdlbnRBZGRyAQUKYXJ0aXN0QWRkcgUJYWdlbnRBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBZ2VudEFydGlzdEFkZHICBQlhZ2VudEFkZHIFCmFydGlzdEFkZHIFCmFydGlzdEFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ9rZXlQcmltYXJ5U2hhcmUBBQphcnRpc3RBZGRyBQxwcmltYXJ5U2hhcmUJAMwIAgkBDEludGVnZXJFbnRyeQIJARFrZXlTZWNvbmRhcnlTaGFyZQEFCmFydGlzdEFkZHIFDnNlY29uZGFyeVNoYXJlBQNuaWwJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAWkBCnVuc2V0QWdlbnQCCmFydGlzdEFkZHIJYWdlbnRBZGRyAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAZjYWxsZXIJAKUIAQgFAWkGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMDCQECIT0CCQCxAgEFCmFydGlzdEFkZHIAIwYJAQIhPQIJALECAQUJYWdlbnRBZGRyACMJAAIBAg1Xcm9uZyBhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQphcnRpc3RBZGRyCQDMCAIJAQtEZWxldGVFbnRyeQEJARJrZXlBZ2VudEFydGlzdEFkZHICBQlhZ2VudEFkZHIFCmFydGlzdEFkZHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBD2tleVByaW1hcnlTaGFyZQEFCmFydGlzdEFkZHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEWtleVNlY29uZGFyeVNoYXJlAQUKYXJ0aXN0QWRkcgUDbmlsCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQtkZWxldGVFbnRyeQEFZW50cnkEBmNhbGxlcgkApQgBCAUBaQZjYWxsZXIDCQAAAgUGY2FsbGVyBQVjaHJpcwkAzAgCCQELRGVsZXRlRW50cnkBBQVlbnRyeQUDbmlsCQACAQICbm8BAnR4AQh2ZXJpZmllcgAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDADAwkAAAIIBQNpbnYIZnVuY3Rpb24CDHJlZ2lzdGVyVXNlcgkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MADQMDCQAAAggFA2ludghmdW5jdGlvbgIKdXBkYXRlVXNlcgkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MADAMDCQAAAggFA2ludghmdW5jdGlvbgIMc2V0RVJDMjBVc2VyCQAAAggFA2ludgRkQXBwBQR0aGlzBwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAFCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5LviVBg==", "height": 2411536, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3YHRUcANtrH7KZzFBtboixMk47hpepQi2SA6ZYQwtEjP Next: Bm5opMCMzNNvTW3yyfUJnAFaJYQE8JGQiaaZDVdXHNos Diff:
OldNewDifferences
9292 else false
9393
9494
95-func N (w,O,P,Q,R) = if (true)
96- then throw(w)
97- else {
98- let S = if ((size(Q) != 0))
99- then L(Q)
100- else true
101- if (!(S))
102- then throw("CID don't match requirement!")
103- else if (if ((O == ""))
104- then true
105- else (P == ""))
106- then throw("Name and description cannot be empty")
107- else if ((size(P) > 600))
108- then throw("600 Char. max description")
109- else if ((size(O) > 45))
110- then throw("45 Char. max name")
111- else {
112- let T = b(B(w))
113- if (if ((T == q))
114- then true
115- else (T == r))
116- then throw("Account suspended/ removed.")
117- else if (if (!(R))
118- then (T == o)
95+func N (w,O,P,Q,R) = {
96+ let S = if ((size(Q) != 0))
97+ then L(Q)
98+ else true
99+ if (!(S))
100+ then throw("CID don't match requirement!")
101+ else if (if ((O == ""))
102+ then true
103+ else (P == ""))
104+ then throw("Name and description cannot be empty")
105+ else if ((size(P) > 600))
106+ then throw("600 Char. max description")
107+ else if ((size(O) > 45))
108+ then throw("45 Char. max name")
109+ else {
110+ let T = b(B(w))
111+ if (if ((T == q))
112+ then true
113+ else (T == r))
114+ then throw("Account suspended/ removed.")
115+ else if (if (!(R))
116+ then (T == o)
117+ else false)
118+ then throw("Already registered")
119+ else if (if (if (!(R))
120+ then (T == "")
119121 else false)
120- then throw("Already registered")
121- else if (if (if (!(R))
122+ then l
123+ else false)
124+ then throw("Can't register, get approved first.")
125+ else if (if (if (R)
122126 then (T == "")
123127 else false)
124- then l
125- else false)
126- then throw("Can't register, get approved first.")
127- else if (if (if (R)
128- then (T == "")
128+ then true
129+ else if (R)
130+ then (T == n)
129131 else false)
130- then true
131- else if (R)
132- then (T == n)
133- else false)
134- then throw("Register first")
135- else true
136- }
137- }
132+ then throw("Register first")
133+ else true
134+ }
135+ }
138136
139137
140138 func U (T,V,W) = {
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.5"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 func d (c) = valueOrElse(getBoolean(this, c), false)
1010
1111
1212 func e (c) = valueOrElse(getInteger(this, c), 0)
1313
1414
1515 let f = b("conf_admin_1")
1616
1717 let g = "conf_dapp_is_running"
1818
1919 let h = "conf_maintenance_msg"
2020
2121 let i = "conf_whitelisted_only"
2222
2323 let j = valueOrElse(getBoolean(this, g), true)
2424
2525 let k = valueOrElse(getString(this, h), "")
2626
2727 let l = valueOrElse(getBoolean(this, i), true)
2828
2929 let m = value(addressFromString(b("conf_whitelist_dapp")))
3030
3131 let n = "ALLOWED"
3232
3333 let o = "REGISTERED"
3434
3535 let p = "VERIFIED"
3636
3737 let q = "SUSPENDED"
3838
3939 let r = "REMOVED"
4040
4141 let s = "CHANGE_REQUIRED"
4242
4343 let t = "UNREGISTERED"
4444
4545 let u = "RESET"
4646
4747 func v (w) = ("user_" + w)
4848
4949
5050 func x (w) = ("user_name_" + w)
5151
5252
5353 func y (w) = ("user_desc_" + w)
5454
5555
5656 func z (w) = ("user_social_" + w)
5757
5858
5959 func A (w) = ("user_thumb_" + w)
6060
6161
6262 func B (w) = ("user_status_" + w)
6363
6464
6565 func C (w) = ("user_royalties_" + w)
6666
6767
6868 func D (w) = ("user_date_" + w)
6969
7070
7171 func E (w) = ("user_ERC20_" + w)
7272
7373
7474 func F (G) = ("artist_agent_" + G)
7575
7676
7777 func H (I,G) = ((("agent_" + I) + "_") + G)
7878
7979
8080 func J (G) = ("artist_agent_primary_" + G)
8181
8282
8383 func K (G) = ("artist_agent_secondary_" + G)
8484
8585
8686 func L (M) = if (contains(M, "/"))
8787 then if (if ((76 > size(M)))
8888 then (size(split(M, "/")[0]) == 59)
8989 else false)
9090 then (16 > size(split(M, "/")[1]))
9191 else false
9292 else false
9393
9494
95-func N (w,O,P,Q,R) = if (true)
96- then throw(w)
97- else {
98- let S = if ((size(Q) != 0))
99- then L(Q)
100- else true
101- if (!(S))
102- then throw("CID don't match requirement!")
103- else if (if ((O == ""))
104- then true
105- else (P == ""))
106- then throw("Name and description cannot be empty")
107- else if ((size(P) > 600))
108- then throw("600 Char. max description")
109- else if ((size(O) > 45))
110- then throw("45 Char. max name")
111- else {
112- let T = b(B(w))
113- if (if ((T == q))
114- then true
115- else (T == r))
116- then throw("Account suspended/ removed.")
117- else if (if (!(R))
118- then (T == o)
95+func N (w,O,P,Q,R) = {
96+ let S = if ((size(Q) != 0))
97+ then L(Q)
98+ else true
99+ if (!(S))
100+ then throw("CID don't match requirement!")
101+ else if (if ((O == ""))
102+ then true
103+ else (P == ""))
104+ then throw("Name and description cannot be empty")
105+ else if ((size(P) > 600))
106+ then throw("600 Char. max description")
107+ else if ((size(O) > 45))
108+ then throw("45 Char. max name")
109+ else {
110+ let T = b(B(w))
111+ if (if ((T == q))
112+ then true
113+ else (T == r))
114+ then throw("Account suspended/ removed.")
115+ else if (if (!(R))
116+ then (T == o)
117+ else false)
118+ then throw("Already registered")
119+ else if (if (if (!(R))
120+ then (T == "")
119121 else false)
120- then throw("Already registered")
121- else if (if (if (!(R))
122+ then l
123+ else false)
124+ then throw("Can't register, get approved first.")
125+ else if (if (if (R)
122126 then (T == "")
123127 else false)
124- then l
125- else false)
126- then throw("Can't register, get approved first.")
127- else if (if (if (R)
128- then (T == "")
128+ then true
129+ else if (R)
130+ then (T == n)
129131 else false)
130- then true
131- else if (R)
132- then (T == n)
133- else false)
134- then throw("Register first")
135- else true
136- }
137- }
132+ then throw("Register first")
133+ else true
134+ }
135+ }
138136
139137
140138 func U (T,V,W) = {
141139 let X = [p, o, q, r, n, s]
142140 let Y = if (containsElement(X, T))
143141 then T
144142 else if (if ((T == u))
145143 then (W == n)
146144 else false)
147145 then ""
148146 else throw("Unknown status")
149147 let Z = e(D(V))
150148 if (if ((Z == 0))
151149 then (Y != n)
152150 else false)
153151 then throw("You cant set this status, user is not registered.")
154152 else if (if ((W == n))
155153 then (Y == n)
156154 else false)
157155 then throw("User already allowed")
158156 else if (if ((W == o))
159157 then (Y == n)
160158 else false)
161159 then throw("User already allowed & registered")
162160 else if (if ((W == p))
163161 then (Y == n)
164162 else false)
165163 then throw("User already allowed & verified")
166164 else Y
167165 }
168166
169167
170168 func aa (O,Q,ab) = (((((("{\"user_name\": \"" + O) + "\", \"user_thumb\":\"") + Q) + "\",\"user_date\":\"") + ab) + "\"}")
171169
172170
173171 func ac (ad) = {
174172 let ae = ad
175173 if ($isInstanceOf(ae, "String"))
176174 then {
177175 let af = ae
178176 af
179177 }
180178 else throw("Sponsored Public Key String expected")
181179 }
182180
183181
184182 func ag (ah,ai) = {
185183 let w = if (if ((toBase58String(ah.caller.bytes) == toString(this)))
186184 then (size(ah.payments) == 0)
187185 else false)
188186 then toString(addressFromPublicKey(fromBase58String(ai)))
189187 else toBase58String(ah.caller.bytes)
190188 let aj = if ((ai != ""))
191189 then invoke(m, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(ai)))], nil)
192190 else unit
193191 if ((aj == aj))
194192 then w
195193 else throw("Strict value is not equal to itself.")
196194 }
197195
198196
199197 @Callable(ak)
200198 func setConf (c,al) = {
201199 let w = toString(ak.caller)
202200 if (containsElement([f, toString(this)], w))
203201 then [StringEntry(c, al)]
204202 else throw("You are not allowed to change this")
205203 }
206204
207205
208206
209207 @Callable(ak)
210208 func appRunning (am,an) = {
211209 let w = toString(ak.caller)
212210 if (containsElement([f, toString(this)], w))
213211 then [BooleanEntry(g, am), StringEntry(h, an)]
214212 else throw("You are not allowed to change this")
215213 }
216214
217215
218216
219217 @Callable(ak)
220218 func registrationMode (ao) = {
221219 let w = toString(ak.caller)
222220 if (containsElement([f, toString(this)], w))
223221 then [BooleanEntry(i, ao)]
224222 else throw("You are not allowed to change this")
225223 }
226224
227225
228226
229227 @Callable(ak)
230228 func registerUser (O,P,Q,ap,aq,ai) = if (!(j))
231229 then throw(k)
232230 else {
233231 let w = ag(ak, ai)
234232 let ar = toBase58String(ak.transactionId)
235233 let as = lastBlock.timestamp
236234 if (!(N(w, O, P, Q, false)))
237235 then throw("Something went wrong")
238236 else {
239237 let at = aa(toBase64String(toBytes(O)), toBase64String(toBytes(Q)), toString(as))
240238 if (if ((0 > aq))
241239 then true
242240 else (aq > 1000))
243241 then throw("Royalties cannot be less than 0% or higher than 10%")
244242 else [IntegerEntry(D(w), as), StringEntry(v(w), ((ar + "_") + toString(as))), StringEntry(x(w), O), StringEntry(y(w), P), StringEntry(z(w), ap), StringEntry(A(w), Q), StringEntry(B(w), o), IntegerEntry(C(w), aq), DeleteEntry(("ALLOWED_" + w)), StringEntry(((o + "_") + w), at)]
245243 }
246244 }
247245
248246
249247
250248 @Callable(ak)
251249 func updateUser (O,P,Q,ap,aq,ai) = if (!(j))
252250 then throw(k)
253251 else {
254252 let w = ag(ak, ai)
255253 let T = b(B(w))
256254 if (!(N(w, O, P, Q, true)))
257255 then throw("Something went wrong")
258256 else {
259257 let ab = e(D(w))
260258 let at = aa(toBase64String(toBytes(O)), toBase64String(toBytes(Q)), toString(ab))
261259 if (if ((0 > aq))
262260 then true
263261 else (aq > 1000))
264262 then throw("Royalties cannot be less than 0% or higher than 10%")
265263 else [StringEntry(x(w), O), StringEntry(y(w), P), StringEntry(z(w), ap), StringEntry(A(w), Q), IntegerEntry(C(w), aq), StringEntry(((T + "_") + w), at)]
266264 }
267265 }
268266
269267
270268
271269 @Callable(ak)
272270 func setERC20User (au,ai) = if (!(j))
273271 then throw(k)
274272 else {
275273 let w = ag(ak, ai)
276274 let T = b(B(w))
277275 if (if ((T != o))
278276 then (T != p)
279277 else false)
280278 then throw("Not allowed to set ERC20 address")
281279 else {
282280 let av = take(au, 2)
283281 if (if ((av != "0x"))
284282 then true
285283 else (size(au) != 42))
286284 then throw("This is not an erc20 address")
287285 else [StringEntry(E(w), au)]
288286 }
289287 }
290288
291289
292290
293291 @Callable(ak)
294292 func changeUserStatus (V,T,aw) = {
295293 let w = toString(ak.caller)
296294 let W = b(B(V))
297295 let Y = U(T, V, W)
298296 let O = toBase64String(toBytes(b(x(V))))
299297 let Q = toBase64String(toBytes(b(A(V))))
300298 let ab = e(D(V))
301299 let at = aa(O, Q, toString(ab))
302300 if (containsElement([f, toString(this)], w))
303301 then [StringEntry(B(V), Y), DeleteEntry(((W + "_") + V)), StringEntry(((Y + "_") + V), at), StringEntry(("user_note_" + V), aw)]
304302 else throw("Not allowed to change user status")
305303 }
306304
307305
308306
309307 @Callable(ak)
310308 func deleteUser (V) = {
311309 let w = toString(ak.caller)
312310 let W = b(B(V))
313311 if (containsElement([f, toString(this)], w))
314312 then [DeleteEntry(D(V)), DeleteEntry(v(V)), DeleteEntry(x(V)), DeleteEntry(y(V)), DeleteEntry(z(V)), DeleteEntry(A(V)), DeleteEntry(("user_note_" + V)), DeleteEntry(((W + "_") + V)), DeleteEntry(C(V)), StringEntry(B(V), r)]
315313 else throw("Not allowed")
316314 }
317315
318316
319317
320318 @Callable(ah)
321319 func setAgent (G,I,ax,ay) = if (!(j))
322320 then throw(k)
323321 else {
324322 let w = toString(ah.caller)
325323 if (containsElement([f, toString(this)], w))
326324 then if (if ((size(G) != 35))
327325 then true
328326 else (size(I) != 35))
329327 then throw("Wrong address")
330328 else [StringEntry(F(G), I), StringEntry(H(I, G), G), IntegerEntry(J(G), ax), IntegerEntry(K(G), ay)]
331329 else throw("You are not allowed")
332330 }
333331
334332
335333
336334 @Callable(ah)
337335 func unsetAgent (G,I) = if (!(j))
338336 then throw(k)
339337 else {
340338 let w = toString(ah.caller)
341339 if (containsElement([f, toString(this)], w))
342340 then if (if ((size(G) != 35))
343341 then true
344342 else (size(I) != 35))
345343 then throw("Wrong address")
346344 else [DeleteEntry(F(G)), DeleteEntry(H(I, G)), DeleteEntry(J(G)), DeleteEntry(K(G))]
347345 else throw("You are not allowed")
348346 }
349347
350348
351349
352350 @Callable(ah)
353351 func deleteEntry (az) = {
354352 let w = toString(ah.caller)
355353 if ((w == f))
356354 then [DeleteEntry(az)]
357355 else throw("no")
358356 }
359357
360358
361359 @Verifier(aA)
362360 func aB () = {
363361 let ae = aA
364362 if ($isInstanceOf(ae, "InvokeScriptTransaction"))
365363 then {
366364 let aC = ae
367365 if (if ((aC.function == "registerUser"))
368366 then (aC.dApp == this)
369367 else false)
370368 then sigVerify(aA.bodyBytes, aA.proofs[0], fromBase58String(ac(aC.args[13])))
371369 else if (if ((aC.function == "updateUser"))
372370 then (aC.dApp == this)
373371 else false)
374372 then sigVerify(aA.bodyBytes, aA.proofs[0], fromBase58String(ac(aC.args[12])))
375373 else if (if ((aC.function == "setERC20User"))
376374 then (aC.dApp == this)
377375 else false)
378376 then sigVerify(aA.bodyBytes, aA.proofs[0], fromBase58String(ac(aC.args[5])))
379377 else sigVerify(aA.bodyBytes, aA.proofs[0], aA.senderPublicKey)
380378 }
381379 else sigVerify(aA.bodyBytes, aA.proofs[0], aA.senderPublicKey)
382380 }
383381

github/deemru/w8io/c3f4982 
55.96 ms