tx · Apvtbw5GPfTKxPqhdHdkc13vmJCKLF3KNEn9ZKKDqGZB

3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj:  -0.01600000 Waves

2023.02.03 06:06 [2432881] smart account 3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj > SELF 0.00000000 Waves

{ "type": 13, "id": "Apvtbw5GPfTKxPqhdHdkc13vmJCKLF3KNEn9ZKKDqGZB", "fee": 1600000, "feeAssetId": null, "timestamp": 1675392377289, "version": 2, "chainId": 84, "sender": "3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj", "senderPublicKey": "A2m227AHcq7gWfSU59Q3UJaqkEa7SccFYmJuWHbFrrKE", "proofs": [ "4ewYVtgTED76KRZ7DWATpfRvQfay3x7SxYJ8YHTx9xfhQTuJWnnLN7p118JVvRc9i4TV3YFG3JpEaDtMM97RMQsQ" ], "script": "base64:BgJTCAISBAoCCAgSBAoCBAgSAwoBBBIICgYICAgIAQgSCAoGCAgICAEIEgQKAggIEgoKCAgICAgBAQEBEgMKAQgSBwoFCAgBAQQSBQoDCAgEEgMKAQgvAAdWRVJTSU9OAgMxLjUBDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgABD2dldEJvb2xlYW5CeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFA2tleQcBD2dldEludGVnZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAAVjaHJpcwkBDmdldFN0cmluZ0J5S2V5AQIMY29uZl9hZG1pbl8xAA5kYXBwUnVubmluZ0tleQIUY29uZl9kYXBwX2lzX3J1bm5pbmcAEW1haW50ZW5hbmNlTVNHS2V5AhRjb25mX21haW50ZW5hbmNlX21zZwASd2hpdGVsaXN0ZWRvbmx5S2V5AhVjb25mX3doaXRlbGlzdGVkX29ubHkAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDmRhcHBSdW5uaW5nS2V5BgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwURbWFpbnRlbmFuY2VNU0dLZXkCAAAPd2hpdGVsaXN0ZWRvbmx5CQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFEndoaXRlbGlzdGVkb25seUtleQYADXdoaXRlbGlzdERhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQITY29uZl93aGl0ZWxpc3RfZGFwcAAIc2lnbkRhcHAJAQV2YWx1ZQEJAKYIAQkBDmdldFN0cmluZ0J5S2V5AQIRY29uZl9zaWdud2ViX2RhcHAAC3VzZXJBbGxvd2VkAgdBTExPV0VEAA51c2VyUmVnaXN0ZXJlZAIKUkVHSVNURVJFRAAMdXNlclZlcmlmaWVkAghWRVJJRklFRAANdXNlclN1c3BlbmRlZAIJU1VTUEVOREVEAAt1c2VyUmVtb3ZlZAIHUkVNT1ZFRAASdXNlckNoYW5nZVJlcXVpcmVkAg9DSEFOR0VfUkVRVUlSRUQAEHVzZXJVbnJlZ2lzdGVyZWQCDFVOUkVHSVNURVJFRAAJdXNlclJlc2V0AgVSRVNFVAELa2V5VXNlckFkZHIBBmNhbGxlcgkArAICAgV1c2VyXwUGY2FsbGVyAQtrZXlVc2VyTmFtZQEGY2FsbGVyCQCsAgICCnVzZXJfbmFtZV8FBmNhbGxlcgELa2V5VXNlckRlc2MBBmNhbGxlcgkArAICAgp1c2VyX2Rlc2NfBQZjYWxsZXIBDWtleVVzZXJTb2NpYWwBBmNhbGxlcgkArAICAgx1c2VyX3NvY2lhbF8FBmNhbGxlcgEMa2V5VXNlclRodW1iAQZjYWxsZXIJAKwCAgILdXNlcl90aHVtYl8FBmNhbGxlcgENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyARBrZXlVc2VyUm95YWx0aWVzAQZjYWxsZXIJAKwCAgIPdXNlcl9yb3lhbHRpZXNfBQZjYWxsZXIBC2tleVVzZXJEYXRlAQZjYWxsZXIJAKwCAgIKdXNlcl9kYXRlXwUGY2FsbGVyAQxrZXlVc2VyRVJDMjABBmNhbGxlcgkArAICAgt1c2VyX0VSQzIwXwUGY2FsbGVyAQtrZXlVc2VyTm90ZQEGY2FsbGVyCQCsAgICCnVzZXJfbm90ZV8FBmNhbGxlcgEMa2V5VXNlckxhYmVsAQZjYWxsZXIJAKwCAgILdXNlcl9sYWJlbF8FBmNhbGxlcgESa2V5QXJ0aXN0QWdlbnRBZGRyAQphcnRpc3RBZGRyCQCsAgICDWFydGlzdF9hZ2VudF8FCmFydGlzdEFkZHIBEmtleUFnZW50QXJ0aXN0QWRkcgIJYWdlbnRBZGRyCmFydGlzdEFkZHIJAKwCAgkArAICCQCsAgICBmFnZW50XwUJYWdlbnRBZGRyAgFfBQphcnRpc3RBZGRyARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEKYXJ0aXN0QWRkcgkArAICAhVhcnRpc3RfYWdlbnRfcHJpbWFyeV8FCmFydGlzdEFkZHIBFmtleVNlY29uZGFyeVNoYXJlQWdlbnQBCmFydGlzdEFkZHIJAKwCAgIXYXJ0aXN0X2FnZW50X3NlY29uZGFyeV8FCmFydGlzdEFkZHIBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAhRhcnRpc3RfcHVibGljX2FnZW50XwUKYXJ0aXN0QWRkcgEYa2V5UHVibGljQWdlbnRBcnRpc3RBZGRyAglhZ2VudEFkZHIKYXJ0aXN0QWRkcgkArAICCQCsAgIJAKwCAgINcHVibGljX2FnZW50XwUJYWdlbnRBZGRyAgFfBQphcnRpc3RBZGRyARprZXlQcmltYXJ5U2hhcmVQdWJsaWNBZ2VudAEKYXJ0aXN0QWRkcgkArAICAhxhcnRpc3RfcHVibGljX2FnZW50X3ByaW1hcnlfBQphcnRpc3RBZGRyARxrZXlTZWNvbmRhcnlTaGFyZVB1YmxpY0FnZW50AQphcnRpc3RBZGRyCQCsAgICHmFydGlzdF9wdWJsaWNfYWdlbnRfc2Vjb25kYXJ5XwUKYXJ0aXN0QWRkcgEOY2hlY2tXaGl0ZWxpc3QBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQ13aGl0ZWxpc3REYXBwBQNrZXkAAAELdmFsaWRhdGVDSUQBA2NpZAMJAQhjb250YWlucwIFA2NpZAIBLwMDCQBmAgBMCQCxAgEFA2NpZAkAAAIJALECAQkAkQMCCQC1CQIFA2NpZAIBLwAAADsHCQBmAgAQCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAQcHAQ12YWxpZFVzZXJEYXRhBQZjYWxsZXIEbmFtZQtkZXNjcmlwdGlvbgV0aHVtYgppc0FuVXBkYXRlBAh2YWxpZENJRAMJAQIhPQIJALECAQUFdGh1bWIAAAkBC3ZhbGlkYXRlQ0lEAQUFdGh1bWIGAwkBASEBBQh2YWxpZENJRAkAAgECHENJRCBkb24ndCBtYXRjaCByZXF1aXJlbWVudCEDAwkAAAIFBG5hbWUCAAYJAAACBQtkZXNjcmlwdGlvbgIACQACAQIkTmFtZSBhbmQgZGVzY3JpcHRpb24gY2Fubm90IGJlIGVtcHR5AwkAZgIJALECAQULZGVzY3JpcHRpb24A2AQJAAIBAhk2MDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwkAZgIJALECAQUEbmFtZQAtCQACAQIRNDUgQ2hhci4gbWF4IG5hbWUEBnN0YXR1cwkBDmdldFN0cmluZ0J5S2V5AQkBDWtleVVzZXJTdGF0dXMBBQZjYWxsZXIDAwkAAAIFBnN0YXR1cwUNdXNlclN1c3BlbmRlZAYJAAACBQZzdGF0dXMFC3VzZXJSZW1vdmVkCQACAQIbQWNjb3VudCBzdXNwZW5kZWQvIHJlbW92ZWQuAwMJAQEhAQUKaXNBblVwZGF0ZQkAAAIFBnN0YXR1cwUOdXNlclJlZ2lzdGVyZWQHCQACAQISQWxyZWFkeSByZWdpc3RlcmVkAwMDCQEBIQEFCmlzQW5VcGRhdGUJAAACBQZzdGF0dXMCAAcFD3doaXRlbGlzdGVkb25seQcJAAIBAiNDYW4ndCByZWdpc3RlciwgZ2V0IGFwcHJvdmVkIGZpcnN0LgMDAwUKaXNBblVwZGF0ZQkAAAIFBnN0YXR1cwIABwYDBQppc0FuVXBkYXRlCQAAAgUGc3RhdHVzBQt1c2VyQWxsb3dlZAcJAAIBAg5SZWdpc3RlciBmaXJzdAYBEXZhbGlkYXRlTmV3U3RhdHVzAwZzdGF0dXMHYWRkcmVzcw1jdXJyZW50U3RhdHVzBAlhbGxTdGF0dXMJAMwIAgUMdXNlclZlcmlmaWVkCQDMCAIFDnVzZXJSZWdpc3RlcmVkCQDMCAIFDXVzZXJTdXNwZW5kZWQJAMwIAgULdXNlclJlbW92ZWQJAMwIAgULdXNlckFsbG93ZWQJAMwIAgUSdXNlckNoYW5nZVJlcXVpcmVkBQNuaWwEC3N0YXR1c1RvU2V0AwkBD2NvbnRhaW5zRWxlbWVudAIFCWFsbFN0YXR1cwUGc3RhdHVzBQZzdGF0dXMDAwkAAAIFBnN0YXR1cwUJdXNlclJlc2V0CQAAAgUNY3VycmVudFN0YXR1cwULdXNlckFsbG93ZWQHAgAJAAIBAg5Vbmtub3duIHN0YXR1cwQQdXNlcklzUmVnaXN0ZXJlZAkBD2dldEludGVnZXJCeUtleQEJAQtrZXlVc2VyRGF0ZQEFB2FkZHJlc3MDAwkAAAIFEHVzZXJJc1JlZ2lzdGVyZWQAAAkBAiE9AgULc3RhdHVzVG9TZXQFC3VzZXJBbGxvd2VkBwkAAgECMVlvdSBjYW50IHNldCB0aGlzIHN0YXR1cywgdXNlciBpcyBub3QgcmVnaXN0ZXJlZC4DAwkAAAIFDWN1cnJlbnRTdGF0dXMFC3VzZXJBbGxvd2VkCQAAAgULc3RhdHVzVG9TZXQFC3VzZXJBbGxvd2VkBwkAAgECFFVzZXIgYWxyZWFkeSBhbGxvd2VkAwMJAAACBQ1jdXJyZW50U3RhdHVzBQ51c2VyUmVnaXN0ZXJlZAkAAAIFC3N0YXR1c1RvU2V0BQt1c2VyQWxsb3dlZAcJAAIBAiFVc2VyIGFscmVhZHkgYWxsb3dlZCAmIHJlZ2lzdGVyZWQDAwkAAAIFDWN1cnJlbnRTdGF0dXMFDHVzZXJWZXJpZmllZAkAAAIFC3N0YXR1c1RvU2V0BQt1c2VyQWxsb3dlZAcJAAIBAh9Vc2VyIGFscmVhZHkgYWxsb3dlZCAmIHZlcmlmaWVkBQtzdGF0dXNUb1NldAEIbWFrZUpTT04DBG5hbWUFdGh1bWIEZGF0ZQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIPeyJ1c2VyX25hbWUiOiAiBQRuYW1lAhEiLCAidXNlcl90aHVtYiI6IgUFdGh1bWICDyIsInVzZXJfZGF0ZSI6IgUEZGF0ZQICIn0BCGFzU3RyaW5nAQJidgQHJG1hdGNoMAUCYnYDCQABAgUHJG1hdGNoMAIGU3RyaW5nBANidjAFByRtYXRjaDAFA2J2MAkAAgECJFNwb25zb3JlZCBQdWJsaWMgS2V5IFN0cmluZyBleHBlY3RlZAEJZ2V0Q2FsbGVyAgFpBnB1YktleQQLaXNTcG9uc29yZWQDCQECIT0CBQZwdWJLZXkCAAkBC3ZhbHVlT3JFbHNlAgkBDmNoZWNrV2hpdGVsaXN0AQkArAICCQClCAEJAKcIAQkA2QQBBQZwdWJLZXkCCV9mcmVlX3R4cwAAAAAEBmNhbGxlcgMDCQAAAgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQClCAEFBHRoaXMJAGYCBQtpc1Nwb25zb3JlZAAABwkApQgBCQCnCAEJANkEAQUGcHViS2V5CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMEE2dldF9zcG9uc29yZWRfd2F2ZXMDAwkBAiE9AgUGcHViS2V5AgAJAGYCBQtpc1Nwb25zb3JlZAAABwkA/AcEBQ13aGl0ZWxpc3REYXBwAgl1c2VGcmVlVHgJAMwIAgkApQgBCQCnCAEJANkEAQUGcHViS2V5BQNuaWwFA25pbAUEdW5pdAMJAAACBRNnZXRfc3BvbnNvcmVkX3dhdmVzBRNnZXRfc3BvbnNvcmVkX3dhdmVzCQCUCgIFBmNhbGxlcgkAZgIFC2lzU3BvbnNvcmVkAAAJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4LBmludm9rZQEHc2V0Q29uZgIDa2V5A3ZhbAQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBCmFwcFJ1bm5pbmcCBmlzTGl2ZQdtZXNzYWdlBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQxCb29sZWFuRW50cnkCBQ5kYXBwUnVubmluZ0tleQUGaXNMaXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFEW1haW50ZW5hbmNlTVNHS2V5BQdtZXNzYWdlBQNuaWwJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzBmludm9rZQEQcmVnaXN0cmF0aW9uTW9kZQEGV0xvbmx5BAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQxCb29sZWFuRW50cnkCBRJ3aGl0ZWxpc3RlZG9ubHlLZXkFBldMb25seQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBDHJlZ2lzdGVyVXNlcgYEbmFtZQtkZXNjcmlwdGlvbgV0aHVtYgZzb2NpYWwJcm95YWx0aWVzBnB1YktleQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQLJHQwNzkxODc5NzAJAQlnZXRDYWxsZXICBQZpbnZva2UFBnB1YktleQQGY2FsbGVyCAULJHQwNzkxODc5NzACXzEEC2lzU3BvbnNvcmVkCAULJHQwNzkxODc5NzACXzIEAmlkCQDYBAEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAQJdGltZXN0YW1wCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAQEbm90ZQkBDmdldFN0cmluZ0J5S2V5AQkBC2tleVVzZXJOb3RlAQUGY2FsbGVyBAVsYWJlbAkBDmdldFN0cmluZ0J5S2V5AQkBDGtleVVzZXJMYWJlbAEFBmNhbGxlcgMJAQEhAQkBDXZhbGlkVXNlckRhdGEFBQZjYWxsZXIFBG5hbWUFC2Rlc2NyaXB0aW9uBQV0aHVtYgcJAAIBAhRTb21ldGhpbmcgd2VudCB3cm9uZwQEanNvbgkBCG1ha2VKU09OAwkA2gQBCQCbAwEFBG5hbWUJANoEAQkAmwMBBQV0aHVtYgkApAMBBQl0aW1lc3RhbXADAwkAZgIAAAUJcm95YWx0aWVzBgkAZgIFCXJveWFsdGllcwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQQKdHhUb0NhbGxlcgMFC2lzU3BvbnNvcmVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBC2tleVVzZXJEYXRlAQUGY2FsbGVyBQl0aW1lc3RhbXAJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJBZGRyAQUGY2FsbGVyCQCsAgIJAKwCAgUCaWQCAV8JAKQDAQUJdGltZXN0YW1wCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlVc2VyTmFtZQEFBmNhbGxlcgUEbmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlckRlc2MBBQZjYWxsZXIFC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlVc2VyU29jaWFsAQUGY2FsbGVyBQZzb2NpYWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleVVzZXJUaHVtYgEFBmNhbGxlcgUFdGh1bWIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVVzZXJTdGF0dXMBBQZjYWxsZXIFDnVzZXJSZWdpc3RlcmVkCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5VXNlclJveWFsdGllcwEFBmNhbGxlcgUJcm95YWx0aWVzCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIIQUxMT1dFRF8FBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUOdXNlclJlZ2lzdGVyZWQCAV8FBmNhbGxlcgUEanNvbgkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5vdGUBBQZjYWxsZXIFBG5vdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleVVzZXJMYWJlbAEFBmNhbGxlcgUFbGFiZWwFA25pbAUKdHhUb0NhbGxlcgZpbnZva2UBCnVwZGF0ZVVzZXIGBG5hbWULZGVzY3JpcHRpb24FdGh1bWIGc29jaWFsCXJveWFsdGllcwZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cECyR0MDk2NTU5NzU5CQEJZ2V0Q2FsbGVyAgUGaW52b2tlBQZwdWJLZXkEBmNhbGxlcggFCyR0MDk2NTU5NzU5Al8xBAtpc1Nwb25zb3JlZAgFCyR0MDk2NTU5NzU5Al8yBAZzdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyAwkBASEBCQENdmFsaWRVc2VyRGF0YQUFBmNhbGxlcgUEbmFtZQULZGVzY3JpcHRpb24FBXRodW1iBgkAAgECFFNvbWV0aGluZyB3ZW50IHdyb25nBARkYXRlCQEPZ2V0SW50ZWdlckJ5S2V5AQkBC2tleVVzZXJEYXRlAQUGY2FsbGVyBARqc29uCQEIbWFrZUpTT04DCQDaBAEJAJsDAQUEbmFtZQkA2gQBCQCbAwEFBXRodW1iCQCkAwEFBGRhdGUDAwkAZgIAAAUJcm95YWx0aWVzBgkAZgIFCXJveWFsdGllcwDoBwkAAgECM1JveWFsdGllcyBjYW5ub3QgYmUgbGVzcyB0aGFuIDAlIG9yIGhpZ2hlciB0aGFuIDEwJQQKdHhUb0NhbGxlcgMFC2lzU3BvbnNvcmVkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAAUEdW5pdAUDbmlsBQNuaWwJAM4IAgkAzAgCCQELU3RyaW5nRW50cnkCCQELa2V5VXNlck5hbWUBBQZjYWxsZXIFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJEZXNjAQUGY2FsbGVyBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclNvY2lhbAEFBmNhbGxlcgUGc29jaWFsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyVGh1bWIBBQZjYWxsZXIFBXRodW1iCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEQa2V5VXNlclJveWFsdGllcwEFBmNhbGxlcgUJcm95YWx0aWVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZzdGF0dXMCAV8FBmNhbGxlcgUEanNvbgUDbmlsBQp0eFRvQ2FsbGVyBmludm9rZQEMc2V0RVJDMjBVc2VyAgVlcmMyMAZwdWJLZXkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cEDSR0MDEwOTQ2MTEwNDkJAQlnZXRDYWxsZXICBQZpbnZva2UFBnB1YktleQQGY2FsbGVyCAUNJHQwMTA5NDYxMTA0OQJfMQQLaXNTcG9uc29yZWQIBQ0kdDAxMDk0NjExMDQ5Al8yBAZzdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyAwMJAQIhPQIFBnN0YXR1cwUOdXNlclJlZ2lzdGVyZWQJAQIhPQIFBnN0YXR1cwUMdXNlclZlcmlmaWVkBwkAAgECIE5vdCBhbGxvd2VkIHRvIHNldCBFUkMyMCBhZGRyZXNzBAhmaXJzdFR3bwkArwICBQVlcmMyMAACAwMJAQIhPQIFCGZpcnN0VHdvAgIweAYJAQIhPQIJALECAQUFZXJjMjAAKgkAAgECHFRoaXMgaXMgbm90IGFuIGVyYzIwIGFkZHJlc3MECnR4VG9DYWxsZXIDBQtpc1Nwb25zb3JlZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAAFBHVuaXQFA25pbAUDbmlsCQDOCAIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleVVzZXJFUkMyMAEFBmNhbGxlcgUFZXJjMjAFA25pbAUKdHhUb0NhbGxlcgZpbnZva2UBEGNoYW5nZVVzZXJTdGF0dXMIB2FkZHJlc3MGc3RhdHVzBG5vdGUFbGFiZWwRd2xfY2VydGlmaWNhdGlvbnMGd2xfdHhzCHdsX2Ryb3BzDndsX2NvbW1pc3Npb25zBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQAAAgkAsQIBBQdhZGRyZXNzAAAJAAIBAhdBZGRyZXNzIGNhbm5vdCBiZSBlbXB0eQQLY3VycmVudE5vdGUJAQ5nZXRTdHJpbmdCeUtleQEJAQtrZXlVc2VyTm90ZQEFB2FkZHJlc3MEDGN1cnJlbnRMYWJlbAkBDmdldFN0cmluZ0J5S2V5AQkBDGtleVVzZXJMYWJlbAEFB2FkZHJlc3MECW5vdGVUb1VzZQMJAQIhPQIJALECAQUEbm90ZQAABQRub3RlBQtjdXJyZW50Tm90ZQQKbGFiZWxUb1VzZQMJAQIhPQIJALECAQUFbGFiZWwAAAUFbGFiZWwFDGN1cnJlbnRMYWJlbAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIEE2ZyZWVfY2VydGlmaWNhdGlvbnMDCQECIT0CBRF3bF9jZXJ0aWZpY2F0aW9ucwAACQD8BwQFCHNpZ25EYXBwAht3aGl0ZWxpc3RGcmVlQ2VydGlmaWNhdGlvbnMJAMwIAgUHYWRkcmVzcwkAzAgCBRF3bF9jZXJ0aWZpY2F0aW9ucwkAzAgCBgUDbmlsBQNuaWwFA25pbAMJAAACBRNmcmVlX2NlcnRpZmljYXRpb25zBRNmcmVlX2NlcnRpZmljYXRpb25zBAhmcmVlX3R4cwMJAQIhPQIFBndsX3R4cwAACQD8BwQFDXdoaXRlbGlzdERhcHACEHdoaXRlbGlzdEZyZWVUeHMJAMwIAgUHYWRkcmVzcwkAzAgCBQZ3bF90eHMJAMwIAgYFA25pbAUDbmlsBQNuaWwDCQAAAgUIZnJlZV90eHMFCGZyZWVfdHhzBApmcmVlX2Ryb3BzAwkBAiE9AgUId2xfZHJvcHMAAAkA/AcEBQ13aGl0ZWxpc3REYXBwAhF3aGl0ZWxpc3RGcmVlRHJvcAkAzAgCBQdhZGRyZXNzCQDMCAIFCHdsX2Ryb3BzCQDMCAIGBQNuaWwFA25pbAUDbmlsAwkAAAIFCmZyZWVfZHJvcHMFCmZyZWVfZHJvcHMEEGZyZWVfY29tbWlzc2lvbnMDCQECIT0CBQ53bF9jb21taXNzaW9ucwAACQD8BwQFDXdoaXRlbGlzdERhcHACCXdoaXRlbGlzdAkAzAgCBQdhZGRyZXNzCQDMCAIFDndsX2NvbW1pc3Npb25zBQNuaWwFA25pbAUDbmlsAwkAAAIFEGZyZWVfY29tbWlzc2lvbnMFEGZyZWVfY29tbWlzc2lvbnMEDWN1cnJlbnRTdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUHYWRkcmVzcwMJAAACCQCxAgEFBnN0YXR1cwAAAwkAAAIFDWN1cnJlbnRTdGF0dXMCAAkAAgECF1VzZXIgaGF2ZSBubyBzdGF0dXMgeWV0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQtrZXlVc2VyTm90ZQEFB2FkZHJlc3MFCW5vdGVUb1VzZQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5VXNlckxhYmVsAQUHYWRkcmVzcwUKbGFiZWxUb1VzZQUDbmlsBAtzdGF0dXNUb1NldAkBEXZhbGlkYXRlTmV3U3RhdHVzAwUGc3RhdHVzBQdhZGRyZXNzBQ1jdXJyZW50U3RhdHVzBARuYW1lCQDaBAEJAJsDAQkBDmdldFN0cmluZ0J5S2V5AQkBC2tleVVzZXJOYW1lAQUHYWRkcmVzcwQFdGh1bWIJANoEAQkAmwMBCQEOZ2V0U3RyaW5nQnlLZXkBCQEMa2V5VXNlclRodW1iAQUHYWRkcmVzcwQEZGF0ZQkBD2dldEludGVnZXJCeUtleQEJAQtrZXlVc2VyRGF0ZQEFB2FkZHJlc3MEBGpzb24JAQhtYWtlSlNPTgMFBG5hbWUFBXRodW1iCQCkAwEFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVVzZXJTdGF0dXMBBQdhZGRyZXNzBQtzdGF0dXNUb1NldAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgUNY3VycmVudFN0YXR1cwIBXwUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgULc3RhdHVzVG9TZXQCAV8FB2FkZHJlc3MFBGpzb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkBC2tleVVzZXJOb3RlAQUHYWRkcmVzcwUJbm90ZVRvVXNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlVc2VyTGFiZWwBBQdhZGRyZXNzBQpsYWJlbFRvVXNlBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAiFOb3QgYWxsb3dlZCB0byBjaGFuZ2UgdXNlciBzdGF0dXMGaW52b2tlAQpkZWxldGVVc2VyAQdhZGRyZXNzBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEDWN1cnJlbnRTdGF0dXMJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlVc2VyU3RhdHVzAQUHYWRkcmVzcwMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleVVzZXJEYXRlAQUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQELa2V5VXNlckFkZHIBBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAQtrZXlVc2VyTmFtZQEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBC2tleVVzZXJEZXNjAQUHYWRkcmVzcwkAzAgCCQELRGVsZXRlRW50cnkBCQENa2V5VXNlclNvY2lhbAEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBDGtleVVzZXJUaHVtYgEFB2FkZHJlc3MJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAgp1c2VyX25vdGVfBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICBQ1jdXJyZW50U3RhdHVzAgFfBQdhZGRyZXNzCQDMCAIJAQtEZWxldGVFbnRyeQEJARBrZXlVc2VyUm95YWx0aWVzAQUHYWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VXNlclN0YXR1cwEFB2FkZHJlc3MFC3VzZXJSZW1vdmVkBQNuaWwJAAIBAgtOb3QgYWxsb3dlZAFpAQhzZXRBZ2VudAUKYXJ0aXN0QWRkcglhZ2VudEFkZHIMcHJpbWFyeVNoYXJlDnNlY29uZGFyeVNoYXJlCWFzUGFydG5lcgMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQGY2FsbGVyCQClCAEIBQFpBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDAwkBAiE9AgkAsQIBBQphcnRpc3RBZGRyACMGCQECIT0CCQCxAgEFCWFnZW50QWRkcgAjCQACAQINV3JvbmcgYWRkcmVzcwMFCWFzUGFydG5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5QXJ0aXN0QWdlbnRBZGRyAQUKYXJ0aXN0QWRkcgUJYWdlbnRBZGRyCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlBZ2VudEFydGlzdEFkZHICBQlhZ2VudEFkZHIFCmFydGlzdEFkZHIFCmFydGlzdEFkZHIJAMwIAgkBDEludGVnZXJFbnRyeQIJARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEFCmFydGlzdEFkZHIFDHByaW1hcnlTaGFyZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBFmtleVNlY29uZGFyeVNoYXJlQWdlbnQBBQphcnRpc3RBZGRyBQ5zZWNvbmRhcnlTaGFyZQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJARhrZXlBcnRpc3RQdWJsaWNBZ2VudEFkZHIBBQphcnRpc3RBZGRyBQlhZ2VudEFkZHIJAMwIAgkBC1N0cmluZ0VudHJ5AgkBGGtleVB1YmxpY0FnZW50QXJ0aXN0QWRkcgIFCWFnZW50QWRkcgUKYXJ0aXN0QWRkcgUKYXJ0aXN0QWRkcgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBGmtleVByaW1hcnlTaGFyZVB1YmxpY0FnZW50AQUKYXJ0aXN0QWRkcgUMcHJpbWFyeVNoYXJlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEca2V5U2Vjb25kYXJ5U2hhcmVQdWJsaWNBZ2VudAEFCmFydGlzdEFkZHIFDnNlY29uZGFyeVNoYXJlBQNuaWwJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAWkBCnVuc2V0QWdlbnQDCmFydGlzdEFkZHIJYWdlbnRBZGRyCWFzUGFydG5lcgMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwQGY2FsbGVyCQClCAEIBQFpBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDAwkBAiE9AgkAsQIBBQphcnRpc3RBZGRyACMGCQECIT0CCQCxAgEFCWFnZW50QWRkcgAjCQACAQINV3JvbmcgYWRkcmVzcwMFCWFzUGFydG5lcgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5QXJ0aXN0QWdlbnRBZGRyAQUKYXJ0aXN0QWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQESa2V5QWdlbnRBcnRpc3RBZGRyAgUJYWdlbnRBZGRyBQphcnRpc3RBZGRyCQDMCAIJAQtEZWxldGVFbnRyeQEJARRrZXlQcmltYXJ5U2hhcmVBZ2VudAEFCmFydGlzdEFkZHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBFmtleVNlY29uZGFyeVNoYXJlQWdlbnQBBQphcnRpc3RBZGRyBQNuaWwJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGGtleUFydGlzdFB1YmxpY0FnZW50QWRkcgEFCmFydGlzdEFkZHIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkBGGtleVB1YmxpY0FnZW50QXJ0aXN0QWRkcgIFCWFnZW50QWRkcgUKYXJ0aXN0QWRkcgkAzAgCCQELRGVsZXRlRW50cnkBCQEaa2V5UHJpbWFyeVNoYXJlUHVibGljQWdlbnQBBQphcnRpc3RBZGRyCQDMCAIJAQtEZWxldGVFbnRyeQEJARxrZXlTZWNvbmRhcnlTaGFyZVB1YmxpY0FnZW50AQUKYXJ0aXN0QWRkcgUDbmlsCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQtkZWxldGVFbnRyeQEFZW50cnkEBmNhbGxlcgkApQgBCAUBaQZjYWxsZXIDCQAAAgUGY2FsbGVyBQVjaHJpcwkAzAgCCQELRGVsZXRlRW50cnkBBQVlbnRyeQUDbmlsCQACAQICbm8BAnR4AQh2ZXJpZmllcgAEByRtYXRjaDAFAnR4AwkAAQIFByRtYXRjaDACF0ludm9rZVNjcmlwdFRyYW5zYWN0aW9uBANpbnYFByRtYXRjaDADAwMDCQAAAggFA2ludghmdW5jdGlvbgIMcmVnaXN0ZXJVc2VyCQAAAggFA2ludgRkQXBwBQR0aGlzBwkAAAIIBQNpbnYDZmVlAKDCHgcJAAACCAUDaW52CmZlZUFzc2V0SWQFBHVuaXQHCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACQDZBAEJAQhhc1N0cmluZwEJAJEDAggFA2ludgRhcmdzAAUDAwMDCQAAAggFA2ludghmdW5jdGlvbgIKdXBkYXRlVXNlcgkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwAFAwMDAwkAAAIIBQNpbnYIZnVuY3Rpb24CDHNldEVSQzIwVXNlcgkAAAIIBQNpbnYEZEFwcAUEdGhpcwcJAAACCAUDaW52A2ZlZQCgwh4HCQAAAggFA2ludgpmZWVBc3NldElkBQR1bml0BwkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAkA2QQBCQEIYXNTdHJpbmcBCQCRAwIIBQNpbnYEYXJncwACCQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5CQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5o25O0A==", "height": 2432881, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CubxapEMht9f4PyDms3kDsPdQP2bwXBHUJEWDkKJEAuw Next: 9wVK3nV4LVK1TVRfuhUndGB4S5MFdpECCT6Yi98wFuPm Diff:
OldNewDifferences
412412
413413
414414 @Callable(i)
415-func setAgent (artistAddr,agentAddr,primaryShare,secondaryShare,isPartner) = if (!(dappRunning))
415+func setAgent (artistAddr,agentAddr,primaryShare,secondaryShare,asPartner) = if (!(dappRunning))
416416 then throw(maintenanceMSG)
417417 else {
418418 let caller = toString(i.caller)
421421 then true
422422 else (size(agentAddr) != 35))
423423 then throw("Wrong address")
424- else if (isPartner)
424+ else if (asPartner)
425425 then [StringEntry(keyArtistAgentAddr(artistAddr), agentAddr), StringEntry(keyAgentArtistAddr(agentAddr, artistAddr), artistAddr), IntegerEntry(keyPrimaryShareAgent(artistAddr), primaryShare), IntegerEntry(keySecondaryShareAgent(artistAddr), secondaryShare)]
426426 else [StringEntry(keyArtistPublicAgentAddr(artistAddr), agentAddr), StringEntry(keyPublicAgentArtistAddr(agentAddr, artistAddr), artistAddr), IntegerEntry(keyPrimarySharePublicAgent(artistAddr), primaryShare), IntegerEntry(keySecondarySharePublicAgent(artistAddr), secondaryShare)]
427427 else throw("You are not allowed")
430430
431431
432432 @Callable(i)
433-func unsetAgent (artistAddr,agentAddr,isPartner) = if (!(dappRunning))
433+func unsetAgent (artistAddr,agentAddr,asPartner) = if (!(dappRunning))
434434 then throw(maintenanceMSG)
435435 else {
436436 let caller = toString(i.caller)
439439 then true
440440 else (size(agentAddr) != 35))
441441 then throw("Wrong address")
442- else if (isPartner)
442+ else if (asPartner)
443443 then [DeleteEntry(keyArtistAgentAddr(artistAddr)), DeleteEntry(keyAgentArtistAddr(agentAddr, artistAddr)), DeleteEntry(keyPrimaryShareAgent(artistAddr)), DeleteEntry(keySecondaryShareAgent(artistAddr))]
444444 else [DeleteEntry(keyArtistPublicAgentAddr(artistAddr)), DeleteEntry(keyPublicAgentArtistAddr(agentAddr, artistAddr)), DeleteEntry(keyPrimarySharePublicAgent(artistAddr)), DeleteEntry(keySecondarySharePublicAgent(artistAddr))]
445445 else throw("You are not allowed")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let VERSION = "1.5"
55
66 func getStringByKey (key) = valueOrElse(getString(this, key), "")
77
88
99 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
1010
1111
1212 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
1313
1414
1515 let chris = getStringByKey("conf_admin_1")
1616
1717 let dappRunningKey = "conf_dapp_is_running"
1818
1919 let maintenanceMSGKey = "conf_maintenance_msg"
2020
2121 let whitelistedonlyKey = "conf_whitelisted_only"
2222
2323 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
2424
2525 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
2626
2727 let whitelistedonly = valueOrElse(getBoolean(this, whitelistedonlyKey), true)
2828
2929 let whitelistDapp = value(addressFromString(getStringByKey("conf_whitelist_dapp")))
3030
3131 let signDapp = value(addressFromString(getStringByKey("conf_signweb_dapp")))
3232
3333 let userAllowed = "ALLOWED"
3434
3535 let userRegistered = "REGISTERED"
3636
3737 let userVerified = "VERIFIED"
3838
3939 let userSuspended = "SUSPENDED"
4040
4141 let userRemoved = "REMOVED"
4242
4343 let userChangeRequired = "CHANGE_REQUIRED"
4444
4545 let userUnregistered = "UNREGISTERED"
4646
4747 let userReset = "RESET"
4848
4949 func keyUserAddr (caller) = ("user_" + caller)
5050
5151
5252 func keyUserName (caller) = ("user_name_" + caller)
5353
5454
5555 func keyUserDesc (caller) = ("user_desc_" + caller)
5656
5757
5858 func keyUserSocial (caller) = ("user_social_" + caller)
5959
6060
6161 func keyUserThumb (caller) = ("user_thumb_" + caller)
6262
6363
6464 func keyUserStatus (caller) = ("user_status_" + caller)
6565
6666
6767 func keyUserRoyalties (caller) = ("user_royalties_" + caller)
6868
6969
7070 func keyUserDate (caller) = ("user_date_" + caller)
7171
7272
7373 func keyUserERC20 (caller) = ("user_ERC20_" + caller)
7474
7575
7676 func keyUserNote (caller) = ("user_note_" + caller)
7777
7878
7979 func keyUserLabel (caller) = ("user_label_" + caller)
8080
8181
8282 func keyArtistAgentAddr (artistAddr) = ("artist_agent_" + artistAddr)
8383
8484
8585 func keyAgentArtistAddr (agentAddr,artistAddr) = ((("agent_" + agentAddr) + "_") + artistAddr)
8686
8787
8888 func keyPrimaryShareAgent (artistAddr) = ("artist_agent_primary_" + artistAddr)
8989
9090
9191 func keySecondaryShareAgent (artistAddr) = ("artist_agent_secondary_" + artistAddr)
9292
9393
9494 func keyArtistPublicAgentAddr (artistAddr) = ("artist_public_agent_" + artistAddr)
9595
9696
9797 func keyPublicAgentArtistAddr (agentAddr,artistAddr) = ((("public_agent_" + agentAddr) + "_") + artistAddr)
9898
9999
100100 func keyPrimarySharePublicAgent (artistAddr) = ("artist_public_agent_primary_" + artistAddr)
101101
102102
103103 func keySecondarySharePublicAgent (artistAddr) = ("artist_public_agent_secondary_" + artistAddr)
104104
105105
106106 func checkWhitelist (key) = valueOrElse(getInteger(whitelistDapp, key), 0)
107107
108108
109109 func validateCID (cid) = if (contains(cid, "/"))
110110 then if (if ((76 > size(cid)))
111111 then (size(split(cid, "/")[0]) == 59)
112112 else false)
113113 then (16 > size(split(cid, "/")[1]))
114114 else false
115115 else false
116116
117117
118118 func validUserData (caller,name,description,thumb,isAnUpdate) = {
119119 let validCID = if ((size(thumb) != 0))
120120 then validateCID(thumb)
121121 else true
122122 if (!(validCID))
123123 then throw("CID don't match requirement!")
124124 else if (if ((name == ""))
125125 then true
126126 else (description == ""))
127127 then throw("Name and description cannot be empty")
128128 else if ((size(description) > 600))
129129 then throw("600 Char. max description")
130130 else if ((size(name) > 45))
131131 then throw("45 Char. max name")
132132 else {
133133 let status = getStringByKey(keyUserStatus(caller))
134134 if (if ((status == userSuspended))
135135 then true
136136 else (status == userRemoved))
137137 then throw("Account suspended/ removed.")
138138 else if (if (!(isAnUpdate))
139139 then (status == userRegistered)
140140 else false)
141141 then throw("Already registered")
142142 else if (if (if (!(isAnUpdate))
143143 then (status == "")
144144 else false)
145145 then whitelistedonly
146146 else false)
147147 then throw("Can't register, get approved first.")
148148 else if (if (if (isAnUpdate)
149149 then (status == "")
150150 else false)
151151 then true
152152 else if (isAnUpdate)
153153 then (status == userAllowed)
154154 else false)
155155 then throw("Register first")
156156 else true
157157 }
158158 }
159159
160160
161161 func validateNewStatus (status,address,currentStatus) = {
162162 let allStatus = [userVerified, userRegistered, userSuspended, userRemoved, userAllowed, userChangeRequired]
163163 let statusToSet = if (containsElement(allStatus, status))
164164 then status
165165 else if (if ((status == userReset))
166166 then (currentStatus == userAllowed)
167167 else false)
168168 then ""
169169 else throw("Unknown status")
170170 let userIsRegistered = getIntegerByKey(keyUserDate(address))
171171 if (if ((userIsRegistered == 0))
172172 then (statusToSet != userAllowed)
173173 else false)
174174 then throw("You cant set this status, user is not registered.")
175175 else if (if ((currentStatus == userAllowed))
176176 then (statusToSet == userAllowed)
177177 else false)
178178 then throw("User already allowed")
179179 else if (if ((currentStatus == userRegistered))
180180 then (statusToSet == userAllowed)
181181 else false)
182182 then throw("User already allowed & registered")
183183 else if (if ((currentStatus == userVerified))
184184 then (statusToSet == userAllowed)
185185 else false)
186186 then throw("User already allowed & verified")
187187 else statusToSet
188188 }
189189
190190
191191 func makeJSON (name,thumb,date) = (((((("{\"user_name\": \"" + name) + "\", \"user_thumb\":\"") + thumb) + "\",\"user_date\":\"") + date) + "\"}")
192192
193193
194194 func asString (bv) = match bv {
195195 case bv0: String =>
196196 bv0
197197 case _ =>
198198 throw("Sponsored Public Key String expected")
199199 }
200200
201201
202202 func getCaller (i,pubKey) = {
203203 let isSponsored = if ((pubKey != ""))
204204 then valueOrElse(checkWhitelist((toString(addressFromPublicKey(fromBase58String(pubKey))) + "_free_txs")), 0)
205205 else 0
206206 let caller = if (if ((toBase58String(i.caller.bytes) == toString(this)))
207207 then (isSponsored > 0)
208208 else false)
209209 then toString(addressFromPublicKey(fromBase58String(pubKey)))
210210 else toBase58String(i.caller.bytes)
211211 let get_sponsored_waves = if (if ((pubKey != ""))
212212 then (isSponsored > 0)
213213 else false)
214214 then invoke(whitelistDapp, "useFreeTx", [toString(addressFromPublicKey(fromBase58String(pubKey)))], nil)
215215 else unit
216216 if ((get_sponsored_waves == get_sponsored_waves))
217217 then $Tuple2(caller, (isSponsored > 0))
218218 else throw("Strict value is not equal to itself.")
219219 }
220220
221221
222222 @Callable(invoke)
223223 func setConf (key,val) = {
224224 let caller = toString(invoke.caller)
225225 if (containsElement([chris, toString(this)], caller))
226226 then [StringEntry(key, val)]
227227 else throw("You are not allowed to change this")
228228 }
229229
230230
231231
232232 @Callable(invoke)
233233 func appRunning (isLive,message) = {
234234 let caller = toString(invoke.caller)
235235 if (containsElement([chris, toString(this)], caller))
236236 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
237237 else throw("You are not allowed to change this")
238238 }
239239
240240
241241
242242 @Callable(invoke)
243243 func registrationMode (WLonly) = {
244244 let caller = toString(invoke.caller)
245245 if (containsElement([chris, toString(this)], caller))
246246 then [BooleanEntry(whitelistedonlyKey, WLonly)]
247247 else throw("You are not allowed to change this")
248248 }
249249
250250
251251
252252 @Callable(invoke)
253253 func registerUser (name,description,thumb,social,royalties,pubKey) = if (!(dappRunning))
254254 then throw(maintenanceMSG)
255255 else {
256256 let $t079187970 = getCaller(invoke, pubKey)
257257 let caller = $t079187970._1
258258 let isSponsored = $t079187970._2
259259 let id = toBase58String(invoke.transactionId)
260260 let timestamp = lastBlock.timestamp
261261 let note = getStringByKey(keyUserNote(caller))
262262 let label = getStringByKey(keyUserLabel(caller))
263263 if (!(validUserData(caller, name, description, thumb, false)))
264264 then throw("Something went wrong")
265265 else {
266266 let json = makeJSON(toBase64String(toBytes(name)), toBase64String(toBytes(thumb)), toString(timestamp))
267267 if (if ((0 > royalties))
268268 then true
269269 else (royalties > 1000))
270270 then throw("Royalties cannot be less than 0% or higher than 10%")
271271 else {
272272 let txToCaller = if (isSponsored)
273273 then [ScriptTransfer(Address(fromBase58String(caller)), 0, unit)]
274274 else nil
275275 ([IntegerEntry(keyUserDate(caller), timestamp), StringEntry(keyUserAddr(caller), ((id + "_") + toString(timestamp))), StringEntry(keyUserName(caller), name), StringEntry(keyUserDesc(caller), description), StringEntry(keyUserSocial(caller), social), StringEntry(keyUserThumb(caller), thumb), StringEntry(keyUserStatus(caller), userRegistered), IntegerEntry(keyUserRoyalties(caller), royalties), DeleteEntry(("ALLOWED_" + caller)), StringEntry(((userRegistered + "_") + caller), json), StringEntry(keyUserNote(caller), note), StringEntry(keyUserLabel(caller), label)] ++ txToCaller)
276276 }
277277 }
278278 }
279279
280280
281281
282282 @Callable(invoke)
283283 func updateUser (name,description,thumb,social,royalties,pubKey) = if (!(dappRunning))
284284 then throw(maintenanceMSG)
285285 else {
286286 let $t096559759 = getCaller(invoke, pubKey)
287287 let caller = $t096559759._1
288288 let isSponsored = $t096559759._2
289289 let status = getStringByKey(keyUserStatus(caller))
290290 if (!(validUserData(caller, name, description, thumb, true)))
291291 then throw("Something went wrong")
292292 else {
293293 let date = getIntegerByKey(keyUserDate(caller))
294294 let json = makeJSON(toBase64String(toBytes(name)), toBase64String(toBytes(thumb)), toString(date))
295295 if (if ((0 > royalties))
296296 then true
297297 else (royalties > 1000))
298298 then throw("Royalties cannot be less than 0% or higher than 10%")
299299 else {
300300 let txToCaller = if (isSponsored)
301301 then [ScriptTransfer(Address(fromBase58String(caller)), 0, unit)]
302302 else nil
303303 ([StringEntry(keyUserName(caller), name), StringEntry(keyUserDesc(caller), description), StringEntry(keyUserSocial(caller), social), StringEntry(keyUserThumb(caller), thumb), IntegerEntry(keyUserRoyalties(caller), royalties), StringEntry(((status + "_") + caller), json)] ++ txToCaller)
304304 }
305305 }
306306 }
307307
308308
309309
310310 @Callable(invoke)
311311 func setERC20User (erc20,pubKey) = if (!(dappRunning))
312312 then throw(maintenanceMSG)
313313 else {
314314 let $t01094611049 = getCaller(invoke, pubKey)
315315 let caller = $t01094611049._1
316316 let isSponsored = $t01094611049._2
317317 let status = getStringByKey(keyUserStatus(caller))
318318 if (if ((status != userRegistered))
319319 then (status != userVerified)
320320 else false)
321321 then throw("Not allowed to set ERC20 address")
322322 else {
323323 let firstTwo = take(erc20, 2)
324324 if (if ((firstTwo != "0x"))
325325 then true
326326 else (size(erc20) != 42))
327327 then throw("This is not an erc20 address")
328328 else {
329329 let txToCaller = if (isSponsored)
330330 then [ScriptTransfer(Address(fromBase58String(caller)), 0, unit)]
331331 else nil
332332 ([StringEntry(keyUserERC20(caller), erc20)] ++ txToCaller)
333333 }
334334 }
335335 }
336336
337337
338338
339339 @Callable(invoke)
340340 func changeUserStatus (address,status,note,label,wl_certifications,wl_txs,wl_drops,wl_commissions) = {
341341 let caller = toString(invoke.caller)
342342 if ((size(address) == 0))
343343 then throw("Address cannot be empty")
344344 else {
345345 let currentNote = getStringByKey(keyUserNote(address))
346346 let currentLabel = getStringByKey(keyUserLabel(address))
347347 let noteToUse = if ((size(note) != 0))
348348 then note
349349 else currentNote
350350 let labelToUse = if ((size(label) != 0))
351351 then label
352352 else currentLabel
353353 if (containsElement([chris, toString(this)], caller))
354354 then {
355355 let free_certifications = if ((wl_certifications != 0))
356356 then invoke(signDapp, "whitelistFreeCertifications", [address, wl_certifications, true], nil)
357357 else nil
358358 if ((free_certifications == free_certifications))
359359 then {
360360 let free_txs = if ((wl_txs != 0))
361361 then invoke(whitelistDapp, "whitelistFreeTxs", [address, wl_txs, true], nil)
362362 else nil
363363 if ((free_txs == free_txs))
364364 then {
365365 let free_drops = if ((wl_drops != 0))
366366 then invoke(whitelistDapp, "whitelistFreeDrop", [address, wl_drops, true], nil)
367367 else nil
368368 if ((free_drops == free_drops))
369369 then {
370370 let free_commissions = if ((wl_commissions != 0))
371371 then invoke(whitelistDapp, "whitelist", [address, wl_commissions], nil)
372372 else nil
373373 if ((free_commissions == free_commissions))
374374 then {
375375 let currentStatus = getStringByKey(keyUserStatus(address))
376376 if ((size(status) == 0))
377377 then if ((currentStatus == ""))
378378 then throw("User have no status yet")
379379 else [StringEntry(keyUserNote(address), noteToUse), StringEntry(keyUserLabel(address), labelToUse)]
380380 else {
381381 let statusToSet = validateNewStatus(status, address, currentStatus)
382382 let name = toBase64String(toBytes(getStringByKey(keyUserName(address))))
383383 let thumb = toBase64String(toBytes(getStringByKey(keyUserThumb(address))))
384384 let date = getIntegerByKey(keyUserDate(address))
385385 let json = makeJSON(name, thumb, toString(date))
386386 [StringEntry(keyUserStatus(address), statusToSet), DeleteEntry(((currentStatus + "_") + address)), StringEntry(((statusToSet + "_") + address), json), StringEntry(keyUserNote(address), noteToUse), StringEntry(keyUserLabel(address), labelToUse)]
387387 }
388388 }
389389 else throw("Strict value is not equal to itself.")
390390 }
391391 else throw("Strict value is not equal to itself.")
392392 }
393393 else throw("Strict value is not equal to itself.")
394394 }
395395 else throw("Strict value is not equal to itself.")
396396 }
397397 else throw("Not allowed to change user status")
398398 }
399399 }
400400
401401
402402
403403 @Callable(invoke)
404404 func deleteUser (address) = {
405405 let caller = toString(invoke.caller)
406406 let currentStatus = getStringByKey(keyUserStatus(address))
407407 if (containsElement([chris, toString(this)], caller))
408408 then [DeleteEntry(keyUserDate(address)), DeleteEntry(keyUserAddr(address)), DeleteEntry(keyUserName(address)), DeleteEntry(keyUserDesc(address)), DeleteEntry(keyUserSocial(address)), DeleteEntry(keyUserThumb(address)), DeleteEntry(("user_note_" + address)), DeleteEntry(((currentStatus + "_") + address)), DeleteEntry(keyUserRoyalties(address)), StringEntry(keyUserStatus(address), userRemoved)]
409409 else throw("Not allowed")
410410 }
411411
412412
413413
414414 @Callable(i)
415-func setAgent (artistAddr,agentAddr,primaryShare,secondaryShare,isPartner) = if (!(dappRunning))
415+func setAgent (artistAddr,agentAddr,primaryShare,secondaryShare,asPartner) = if (!(dappRunning))
416416 then throw(maintenanceMSG)
417417 else {
418418 let caller = toString(i.caller)
419419 if (containsElement([chris, toString(this)], caller))
420420 then if (if ((size(artistAddr) != 35))
421421 then true
422422 else (size(agentAddr) != 35))
423423 then throw("Wrong address")
424- else if (isPartner)
424+ else if (asPartner)
425425 then [StringEntry(keyArtistAgentAddr(artistAddr), agentAddr), StringEntry(keyAgentArtistAddr(agentAddr, artistAddr), artistAddr), IntegerEntry(keyPrimaryShareAgent(artistAddr), primaryShare), IntegerEntry(keySecondaryShareAgent(artistAddr), secondaryShare)]
426426 else [StringEntry(keyArtistPublicAgentAddr(artistAddr), agentAddr), StringEntry(keyPublicAgentArtistAddr(agentAddr, artistAddr), artistAddr), IntegerEntry(keyPrimarySharePublicAgent(artistAddr), primaryShare), IntegerEntry(keySecondarySharePublicAgent(artistAddr), secondaryShare)]
427427 else throw("You are not allowed")
428428 }
429429
430430
431431
432432 @Callable(i)
433-func unsetAgent (artistAddr,agentAddr,isPartner) = if (!(dappRunning))
433+func unsetAgent (artistAddr,agentAddr,asPartner) = if (!(dappRunning))
434434 then throw(maintenanceMSG)
435435 else {
436436 let caller = toString(i.caller)
437437 if (containsElement([chris, toString(this)], caller))
438438 then if (if ((size(artistAddr) != 35))
439439 then true
440440 else (size(agentAddr) != 35))
441441 then throw("Wrong address")
442- else if (isPartner)
442+ else if (asPartner)
443443 then [DeleteEntry(keyArtistAgentAddr(artistAddr)), DeleteEntry(keyAgentArtistAddr(agentAddr, artistAddr)), DeleteEntry(keyPrimaryShareAgent(artistAddr)), DeleteEntry(keySecondaryShareAgent(artistAddr))]
444444 else [DeleteEntry(keyArtistPublicAgentAddr(artistAddr)), DeleteEntry(keyPublicAgentArtistAddr(agentAddr, artistAddr)), DeleteEntry(keyPrimarySharePublicAgent(artistAddr)), DeleteEntry(keySecondarySharePublicAgent(artistAddr))]
445445 else throw("You are not allowed")
446446 }
447447
448448
449449
450450 @Callable(i)
451451 func deleteEntry (entry) = {
452452 let caller = toString(i.caller)
453453 if ((caller == chris))
454454 then [DeleteEntry(entry)]
455455 else throw("no")
456456 }
457457
458458
459459 @Verifier(tx)
460460 func verifier () = match tx {
461461 case inv: InvokeScriptTransaction =>
462462 if (if (if (if ((inv.function == "registerUser"))
463463 then (inv.dApp == this)
464464 else false)
465465 then (inv.fee == 500000)
466466 else false)
467467 then (inv.feeAssetId == unit)
468468 else false)
469469 then sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(asString(inv.args[5])))
470470 else if (if (if (if ((inv.function == "updateUser"))
471471 then (inv.dApp == this)
472472 else false)
473473 then (inv.fee == 500000)
474474 else false)
475475 then (inv.feeAssetId == unit)
476476 else false)
477477 then sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(asString(inv.args[5])))
478478 else if (if (if (if ((inv.function == "setERC20User"))
479479 then (inv.dApp == this)
480480 else false)
481481 then (inv.fee == 500000)
482482 else false)
483483 then (inv.feeAssetId == unit)
484484 else false)
485485 then sigVerify(tx.bodyBytes, tx.proofs[0], fromBase58String(asString(inv.args[2])))
486486 else sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
487487 case _ =>
488488 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
489489 }
490490

github/deemru/w8io/3ef1775 
76.42 ms