tx · BnUdtgFgP6iv4RKfv87Vc5gyPn2xYbeja2GpEVdMjcGm

3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj:  -0.01400000 Waves

2022.08.01 13:01 [2165292] smart account 3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj > SELF 0.00000000 Waves

{ "type": 13, "id": "BnUdtgFgP6iv4RKfv87Vc5gyPn2xYbeja2GpEVdMjcGm", "fee": 1400000, "feeAssetId": null, "timestamp": 1659348115426, "version": 2, "chainId": 84, "sender": "3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj", "senderPublicKey": "A2m227AHcq7gWfSU59Q3UJaqkEa7SccFYmJuWHbFrrKE", "proofs": [ "4fXeL5Dd6Lm8zhxPjVXGXVpUMptDwRVNin88r9crkzkYnkZXs7ZsP2Qr7s1PTCTBVcJiQ7Cce3s4TVMJ37nDBb2N" ], "script": "base64:BgJHCAISBAoCCAgSBAoCBAgSAwoBBBIGCgQICAgIEgYKBAgICAgSAwoBCBIFCgMICAgSAwoBCBIGCgQICAEBEgQKAggIEgMKAQgkAAdWRVJTSU9OAgMxLjMBDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgABD2dldEJvb2xlYW5CeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFA2tleQcBD2dldEludGVnZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAAVjaHJpcwkBDmdldFN0cmluZ0J5S2V5AQIMY29uZl9hZG1pbl8xAARqb2VwCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzIADmRhcHBSdW5uaW5nS2V5AhRjb25mX2RhcHBfaXNfcnVubmluZwARbWFpbnRlbmFuY2VNU0dLZXkCFGNvbmZfbWFpbnRlbmFuY2VfbXNnABJ3aGl0ZWxpc3RlZG9ubHlLZXkCFWNvbmZfd2hpdGVsaXN0ZWRfb25seQALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUOZGFwcFJ1bm5pbmdLZXkGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRFtYWludGVuYW5jZU1TR0tleQIAAA93aGl0ZWxpc3RlZG9ubHkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUSd2hpdGVsaXN0ZWRvbmx5S2V5BgALdXNlckFsbG93ZWQCB0FMTE9XRUQADnVzZXJSZWdpc3RlcmVkAgpSRUdJU1RFUkVEAAx1c2VyVmVyaWZpZWQCCFZFUklGSUVEAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEABJ1c2VyQ2hhbmdlUmVxdWlyZWQCD0NIQU5HRV9SRVFVSVJFRAAQdXNlclVucmVnaXN0ZXJlZAIMVU5SRUdJU1RFUkVEAAl1c2VyUmVzZXQCBVJFU0VUAQtrZXlVc2VyQWRkcgEGY2FsbGVyCQCsAgICBXVzZXJfBQZjYWxsZXIBC2tleVVzZXJOYW1lAQZjYWxsZXIJAKwCAgIKdXNlcl9uYW1lXwUGY2FsbGVyAQtrZXlVc2VyRGVzYwEGY2FsbGVyCQCsAgICCnVzZXJfZGVzY18FBmNhbGxlcgENa2V5VXNlclNvY2lhbAEGY2FsbGVyCQCsAgICDHVzZXJfc29jaWFsXwUGY2FsbGVyAQxrZXlVc2VyVGh1bWIBBmNhbGxlcgkArAICAgt1c2VyX3RodW1iXwUGY2FsbGVyAQ1rZXlVc2VyU3RhdHVzAQZjYWxsZXIJAKwCAgIMdXNlcl9zdGF0dXNfBQZjYWxsZXIBC2tleVVzZXJEYXRlAQZjYWxsZXIJAKwCAgIKdXNlcl9kYXRlXwUGY2FsbGVyAQxrZXlVc2VyRVJDMjABBmNhbGxlcgkArAICAgt1c2VyX0VSQzIwXwUGY2FsbGVyARJrZXlBcnRpc3RBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgINYXJ0aXN0X2FnZW50XwUKYXJ0aXN0QWRkcgESa2V5QWdlbnRBcnRpc3RBZGRyAglhZ2VudEFkZHIKYXJ0aXN0QWRkcgkArAICCQCsAgIJAKwCAgIGYWdlbnRfBQlhZ2VudEFkZHICAV8FCmFydGlzdEFkZHIBD2tleVByaW1hcnlTaGFyZQEKYXJ0aXN0QWRkcgkArAICAhVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBEWtleVNlY29uZGFyeVNoYXJlAQphcnRpc3RBZGRyCQCsAgICF2FydGlzdF9hZ2VudF9zZWNvbmRhcnlfBQphcnRpc3RBZGRyAQt2YWxpZGF0ZUNJRAEDY2lkAwkBCGNvbnRhaW5zAgUDY2lkAgEvAwMJAGYCAEwJALECAQUDY2lkCQAAAgkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFA2NpZAIBLwABBwcBDXZhbGlkVXNlckRhdGEFBmNhbGxlcgRuYW1lC2Rlc2NyaXB0aW9uBXRodW1iCmlzQW5VcGRhdGUECHZhbGlkQ0lEAwkBAiE9AgkAsQIBBQV0aHVtYgAACQELdmFsaWRhdGVDSUQBBQV0aHVtYgYDCQEBIQEFCHZhbGlkQ0lECQACAQIcQ0lEIGRvbid0IG1hdGNoIHJlcXVpcmVtZW50IQMDCQAAAgUEbmFtZQIABgkAAAIFC2Rlc2NyaXB0aW9uAgAJAAIBAiROYW1lIGFuZCBkZXNjcmlwdGlvbiBjYW5ub3QgYmUgZW1wdHkDCQBmAgkAsQIBBQtkZXNjcmlwdGlvbgDYBAkAAgECGTYwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DCQBmAgkAsQIBBQRuYW1lAC0JAAIBAhE0NSBDaGFyLiBtYXggbmFtZQQGc3RhdHVzCQEOZ2V0U3RyaW5nQnlLZXkBCQENa2V5VXNlclN0YXR1cwEFBmNhbGxlcgMDCQAAAgUGc3RhdHVzBQ11c2VyU3VzcGVuZGVkBgkAAAIFBnN0YXR1cwULdXNlclJlbW92ZWQJAAIBAhtBY2NvdW50IHN1c3BlbmRlZC8gcmVtb3ZlZC4DAwkBASEBBQppc0FuVXBkYXRlCQAAAgUGc3RhdHVzBQ51c2VyUmVnaXN0ZXJlZAcJAAIBAhJBbHJlYWR5IHJlZ2lzdGVyZWQDAwMJAQEhAQUKaXNBblVwZGF0ZQkAAAIFBnN0YXR1cwIABwUPd2hpdGVsaXN0ZWRvbmx5BwkAAgECI0Nhbid0IHJlZ2lzdGVyLCBnZXQgYXBwcm92ZWQgZmlyc3QuAwMDBQppc0FuVXBkYXRlCQAAAgUGc3RhdHVzAgAHBgMFCmlzQW5VcGRhdGUJAAACBQZzdGF0dXMFC3VzZXJBbGxvd2VkBwkAAgECDlJlZ2lzdGVyIGZpcnN0BgERdmFsaWRhdGVOZXdTdGF0dXMDBnN0YXR1cwdhZGRyZXNzDWN1cnJlbnRTdGF0dXMECWFsbFN0YXR1cwkAzAgCBQx1c2VyVmVyaWZpZWQJAMwIAgUOdXNlclJlZ2lzdGVyZWQJAMwIAgUNdXNlclN1c3BlbmRlZAkAzAgCBQt1c2VyUmVtb3ZlZAkAzAgCBQt1c2VyQWxsb3dlZAkAzAgCBRJ1c2VyQ2hhbmdlUmVxdWlyZWQFA25pbAQLc3RhdHVzVG9TZXQDCQEPY29udGFpbnNFbGVtZW50AgUJYWxsU3RhdHVzBQZzdGF0dXMFBnN0YXR1cwMDCQAAAgUGc3RhdHVzBQl1c2VyUmVzZXQJAAACBQ1jdXJyZW50U3RhdHVzBQt1c2VyQWxsb3dlZAcCAAkAAgECDlVua25vd24gc3RhdHVzBBB1c2VySXNSZWdpc3RlcmVkCQEPZ2V0SW50ZWdlckJ5S2V5AQkBC2tleVVzZXJEYXRlAQUHYWRkcmVzcwMDCQAAAgUQdXNlcklzUmVnaXN0ZXJlZAAACQECIT0CBQtzdGF0dXNUb1NldAULdXNlckFsbG93ZWQHCQACAQIxWW91IGNhbnQgc2V0IHRoaXMgc3RhdHVzLCB1c2VyIGlzIG5vdCByZWdpc3RlcmVkLgMDCQAAAgUNY3VycmVudFN0YXR1cwULdXNlckFsbG93ZWQJAAACBQtzdGF0dXNUb1NldAULdXNlckFsbG93ZWQHCQACAQIUVXNlciBhbHJlYWR5IGFsbG93ZWQDAwkAAAIFDWN1cnJlbnRTdGF0dXMFDnVzZXJSZWdpc3RlcmVkCQAAAgULc3RhdHVzVG9TZXQFC3VzZXJBbGxvd2VkBwkAAgECIVVzZXIgYWxyZWFkeSBhbGxvd2VkICYgcmVnaXN0ZXJlZAMDCQAAAgUNY3VycmVudFN0YXR1cwUMdXNlclZlcmlmaWVkCQAAAgULc3RhdHVzVG9TZXQFC3VzZXJBbGxvd2VkBwkAAgECH1VzZXIgYWxyZWFkeSBhbGxvd2VkICYgdmVyaWZpZWQFC3N0YXR1c1RvU2V0AQhtYWtlSlNPTgMEbmFtZQV0aHVtYgRkYXRlCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg97InVzZXJfbmFtZSI6ICIFBG5hbWUCESIsICJ1c2VyX3RodW1iIjoiBQV0aHVtYgIPIiwidXNlcl9kYXRlIjoiBQRkYXRlAgIifQsGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzBmludm9rZQEKYXBwUnVubmluZwIGaXNMaXZlB21lc3NhZ2UEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIFBGpvZXAJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOZGFwcFJ1bm5pbmdLZXkFBmlzTGl2ZQkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWludGVuYW5jZU1TR0tleQUHbWVzc2FnZQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBEHJlZ2lzdHJhdGlvbk1vZGUBBldMb25seQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUSd2hpdGVsaXN0ZWRvbmx5S2V5BQZXTG9ubHkFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQxyZWdpc3RlclVzZXIEBG5hbWULZGVzY3JpcHRpb24FdGh1bWIGc29jaWFsAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEAmlkCQDYBAEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAQJdGltZXN0YW1wCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAMJAQEhAQkBDXZhbGlkVXNlckRhdGEFBQZjYWxsZXIFBG5hbWUFC2Rlc2NyaXB0aW9uBQV0aHVtYgcJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQEanNvbgkBCG1ha2VKU09OAwkA2gQBCQCbAwEFBG5hbWUJANoEAQkAmwMBBQV0aHVtYgkApAMBBQl0aW1lc3RhbXAJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtrZXlVc2VyRGF0ZQEFBmNhbGxlcgUJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlVc2VyQWRkcgEFBmNhbGxlcgkArAICCQCsAgIFAmlkAgFfCQCkAwEFCXRpbWVzdGFtcAkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5hbWUBBQZjYWxsZXIFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJEZXNjAQUGY2FsbGVyBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclNvY2lhbAEFBmNhbGxlcgUGc29jaWFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyVGh1bWIBBQZjYWxsZXIFBXRodW1iCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBQ51c2VyUmVnaXN0ZXJlZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICCEFMTE9XRURfBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFDnVzZXJSZWdpc3RlcmVkAgFfBQZjYWxsZXIFBGpzb24FA25pbAZpbnZva2UBCnVwZGF0ZVVzZXIEBG5hbWULZGVzY3JpcHRpb24FdGh1bWIGc29jaWFsAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEBnN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDWtleVVzZXJTdGF0dXMBBQZjYWxsZXIDCQEBIQEJAQ12YWxpZFVzZXJEYXRhBQUGY2FsbGVyBQRuYW1lBQtkZXNjcmlwdGlvbgUFdGh1bWIGCQACAQIUU29tZXRoaW5nIHdlbnQgd3JvbmcEBGRhdGUJAQ9nZXRJbnRlZ2VyQnlLZXkBCQELa2V5VXNlckRhdGUBBQZjYWxsZXIEBGpzb24JAQhtYWtlSlNPTgMJANoEAQkAmwMBBQRuYW1lCQDaBAEJAJsDAQUFdGh1bWIJAKQDAQUEZGF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5hbWUBBQZjYWxsZXIFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJEZXNjAQUGY2FsbGVyBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclNvY2lhbAEFBmNhbGxlcgUGc29jaWFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyVGh1bWIBBQZjYWxsZXIFBXRodW1iCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZzdGF0dXMCAV8FBmNhbGxlcgUEanNvbgUDbmlsBmludm9rZQEMc2V0RVJDMjBVc2VyAQVlcmMyMAMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyBAZzdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyAwMJAQIhPQIFBnN0YXR1cwUOdXNlclJlZ2lzdGVyZWQJAQIhPQIFBnN0YXR1cwUMdXNlclZlcmlmaWVkBwkAAgECIE5vdCBhbGxvd2VkIHRvIHNldCBFUkMyMCBhZGRyZXNzBAhmaXJzdFR3bwkArwICBQVlcmMyMAACAwMJAQIhPQIFCGZpcnN0VHdvAgIweAYJAQIhPQIJALECAQUFZXJjMjAAKgkAAgECHFRoaXMgaXMgbm90IGFuIGVyYzIwIGFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleVVzZXJFUkMyMAEFBmNhbGxlcgUFZXJjMjAFA25pbAZpbnZva2UBEGNoYW5nZVVzZXJTdGF0dXMDB2FkZHJlc3MGc3RhdHVzBG5vdGUEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgQNY3VycmVudFN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDWtleVVzZXJTdGF0dXMBBQdhZGRyZXNzBAtzdGF0dXNUb1NldAkBEXZhbGlkYXRlTmV3U3RhdHVzAwUGc3RhdHVzBQdhZGRyZXNzBQ1jdXJyZW50U3RhdHVzBARuYW1lCQDaBAEJAJsDAQkBDmdldFN0cmluZ0J5S2V5AQkBC2tleVVzZXJOYW1lAQUHYWRkcmVzcwQFdGh1bWIJANoEAQkAmwMBCQEOZ2V0U3RyaW5nQnlLZXkBCQEMa2V5VXNlclRodW1iAQUHYWRkcmVzcwQEZGF0ZQkBD2dldEludGVnZXJCeUtleQEJAQtrZXlVc2VyRGF0ZQEFB2FkZHJlc3MEBGpzb24JAQhtYWtlSlNPTgMFBG5hbWUFBXRodW1iCQCkAwEFBGRhdGUDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCBQRqb2VwCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVVzZXJTdGF0dXMBBQdhZGRyZXNzBQtzdGF0dXNUb1NldAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgUNY3VycmVudFN0YXR1cwIBXwUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgULc3RhdHVzVG9TZXQCAV8FB2FkZHJlc3MFBGpzb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAgp1c2VyX25vdGVfBQdhZGRyZXNzBQRub3RlBQNuaWwJAAIBAiFOb3QgYWxsb3dlZCB0byBjaGFuZ2UgdXNlciBzdGF0dXMGaW52b2tlAQpkZWxldGVVc2VyAQdhZGRyZXNzBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEDWN1cnJlbnRTdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUHYWRkcmVzcwMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleVVzZXJEYXRlAQUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5VXNlckFkZHIBBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlVc2VyTmFtZQEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleVVzZXJEZXNjAQUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5VXNlclNvY2lhbAEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVVzZXJUaHVtYgEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAgp1c2VyX25vdGVfBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICBQ1jdXJyZW50U3RhdHVzAgFfBQdhZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlVc2VyU3RhdHVzAQUHYWRkcmVzcwULdXNlclJlbW92ZWQFA25pbAkAAgECC05vdCBhbGxvd2VkAWkBCHNldEFnZW50BAphcnRpc3RBZGRyCWFnZW50QWRkcgxwcmltYXJ5U2hhcmUOc2Vjb25kYXJ5U2hhcmUDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEBmNhbGxlcgkApQgBCAUBaQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwMJAQIhPQIJALECAQUKYXJ0aXN0QWRkcgAjBgkBAiE9AgkAsQIBBQlhZ2VudEFkZHIAIwkAAgECDVdyb25nIGFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBEmtleUFydGlzdEFnZW50QWRkcgEFCmFydGlzdEFkZHIFCWFnZW50QWRkcgkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5QWdlbnRBcnRpc3RBZGRyAgUJYWdlbnRBZGRyBQphcnRpc3RBZGRyBQphcnRpc3RBZGRyCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEPa2V5UHJpbWFyeVNoYXJlAQUKYXJ0aXN0QWRkcgUMcHJpbWFyeVNoYXJlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQERa2V5U2Vjb25kYXJ5U2hhcmUBBQphcnRpc3RBZGRyBQ5zZWNvbmRhcnlTaGFyZQUDbmlsCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQp1bnNldEFnZW50AgphcnRpc3RBZGRyCWFnZW50QWRkcgMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQGY2FsbGVyCQClCAEIBQFpBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDAwkBAiE9AgkAsQIBBQphcnRpc3RBZGRyACMGCQECIT0CCQCxAgEFCWFnZW50QWRkcgAjCQACAQINV3JvbmcgYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5QXJ0aXN0QWdlbnRBZGRyAQUKYXJ0aXN0QWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5QWdlbnRBcnRpc3RBZGRyAgUJYWdlbnRBZGRyBQphcnRpc3RBZGRyCQDMCAIJAQtEZWxldGVFbnRyeQEJAQ9rZXlQcmltYXJ5U2hhcmUBBQphcnRpc3RBZGRyCQDMCAIJAQtEZWxldGVFbnRyeQEJARFrZXlTZWNvbmRhcnlTaGFyZQEFCmFydGlzdEFkZHIFA25pbAkAAgECE1lvdSBhcmUgbm90IGFsbG93ZWQBaQELZGVsZXRlRW50cnkBBWVudHJ5BAZjYWxsZXIJAKUIAQgFAWkGY2FsbGVyAwkAAAIFBmNhbGxlcgUFY2hyaXMJAMwIAgkBC0RlbGV0ZUVudHJ5AQUFZW50cnkFA25pbAkAAgECAm5vAIppNrA=", "height": 2165292, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GaiULeiCDAS8SWmUtza53bX4UZvoF2Pd7gyjUzj1FyJG Next: 8QsaJyAMffrFVfu4kC3i4QH54XWK1XBzKSjakskBWwR9 Diff:
OldNewDifferences
239239 then (S != p)
240240 else false)
241241 then throw("Not allowed to set ERC20 address")
242- else [StringEntry(D(w), ak)]
242+ else {
243+ let al = take(ak, 2)
244+ if (if ((al != "0x"))
245+ then true
246+ else (size(ak) != 42))
247+ then throw("This is not an erc20 address")
248+ else [StringEntry(D(w), ak)]
249+ }
243250 }
244251
245252
246253
247254 @Callable(ab)
248-func changeUserStatus (U,S,al) = {
255+func changeUserStatus (U,S,am) = {
249256 let w = toString(ab.caller)
250257 let V = b(B(U))
251258 let X = T(S, U, V)
254261 let aa = e(C(U))
255262 let aj = Z(N, P, toString(aa))
256263 if (containsElement([f, g, toString(this)], w))
257- then [StringEntry(B(U), X), DeleteEntry(((V + "_") + U)), StringEntry(((X + "_") + U), aj), StringEntry(("user_note_" + U), al)]
264+ then [StringEntry(B(U), X), DeleteEntry(((V + "_") + U)), StringEntry(((X + "_") + U), aj), StringEntry(("user_note_" + U), am)]
258265 else throw("Not allowed to change user status")
259266 }
260267
271278
272279
273280
274-@Callable(am)
275-func setAgent (F,H,an,ao) = if (!(k))
281+@Callable(an)
282+func setAgent (F,H,ao,ap) = if (!(k))
276283 then throw(l)
277284 else {
278- let w = toString(am.caller)
285+ let w = toString(an.caller)
279286 if (containsElement([f, toString(this)], w))
280287 then if (if ((size(F) != 35))
281288 then true
282289 else (size(H) != 35))
283290 then throw("Wrong address")
284- else [StringEntry(E(F), H), StringEntry(G(H, F), F), IntegerEntry(I(F), an), IntegerEntry(J(F), ao)]
291+ else [StringEntry(E(F), H), StringEntry(G(H, F), F), IntegerEntry(I(F), ao), IntegerEntry(J(F), ap)]
285292 else throw("You are not allowed")
286293 }
287294
288295
289296
290-@Callable(am)
297+@Callable(an)
291298 func unsetAgent (F,H) = if (!(k))
292299 then throw(l)
293300 else {
294- let w = toString(am.caller)
301+ let w = toString(an.caller)
295302 if (containsElement([f, toString(this)], w))
296303 then if (if ((size(F) != 35))
297304 then true
303310
304311
305312
306-@Callable(am)
307-func deleteEntry (ap) = {
308- let w = toString(am.caller)
313+@Callable(an)
314+func deleteEntry (aq) = {
315+ let w = toString(an.caller)
309316 if ((w == f))
310- then [DeleteEntry(ap)]
317+ then [DeleteEntry(aq)]
311318 else throw("no")
312319 }
313320
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.3"
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 = b("conf_admin_2")
1818
1919 let h = "conf_dapp_is_running"
2020
2121 let i = "conf_maintenance_msg"
2222
2323 let j = "conf_whitelisted_only"
2424
2525 let k = valueOrElse(getBoolean(this, h), true)
2626
2727 let l = valueOrElse(getString(this, i), "")
2828
2929 let m = valueOrElse(getBoolean(this, j), true)
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_date_" + w)
6666
6767
6868 func D (w) = ("user_ERC20_" + w)
6969
7070
7171 func E (F) = ("artist_agent_" + F)
7272
7373
7474 func G (H,F) = ((("agent_" + H) + "_") + F)
7575
7676
7777 func I (F) = ("artist_agent_primary_" + F)
7878
7979
8080 func J (F) = ("artist_agent_secondary_" + F)
8181
8282
8383 func K (L) = if (contains(L, "/"))
8484 then if (if ((76 > size(L)))
8585 then (size(split(L, "/")[0]) == 59)
8686 else false)
8787 then (16 > size(split(L, "/")[1]))
8888 else false
8989 else false
9090
9191
9292 func M (w,N,O,P,Q) = {
9393 let R = if ((size(P) != 0))
9494 then K(P)
9595 else true
9696 if (!(R))
9797 then throw("CID don't match requirement!")
9898 else if (if ((N == ""))
9999 then true
100100 else (O == ""))
101101 then throw("Name and description cannot be empty")
102102 else if ((size(O) > 600))
103103 then throw("600 Char. max description")
104104 else if ((size(N) > 45))
105105 then throw("45 Char. max name")
106106 else {
107107 let S = b(B(w))
108108 if (if ((S == q))
109109 then true
110110 else (S == r))
111111 then throw("Account suspended/ removed.")
112112 else if (if (!(Q))
113113 then (S == o)
114114 else false)
115115 then throw("Already registered")
116116 else if (if (if (!(Q))
117117 then (S == "")
118118 else false)
119119 then m
120120 else false)
121121 then throw("Can't register, get approved first.")
122122 else if (if (if (Q)
123123 then (S == "")
124124 else false)
125125 then true
126126 else if (Q)
127127 then (S == n)
128128 else false)
129129 then throw("Register first")
130130 else true
131131 }
132132 }
133133
134134
135135 func T (S,U,V) = {
136136 let W = [p, o, q, r, n, s]
137137 let X = if (containsElement(W, S))
138138 then S
139139 else if (if ((S == u))
140140 then (V == n)
141141 else false)
142142 then ""
143143 else throw("Unknown status")
144144 let Y = e(C(U))
145145 if (if ((Y == 0))
146146 then (X != n)
147147 else false)
148148 then throw("You cant set this status, user is not registered.")
149149 else if (if ((V == n))
150150 then (X == n)
151151 else false)
152152 then throw("User already allowed")
153153 else if (if ((V == o))
154154 then (X == n)
155155 else false)
156156 then throw("User already allowed & registered")
157157 else if (if ((V == p))
158158 then (X == n)
159159 else false)
160160 then throw("User already allowed & verified")
161161 else X
162162 }
163163
164164
165165 func Z (N,P,aa) = (((((("{\"user_name\": \"" + N) + "\", \"user_thumb\":\"") + P) + "\",\"user_date\":\"") + aa) + "\"}")
166166
167167
168168 @Callable(ab)
169169 func setConf (c,ac) = {
170170 let w = toString(ab.caller)
171171 if (containsElement([f, toString(this)], w))
172172 then [StringEntry(c, ac)]
173173 else throw("You are not allowed to change this")
174174 }
175175
176176
177177
178178 @Callable(ab)
179179 func appRunning (ad,ae) = {
180180 let w = toString(ab.caller)
181181 if (containsElement([f, g, toString(this)], w))
182182 then [BooleanEntry(h, ad), StringEntry(i, ae)]
183183 else throw("You are not allowed to change this")
184184 }
185185
186186
187187
188188 @Callable(ab)
189189 func registrationMode (af) = {
190190 let w = toString(ab.caller)
191191 if (containsElement([f, toString(this)], w))
192192 then [BooleanEntry(j, af)]
193193 else throw("You are not allowed to change this")
194194 }
195195
196196
197197
198198 @Callable(ab)
199199 func registerUser (N,O,P,ag) = if (!(k))
200200 then throw(l)
201201 else {
202202 let w = toString(ab.caller)
203203 let ah = toBase58String(ab.transactionId)
204204 let ai = lastBlock.timestamp
205205 if (!(M(w, N, O, P, false)))
206206 then throw("Something went wrong")
207207 else {
208208 let aj = Z(toBase64String(toBytes(N)), toBase64String(toBytes(P)), toString(ai))
209209 [IntegerEntry(C(w), ai), StringEntry(v(w), ((ah + "_") + toString(ai))), StringEntry(x(w), N), StringEntry(y(w), O), StringEntry(z(w), ag), StringEntry(A(w), P), StringEntry(B(w), o), DeleteEntry(("ALLOWED_" + w)), StringEntry(((o + "_") + w), aj)]
210210 }
211211 }
212212
213213
214214
215215 @Callable(ab)
216216 func updateUser (N,O,P,ag) = if (!(k))
217217 then throw(l)
218218 else {
219219 let w = toString(ab.caller)
220220 let S = b(B(w))
221221 if (!(M(w, N, O, P, true)))
222222 then throw("Something went wrong")
223223 else {
224224 let aa = e(C(w))
225225 let aj = Z(toBase64String(toBytes(N)), toBase64String(toBytes(P)), toString(aa))
226226 [StringEntry(x(w), N), StringEntry(y(w), O), StringEntry(z(w), ag), StringEntry(A(w), P), StringEntry(((S + "_") + w), aj)]
227227 }
228228 }
229229
230230
231231
232232 @Callable(ab)
233233 func setERC20User (ak) = if (!(k))
234234 then throw(l)
235235 else {
236236 let w = toString(ab.caller)
237237 let S = b(B(w))
238238 if (if ((S != o))
239239 then (S != p)
240240 else false)
241241 then throw("Not allowed to set ERC20 address")
242- else [StringEntry(D(w), ak)]
242+ else {
243+ let al = take(ak, 2)
244+ if (if ((al != "0x"))
245+ then true
246+ else (size(ak) != 42))
247+ then throw("This is not an erc20 address")
248+ else [StringEntry(D(w), ak)]
249+ }
243250 }
244251
245252
246253
247254 @Callable(ab)
248-func changeUserStatus (U,S,al) = {
255+func changeUserStatus (U,S,am) = {
249256 let w = toString(ab.caller)
250257 let V = b(B(U))
251258 let X = T(S, U, V)
252259 let N = toBase64String(toBytes(b(x(U))))
253260 let P = toBase64String(toBytes(b(A(U))))
254261 let aa = e(C(U))
255262 let aj = Z(N, P, toString(aa))
256263 if (containsElement([f, g, toString(this)], w))
257- then [StringEntry(B(U), X), DeleteEntry(((V + "_") + U)), StringEntry(((X + "_") + U), aj), StringEntry(("user_note_" + U), al)]
264+ then [StringEntry(B(U), X), DeleteEntry(((V + "_") + U)), StringEntry(((X + "_") + U), aj), StringEntry(("user_note_" + U), am)]
258265 else throw("Not allowed to change user status")
259266 }
260267
261268
262269
263270 @Callable(ab)
264271 func deleteUser (U) = {
265272 let w = toString(ab.caller)
266273 let V = b(B(U))
267274 if (containsElement([f, toString(this)], w))
268275 then [DeleteEntry(C(U)), DeleteEntry(v(U)), DeleteEntry(x(U)), DeleteEntry(y(U)), DeleteEntry(z(U)), DeleteEntry(A(U)), DeleteEntry(("user_note_" + U)), DeleteEntry(((V + "_") + U)), StringEntry(B(U), r)]
269276 else throw("Not allowed")
270277 }
271278
272279
273280
274-@Callable(am)
275-func setAgent (F,H,an,ao) = if (!(k))
281+@Callable(an)
282+func setAgent (F,H,ao,ap) = if (!(k))
276283 then throw(l)
277284 else {
278- let w = toString(am.caller)
285+ let w = toString(an.caller)
279286 if (containsElement([f, toString(this)], w))
280287 then if (if ((size(F) != 35))
281288 then true
282289 else (size(H) != 35))
283290 then throw("Wrong address")
284- else [StringEntry(E(F), H), StringEntry(G(H, F), F), IntegerEntry(I(F), an), IntegerEntry(J(F), ao)]
291+ else [StringEntry(E(F), H), StringEntry(G(H, F), F), IntegerEntry(I(F), ao), IntegerEntry(J(F), ap)]
285292 else throw("You are not allowed")
286293 }
287294
288295
289296
290-@Callable(am)
297+@Callable(an)
291298 func unsetAgent (F,H) = if (!(k))
292299 then throw(l)
293300 else {
294- let w = toString(am.caller)
301+ let w = toString(an.caller)
295302 if (containsElement([f, toString(this)], w))
296303 then if (if ((size(F) != 35))
297304 then true
298305 else (size(H) != 35))
299306 then throw("Wrong address")
300307 else [DeleteEntry(E(F)), DeleteEntry(G(H, F)), DeleteEntry(I(F)), DeleteEntry(J(F))]
301308 else throw("You are not allowed")
302309 }
303310
304311
305312
306-@Callable(am)
307-func deleteEntry (ap) = {
308- let w = toString(am.caller)
313+@Callable(an)
314+func deleteEntry (aq) = {
315+ let w = toString(an.caller)
309316 if ((w == f))
310- then [DeleteEntry(ap)]
317+ then [DeleteEntry(aq)]
311318 else throw("no")
312319 }
313320
314321

github/deemru/w8io/026f985 
120.34 ms