tx · 6Cmwdk9yHVTM44W42ZThcWCs9NWpGgHqPJ3WewfqK6AA

3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj:  -0.01300000 Waves

2023.01.28 07:27 [2424336] smart account 3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj > SELF 0.00000000 Waves

{ "type": 13, "id": "6Cmwdk9yHVTM44W42ZThcWCs9NWpGgHqPJ3WewfqK6AA", "fee": 1300000, "feeAssetId": null, "timestamp": 1674880063353, "version": 2, "chainId": 84, "sender": "3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj", "senderPublicKey": "A2m227AHcq7gWfSU59Q3UJaqkEa7SccFYmJuWHbFrrKE", "proofs": [ "4LBDLEuDrHEC5EdxLeV6N1QTUJc7QQ33riQQgJDB6yXdX3nFjfZg52VPXa1hHQT2a84FnZBJhvjmSjauNQq86DDo" ], "script": "base64:BgJRCAISBAoCCAgSBAoCBAgSAwoBBBIICgYICAgIAQgSCAoGCAgICAEIEgQKAggIEgoKCAgICAgBAQEBEgMKAQgSBgoECAgBARIECgIICBIDCgEIKwAHVkVSU0lPTgIDMS41AQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAQ9nZXRCb29sZWFuQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAAFY2hyaXMJAQ5nZXRTdHJpbmdCeUtleQECDGNvbmZfYWRtaW5fMQAOZGFwcFJ1bm5pbmdLZXkCFGNvbmZfZGFwcF9pc19ydW5uaW5nABFtYWludGVuYW5jZU1TR0tleQIUY29uZl9tYWludGVuYW5jZV9tc2cAEndoaXRlbGlzdGVkb25seUtleQIVY29uZl93aGl0ZWxpc3RlZF9vbmx5AAtkYXBwUnVubmluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ5kYXBwUnVubmluZ0tleQYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFEW1haW50ZW5hbmNlTVNHS2V5AgAAD3doaXRlbGlzdGVkb25seQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBRJ3aGl0ZWxpc3RlZG9ubHlLZXkGAA13aGl0ZWxpc3REYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECE2NvbmZfd2hpdGVsaXN0X2RhcHAACHNpZ25EYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfc2lnbndlYl9kYXBwAAt1c2VyQWxsb3dlZAIHQUxMT1dFRAAOdXNlclJlZ2lzdGVyZWQCClJFR0lTVEVSRUQADHVzZXJWZXJpZmllZAIIVkVSSUZJRUQADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAALdXNlclJlbW92ZWQCB1JFTU9WRUQAEnVzZXJDaGFuZ2VSZXF1aXJlZAIPQ0hBTkdFX1JFUVVJUkVEABB1c2VyVW5yZWdpc3RlcmVkAgxVTlJFR0lTVEVSRUQACXVzZXJSZXNldAIFUkVTRVQBC2tleVVzZXJBZGRyAQZjYWxsZXIJAKwCAgIFdXNlcl8FBmNhbGxlcgELa2V5VXNlck5hbWUBBmNhbGxlcgkArAICAgp1c2VyX25hbWVfBQZjYWxsZXIBC2tleVVzZXJEZXNjAQZjYWxsZXIJAKwCAgIKdXNlcl9kZXNjXwUGY2FsbGVyAQ1rZXlVc2VyU29jaWFsAQZjYWxsZXIJAKwCAgIMdXNlcl9zb2NpYWxfBQZjYWxsZXIBDGtleVVzZXJUaHVtYgEGY2FsbGVyCQCsAgICC3VzZXJfdGh1bWJfBQZjYWxsZXIBDWtleVVzZXJTdGF0dXMBBmNhbGxlcgkArAICAgx1c2VyX3N0YXR1c18FBmNhbGxlcgEQa2V5VXNlclJveWFsdGllcwEGY2FsbGVyCQCsAgICD3VzZXJfcm95YWx0aWVzXwUGY2FsbGVyAQtrZXlVc2VyRGF0ZQEGY2FsbGVyCQCsAgICCnVzZXJfZGF0ZV8FBmNhbGxlcgEMa2V5VXNlckVSQzIwAQZjYWxsZXIJAKwCAgILdXNlcl9FUkMyMF8FBmNhbGxlcgELa2V5VXNlck5vdGUBBmNhbGxlcgkArAICAgp1c2VyX25vdGVfBQZjYWxsZXIBDGtleVVzZXJMYWJlbAEGY2FsbGVyCQCsAgICC3VzZXJfbGFiZWxfBQZjYWxsZXIBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyARJrZXlBZ2VudEFydGlzdEFkZHICCWFnZW50QWRkcgphcnRpc3RBZGRyCQCsAgIJAKwCAgkArAICAgZhZ2VudF8FCWFnZW50QWRkcgIBXwUKYXJ0aXN0QWRkcgEPa2V5UHJpbWFyeVNoYXJlAQphcnRpc3RBZGRyCQCsAgICFWFydGlzdF9hZ2VudF9wcmltYXJ5XwUKYXJ0aXN0QWRkcgERa2V5U2Vjb25kYXJ5U2hhcmUBCmFydGlzdEFkZHIJAKwCAgIXYXJ0aXN0X2FnZW50X3NlY29uZGFyeV8FCmFydGlzdEFkZHIBDmNoZWNrV2hpdGVsaXN0AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUNd2hpdGVsaXN0RGFwcAUDa2V5AAABC3ZhbGlkYXRlQ0lEAQNjaWQDCQEIY29udGFpbnMCBQNjaWQCAS8DAwkAZgIATAkAsQIBBQNjaWQJAAACCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAAA7BwkAZgIAEAkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAEHBwENdmFsaWRVc2VyRGF0YQUGY2FsbGVyBG5hbWULZGVzY3JpcHRpb24FdGh1bWIKaXNBblVwZGF0ZQQIdmFsaWRDSUQDCQECIT0CCQCxAgEFBXRodW1iAAAJAQt2YWxpZGF0ZUNJRAEFBXRodW1iBgMJAQEhAQUIdmFsaWRDSUQJAAIBAhxDSUQgZG9uJ3QgbWF0Y2ggcmVxdWlyZW1lbnQhAwMJAAACBQRuYW1lAgAGCQAAAgULZGVzY3JpcHRpb24CAAkAAgECJE5hbWUgYW5kIGRlc2NyaXB0aW9uIGNhbm5vdCBiZSBlbXB0eQMJAGYCCQCxAgEFC2Rlc2NyaXB0aW9uANgECQACAQIZNjAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMJAGYCCQCxAgEFBG5hbWUALQkAAgECETQ1IENoYXIuIG1heCBuYW1lBAZzdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyAwMJAAACBQZzdGF0dXMFDXVzZXJTdXNwZW5kZWQGCQAAAgUGc3RhdHVzBQt1c2VyUmVtb3ZlZAkAAgECG0FjY291bnQgc3VzcGVuZGVkLyByZW1vdmVkLgMDCQEBIQEFCmlzQW5VcGRhdGUJAAACBQZzdGF0dXMFDnVzZXJSZWdpc3RlcmVkBwkAAgECEkFscmVhZHkgcmVnaXN0ZXJlZAMDAwkBASEBBQppc0FuVXBkYXRlCQAAAgUGc3RhdHVzAgAHBQ93aGl0ZWxpc3RlZG9ubHkHCQACAQIjQ2FuJ3QgcmVnaXN0ZXIsIGdldCBhcHByb3ZlZCBmaXJzdC4DAwMFCmlzQW5VcGRhdGUJAAACBQZzdGF0dXMCAAcGAwUKaXNBblVwZGF0ZQkAAAIFBnN0YXR1cwULdXNlckFsbG93ZWQHCQACAQIOUmVnaXN0ZXIgZmlyc3QGARF2YWxpZGF0ZU5ld1N0YXR1cwMGc3RhdHVzB2FkZHJlc3MNY3VycmVudFN0YXR1cwQJYWxsU3RhdHVzCQDMCAIFDHVzZXJWZXJpZmllZAkAzAgCBQ51c2VyUmVnaXN0ZXJlZAkAzAgCBQ11c2VyU3VzcGVuZGVkCQDMCAIFC3VzZXJSZW1vdmVkCQDMCAIFC3VzZXJBbGxvd2VkCQDMCAIFEnVzZXJDaGFuZ2VSZXF1aXJlZAUDbmlsBAtzdGF0dXNUb1NldAMJAQ9jb250YWluc0VsZW1lbnQCBQlhbGxTdGF0dXMFBnN0YXR1cwUGc3RhdHVzAwMJAAACBQZzdGF0dXMFCXVzZXJSZXNldAkAAAIFDWN1cnJlbnRTdGF0dXMFC3VzZXJBbGxvd2VkBwIACQACAQIOVW5rbm93biBzdGF0dXMEEHVzZXJJc1JlZ2lzdGVyZWQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQELa2V5VXNlckRhdGUBBQdhZGRyZXNzAwMJAAACBRB1c2VySXNSZWdpc3RlcmVkAAAJAQIhPQIFC3N0YXR1c1RvU2V0BQt1c2VyQWxsb3dlZAcJAAIBAjFZb3UgY2FudCBzZXQgdGhpcyBzdGF0dXMsIHVzZXIgaXMgbm90IHJlZ2lzdGVyZWQuAwMJAAACBQ1jdXJyZW50U3RhdHVzBQt1c2VyQWxsb3dlZAkAAAIFC3N0YXR1c1RvU2V0BQt1c2VyQWxsb3dlZAcJAAIBAhRVc2VyIGFscmVhZHkgYWxsb3dlZAMDCQAAAgUNY3VycmVudFN0YXR1cwUOdXNlclJlZ2lzdGVyZWQJAAACBQtzdGF0dXNUb1NldAULdXNlckFsbG93ZWQHCQACAQIhVXNlciBhbHJlYWR5IGFsbG93ZWQgJiByZWdpc3RlcmVkAwMJAAACBQ1jdXJyZW50U3RhdHVzBQx1c2VyVmVyaWZpZWQJAAACBQtzdGF0dXNUb1NldAULdXNlckFsbG93ZWQHCQACAQIfVXNlciBhbHJlYWR5IGFsbG93ZWQgJiB2ZXJpZmllZAULc3RhdHVzVG9TZXQBCG1ha2VKU09OAwRuYW1lBXRodW1iBGRhdGUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICD3sidXNlcl9uYW1lIjogIgUEbmFtZQIRIiwgInVzZXJfdGh1bWIiOiIFBXRodW1iAg8iLCJ1c2VyX2RhdGUiOiIFBGRhdGUCAiJ9AQhhc1N0cmluZwECYnYEByRtYXRjaDAFAmJ2AwkAAQIFByRtYXRjaDACBlN0cmluZwQDYnYwBQckbWF0Y2gwBQNidjAJAAIBAiRTcG9uc29yZWQgUHVibGljIEtleSBTdHJpbmcgZXhwZWN0ZWQBCWdldENhbGxlcgIBaQZwdWJLZXkEC2lzU3BvbnNvcmVkAwkBAiE9AgUGcHViS2V5AgAJAQt2YWx1ZU9yRWxzZQIJAQ5jaGVja1doaXRlbGlzdAEJAKwCAgkApQgBCQCnCAEJANkEAQUGcHViS2V5AglfZnJlZV90eHMAAAAABAZjYWxsZXIDAwkAAAIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkApQgBBQR0aGlzCQBmAgULaXNTcG9uc29yZWQAAAcJAKUIAQkApwgBCQDZBAEFBnB1YktleQkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzBBNnZXRfc3BvbnNvcmVkX3dhdmVzAwkBAiE9AgUGcHViS2V5AgAJAPwHBAUNd2hpdGVsaXN0RGFwcAIJdXNlRnJlZVR4CQDMCAIJAKUIAQkApwgBCQDZBAEFBnB1YktleQUDbmlsBQNuaWwFBHVuaXQDCQAAAgUTZ2V0X3Nwb25zb3JlZF93YXZlcwUTZ2V0X3Nwb25zb3JlZF93YXZlcwkAlAoCBQZjYWxsZXIJAGYCBQtpc1Nwb25zb3JlZAAACQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCwZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQphcHBSdW5uaW5nAgZpc0xpdmUHbWVzc2FnZQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOZGFwcFJ1bm5pbmdLZXkFBmlzTGl2ZQkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWludGVuYW5jZU1TR0tleQUHbWVzc2FnZQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBEHJlZ2lzdHJhdGlvbk1vZGUBBldMb25seQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUSd2hpdGVsaXN0ZWRvbmx5S2V5BQZXTG9ubHkFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQxyZWdpc3RlclVzZXIGBG5hbWULZGVzY3JpcHRpb24FdGh1bWIGc29jaWFsCXJveWFsdGllcwZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cECyR0MDczOTY3NDQ4CQEJZ2V0Q2FsbGVyAgUGaW52b2tlBQZwdWJLZXkEBmNhbGxlcggFCyR0MDczOTY3NDQ4Al8xBAtpc1Nwb25zb3JlZAgFCyR0MDczOTY3NDQ4Al8yBAJpZAkA2AQBCAUGaW52b2tlDXRyYW5zYWN0aW9uSWQECXRpbWVzdGFtcAgFCWxhc3RCbG9jawl0aW1lc3RhbXAEBG5vdGUJAQ5nZXRTdHJpbmdCeUtleQEJAQtrZXlVc2VyTm90ZQEFBmNhbGxlcgQFbGFiZWwJAQ5nZXRTdHJpbmdCeUtleQEJAQxrZXlVc2VyTGFiZWwBBQZjYWxsZXIDCQEBIQEJAQ12YWxpZFVzZXJEYXRhBQUGY2FsbGVyBQRuYW1lBQtkZXNjcmlwdGlvbgUFdGh1bWIHCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEBGpzb24JAQhtYWtlSlNPTgMJANoEAQkAmwMBBQRuYW1lCQDaBAEJAJsDAQUFdGh1bWIJAKQDAQUJdGltZXN0YW1wAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlVc2VyRGF0ZQEFBmNhbGxlcgUJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlVc2VyQWRkcgEFBmNhbGxlcgkArAICCQCsAgIFAmlkAgFfCQCkAwEFCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5hbWUBBQZjYWxsZXIFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJEZXNjAQUGY2FsbGVyBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclNvY2lhbAEFBmNhbGxlcgUGc29jaWFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyVGh1bWIBBQZjYWxsZXIFBXRodW1iCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBQ51c2VyUmVnaXN0ZXJlZAkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVVzZXJSb3lhbHRpZXMBBQZjYWxsZXIFCXJveWFsdGllcwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICCEFMTE9XRURfBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFDnVzZXJSZWdpc3RlcmVkAgFfBQZjYWxsZXIFBGpzb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJOb3RlAQUGY2FsbGVyBQRub3RlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyTGFiZWwBBQZjYWxsZXIFBWxhYmVsBQNuaWwFCnR4VG9DYWxsZXIGaW52b2tlAQp1cGRhdGVVc2VyBgRuYW1lC2Rlc2NyaXB0aW9uBXRodW1iBnNvY2lhbAlyb3lhbHRpZXMGcHViS2V5AwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAskdDA5MDk0OTE5OAkBCWdldENhbGxlcgIFBmludm9rZQUGcHViS2V5BAZjYWxsZXIIBQskdDA5MDk0OTE5OAJfMQQLaXNTcG9uc29yZWQIBQskdDA5MDk0OTE5OAJfMgQGc3RhdHVzCQEOZ2V0U3RyaW5nQnlLZXkBCQENa2V5VXNlclN0YXR1cwEFBmNhbGxlcgMJAQEhAQkBDXZhbGlkVXNlckRhdGEFBQZjYWxsZXIFBG5hbWUFC2Rlc2NyaXB0aW9uBQV0aHVtYgYJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQEZGF0ZQkBD2dldEludGVnZXJCeUtleQEJAQtrZXlVc2VyRGF0ZQEFBmNhbGxlcgQEanNvbgkBCG1ha2VKU09OAwkA2gQBCQCbAwEFBG5hbWUJANoEAQkAmwMBBQV0aHVtYgkApAMBBQRkYXRlAwMJAGYCAAAFCXJveWFsdGllcwYJAGYCBQlyb3lhbHRpZXMA6AcJAAIBAjNSb3lhbHRpZXMgY2Fubm90IGJlIGxlc3MgdGhhbiAwJSBvciBoaWdoZXIgdGhhbiAxMCUECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJOYW1lAQUGY2FsbGVyBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlVc2VyRGVzYwEFBmNhbGxlcgULZGVzY3JpcHRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVVzZXJTb2NpYWwBBQZjYWxsZXIFBnNvY2lhbAkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5VXNlclRodW1iAQUGY2FsbGVyBQV0aHVtYgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEGtleVVzZXJSb3lhbHRpZXMBBQZjYWxsZXIFCXJveWFsdGllcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUGc3RhdHVzAgFfBQZjYWxsZXIFBGpzb24FA25pbAUKdHhUb0NhbGxlcgZpbnZva2UBDHNldEVSQzIwVXNlcgIFZXJjMjAGcHViS2V5AwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBA0kdDAxMDM4NTEwNDg4CQEJZ2V0Q2FsbGVyAgUGaW52b2tlBQZwdWJLZXkEBmNhbGxlcggFDSR0MDEwMzg1MTA0ODgCXzEEC2lzU3BvbnNvcmVkCAUNJHQwMTAzODUxMDQ4OAJfMgQGc3RhdHVzCQEOZ2V0U3RyaW5nQnlLZXkBCQENa2V5VXNlclN0YXR1cwEFBmNhbGxlcgMDCQECIT0CBQZzdGF0dXMFDnVzZXJSZWdpc3RlcmVkCQECIT0CBQZzdGF0dXMFDHVzZXJWZXJpZmllZAcJAAIBAiBOb3QgYWxsb3dlZCB0byBzZXQgRVJDMjAgYWRkcmVzcwQIZmlyc3RUd28JAK8CAgUFZXJjMjAAAgMDCQECIT0CBQhmaXJzdFR3bwICMHgGCQECIT0CCQCxAgEFBWVyYzIwACoJAAIBAhxUaGlzIGlzIG5vdCBhbiBlcmMyMCBhZGRyZXNzBAp0eFRvQ2FsbGVyAwULaXNTcG9uc29yZWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgAABQR1bml0BQNuaWwFA25pbAkAzggCCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyRVJDMjABBQZjYWxsZXIFBWVyYzIwBQNuaWwFCnR4VG9DYWxsZXIGaW52b2tlARBjaGFuZ2VVc2VyU3RhdHVzCAdhZGRyZXNzBnN0YXR1cwRub3RlBWxhYmVsEXdsX2NlcnRpZmljYXRpb25zBndsX3R4cwh3bF9kcm9wcw53bF9jb21taXNzaW9ucwQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkAAAIJALECAQUHYWRkcmVzcwAACQACAQIXQWRkcmVzcyBjYW5ub3QgYmUgZW1wdHkEC2N1cnJlbnROb3RlCQEOZ2V0U3RyaW5nQnlLZXkBCQELa2V5VXNlck5vdGUBBQdhZGRyZXNzBAxjdXJyZW50TGFiZWwJAQ5nZXRTdHJpbmdCeUtleQEJAQxrZXlVc2VyTGFiZWwBBQdhZGRyZXNzBAlub3RlVG9Vc2UDCQECIT0CCQCxAgEFBG5vdGUAAAUEbm90ZQULY3VycmVudE5vdGUECmxhYmVsVG9Vc2UDCQECIT0CCQCxAgEFBWxhYmVsAAAFBWxhYmVsBQxjdXJyZW50TGFiZWwDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyBBNmcmVlX2NlcnRpZmljYXRpb25zAwkBAiE9AgURd2xfY2VydGlmaWNhdGlvbnMAAAkA/AcEBQhzaWduRGFwcAIbd2hpdGVsaXN0RnJlZUNlcnRpZmljYXRpb25zCQDMCAIFB2FkZHJlc3MJAMwIAgURd2xfY2VydGlmaWNhdGlvbnMJAMwIAgYFA25pbAUDbmlsBQNuaWwDCQAAAgUTZnJlZV9jZXJ0aWZpY2F0aW9ucwUTZnJlZV9jZXJ0aWZpY2F0aW9ucwQIZnJlZV90eHMDCQECIT0CBQZ3bF90eHMAAAkA/AcEBQ13aGl0ZWxpc3REYXBwAhB3aGl0ZWxpc3RGcmVlVHhzCQDMCAIFB2FkZHJlc3MJAMwIAgUGd2xfdHhzCQDMCAIGBQNuaWwFA25pbAUDbmlsAwkAAAIFCGZyZWVfdHhzBQhmcmVlX3R4cwQKZnJlZV9kcm9wcwMJAQIhPQIFCHdsX2Ryb3BzAAAJAPwHBAUNd2hpdGVsaXN0RGFwcAIRd2hpdGVsaXN0RnJlZURyb3AJAMwIAgUHYWRkcmVzcwkAzAgCBQh3bF9kcm9wcwkAzAgCBgUDbmlsBQNuaWwFA25pbAMJAAACBQpmcmVlX2Ryb3BzBQpmcmVlX2Ryb3BzBBBmcmVlX2NvbW1pc3Npb25zAwkBAiE9AgUOd2xfY29tbWlzc2lvbnMAAAkA/AcEBQ13aGl0ZWxpc3REYXBwAgl3aGl0ZWxpc3QJAMwIAgUHYWRkcmVzcwkAzAgCBQ53bF9jb21taXNzaW9ucwUDbmlsBQNuaWwFA25pbAMJAAACBRBmcmVlX2NvbW1pc3Npb25zBRBmcmVlX2NvbW1pc3Npb25zAwkAAAIJALECAQUGc3RhdHVzAAAEDWN1cnJlbnRTdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUHYWRkcmVzcwMJAAACBQ1jdXJyZW50U3RhdHVzAgAJAAIBAhdVc2VyIGhhdmUgbm8gc3RhdHVzIHlldAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5vdGUBBQdhZGRyZXNzBQlub3RlVG9Vc2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleVVzZXJMYWJlbAEFB2FkZHJlc3MFCmxhYmVsVG9Vc2UFA25pbAQNY3VycmVudFN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDWtleVVzZXJTdGF0dXMBBQdhZGRyZXNzBAtzdGF0dXNUb1NldAkBEXZhbGlkYXRlTmV3U3RhdHVzAwUGc3RhdHVzBQdhZGRyZXNzBQ1jdXJyZW50U3RhdHVzBARuYW1lCQDaBAEJAJsDAQkBDmdldFN0cmluZ0J5S2V5AQkBC2tleVVzZXJOYW1lAQUHYWRkcmVzcwQFdGh1bWIJANoEAQkAmwMBCQEOZ2V0U3RyaW5nQnlLZXkBCQEMa2V5VXNlclRodW1iAQUHYWRkcmVzcwQEZGF0ZQkBD2dldEludGVnZXJCeUtleQEJAQtrZXlVc2VyRGF0ZQEFB2FkZHJlc3MEBGpzb24JAQhtYWtlSlNPTgMFBG5hbWUFBXRodW1iCQCkAwEFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVVzZXJTdGF0dXMBBQdhZGRyZXNzBQtzdGF0dXNUb1NldAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgUNY3VycmVudFN0YXR1cwIBXwUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgULc3RhdHVzVG9TZXQCAV8FB2FkZHJlc3MFBGpzb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJOb3RlAQUHYWRkcmVzcwUJbm90ZVRvVXNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyTGFiZWwBBQdhZGRyZXNzBQpsYWJlbFRvVXNlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiFOb3QgYWxsb3dlZCB0byBjaGFuZ2UgdXNlciBzdGF0dXMGaW52b2tlAQpkZWxldGVVc2VyAQdhZGRyZXNzBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEDWN1cnJlbnRTdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUHYWRkcmVzcwMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleVVzZXJEYXRlAQUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5VXNlckFkZHIBBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlVc2VyTmFtZQEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleVVzZXJEZXNjAQUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5VXNlclNvY2lhbAEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVVzZXJUaHVtYgEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAgp1c2VyX25vdGVfBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICBQ1jdXJyZW50U3RhdHVzAgFfBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlVc2VyUm95YWx0aWVzAQUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclN0YXR1cwEFB2FkZHJlc3MFC3VzZXJSZW1vdmVkBQNuaWwJAAIBAgtOb3QgYWxsb3dlZAFpAQhzZXRBZ2VudAQKYXJ0aXN0QWRkcglhZ2VudEFkZHIMcHJpbWFyeVNoYXJlDnNlY29uZGFyeVNoYXJlAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAZjYWxsZXIJAKUIAQgFAWkGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMDCQECIT0CCQCxAgEFCmFydGlzdEFkZHIAIwYJAQIhPQIJALECAQUJYWdlbnRBZGRyACMJAAIBAg1Xcm9uZyBhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBcnRpc3RBZ2VudEFkZHIBBQphcnRpc3RBZGRyBQlhZ2VudEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUFnZW50QXJ0aXN0QWRkcgIFCWFnZW50QWRkcgUKYXJ0aXN0QWRkcgUKYXJ0aXN0QWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBD2tleVByaW1hcnlTaGFyZQEFCmFydGlzdEFkZHIFDHByaW1hcnlTaGFyZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBEWtleVNlY29uZGFyeVNoYXJlAQUKYXJ0aXN0QWRkcgUOc2Vjb25kYXJ5U2hhcmUFA25pbAkAAgECE1lvdSBhcmUgbm90IGFsbG93ZWQBaQEKdW5zZXRBZ2VudAIKYXJ0aXN0QWRkcglhZ2VudEFkZHIDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEBmNhbGxlcgkApQgBCAUBaQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwMJAQIhPQIJALECAQUKYXJ0aXN0QWRkcgAjBgkBAiE9AgkAsQIBBQlhZ2VudEFkZHIAIwkAAgECDVdyb25nIGFkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUFydGlzdEFnZW50QWRkcgEFCmFydGlzdEFkZHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBEmtleUFnZW50QXJ0aXN0QWRkcgIFCWFnZW50QWRkcgUKYXJ0aXN0QWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQEPa2V5UHJpbWFyeVNoYXJlAQUKYXJ0aXN0QWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQERa2V5U2Vjb25kYXJ5U2hhcmUBBQphcnRpc3RBZGRyBQNuaWwJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAWkBC2RlbGV0ZUVudHJ5AQVlbnRyeQQGY2FsbGVyCQClCAEIBQFpBmNhbGxlcgMJAAACBQZjYWxsZXIFBWNocmlzCQDMCAIJAQtEZWxldGVFbnRyeQEFBWVudHJ5BQNuaWwJAAIBAgJubwECdHgBCHZlcmlmaWVyAAQHJG1hdGNoMAUCdHgDCQABAgUHJG1hdGNoMAIXSW52b2tlU2NyaXB0VHJhbnNhY3Rpb24EA2ludgUHJG1hdGNoMAMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAgxyZWdpc3RlclVzZXIJAAACCAUDaW52BGRBcHAFBHRoaXMHCQAAAggFA2ludgNmZWUAoMIeBwkAAAIIBQNpbnYKZmVlQXNzZXRJZAUEdW5pdAcJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAJANkEAQkBCGFzU3RyaW5nAQkAkQMCCAUDaW52BGFyZ3MABQMDAwMJAAACCAUDaW52CGZ1bmN0aW9uAgp1cGRhdGVVc2VyCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAUDAwMDCQAAAggFA2ludghmdW5jdGlvbgIMc2V0RVJDMjBVc2VyCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAIJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlB9CVF", "height": 2424336, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HUBnemqiBAEuFsRwe4GNxdgjSSXdW3LnFEjb1up741yK Next: BqT1mMvxXNdNpjCsKqKENytH33fPqM7kRVNFYL4qWkoX Diff:
OldNewDifferences
326326
327327
328328 @Callable(ap)
329-func changeUserStatus (Z,X,az,aA,aH,aI,aJ) = {
329+func changeUserStatus (Z,X,az,aA,aH,aI,aJ,aK) = {
330330 let x = toString(ap.caller)
331331 if ((size(Z) == 0))
332332 then throw("Address cannot be empty")
333333 else {
334- let aK = b(G(Z))
335- let aL = b(H(Z))
336- let aM = if ((size(az) != 0))
334+ let aL = b(G(Z))
335+ let aM = b(H(Z))
336+ let aN = if ((size(az) != 0))
337337 then az
338- else aK
339- let aN = if ((size(aA) != 0))
338+ else aL
339+ let aO = if ((size(aA) != 0))
340340 then aA
341- else aL
341+ else aM
342342 if (containsElement([f, toString(this)], x))
343343 then {
344- let aO = if ((aH != 0))
344+ let aP = if ((aH != 0))
345345 then invoke(n, "whitelistFreeCertifications", [Z, aH, true], nil)
346346 else nil
347- if ((aO == aO))
347+ if ((aP == aP))
348348 then {
349- let aP = if ((aI != 0))
349+ let aQ = if ((aI != 0))
350350 then invoke(m, "whitelistFreeTxs", [Z, aI, true], nil)
351351 else nil
352- if ((aP == aP))
352+ if ((aQ == aQ))
353353 then {
354- let aQ = if ((aJ != 0))
354+ let aR = if ((aJ != 0))
355355 then invoke(m, "whitelistFreeDrop", [Z, aJ, true], nil)
356356 else nil
357- if ((aQ == aQ))
358- then if ((size(X) == 0))
359- then {
360- let aa = b(C(Z))
361- if ((aa == ""))
362- then throw("User have no status yet")
363- else [StringEntry(G(Z), aM), StringEntry(H(Z), aN)]
364- }
365- else {
366- let aa = b(C(Z))
367- let ac = Y(X, Z, aa)
368- let S = toBase64String(toBytes(b(y(Z))))
369- let U = toBase64String(toBytes(b(B(Z))))
370- let af = e(E(Z))
371- let aB = ae(S, U, toString(af))
372-[StringEntry(C(Z), ac), DeleteEntry(((aa + "_") + Z)), StringEntry(((ac + "_") + Z), aB), StringEntry(G(Z), aM), StringEntry(H(Z), aN)]
373- }
357+ if ((aR == aR))
358+ then {
359+ let aS = if ((aK != 0))
360+ then invoke(m, "whitelist", [Z, aK], nil)
361+ else nil
362+ if ((aS == aS))
363+ then if ((size(X) == 0))
364+ then {
365+ let aa = b(C(Z))
366+ if ((aa == ""))
367+ then throw("User have no status yet")
368+ else [StringEntry(G(Z), aN), StringEntry(H(Z), aO)]
369+ }
370+ else {
371+ let aa = b(C(Z))
372+ let ac = Y(X, Z, aa)
373+ let S = toBase64String(toBytes(b(y(Z))))
374+ let U = toBase64String(toBytes(b(B(Z))))
375+ let af = e(E(Z))
376+ let aB = ae(S, U, toString(af))
377+[StringEntry(C(Z), ac), DeleteEntry(((aa + "_") + Z)), StringEntry(((ac + "_") + Z), aB), StringEntry(G(Z), aN), StringEntry(H(Z), aO)]
378+ }
379+ else throw("Strict value is not equal to itself.")
380+ }
374381 else throw("Strict value is not equal to itself.")
375382 }
376383 else throw("Strict value is not equal to itself.")
395402
396403
397404 @Callable(al)
398-func setAgent (J,L,aR,aS) = if (!(j))
405+func setAgent (J,L,aT,aU) = if (!(j))
399406 then throw(k)
400407 else {
401408 let x = toString(al.caller)
404411 then true
405412 else (size(L) != 35))
406413 then throw("Wrong address")
407- else [StringEntry(I(J), L), StringEntry(K(L, J), J), IntegerEntry(M(J), aR), IntegerEntry(N(J), aS)]
414+ else [StringEntry(I(J), L), StringEntry(K(L, J), J), IntegerEntry(M(J), aT), IntegerEntry(N(J), aU)]
408415 else throw("You are not allowed")
409416 }
410417
427434
428435
429436 @Callable(al)
430-func deleteEntry (aT) = {
437+func deleteEntry (aV) = {
431438 let x = toString(al.caller)
432439 if ((x == f))
433- then [DeleteEntry(aT)]
440+ then [DeleteEntry(aV)]
434441 else throw("no")
435442 }
436443
437444
438-@Verifier(aU)
439-func aV () = {
440- let ai = aU
445+@Verifier(aW)
446+func aX () = {
447+ let ai = aW
441448 if ($isInstanceOf(ai, "InvokeScriptTransaction"))
442449 then {
443- let aW = ai
444- if (if (if (if ((aW.function == "registerUser"))
445- then (aW.dApp == this)
450+ let aY = ai
451+ if (if (if (if ((aY.function == "registerUser"))
452+ then (aY.dApp == this)
446453 else false)
447- then (aW.fee == 500000)
454+ then (aY.fee == 500000)
448455 else false)
449- then (aW.feeAssetId == unit)
456+ then (aY.feeAssetId == unit)
450457 else false)
451- then sigVerify(aU.bodyBytes, aU.proofs[0], fromBase58String(ag(aW.args[5])))
452- else if (if (if (if ((aW.function == "updateUser"))
453- then (aW.dApp == this)
458+ then sigVerify(aW.bodyBytes, aW.proofs[0], fromBase58String(ag(aY.args[5])))
459+ else if (if (if (if ((aY.function == "updateUser"))
460+ then (aY.dApp == this)
454461 else false)
455- then (aW.fee == 500000)
462+ then (aY.fee == 500000)
456463 else false)
457- then (aW.feeAssetId == unit)
464+ then (aY.feeAssetId == unit)
458465 else false)
459- then sigVerify(aU.bodyBytes, aU.proofs[0], fromBase58String(ag(aW.args[5])))
460- else if (if (if (if ((aW.function == "setERC20User"))
461- then (aW.dApp == this)
466+ then sigVerify(aW.bodyBytes, aW.proofs[0], fromBase58String(ag(aY.args[5])))
467+ else if (if (if (if ((aY.function == "setERC20User"))
468+ then (aY.dApp == this)
462469 else false)
463- then (aW.fee == 500000)
470+ then (aY.fee == 500000)
464471 else false)
465- then (aW.feeAssetId == unit)
472+ then (aY.feeAssetId == unit)
466473 else false)
467- then sigVerify(aU.bodyBytes, aU.proofs[0], fromBase58String(ag(aW.args[2])))
468- else sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
474+ then sigVerify(aW.bodyBytes, aW.proofs[0], fromBase58String(ag(aY.args[2])))
475+ else sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
469476 }
470- else sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
477+ else sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
471478 }
472479
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 = value(addressFromString(b("conf_signweb_dapp")))
3232
3333 let o = "ALLOWED"
3434
3535 let p = "REGISTERED"
3636
3737 let q = "VERIFIED"
3838
3939 let r = "SUSPENDED"
4040
4141 let s = "REMOVED"
4242
4343 let t = "CHANGE_REQUIRED"
4444
4545 let u = "UNREGISTERED"
4646
4747 let v = "RESET"
4848
4949 func w (x) = ("user_" + x)
5050
5151
5252 func y (x) = ("user_name_" + x)
5353
5454
5555 func z (x) = ("user_desc_" + x)
5656
5757
5858 func A (x) = ("user_social_" + x)
5959
6060
6161 func B (x) = ("user_thumb_" + x)
6262
6363
6464 func C (x) = ("user_status_" + x)
6565
6666
6767 func D (x) = ("user_royalties_" + x)
6868
6969
7070 func E (x) = ("user_date_" + x)
7171
7272
7373 func F (x) = ("user_ERC20_" + x)
7474
7575
7676 func G (x) = ("user_note_" + x)
7777
7878
7979 func H (x) = ("user_label_" + x)
8080
8181
8282 func I (J) = ("artist_agent_" + J)
8383
8484
8585 func K (L,J) = ((("agent_" + L) + "_") + J)
8686
8787
8888 func M (J) = ("artist_agent_primary_" + J)
8989
9090
9191 func N (J) = ("artist_agent_secondary_" + J)
9292
9393
9494 func O (c) = valueOrElse(getInteger(m, c), 0)
9595
9696
9797 func P (Q) = if (contains(Q, "/"))
9898 then if (if ((76 > size(Q)))
9999 then (size(split(Q, "/")[0]) == 59)
100100 else false)
101101 then (16 > size(split(Q, "/")[1]))
102102 else false
103103 else false
104104
105105
106106 func R (x,S,T,U,V) = {
107107 let W = if ((size(U) != 0))
108108 then P(U)
109109 else true
110110 if (!(W))
111111 then throw("CID don't match requirement!")
112112 else if (if ((S == ""))
113113 then true
114114 else (T == ""))
115115 then throw("Name and description cannot be empty")
116116 else if ((size(T) > 600))
117117 then throw("600 Char. max description")
118118 else if ((size(S) > 45))
119119 then throw("45 Char. max name")
120120 else {
121121 let X = b(C(x))
122122 if (if ((X == r))
123123 then true
124124 else (X == s))
125125 then throw("Account suspended/ removed.")
126126 else if (if (!(V))
127127 then (X == p)
128128 else false)
129129 then throw("Already registered")
130130 else if (if (if (!(V))
131131 then (X == "")
132132 else false)
133133 then l
134134 else false)
135135 then throw("Can't register, get approved first.")
136136 else if (if (if (V)
137137 then (X == "")
138138 else false)
139139 then true
140140 else if (V)
141141 then (X == o)
142142 else false)
143143 then throw("Register first")
144144 else true
145145 }
146146 }
147147
148148
149149 func Y (X,Z,aa) = {
150150 let ab = [q, p, r, s, o, t]
151151 let ac = if (containsElement(ab, X))
152152 then X
153153 else if (if ((X == v))
154154 then (aa == o)
155155 else false)
156156 then ""
157157 else throw("Unknown status")
158158 let ad = e(E(Z))
159159 if (if ((ad == 0))
160160 then (ac != o)
161161 else false)
162162 then throw("You cant set this status, user is not registered.")
163163 else if (if ((aa == o))
164164 then (ac == o)
165165 else false)
166166 then throw("User already allowed")
167167 else if (if ((aa == p))
168168 then (ac == o)
169169 else false)
170170 then throw("User already allowed & registered")
171171 else if (if ((aa == q))
172172 then (ac == o)
173173 else false)
174174 then throw("User already allowed & verified")
175175 else ac
176176 }
177177
178178
179179 func ae (S,U,af) = (((((("{\"user_name\": \"" + S) + "\", \"user_thumb\":\"") + U) + "\",\"user_date\":\"") + af) + "\"}")
180180
181181
182182 func ag (ah) = {
183183 let ai = ah
184184 if ($isInstanceOf(ai, "String"))
185185 then {
186186 let aj = ai
187187 aj
188188 }
189189 else throw("Sponsored Public Key String expected")
190190 }
191191
192192
193193 func ak (al,am) = {
194194 let an = if ((am != ""))
195195 then valueOrElse(O((toString(addressFromPublicKey(fromBase58String(am))) + "_free_txs")), 0)
196196 else 0
197197 let x = if (if ((toBase58String(al.caller.bytes) == toString(this)))
198198 then (an > 0)
199199 else false)
200200 then toString(addressFromPublicKey(fromBase58String(am)))
201201 else toBase58String(al.caller.bytes)
202202 let ao = if ((am != ""))
203203 then invoke(m, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(am)))], nil)
204204 else unit
205205 if ((ao == ao))
206206 then $Tuple2(x, (an > 0))
207207 else throw("Strict value is not equal to itself.")
208208 }
209209
210210
211211 @Callable(ap)
212212 func setConf (c,aq) = {
213213 let x = toString(ap.caller)
214214 if (containsElement([f, toString(this)], x))
215215 then [StringEntry(c, aq)]
216216 else throw("You are not allowed to change this")
217217 }
218218
219219
220220
221221 @Callable(ap)
222222 func appRunning (ar,as) = {
223223 let x = toString(ap.caller)
224224 if (containsElement([f, toString(this)], x))
225225 then [BooleanEntry(g, ar), StringEntry(h, as)]
226226 else throw("You are not allowed to change this")
227227 }
228228
229229
230230
231231 @Callable(ap)
232232 func registrationMode (at) = {
233233 let x = toString(ap.caller)
234234 if (containsElement([f, toString(this)], x))
235235 then [BooleanEntry(i, at)]
236236 else throw("You are not allowed to change this")
237237 }
238238
239239
240240
241241 @Callable(ap)
242242 func registerUser (S,T,U,au,av,am) = if (!(j))
243243 then throw(k)
244244 else {
245245 let aw = ak(ap, am)
246246 let x = aw._1
247247 let an = aw._2
248248 let ax = toBase58String(ap.transactionId)
249249 let ay = lastBlock.timestamp
250250 let az = b(G(x))
251251 let aA = b(H(x))
252252 if (!(R(x, S, T, U, false)))
253253 then throw("Something went wrong")
254254 else {
255255 let aB = ae(toBase64String(toBytes(S)), toBase64String(toBytes(U)), toString(ay))
256256 if (if ((0 > av))
257257 then true
258258 else (av > 1000))
259259 then throw("Royalties cannot be less than 0% or higher than 10%")
260260 else {
261261 let aC = if (an)
262262 then [ScriptTransfer(Address(fromBase58String(x)), 0, unit)]
263263 else nil
264264 ([IntegerEntry(E(x), ay), StringEntry(w(x), ((ax + "_") + toString(ay))), StringEntry(y(x), S), StringEntry(z(x), T), StringEntry(A(x), au), StringEntry(B(x), U), StringEntry(C(x), p), IntegerEntry(D(x), av), DeleteEntry(("ALLOWED_" + x)), StringEntry(((p + "_") + x), aB), StringEntry(G(x), az), StringEntry(H(x), aA)] ++ aC)
265265 }
266266 }
267267 }
268268
269269
270270
271271 @Callable(ap)
272272 func updateUser (S,T,U,au,av,am) = if (!(j))
273273 then throw(k)
274274 else {
275275 let aD = ak(ap, am)
276276 let x = aD._1
277277 let an = aD._2
278278 let X = b(C(x))
279279 if (!(R(x, S, T, U, true)))
280280 then throw("Something went wrong")
281281 else {
282282 let af = e(E(x))
283283 let aB = ae(toBase64String(toBytes(S)), toBase64String(toBytes(U)), toString(af))
284284 if (if ((0 > av))
285285 then true
286286 else (av > 1000))
287287 then throw("Royalties cannot be less than 0% or higher than 10%")
288288 else {
289289 let aC = if (an)
290290 then [ScriptTransfer(Address(fromBase58String(x)), 0, unit)]
291291 else nil
292292 ([StringEntry(y(x), S), StringEntry(z(x), T), StringEntry(A(x), au), StringEntry(B(x), U), IntegerEntry(D(x), av), StringEntry(((X + "_") + x), aB)] ++ aC)
293293 }
294294 }
295295 }
296296
297297
298298
299299 @Callable(ap)
300300 func setERC20User (aE,am) = if (!(j))
301301 then throw(k)
302302 else {
303303 let aF = ak(ap, am)
304304 let x = aF._1
305305 let an = aF._2
306306 let X = b(C(x))
307307 if (if ((X != p))
308308 then (X != q)
309309 else false)
310310 then throw("Not allowed to set ERC20 address")
311311 else {
312312 let aG = take(aE, 2)
313313 if (if ((aG != "0x"))
314314 then true
315315 else (size(aE) != 42))
316316 then throw("This is not an erc20 address")
317317 else {
318318 let aC = if (an)
319319 then [ScriptTransfer(Address(fromBase58String(x)), 0, unit)]
320320 else nil
321321 ([StringEntry(F(x), aE)] ++ aC)
322322 }
323323 }
324324 }
325325
326326
327327
328328 @Callable(ap)
329-func changeUserStatus (Z,X,az,aA,aH,aI,aJ) = {
329+func changeUserStatus (Z,X,az,aA,aH,aI,aJ,aK) = {
330330 let x = toString(ap.caller)
331331 if ((size(Z) == 0))
332332 then throw("Address cannot be empty")
333333 else {
334- let aK = b(G(Z))
335- let aL = b(H(Z))
336- let aM = if ((size(az) != 0))
334+ let aL = b(G(Z))
335+ let aM = b(H(Z))
336+ let aN = if ((size(az) != 0))
337337 then az
338- else aK
339- let aN = if ((size(aA) != 0))
338+ else aL
339+ let aO = if ((size(aA) != 0))
340340 then aA
341- else aL
341+ else aM
342342 if (containsElement([f, toString(this)], x))
343343 then {
344- let aO = if ((aH != 0))
344+ let aP = if ((aH != 0))
345345 then invoke(n, "whitelistFreeCertifications", [Z, aH, true], nil)
346346 else nil
347- if ((aO == aO))
347+ if ((aP == aP))
348348 then {
349- let aP = if ((aI != 0))
349+ let aQ = if ((aI != 0))
350350 then invoke(m, "whitelistFreeTxs", [Z, aI, true], nil)
351351 else nil
352- if ((aP == aP))
352+ if ((aQ == aQ))
353353 then {
354- let aQ = if ((aJ != 0))
354+ let aR = if ((aJ != 0))
355355 then invoke(m, "whitelistFreeDrop", [Z, aJ, true], nil)
356356 else nil
357- if ((aQ == aQ))
358- then if ((size(X) == 0))
359- then {
360- let aa = b(C(Z))
361- if ((aa == ""))
362- then throw("User have no status yet")
363- else [StringEntry(G(Z), aM), StringEntry(H(Z), aN)]
364- }
365- else {
366- let aa = b(C(Z))
367- let ac = Y(X, Z, aa)
368- let S = toBase64String(toBytes(b(y(Z))))
369- let U = toBase64String(toBytes(b(B(Z))))
370- let af = e(E(Z))
371- let aB = ae(S, U, toString(af))
372-[StringEntry(C(Z), ac), DeleteEntry(((aa + "_") + Z)), StringEntry(((ac + "_") + Z), aB), StringEntry(G(Z), aM), StringEntry(H(Z), aN)]
373- }
357+ if ((aR == aR))
358+ then {
359+ let aS = if ((aK != 0))
360+ then invoke(m, "whitelist", [Z, aK], nil)
361+ else nil
362+ if ((aS == aS))
363+ then if ((size(X) == 0))
364+ then {
365+ let aa = b(C(Z))
366+ if ((aa == ""))
367+ then throw("User have no status yet")
368+ else [StringEntry(G(Z), aN), StringEntry(H(Z), aO)]
369+ }
370+ else {
371+ let aa = b(C(Z))
372+ let ac = Y(X, Z, aa)
373+ let S = toBase64String(toBytes(b(y(Z))))
374+ let U = toBase64String(toBytes(b(B(Z))))
375+ let af = e(E(Z))
376+ let aB = ae(S, U, toString(af))
377+[StringEntry(C(Z), ac), DeleteEntry(((aa + "_") + Z)), StringEntry(((ac + "_") + Z), aB), StringEntry(G(Z), aN), StringEntry(H(Z), aO)]
378+ }
379+ else throw("Strict value is not equal to itself.")
380+ }
374381 else throw("Strict value is not equal to itself.")
375382 }
376383 else throw("Strict value is not equal to itself.")
377384 }
378385 else throw("Strict value is not equal to itself.")
379386 }
380387 else throw("Not allowed to change user status")
381388 }
382389 }
383390
384391
385392
386393 @Callable(ap)
387394 func deleteUser (Z) = {
388395 let x = toString(ap.caller)
389396 let aa = b(C(Z))
390397 if (containsElement([f, toString(this)], x))
391398 then [DeleteEntry(E(Z)), DeleteEntry(w(Z)), DeleteEntry(y(Z)), DeleteEntry(z(Z)), DeleteEntry(A(Z)), DeleteEntry(B(Z)), DeleteEntry(("user_note_" + Z)), DeleteEntry(((aa + "_") + Z)), DeleteEntry(D(Z)), StringEntry(C(Z), s)]
392399 else throw("Not allowed")
393400 }
394401
395402
396403
397404 @Callable(al)
398-func setAgent (J,L,aR,aS) = if (!(j))
405+func setAgent (J,L,aT,aU) = if (!(j))
399406 then throw(k)
400407 else {
401408 let x = toString(al.caller)
402409 if (containsElement([f, toString(this)], x))
403410 then if (if ((size(J) != 35))
404411 then true
405412 else (size(L) != 35))
406413 then throw("Wrong address")
407- else [StringEntry(I(J), L), StringEntry(K(L, J), J), IntegerEntry(M(J), aR), IntegerEntry(N(J), aS)]
414+ else [StringEntry(I(J), L), StringEntry(K(L, J), J), IntegerEntry(M(J), aT), IntegerEntry(N(J), aU)]
408415 else throw("You are not allowed")
409416 }
410417
411418
412419
413420 @Callable(al)
414421 func unsetAgent (J,L) = if (!(j))
415422 then throw(k)
416423 else {
417424 let x = toString(al.caller)
418425 if (containsElement([f, toString(this)], x))
419426 then if (if ((size(J) != 35))
420427 then true
421428 else (size(L) != 35))
422429 then throw("Wrong address")
423430 else [DeleteEntry(I(J)), DeleteEntry(K(L, J)), DeleteEntry(M(J)), DeleteEntry(N(J))]
424431 else throw("You are not allowed")
425432 }
426433
427434
428435
429436 @Callable(al)
430-func deleteEntry (aT) = {
437+func deleteEntry (aV) = {
431438 let x = toString(al.caller)
432439 if ((x == f))
433- then [DeleteEntry(aT)]
440+ then [DeleteEntry(aV)]
434441 else throw("no")
435442 }
436443
437444
438-@Verifier(aU)
439-func aV () = {
440- let ai = aU
445+@Verifier(aW)
446+func aX () = {
447+ let ai = aW
441448 if ($isInstanceOf(ai, "InvokeScriptTransaction"))
442449 then {
443- let aW = ai
444- if (if (if (if ((aW.function == "registerUser"))
445- then (aW.dApp == this)
450+ let aY = ai
451+ if (if (if (if ((aY.function == "registerUser"))
452+ then (aY.dApp == this)
446453 else false)
447- then (aW.fee == 500000)
454+ then (aY.fee == 500000)
448455 else false)
449- then (aW.feeAssetId == unit)
456+ then (aY.feeAssetId == unit)
450457 else false)
451- then sigVerify(aU.bodyBytes, aU.proofs[0], fromBase58String(ag(aW.args[5])))
452- else if (if (if (if ((aW.function == "updateUser"))
453- then (aW.dApp == this)
458+ then sigVerify(aW.bodyBytes, aW.proofs[0], fromBase58String(ag(aY.args[5])))
459+ else if (if (if (if ((aY.function == "updateUser"))
460+ then (aY.dApp == this)
454461 else false)
455- then (aW.fee == 500000)
462+ then (aY.fee == 500000)
456463 else false)
457- then (aW.feeAssetId == unit)
464+ then (aY.feeAssetId == unit)
458465 else false)
459- then sigVerify(aU.bodyBytes, aU.proofs[0], fromBase58String(ag(aW.args[5])))
460- else if (if (if (if ((aW.function == "setERC20User"))
461- then (aW.dApp == this)
466+ then sigVerify(aW.bodyBytes, aW.proofs[0], fromBase58String(ag(aY.args[5])))
467+ else if (if (if (if ((aY.function == "setERC20User"))
468+ then (aY.dApp == this)
462469 else false)
463- then (aW.fee == 500000)
470+ then (aY.fee == 500000)
464471 else false)
465- then (aW.feeAssetId == unit)
472+ then (aY.feeAssetId == unit)
466473 else false)
467- then sigVerify(aU.bodyBytes, aU.proofs[0], fromBase58String(ag(aW.args[2])))
468- else sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
474+ then sigVerify(aW.bodyBytes, aW.proofs[0], fromBase58String(ag(aY.args[2])))
475+ else sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
469476 }
470- else sigVerify(aU.bodyBytes, aU.proofs[0], aU.senderPublicKey)
477+ else sigVerify(aW.bodyBytes, aW.proofs[0], aW.senderPublicKey)
471478 }
472479

github/deemru/w8io/169f3d6 
95.39 ms