tx · 26ARptrS4i5TD8twt1BvpgX9JeNjbqzexfzupwPwuRLN

3N1PhK7vobC3HzVcYu1HEysKMvJDS8u9w99:  -0.01400000 Waves

2022.10.24 07:22 [2286013] smart account 3N1PhK7vobC3HzVcYu1HEysKMvJDS8u9w99 > SELF 0.00000000 Waves

{ "type": 13, "id": "26ARptrS4i5TD8twt1BvpgX9JeNjbqzexfzupwPwuRLN", "fee": 1400000, "feeAssetId": null, "timestamp": 1666585458249, "version": 2, "chainId": 84, "sender": "3N1PhK7vobC3HzVcYu1HEysKMvJDS8u9w99", "senderPublicKey": "HXPToVX68cRVQojFPvq2UHkNvBcMWbQXfTZtjim9UrfE", "proofs": [ "qt1S5gRX3Rgg55e5DnPqEyttEfXDpNQhqApFPHZVMq2twfJekKoxLVr8krgGqTKnFjeFyJsE99jhtS77GjZFMcV" ], "script": "base64:BgJGCAISBAoCCAgSCAoGCAgICAgIEgkKBwgICAgICAgSBgoECAgICBIHCgUICAgBARIICgYICAgIAQESBQoDCAEEEgUKAwgICCoAB1ZFUlNJT04CBTEuMC4wAQ5nZXRTdHJpbmdCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAh1c2VyRGFwcAkBBXZhbHVlAQkApggBCQEOZ2V0U3RyaW5nQnlLZXkBAg9jb25mX3VzZXJzX2RhcHAAC2ZlZVJlY2VpdmVyCQEOZ2V0U3RyaW5nQnlLZXkBAhFjb25mX2ZlZV9yZWNlaXZlcgALc2lnbkFzc2V0SWQJANkEAQkBDmdldFN0cmluZ0J5S2V5AQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAVjaHJpcwkBDmdldFN0cmluZ0J5S2V5AQIMY29uZl9hZG1pbl8xAQ9nZXRJbnRlZ2VyQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEPZ2V0Qm9vbGVhbkJ5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUDa2V5BwALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUIdXNlckRhcHACFGNvbmZfZGFwcF9pc19ydW5uaW5nBgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHACFGNvbmZfbWFpbnRlbmFuY2VfbXNnAgAADXVzZXJTdXNwZW5kZWQCCVNVU1BFTkRFRAAQdXNlclVucmVnaXN0ZXJlZAIMVU5SRUdJU1RFUkVEAQt2YWxpZGF0ZUNJRAEDY2lkAwkBCGNvbnRhaW5zAgUDY2lkAgEvAwMJAGYCAEwJALECAQUDY2lkCQAAAgkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAAAOwcJAGYCABAJALECAQkAkQMCCQC1CQIFA2NpZAIBLwABBwcAB3NpZ25DdXQAAgENa2V5VXNlclN0YXR1cwEGY2FsbGVyCQCsAgICDHVzZXJfc3RhdHVzXwUGY2FsbGVyARZrZXlFdmVudE93bmVyQnlFdmVudElkAQdldmVudElkCQCsAgICDGV2ZW50X293bmVyXwUHZXZlbnRJZAERa2V5RXZlbnRBZGRlZERhdGUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhFldmVudF9hZGRlZF9kYXRlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudERhdGUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9kYXRlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudE5hbWUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9uYW1lXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudERlc2MCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9kZXNjXwUHZXZlbnRJZAIBXwUGY2FsbGVyARJrZXlFdmVudERpc3BsYXlDaWQCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhJldmVudF9kaXNwbGF5X2NpZF8FB2V2ZW50SWQCAV8FBmNhbGxlcgEMa2V5RXZlbnRUYWdzAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgILZXZlbnRfdGFnc18FB2V2ZW50SWQCAV8FBmNhbGxlcgEMa2V5RXZlbnRGbGFnAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgILZXZlbnRfZmxhZ18FB2V2ZW50SWQCAV8FBmNhbGxlcgEMa2V5RXZlbnROb3RlAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgILZXZlbnRfbm90ZV8FB2V2ZW50SWQCAV8FBmNhbGxlcgEPa2V5RXZlbnRDcmF3bGVyAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgISZXZlbnRfY3Jhd2xlcl9jaWRfBQdldmVudElkAgFfBQZjYWxsZXIBDGtleUV2ZW50VHlwZQIGY2FsbGVyB2V2ZW50SWQJAKwCAgkArAICCQCsAgICC2V2ZW50X3R5cGVfBQdldmVudElkAgFfBQZjYWxsZXIBDWtleVRpY2tldE5hbWUDBmNhbGxlcgdldmVudElkCHRpY2tldElkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIMdGlja2V0X25hbWVfBQdldmVudElkAgFfBQZjYWxsZXICAV8FCHRpY2tldElkAQ1rZXlUaWNrZXREZXNjAwZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDHRpY2tldF9kZXNjXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEOa2V5VGlja2V0UHJpY2UDBmNhbGxlcgdldmVudElkCHRpY2tldElkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINdGlja2V0X3ByaWNlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEVa2V5VGlja2V0TWF4QXZhaWxhYmxlAwZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgICFHRpY2tldF9tYXhBdmFpbGFibGVfBQdldmVudElkAgFfBQZjYWxsZXICAV8FCHRpY2tldElkAQ1rZXlUaWNrZXRTb2xkAwZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDHRpY2tldF9zb2xkXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEPa2V5VGlja2V0T25TYWxlAwZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDHRpY2tldF9zb2xkXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEOdmFsaWRhdGVTdHJpbmcCA3N0cgNtYXgDCQAAAgkAsQIBBQNzdHIAAAkAAgECGEZpZWxkIGNhbm5vdCBiZSBpcyBlbXB0eQMJAGYCCQCxAgEFA3N0cgUDbWF4CQACAQkArAICBQNzdHICDCBpcyB0b28gbG9uZwYBC3ZhbGlkYXRlSW50AQNudW0JAGYCAAAFA251bQEWZ2V0RXZlbnRPd25lckJ5RXZlbnRJZAEHZXZlbnRJZAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzCQEWa2V5RXZlbnRPd25lckJ5RXZlbnRJZAEFB2V2ZW50SWQCAAEMdmFsaWRhdGVVc2VyAQZjYWxsZXIECnVzZXJTdGF0dXMJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAJAQ1rZXlVc2VyU3RhdHVzAQUGY2FsbGVyBRB1c2VyVW5yZWdpc3RlcmVkAwkAAAIFCnVzZXJTdGF0dXMFEHVzZXJVbnJlZ2lzdGVyZWQCLlJlZ2lzdGVyIHRoaXMgYWNjb3VudCBmaXJzdCB3aXRoICJBY2NvdW50IiB0YWIDCQAAAgUKdXNlclN0YXR1cwUNdXNlclN1c3BlbmRlZAIRQWNjb3VudCBzdXNwZW5kZWQCAAEMdmFsaWRhdGVUeXBlAQR0eXBlCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgZvbmxpbmUJAMwIAgIHb2ZmbGluZQkAzAgCAgRib3RoBQNuaWwFBHR5cGUBEXZhbGlkYXRlRXZlbnREYXRhBgZjYWxsZXIKY2lkRGlzcGxheQRuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MEdHlwZQQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZERpc3BsYXkJAAIBAhBQcm9ibGVtIHdpdGggQ0lEAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQRuYW1lAMgBCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEMdmFsaWRhdGVUeXBlAQUEdHlwZQkAAgECEFdyb25nIGV2ZW50IHR5cGUDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFC2Rlc2NyaXB0aW9uAOgHCQACAQIaMTAwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DCQBmAgkAkAMBCQC1CQIFBHRhZ3MCASwABQkAAgECCzUgdGFncyBtYXguAgABEnZhbGlkYXRlVGlja2V0RGF0YQYHZXZlbnRJZAZjYWxsZXIEbmFtZQtkZXNjcmlwdGlvbgVwcmljZQxtYXhBdmFpbGFibGUECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQRuYW1lAMgBCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAwMJAQEhAQkBC3ZhbGlkYXRlSW50AQUFcHJpY2UGCQEBIQEJAQt2YWxpZGF0ZUludAEFDG1heEF2YWlsYWJsZQkAAgECFFBvc2l0aXZlIGFtb3VudCBvbmx5AwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAgABDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEUdmFsaWRhdGVQcmljZUFzc2V0SWQDAWkMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQQLJHQwNTY4ODU3MjQJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAULJHQwNTY4ODU3MjQCXzEEBmFtb3VudAgFCyR0MDU2ODg1NzI0Al8yAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkAAgECFFdyb25nIGFzc2V0IGF0dGFjaGVkBAdhc3NldElkAwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIUV3JvbmcgYXNzZXQgYXR0YWNoZWQDCQECIT0CBQxhcnR3b3JrUHJpY2UFBmFtb3VudAkAAgECGlBheW1lbnQgYW1vdW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAgGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBCGFkZEV2ZW50BgRuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MKY2lkRGlzcGxheQdjcmF3bGVyBHR5cGUECyR0MDY1ODI2NjI1CQEMaWRDYWxsZXJEYXRlAQUBaQQHZXZlbnRJZAgFCyR0MDY1ODI2NjI1Al8xBAZjYWxsZXIIBQskdDA2NTgyNjYyNQJfMgQEZGF0ZQgFCyR0MDY1ODI2NjI1Al8zBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgQNdmFsaWRhdGVFdmVudAkBEXZhbGlkYXRlRXZlbnREYXRhBgUGY2FsbGVyBQpjaWREaXNwbGF5BQRuYW1lBQtkZXNjcmlwdGlvbgUEdGFncwUEdHlwZQMJAQIhPQIFDXZhbGlkYXRlRXZlbnQCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDGtleUV2ZW50RGF0ZQIFBmNhbGxlcgUHZXZlbnRJZAUEZGF0ZQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnROYW1lAgUGY2FsbGVyBQdldmVudElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudERlc2MCBQZjYWxsZXIFB2V2ZW50SWQFC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJARJrZXlFdmVudERpc3BsYXlDaWQCBQZjYWxsZXIFB2V2ZW50SWQFCmNpZERpc3BsYXkJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50VGFncwIFBmNhbGxlcgUHZXZlbnRJZAUEdGFncwkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RXZlbnRDcmF3bGVyAgUGY2FsbGVyBQdldmVudElkBQdjcmF3bGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudFR5cGUCBQZjYWxsZXIFB2V2ZW50SWQFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBFmtleUV2ZW50T3duZXJCeUV2ZW50SWQBBQdldmVudElkBQZjYWxsZXIFA25pbAFpAQllZGl0RXZlbnQHB2V2ZW50SWQEbmFtZQtkZXNjcmlwdGlvbgR0YWdzCmNpZERpc3BsYXkHY3Jhd2xlcgR0eXBlAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAZjYWxsZXIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIEDXZhbGlkYXRlRXZlbnQJARF2YWxpZGF0ZUV2ZW50RGF0YQYFBmNhbGxlcgUKY2lkRGlzcGxheQUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFBHR5cGUDCQECIT0CBQ12YWxpZGF0ZUV2ZW50AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECmVudHJ5RXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQxrZXlFdmVudE5hbWUCBQZjYWxsZXIFB2V2ZW50SWQDCQAAAgUKZW50cnlFeGlzdAIACQACAQIPRW50cnkgbm90IGZvdW5kBARmbGFnCQEOZ2V0U3RyaW5nQnlLZXkBCQEMa2V5RXZlbnRGbGFnAgUGY2FsbGVyBQdldmVudElkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAhtDYW5ub3QgdXBkYXRlIElMTEVHQUwgRXZlbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50TmFtZQIFBmNhbGxlcgUHZXZlbnRJZAUEbmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnREZXNjAgUGY2FsbGVyBQdldmVudElkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnRUYWdzAgUGY2FsbGVyBQdldmVudElkBQR0YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudFR5cGUCBQZjYWxsZXIFB2V2ZW50SWQFBHR5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUV2ZW50Q3Jhd2xlcgIFBmNhbGxlcgUHZXZlbnRJZAUHY3Jhd2xlcgUDbmlsAWkBCWZsYWdFdmVudAQHZXZlbnRJZARhZGRyBGZsYWcEbm90ZQQLJHQwODcxMzg3NDYJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFCyR0MDg3MTM4NzQ2Al8xBAZjYWxsZXIIBQskdDA4NzEzODc0NgJfMgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCAgAJAMwIAgIPQ0hBTkdFX1JFUVVJUkVECQDMCAICB0ZMQUdHRUQJAMwIAgIHSUxMRUdBTAUDbmlsBQRmbGFnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudEZsYWcCBQRhZGRyBQdldmVudElkBQRmbGFnCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudE5vdGUCBQRhZGRyBQdldmVudElkBQRub3RlBQNuaWwJAAIBCQCsAgICDlVua25vdyBzdGF0dXMgBQRmbGFnCQACAQITWW91IGFyZSBub3QgYWxsb3dlZAFpAQlhZGRUaWNrZXQFB2V2ZW50SWQEbmFtZQtkZXNjcmlwdGlvbgVwcmljZQxtYXhBdmFpbGFibGUECyR0MDkyMzQ5Mjc0CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQskdDA5MjM0OTI3NAJfMQQGY2FsbGVyCAULJHQwOTIzNDkyNzQCXzIEBGRhdGUIBQskdDA5MjM0OTI3NAJfMwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIEDGlzRXZlbnRPd25lcgkBFmdldEV2ZW50T3duZXJCeUV2ZW50SWQBBQdldmVudElkAwkAAAIFDGlzRXZlbnRPd25lcgIACQACAQIPRXZlbnQgbm90IGZvdW5kAwkBAiE9AgUMaXNFdmVudE93bmVyBQZjYWxsZXIJAAIBAiNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBldmVudAQOdmFsaWRhdGVUaWNrZXQJARJ2YWxpZGF0ZVRpY2tldERhdGEGBQdldmVudElkBQZjYWxsZXIFBG5hbWUFC2Rlc2NyaXB0aW9uBQVwcmljZQUMbWF4QXZhaWxhYmxlAwkBAiE9AgUOdmFsaWRhdGVUaWNrZXQCAAkAAgECFVNvbWV0aGluZyB3ZW50IHdyb25nIQkAzAgCCQELU3RyaW5nRW50cnkCCQENa2V5VGlja2V0TmFtZQMFBmNhbGxlcgUHZXZlbnRJZAUCaWQFBG5hbWUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVRpY2tldERlc2MDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQtkZXNjcmlwdGlvbgkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDmtleVRpY2tldFByaWNlAwUGY2FsbGVyBQdldmVudElkBQJpZAUFcHJpY2UJAMwIAgkBDEludGVnZXJFbnRyeQIJARVrZXlUaWNrZXRNYXhBdmFpbGFibGUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQxtYXhBdmFpbGFibGUJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ9rZXlUaWNrZXRPblNhbGUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBgUDbmlsAWkBCmVkaXRUaWNrZXQGCHRpY2tldElkB2V2ZW50SWQEbmFtZQtkZXNjcmlwdGlvbgVwcmljZQxtYXhBdmFpbGFibGUEDSR0MDEwMjMwMTAyNzAJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEwMjMwMTAyNzACXzEEBmNhbGxlcggFDSR0MDEwMjMwMTAyNzACXzIEBGRhdGUIBQ0kdDAxMDIzMDEwMjcwAl8zBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgQMaXNFdmVudE93bmVyCQEWZ2V0RXZlbnRPd25lckJ5RXZlbnRJZAEFB2V2ZW50SWQDCQAAAgUMaXNFdmVudE93bmVyAgAJAAIBAg9FdmVudCBub3QgZm91bmQDCQECIT0CBQxpc0V2ZW50T3duZXIFBmNhbGxlcgkAAgECI1lvdSBhcmUgbm90IHRoZSBvd25lciBvZiB0aGlzIGV2ZW50BAt0aWNrZXRFeGlzdAkBDmdldFN0cmluZ0J5S2V5AQkBDWtleVRpY2tldE5hbWUDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkAwkAAAIJALECAQULdGlja2V0RXhpc3QAAAkAAgECEFRpY2tldCBub3QgZm91bmQEDnZhbGlkYXRlVGlja2V0CQESdmFsaWRhdGVUaWNrZXREYXRhBgUHZXZlbnRJZAUGY2FsbGVyBQRuYW1lBQtkZXNjcmlwdGlvbgUFcHJpY2UFDG1heEF2YWlsYWJsZQMJAQIhPQIFDnZhbGlkYXRlVGlja2V0AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECnRpY2tldFNvbGQJAQt2YWx1ZU9yRWxzZQIJAJ8IAQkBDWtleVRpY2tldFNvbGQDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkAAADCQBmAgUKdGlja2V0U29sZAUMbWF4QXZhaWxhYmxlCQACAQI+TWF4IHRpY2tldHMgYXZhaWxhYmxlIGNhbm5vdCBiZSBsb3dlciB0aGFuIGFtb3VudCBhbHJlYWR5IHNvbGQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDWtleVRpY2tldE5hbWUDBQZjYWxsZXIFB2V2ZW50SWQFCHRpY2tldElkBQRuYW1lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlUaWNrZXREZXNjAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAULZGVzY3JpcHRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlUaWNrZXRQcmljZQMFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5VGlja2V0TWF4QXZhaWxhYmxlAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAUMbWF4QXZhaWxhYmxlBQNuaWwBaQELcGF1c2VUaWNrZXQDB2V2ZW50SWQIdGlja2V0SWQGc3RhdHVzBA0kdDAxMTU0MzExNTgzCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxMTU0MzExNTgzAl8xBAZjYWxsZXIIBQ0kdDAxMTU0MzExNTgzAl8yBARkYXRlCAUNJHQwMTE1NDMxMTU4MwJfMwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIEDGlzRXZlbnRPd25lcgkBFmdldEV2ZW50T3duZXJCeUV2ZW50SWQBBQdldmVudElkAwkAAAIFDGlzRXZlbnRPd25lcgIACQACAQIPRXZlbnQgbm90IGZvdW5kAwkBAiE9AgUMaXNFdmVudE93bmVyBQZjYWxsZXIJAAIBAiNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBldmVudAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBD2tleVRpY2tldE9uU2FsZQMFBmNhbGxlcgUHZXZlbnRJZAUCaWQFBnN0YXR1cwUDbmlsAWkBCWJ1eVRpY2tldAMIdGlja2V0SWQHZXZlbnRJZAZpc3N1ZXIEDSR0MDEyMDY0MTIxMDIJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEyMDY0MTIxMDICXzEEBmNhbGxlcggFDSR0MDEyMDY0MTIxMDICXzIEBGRhdGUIBQ0kdDAxMjA2NDEyMTAyAl8zBAh0b3RhbE5GVAkBC3ZhbHVlT3JFbHNlAgkBD2dldEludGVnZXJCeUtleQECFHRvdGFsX3RpY2tldHNfaXNzdWVkAAAECmV2ZW50T3duZXIJARZnZXRFdmVudE93bmVyQnlFdmVudElkAQUHZXZlbnRJZAMJAAACBQpldmVudE93bmVyAgAJAAIBAg9FdmVudCBub3QgZm91bmQDCQECIT0CBQpldmVudE93bmVyBQZpc3N1ZXIJAAIBAiNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBldmVudAQLdGlja2V0RXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlUaWNrZXROYW1lAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAMJAAACCQCxAgEFC3RpY2tldEV4aXN0AAAJAAIBAhBUaWNrZXQgbm90IGZvdW5kBAlldmVudE5hbWUJAQ5nZXRTdHJpbmdCeUtleQEJAQxrZXlFdmVudE5hbWUCBQZpc3N1ZXIFB2V2ZW50SWQDCQAAAgUJZXZlbnROYW1lAgAJAAIBAhFBcnQgZG9lc24ndCBleGlzdAQIaXNPblNhbGUJAQ9nZXRCb29sZWFuQnlLZXkBCQEPa2V5VGlja2V0T25TYWxlAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAQKYW1vdW50U29sZAkBD2dldEludGVnZXJCeUtleQEJAQ1rZXlUaWNrZXRTb2xkAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAQLdGlja2V0UHJpY2UJAQ9nZXRJbnRlZ2VyQnlLZXkBCQEOa2V5VGlja2V0UHJpY2UDBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkBAxwcmljZUFzc2V0SWQJANgEAQULc2lnbkFzc2V0SWQEDSR0MDEzMDE5MTMwOTMJARR2YWxpZGF0ZVByaWNlQXNzZXRJZAMFAWkFDHByaWNlQXNzZXRJZAULdGlja2V0UHJpY2UEBmFtb3VudAgFDSR0MDEzMDE5MTMwOTMCXzEEB2Fzc2V0SWQIBQ0kdDAxMzAxOTEzMDkzAl8yBAptYXhDYW5TZWxsCQEPZ2V0SW50ZWdlckJ5S2V5AQkBFWtleVRpY2tldE1heEF2YWlsYWJsZQMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQEDWFtb3VudEZvclNpZ24JAGsDBQZhbW91bnQFB3NpZ25DdXQAZAQSYW1vdW50Rm9yT3JnYW5pemVyCQBlAgUGYW1vdW50BQ1hbW91bnRGb3JTaWduAwkAAAIFCmFtb3VudFNvbGQFCm1heENhblNlbGwJAAIBAgxBcnQgc29sZCBvdXQEDW5ld0Ftb3VudFNvbGQJAGQCBQphbW91bnRTb2xkAAEECWlzc3VlTWV0YQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICC09yZ2FuaXplcjogBQZpc3N1ZXICDCwKIEV2ZW50SUQ6IAUHZXZlbnRJZAINLAogVGlja2V0SUQ6IAUIdGlja2V0SWQCDiwKIEV2ZW50TmFtZTogBQlldmVudE5hbWUCCiwKIElzc3VlOiAJAKQDAQUNbmV3QW1vdW50U29sZAIBLwkApAMBBQptYXhDYW5TZWxsBAhpc3N1ZU5GVAkAwggFCQCsAgICA1NUXwkApAMBCQBkAgUIdG90YWxORlQAAQUJaXNzdWVNZXRhAAEAAAcEBWlkTkZUCQC4CAEFCGlzc3VlTkZUBApzZWxsU3RhdHVzAwMJAAACBQ1uZXdBbW91bnRTb2xkBQptYXhDYW5TZWxsBgkBASEBBQhpc09uU2FsZQcGBApyZWNlaXZlTkZUCAUBaQZjYWxsZXIEB3NvbGRLZXkJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDHRpY2tldF9zb2xkXwkApAMBBQ1uZXdBbW91bnRTb2xkAgRfb2ZfCQCkAwEFCm1heENhblNlbGwCAV8FB2V2ZW50SWQCAV8FBmlzc3VlcgIBXwUIdGlja2V0SWQECXNvbGRWYWx1ZQkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKUIAQUKcmVjZWl2ZU5GVAIBXwkApAMBBQRkYXRlAgFfBQJpZAIBXwkApAMBBQZhbW91bnQCAV8JANgEAQUFaWRORlQECHNvbGREYXRhCQELU3RyaW5nRW50cnkCBQdzb2xkS2V5BQlzb2xkVmFsdWUEBmJ1eVJlcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRpY2tldFNvbGQDBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkBQ1uZXdBbW91bnRTb2xkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIEbmZ0XwkA2AQBBQVpZE5GVAUHc29sZEtleQkAzAgCCQEMSW50ZWdlckVudHJ5AgIQdG90YWxfbmZ0X2lzc3VlZAkAZAIFCHRvdGFsTkZUAAEJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ9rZXlUaWNrZXRPblNhbGUDBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkBQpzZWxsU3RhdHVzCQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEmFtb3VudEZvck9yZ2FuaXplcgUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQpyZWNlaXZlTkZUAAEFBWlkTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgUNYW1vdW50Rm9yU2lnbgUHYXNzZXRJZAUDbmlsCQDMCAIFCHNvbGREYXRhBQZidXlSZXMAlnkgGg==", "height": 2286013, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 3i1VawnMfgAgY9TxnX3DNhrExGy6pGT1fBa8zSWVD6kH Next: DbnLvyzjUCECjSN7H8FQjGRMSqg7bqoZcWWnaxTbBMCR Diff:
OldNewDifferences
282282 let validateTicket = validateTicketData(eventId, caller, name, description, price, maxAvailable)
283283 if ((validateTicket != ""))
284284 then throw("Something went wrong!")
285- else [StringEntry(keyTicketName(caller, eventId, id), name), StringEntry(keyTicketDesc(caller, eventId, id), description), IntegerEntry(keyTicketPrice(caller, eventId, id), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, id), maxAvailable)]
285+ else [StringEntry(keyTicketName(caller, eventId, id), name), StringEntry(keyTicketDesc(caller, eventId, id), description), IntegerEntry(keyTicketPrice(caller, eventId, id), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, id), maxAvailable), BooleanEntry(keyTicketOnSale(caller, eventId, id), true)]
286286 }
287287 }
288288 }
291291
292292 @Callable(i)
293293 func editTicket (ticketId,eventId,name,description,price,maxAvailable) = {
294- let $t01016610206 = idCallerDate(i)
295- let id = $t01016610206._1
296- let caller = $t01016610206._2
297- let date = $t01016610206._3
294+ let $t01023010270 = idCallerDate(i)
295+ let id = $t01023010270._1
296+ let caller = $t01023010270._2
297+ let date = $t01023010270._3
298298 let checkUser = validateUser(caller)
299299 if ((checkUser != ""))
300300 then throw(checkUser)
326326
327327
328328 @Callable(i)
329+func pauseTicket (eventId,ticketId,status) = {
330+ let $t01154311583 = idCallerDate(i)
331+ let id = $t01154311583._1
332+ let caller = $t01154311583._2
333+ let date = $t01154311583._3
334+ let checkUser = validateUser(caller)
335+ if ((checkUser != ""))
336+ then throw(checkUser)
337+ else {
338+ let isEventOwner = getEventOwnerByEventId(eventId)
339+ if ((isEventOwner == ""))
340+ then throw("Event not found")
341+ else if ((isEventOwner != caller))
342+ then throw("You are not the owner of this event")
343+ else [BooleanEntry(keyTicketOnSale(caller, eventId, id), status)]
344+ }
345+ }
346+
347+
348+
349+@Callable(i)
329350 func buyTicket (ticketId,eventId,issuer) = {
330- let $t01149511533 = idCallerDate(i)
331- let id = $t01149511533._1
332- let caller = $t01149511533._2
333- let date = $t01149511533._3
351+ let $t01206412102 = idCallerDate(i)
352+ let id = $t01206412102._1
353+ let caller = $t01206412102._2
354+ let date = $t01206412102._3
334355 let totalNFT = valueOrElse(getIntegerByKey("total_tickets_issued"), 0)
335356 let eventOwner = getEventOwnerByEventId(eventId)
336357 if ((eventOwner == ""))
350371 let amountSold = getIntegerByKey(keyTicketSold(issuer, eventId, ticketId))
351372 let ticketPrice = getIntegerByKey(keyTicketPrice(issuer, eventId, ticketId))
352373 let priceAssetId = toBase58String(signAssetId)
353- let $t01245012524 = validatePriceAssetId(i, priceAssetId, ticketPrice)
354- let amount = $t01245012524._1
355- let assetId = $t01245012524._2
374+ let $t01301913093 = validatePriceAssetId(i, priceAssetId, ticketPrice)
375+ let amount = $t01301913093._1
376+ let assetId = $t01301913093._2
356377 let maxCanSell = getIntegerByKey(keyTicketMaxAvailable(issuer, eventId, ticketId))
357378 let amountForSign = fraction(amount, signCut, 100)
358379 let amountForOrganizer = (amount - amountForSign)
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let VERSION = "1.0.0"
55
66 func getStringByKey (key) = valueOrElse(getString(this, key), "")
77
88
99 let userDapp = value(addressFromString(getStringByKey("conf_users_dapp")))
1010
1111 let feeReceiver = getStringByKey("conf_fee_receiver")
1212
1313 let signAssetId = fromBase58String(getStringByKey("conf_accepted_asset_SIGN"))
1414
1515 let chris = getStringByKey("conf_admin_1")
1616
1717 func getIntegerByKey (key) = valueOrElse(getInteger(this, key), 0)
1818
1919
2020 func getBooleanByKey (key) = valueOrElse(getBoolean(this, key), false)
2121
2222
2323 let dappRunning = valueOrElse(getBoolean(userDapp, "conf_dapp_is_running"), true)
2424
2525 let maintenanceMSG = valueOrElse(getString(userDapp, "conf_maintenance_msg"), "")
2626
2727 let userSuspended = "SUSPENDED"
2828
2929 let userUnregistered = "UNREGISTERED"
3030
3131 func validateCID (cid) = if (contains(cid, "/"))
3232 then if (if ((76 > size(cid)))
3333 then (size(split(cid, "/")[0]) == 59)
3434 else false)
3535 then (16 > size(split(cid, "/")[1]))
3636 else false
3737 else false
3838
3939
4040 let signCut = 2
4141
4242 func keyUserStatus (caller) = ("user_status_" + caller)
4343
4444
4545 func keyEventOwnerByEventId (eventId) = ("event_owner_" + eventId)
4646
4747
4848 func keyEventAddedDate (caller,eventId) = ((("event_added_date_" + eventId) + "_") + caller)
4949
5050
5151 func keyEventDate (caller,eventId) = ((("event_date_" + eventId) + "_") + caller)
5252
5353
5454 func keyEventName (caller,eventId) = ((("event_name_" + eventId) + "_") + caller)
5555
5656
5757 func keyEventDesc (caller,eventId) = ((("event_desc_" + eventId) + "_") + caller)
5858
5959
6060 func keyEventDisplayCid (caller,eventId) = ((("event_display_cid_" + eventId) + "_") + caller)
6161
6262
6363 func keyEventTags (caller,eventId) = ((("event_tags_" + eventId) + "_") + caller)
6464
6565
6666 func keyEventFlag (caller,eventId) = ((("event_flag_" + eventId) + "_") + caller)
6767
6868
6969 func keyEventNote (caller,eventId) = ((("event_note_" + eventId) + "_") + caller)
7070
7171
7272 func keyEventCrawler (caller,eventId) = ((("event_crawler_cid_" + eventId) + "_") + caller)
7373
7474
7575 func keyEventType (caller,eventId) = ((("event_type_" + eventId) + "_") + caller)
7676
7777
7878 func keyTicketName (caller,eventId,ticketId) = ((((("ticket_name_" + eventId) + "_") + caller) + "_") + ticketId)
7979
8080
8181 func keyTicketDesc (caller,eventId,ticketId) = ((((("ticket_desc_" + eventId) + "_") + caller) + "_") + ticketId)
8282
8383
8484 func keyTicketPrice (caller,eventId,ticketId) = ((((("ticket_price_" + eventId) + "_") + caller) + "_") + ticketId)
8585
8686
8787 func keyTicketMaxAvailable (caller,eventId,ticketId) = ((((("ticket_maxAvailable_" + eventId) + "_") + caller) + "_") + ticketId)
8888
8989
9090 func keyTicketSold (caller,eventId,ticketId) = ((((("ticket_sold_" + eventId) + "_") + caller) + "_") + ticketId)
9191
9292
9393 func keyTicketOnSale (caller,eventId,ticketId) = ((((("ticket_sold_" + eventId) + "_") + caller) + "_") + ticketId)
9494
9595
9696 func validateString (str,max) = if ((size(str) == 0))
9797 then throw("Field cannot be is empty")
9898 else if ((size(str) > max))
9999 then throw((str + " is too long"))
100100 else true
101101
102102
103103 func validateInt (num) = (0 > num)
104104
105105
106106 func getEventOwnerByEventId (eventId) = valueOrElse(getString(this, keyEventOwnerByEventId(eventId)), "")
107107
108108
109109 func validateUser (caller) = {
110110 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
111111 if ((userStatus == userUnregistered))
112112 then "Register this account first with \"Account\" tab"
113113 else if ((userStatus == userSuspended))
114114 then "Account suspended"
115115 else ""
116116 }
117117
118118
119119 func validateType (type) = containsElement(["online", "offline", "both"], type)
120120
121121
122122 func validateEventData (caller,cidDisplay,name,description,tags,type) = {
123123 let checkUser = validateUser(caller)
124124 if ((checkUser != ""))
125125 then throw(checkUser)
126126 else if ((size(cidDisplay) == 0))
127127 then throw("Display CID cannot be empty")
128128 else if (!(validateCID(cidDisplay)))
129129 then throw("Problem with CID")
130130 else if (!(validateString(name, 200)))
131131 then throw("100 Char. max name")
132132 else if (!(validateType(type)))
133133 then throw("Wrong event type")
134134 else if (!(validateString(description, 1000)))
135135 then throw("1000 Char. max description")
136136 else if ((size(split(tags, ",")) > 5))
137137 then throw("5 tags max.")
138138 else ""
139139 }
140140
141141
142142 func validateTicketData (eventId,caller,name,description,price,maxAvailable) = {
143143 let checkUser = validateUser(caller)
144144 if ((checkUser != ""))
145145 then throw(checkUser)
146146 else if (!(validateString(name, 200)))
147147 then throw("100 Char. max name")
148148 else if (!(validateString(description, 1000)))
149149 then throw("1000 Char. max description")
150150 else if (if (!(validateInt(price)))
151151 then true
152152 else !(validateInt(maxAvailable)))
153153 then throw("Positive amount only")
154154 else if (!(validateString(description, 1000)))
155155 then throw("1000 Char. max description")
156156 else ""
157157 }
158158
159159
160160 func idCallerDate (i) = if (!(dappRunning))
161161 then throw(maintenanceMSG)
162162 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
163163
164164
165165 func isPayment (i) = if ((size(i.payments) == 0))
166166 then throw("No payment attached")
167167 else {
168168 let payment = value(i.payments[0])
169169 let amount = value(payment.amount)
170170 $Tuple2(payment, amount)
171171 }
172172
173173
174174 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
175175 let $t056885724 = isPayment(i)
176176 let payment = $t056885724._1
177177 let amount = $t056885724._2
178178 if (!(isDefined(payment.assetId)))
179179 then throw("Wrong asset attached")
180180 else {
181181 let assetId = if (if ((size(priceAssetId) > 0))
182182 then (toBase58String(value(payment.assetId)) == priceAssetId)
183183 else false)
184184 then payment.assetId
185185 else throw("Wrong asset attached")
186186 if ((artworkPrice != amount))
187187 then throw("Payment amount don't match")
188188 else $Tuple2(amount, assetId)
189189 }
190190 }
191191
192192
193193 @Callable(invoke)
194194 func setConf (key,val) = {
195195 let caller = toString(invoke.caller)
196196 if (containsElement([chris, toString(this)], caller))
197197 then if (contains(key, "conf_"))
198198 then [StringEntry(key, val)]
199199 else throw("Entries starting with conf_ only")
200200 else throw("You are not allowed to change this")
201201 }
202202
203203
204204
205205 @Callable(i)
206206 func addEvent (name,description,tags,cidDisplay,crawler,type) = {
207207 let $t065826625 = idCallerDate(i)
208208 let eventId = $t065826625._1
209209 let caller = $t065826625._2
210210 let date = $t065826625._3
211211 let checkUser = validateUser(caller)
212212 if ((checkUser != ""))
213213 then throw(checkUser)
214214 else {
215215 let validateEvent = validateEventData(caller, cidDisplay, name, description, tags, type)
216216 if ((validateEvent != ""))
217217 then throw("Something went wrong!")
218218 else [IntegerEntry(keyEventDate(caller, eventId), date), StringEntry(keyEventName(caller, eventId), name), StringEntry(keyEventDesc(caller, eventId), description), StringEntry(keyEventDisplayCid(caller, eventId), cidDisplay), StringEntry(keyEventTags(caller, eventId), tags), StringEntry(keyEventCrawler(caller, eventId), crawler), StringEntry(keyEventType(caller, eventId), type), StringEntry(keyEventOwnerByEventId(eventId), caller)]
219219 }
220220 }
221221
222222
223223
224224 @Callable(i)
225225 func editEvent (eventId,name,description,tags,cidDisplay,crawler,type) = if (!(dappRunning))
226226 then throw(maintenanceMSG)
227227 else {
228228 let caller = toBase58String(i.caller.bytes)
229229 let checkUser = validateUser(caller)
230230 if ((checkUser != ""))
231231 then throw(checkUser)
232232 else {
233233 let validateEvent = validateEventData(caller, cidDisplay, name, description, tags, type)
234234 if ((validateEvent != ""))
235235 then throw("Something went wrong!")
236236 else {
237237 let entryExist = getStringByKey(keyEventName(caller, eventId))
238238 if ((entryExist == ""))
239239 then throw("Entry not found")
240240 else {
241241 let flag = getStringByKey(keyEventFlag(caller, eventId))
242242 if ((flag == "ILLEGAL"))
243243 then throw("Cannot update ILLEGAL Event")
244244 else [StringEntry(keyEventName(caller, eventId), name), StringEntry(keyEventDesc(caller, eventId), description), StringEntry(keyEventTags(caller, eventId), tags), StringEntry(keyEventType(caller, eventId), type), StringEntry(keyEventCrawler(caller, eventId), crawler)]
245245 }
246246 }
247247 }
248248 }
249249
250250
251251
252252 @Callable(i)
253253 func flagEvent (eventId,addr,flag,note) = {
254254 let $t087138746 = idCallerDate(i)
255255 let id = $t087138746._1
256256 let caller = $t087138746._2
257257 if (containsElement([chris, toString(this)], caller))
258258 then if (containsElement(["", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
259259 then [StringEntry(keyEventFlag(addr, eventId), flag), StringEntry(keyEventNote(addr, eventId), note)]
260260 else throw(("Unknow status " + flag))
261261 else throw("You are not allowed")
262262 }
263263
264264
265265
266266 @Callable(i)
267267 func addTicket (eventId,name,description,price,maxAvailable) = {
268268 let $t092349274 = idCallerDate(i)
269269 let id = $t092349274._1
270270 let caller = $t092349274._2
271271 let date = $t092349274._3
272272 let checkUser = validateUser(caller)
273273 if ((checkUser != ""))
274274 then throw(checkUser)
275275 else {
276276 let isEventOwner = getEventOwnerByEventId(eventId)
277277 if ((isEventOwner == ""))
278278 then throw("Event not found")
279279 else if ((isEventOwner != caller))
280280 then throw("You are not the owner of this event")
281281 else {
282282 let validateTicket = validateTicketData(eventId, caller, name, description, price, maxAvailable)
283283 if ((validateTicket != ""))
284284 then throw("Something went wrong!")
285- else [StringEntry(keyTicketName(caller, eventId, id), name), StringEntry(keyTicketDesc(caller, eventId, id), description), IntegerEntry(keyTicketPrice(caller, eventId, id), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, id), maxAvailable)]
285+ else [StringEntry(keyTicketName(caller, eventId, id), name), StringEntry(keyTicketDesc(caller, eventId, id), description), IntegerEntry(keyTicketPrice(caller, eventId, id), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, id), maxAvailable), BooleanEntry(keyTicketOnSale(caller, eventId, id), true)]
286286 }
287287 }
288288 }
289289
290290
291291
292292 @Callable(i)
293293 func editTicket (ticketId,eventId,name,description,price,maxAvailable) = {
294- let $t01016610206 = idCallerDate(i)
295- let id = $t01016610206._1
296- let caller = $t01016610206._2
297- let date = $t01016610206._3
294+ let $t01023010270 = idCallerDate(i)
295+ let id = $t01023010270._1
296+ let caller = $t01023010270._2
297+ let date = $t01023010270._3
298298 let checkUser = validateUser(caller)
299299 if ((checkUser != ""))
300300 then throw(checkUser)
301301 else {
302302 let isEventOwner = getEventOwnerByEventId(eventId)
303303 if ((isEventOwner == ""))
304304 then throw("Event not found")
305305 else if ((isEventOwner != caller))
306306 then throw("You are not the owner of this event")
307307 else {
308308 let ticketExist = getStringByKey(keyTicketName(caller, eventId, ticketId))
309309 if ((size(ticketExist) == 0))
310310 then throw("Ticket not found")
311311 else {
312312 let validateTicket = validateTicketData(eventId, caller, name, description, price, maxAvailable)
313313 if ((validateTicket != ""))
314314 then throw("Something went wrong!")
315315 else {
316316 let ticketSold = valueOrElse(getInteger(keyTicketSold(caller, eventId, ticketId)), 0)
317317 if ((ticketSold > maxAvailable))
318318 then throw("Max tickets available cannot be lower than amount already sold")
319319 else [StringEntry(keyTicketName(caller, eventId, ticketId), name), StringEntry(keyTicketDesc(caller, eventId, ticketId), description), IntegerEntry(keyTicketPrice(caller, eventId, ticketId), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, ticketId), maxAvailable)]
320320 }
321321 }
322322 }
323323 }
324324 }
325325
326326
327327
328328 @Callable(i)
329+func pauseTicket (eventId,ticketId,status) = {
330+ let $t01154311583 = idCallerDate(i)
331+ let id = $t01154311583._1
332+ let caller = $t01154311583._2
333+ let date = $t01154311583._3
334+ let checkUser = validateUser(caller)
335+ if ((checkUser != ""))
336+ then throw(checkUser)
337+ else {
338+ let isEventOwner = getEventOwnerByEventId(eventId)
339+ if ((isEventOwner == ""))
340+ then throw("Event not found")
341+ else if ((isEventOwner != caller))
342+ then throw("You are not the owner of this event")
343+ else [BooleanEntry(keyTicketOnSale(caller, eventId, id), status)]
344+ }
345+ }
346+
347+
348+
349+@Callable(i)
329350 func buyTicket (ticketId,eventId,issuer) = {
330- let $t01149511533 = idCallerDate(i)
331- let id = $t01149511533._1
332- let caller = $t01149511533._2
333- let date = $t01149511533._3
351+ let $t01206412102 = idCallerDate(i)
352+ let id = $t01206412102._1
353+ let caller = $t01206412102._2
354+ let date = $t01206412102._3
334355 let totalNFT = valueOrElse(getIntegerByKey("total_tickets_issued"), 0)
335356 let eventOwner = getEventOwnerByEventId(eventId)
336357 if ((eventOwner == ""))
337358 then throw("Event not found")
338359 else if ((eventOwner != issuer))
339360 then throw("You are not the owner of this event")
340361 else {
341362 let ticketExist = getStringByKey(keyTicketName(issuer, eventId, ticketId))
342363 if ((size(ticketExist) == 0))
343364 then throw("Ticket not found")
344365 else {
345366 let eventName = getStringByKey(keyEventName(issuer, eventId))
346367 if ((eventName == ""))
347368 then throw("Art doesn't exist")
348369 else {
349370 let isOnSale = getBooleanByKey(keyTicketOnSale(issuer, eventId, ticketId))
350371 let amountSold = getIntegerByKey(keyTicketSold(issuer, eventId, ticketId))
351372 let ticketPrice = getIntegerByKey(keyTicketPrice(issuer, eventId, ticketId))
352373 let priceAssetId = toBase58String(signAssetId)
353- let $t01245012524 = validatePriceAssetId(i, priceAssetId, ticketPrice)
354- let amount = $t01245012524._1
355- let assetId = $t01245012524._2
374+ let $t01301913093 = validatePriceAssetId(i, priceAssetId, ticketPrice)
375+ let amount = $t01301913093._1
376+ let assetId = $t01301913093._2
356377 let maxCanSell = getIntegerByKey(keyTicketMaxAvailable(issuer, eventId, ticketId))
357378 let amountForSign = fraction(amount, signCut, 100)
358379 let amountForOrganizer = (amount - amountForSign)
359380 if ((amountSold == maxCanSell))
360381 then throw("Art sold out")
361382 else {
362383 let newAmountSold = (amountSold + 1)
363384 let issueMeta = ((((((((((("Organizer: " + issuer) + ",
364385 EventID: ") + eventId) + ",
365386 TicketID: ") + ticketId) + ",
366387 EventName: ") + eventName) + ",
367388 Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
368389 let issueNFT = Issue(("ST_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
369390 let idNFT = calculateAssetId(issueNFT)
370391 let sellStatus = if (if ((newAmountSold == maxCanSell))
371392 then true
372393 else !(isOnSale))
373394 then false
374395 else true
375396 let receiveNFT = i.caller
376397 let soldKey = ((((((((("ticket_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + eventId) + "_") + issuer) + "_") + ticketId)
377398 let soldValue = ((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + toBase58String(idNFT))
378399 let soldData = StringEntry(soldKey, soldValue)
379400 let buyRes = [IntegerEntry(keyTicketSold(issuer, eventId, ticketId), newAmountSold), StringEntry(("nft_" + toBase58String(idNFT)), soldKey), IntegerEntry("total_nft_issued", (totalNFT + 1)), BooleanEntry(keyTicketOnSale(issuer, eventId, ticketId), sellStatus), issueNFT, ScriptTransfer(Address(fromBase58String(issuer)), amountForOrganizer, assetId), ScriptTransfer(receiveNFT, 1, idNFT), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
380401 soldData :: buyRes
381402 }
382403 }
383404 }
384405 }
385406 }
386407
387408

github/deemru/w8io/3ef1775 
95.05 ms