tx · HSkgoLXgKVXcBKABuGGQvg3KdFNKVgEwjPJDGWtk4SFJ

3N6yPEN3qNbKESnUewrj3EYVr6eLAd9AYBB:  -0.01400000 Waves

2022.10.25 13:26 [2287792] smart account 3N6yPEN3qNbKESnUewrj3EYVr6eLAd9AYBB > SELF 0.00000000 Waves

{ "type": 13, "id": "HSkgoLXgKVXcBKABuGGQvg3KdFNKVgEwjPJDGWtk4SFJ", "fee": 1400000, "feeAssetId": null, "timestamp": 1666693610033, "version": 2, "chainId": 84, "sender": "3N6yPEN3qNbKESnUewrj3EYVr6eLAd9AYBB", "senderPublicKey": "9RjLrGXy4wnGfNiZRhKSUh5wDnj5rLGPzbCE75KaVemg", "proofs": [ "348HGsDuFbNdCMoxV8UwkTsHrMHV52cKXZADmgiovuaZe6xsT5qWYT3WNkT8uP3U7odyrfAh8xse2PmBcB1Q7YL3" ], "script": "base64:BgJOCAISBAoCCAgSCQoHCAgICAgICBIKCggICAgICAgICBIGCgQICAgIEgcKBQgICAEBEggKBggICAgBARIFCgMIAQQSBQoDCAgIEgQKAggIKwAHVkVSU0lPTgIFMS4wLjABDmdldFN0cmluZ0J5S2V5AQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgAACHVzZXJEYXBwCQEFdmFsdWUBCQCmCAEJAQ5nZXRTdHJpbmdCeUtleQECD2NvbmZfdXNlcnNfZGFwcAALZmVlUmVjZWl2ZXIJAQ5nZXRTdHJpbmdCeUtleQECEWNvbmZfZmVlX3JlY2VpdmVyAAtzaWduQXNzZXRJZAkA2QQBCQEOZ2V0U3RyaW5nQnlLZXkBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1NJR04ABWNocmlzCQEOZ2V0U3RyaW5nQnlLZXkBAgxjb25mX2FkbWluXzEBD2dldEludGVnZXJCeUtleQEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAQ9nZXRCb29sZWFuQnlLZXkBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQNrZXkHAAtkYXBwUnVubmluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQh1c2VyRGFwcAIUY29uZl9kYXBwX2lzX3J1bm5pbmcGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAIUY29uZl9tYWludGVuYW5jZV9tc2cCAAANdXNlclN1c3BlbmRlZAIJU1VTUEVOREVEABB1c2VyVW5yZWdpc3RlcmVkAgxVTlJFR0lTVEVSRUQBC3ZhbGlkYXRlQ0lEAQNjaWQDCQEIY29udGFpbnMCBQNjaWQCAS8DAwkAZgIATAkAsQIBBQNjaWQJAAACCQCxAgEJAJEDAgkAtQkCBQNjaWQCAS8AAAA7BwkAZgIAEAkAsQIBCQCRAwIJALUJAgUDY2lkAgEvAAEHBwAHc2lnbkN1dAACAQ1rZXlVc2VyU3RhdHVzAQZjYWxsZXIJAKwCAgIMdXNlcl9zdGF0dXNfBQZjYWxsZXIBFmtleUV2ZW50T3duZXJCeUV2ZW50SWQBB2V2ZW50SWQJAKwCAgIQZ2V0X2V2ZW50X293bmVyXwUHZXZlbnRJZAERa2V5RXZlbnRBZGRlZERhdGUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhFldmVudF9hZGRlZF9kYXRlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudERhdGUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9kYXRlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudE5hbWUCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9uYW1lXwUHZXZlbnRJZAIBXwUGY2FsbGVyAQxrZXlFdmVudERlc2MCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAgtldmVudF9kZXNjXwUHZXZlbnRJZAIBXwUGY2FsbGVyARJrZXlFdmVudERpc3BsYXlDaWQCBmNhbGxlcgdldmVudElkCQCsAgIJAKwCAgkArAICAhJldmVudF9kaXNwbGF5X2NpZF8FB2V2ZW50SWQCAV8FBmNhbGxlcgEMa2V5RXZlbnRUYWdzAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgILZXZlbnRfdGFnc18FB2V2ZW50SWQCAV8FBmNhbGxlcgEMa2V5RXZlbnRGbGFnAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgILZXZlbnRfZmxhZ18FB2V2ZW50SWQCAV8FBmNhbGxlcgEMa2V5RXZlbnROb3RlAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgILZXZlbnRfbm90ZV8FB2V2ZW50SWQCAV8FBmNhbGxlcgEPa2V5RXZlbnRDcmF3bGVyAgZjYWxsZXIHZXZlbnRJZAkArAICCQCsAgIJAKwCAgISZXZlbnRfY3Jhd2xlcl9jaWRfBQdldmVudElkAgFfBQZjYWxsZXIBDGtleUV2ZW50VHlwZQIGY2FsbGVyB2V2ZW50SWQJAKwCAgkArAICCQCsAgICC2V2ZW50X3R5cGVfBQdldmVudElkAgFfBQZjYWxsZXIBDWtleVRpY2tldE5hbWUDBmNhbGxlcgdldmVudElkCHRpY2tldElkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIMdGlja2V0X25hbWVfBQdldmVudElkAgFfBQZjYWxsZXICAV8FCHRpY2tldElkAQ1rZXlUaWNrZXREZXNjAwZjYWxsZXIHZXZlbnRJZAh0aWNrZXRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDHRpY2tldF9kZXNjXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAEOa2V5VGlja2V0UHJpY2UDBmNhbGxlcgdldmVudElkCHRpY2tldElkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINdGlja2V0X3ByaWNlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAENa2V5VGlja2V0RGF0ZQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgx0aWNrZXRfZGF0ZV8FB2V2ZW50SWQCAV8FBmNhbGxlcgIBXwUIdGlja2V0SWQBFWtleVRpY2tldE1heEF2YWlsYWJsZQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhR0aWNrZXRfbWF4QXZhaWxhYmxlXwUHZXZlbnRJZAIBXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAENa2V5VGlja2V0U29sZAMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgx0aWNrZXRfc29sZF8FB2V2ZW50SWQCAV8FBmNhbGxlcgIBXwUIdGlja2V0SWQBD2tleVRpY2tldE9uU2FsZQMGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgx0aWNrZXRfc29sZF8FB2V2ZW50SWQCAV8FBmNhbGxlcgIBXwUIdGlja2V0SWQBDnZhbGlkYXRlU3RyaW5nAgNzdHIDbWF4AwkAAAIJALECAQUDc3RyAAAJAAIBAhhGaWVsZCBjYW5ub3QgYmUgaXMgZW1wdHkDCQBmAgkAsQIBBQNzdHIFA21heAkAAgEJAKwCAgUDc3RyAgwgaXMgdG9vIGxvbmcGAQt2YWxpZGF0ZUludAEDbnVtCQBmAgAABQNudW0BFmdldEV2ZW50T3duZXJCeUV2ZW50SWQBB2V2ZW50SWQJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwkBFmtleUV2ZW50T3duZXJCeUV2ZW50SWQBBQdldmVudElkAgABDHZhbGlkYXRlVXNlcgEGY2FsbGVyBAp1c2VyU3RhdHVzCQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwCQENa2V5VXNlclN0YXR1cwEFBmNhbGxlcgUQdXNlclVucmVnaXN0ZXJlZAMJAAACBQp1c2VyU3RhdHVzBRB1c2VyVW5yZWdpc3RlcmVkAi5SZWdpc3RlciB0aGlzIGFjY291bnQgZmlyc3Qgd2l0aCAiQWNjb3VudCIgdGFiAwkAAAIFCnVzZXJTdGF0dXMFDXVzZXJTdXNwZW5kZWQCEUFjY291bnQgc3VzcGVuZGVkAgABDHZhbGlkYXRlVHlwZQEEdHlwZQkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgIGb25saW5lCQDMCAICB29mZmxpbmUJAMwIAgIEYm90aAUDbmlsBQR0eXBlARF2YWxpZGF0ZUV2ZW50RGF0YQcGY2FsbGVyCmNpZERpc3BsYXkEbmFtZQtkZXNjcmlwdGlvbgR0YWdzBHR5cGUEZGF0ZQQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIDCQAAAgkAsQIBBQpjaWREaXNwbGF5AAAJAAIBAhtEaXNwbGF5IENJRCBjYW5ub3QgYmUgZW1wdHkDCQEBIQEJAQt2YWxpZGF0ZUNJRAEFCmNpZERpc3BsYXkJAAIBAhBQcm9ibGVtIHdpdGggQ0lEAwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQRuYW1lAMgBCQACAQISMTAwIENoYXIuIG1heCBuYW1lAwkBASEBCQEMdmFsaWRhdGVUeXBlAQUEdHlwZQkAAgECEFdyb25nIGV2ZW50IHR5cGUDCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFC2Rlc2NyaXB0aW9uAOgHCQACAQIaMTAwMCBDaGFyLiBtYXggZGVzY3JpcHRpb24DCQEBIQEJAQ52YWxpZGF0ZVN0cmluZwIFBGRhdGUA6AcJAAIBAhMxMDAwIENoYXIuIG1heCBkYXRlAwkAZgIJAJADAQkAtQkCBQR0YWdzAgEsAAUJAAIBAgs1IHRhZ3MgbWF4LgIAARJ2YWxpZGF0ZVRpY2tldERhdGEGB2V2ZW50SWQGY2FsbGVyBG5hbWULZGVzY3JpcHRpb24FcHJpY2UMbWF4QXZhaWxhYmxlBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgUEbmFtZQDIAQkAAgECEjEwMCBDaGFyLiBtYXggbmFtZQMJAQEhAQkBDnZhbGlkYXRlU3RyaW5nAgULZGVzY3JpcHRpb24A6AcJAAIBAhoxMDAwIENoYXIuIG1heCBkZXNjcmlwdGlvbgMDCQELdmFsaWRhdGVJbnQBBQVwcmljZQYJAQt2YWxpZGF0ZUludAEFDG1heEF2YWlsYWJsZQkAAgECFFBvc2l0aXZlIGFtb3VudCBvbmx5AwkBASEBCQEOdmFsaWRhdGVTdHJpbmcCBQtkZXNjcmlwdGlvbgDoBwkAAgECGjEwMDAgQ2hhci4gbWF4IGRlc2NyaXB0aW9uAgABDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEUdmFsaWRhdGVQcmljZUFzc2V0SWQDAWkMcHJpY2VBc3NldElkDGFydHdvcmtQcmljZQQLJHQwNTg5OTU5MzUJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAULJHQwNTg5OTU5MzUCXzEEBmFtb3VudAgFCyR0MDU4OTk1OTM1Al8yAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkAAgECFFdyb25nIGFzc2V0IGF0dGFjaGVkBAdhc3NldElkAwMJAGYCCQCxAgEFDHByaWNlQXNzZXRJZAAACQAAAgkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkBQxwcmljZUFzc2V0SWQHCAUHcGF5bWVudAdhc3NldElkCQACAQIUV3JvbmcgYXNzZXQgYXR0YWNoZWQDCQECIT0CBQxhcnR3b3JrUHJpY2UFBmFtb3VudAkAAgECGlBheW1lbnQgYW1vdW50IGRvbid0IG1hdGNoCQCUCgIFBmFtb3VudAUHYXNzZXRJZAkGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBCGFkZEV2ZW50BwRuYW1lC2Rlc2NyaXB0aW9uBHRhZ3MKY2lkRGlzcGxheQdjcmF3bGVyBHR5cGUEZGF0ZQQLJHQwNjgwNzY4NTYJAQxpZENhbGxlckRhdGUBBQFpBAdldmVudElkCAULJHQwNjgwNzY4NTYCXzEEBmNhbGxlcggFCyR0MDY4MDc2ODU2Al8yBAlhZGRlZERhdGUIBQskdDA2ODA3Njg1NgJfMwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIEDXZhbGlkYXRlRXZlbnQJARF2YWxpZGF0ZUV2ZW50RGF0YQcFBmNhbGxlcgUKY2lkRGlzcGxheQUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFBHR5cGUFBGRhdGUDCQECIT0CBQ12YWxpZGF0ZUV2ZW50AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEJAMwIAgkBDEludGVnZXJFbnRyeQIJARFrZXlFdmVudEFkZGVkRGF0ZQIFBmNhbGxlcgUHZXZlbnRJZAUJYWRkZWREYXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudERhdGUCBQZjYWxsZXIFB2V2ZW50SWQFBGRhdGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50TmFtZQIFBmNhbGxlcgUHZXZlbnRJZAUEbmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnREZXNjAgUGY2FsbGVyBQdldmVudElkBQtkZXNjcmlwdGlvbgkAzAgCCQELU3RyaW5nRW50cnkCCQESa2V5RXZlbnREaXNwbGF5Q2lkAgUGY2FsbGVyBQdldmVudElkBQpjaWREaXNwbGF5CQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudFRhZ3MCBQZjYWxsZXIFB2V2ZW50SWQFBHRhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBD2tleUV2ZW50Q3Jhd2xlcgIFBmNhbGxlcgUHZXZlbnRJZAUHY3Jhd2xlcgkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnRUeXBlAgUGY2FsbGVyBQdldmVudElkBQR0eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJARZrZXlFdmVudE93bmVyQnlFdmVudElkAQUHZXZlbnRJZAUGY2FsbGVyBQNuaWwBaQEJZWRpdEV2ZW50CAdldmVudElkBG5hbWULZGVzY3JpcHRpb24EdGFncwpjaWREaXNwbGF5B2NyYXdsZXIEdHlwZQRkYXRlAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHBAZjYWxsZXIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIEDXZhbGlkYXRlRXZlbnQJARF2YWxpZGF0ZUV2ZW50RGF0YQcFBmNhbGxlcgUKY2lkRGlzcGxheQUEbmFtZQULZGVzY3JpcHRpb24FBHRhZ3MFBHR5cGUFBGRhdGUDCQECIT0CBQ12YWxpZGF0ZUV2ZW50AgAJAAIBAhVTb21ldGhpbmcgd2VudCB3cm9uZyEECmVudHJ5RXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQxrZXlFdmVudE5hbWUCBQZjYWxsZXIFB2V2ZW50SWQDCQAAAgUKZW50cnlFeGlzdAIACQACAQIPRW50cnkgbm90IGZvdW5kBARmbGFnCQEOZ2V0U3RyaW5nQnlLZXkBCQEMa2V5RXZlbnRGbGFnAgUGY2FsbGVyBQdldmVudElkAwkAAAIFBGZsYWcCB0lMTEVHQUwJAAIBAhtDYW5ub3QgdXBkYXRlIElMTEVHQUwgRXZlbnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50TmFtZQIFBmNhbGxlcgUHZXZlbnRJZAUEbmFtZQkAzAgCCQELU3RyaW5nRW50cnkCCQEMa2V5RXZlbnREYXRlAgUGY2FsbGVyBQdldmVudElkBQRkYXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudERlc2MCBQZjYWxsZXIFB2V2ZW50SWQFC2Rlc2NyaXB0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQxrZXlFdmVudFRhZ3MCBQZjYWxsZXIFB2V2ZW50SWQFBHRhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50VHlwZQIFBmNhbGxlcgUHZXZlbnRJZAUEdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQEPa2V5RXZlbnRDcmF3bGVyAgUGY2FsbGVyBQdldmVudElkBQdjcmF3bGVyBQNuaWwBaQEJZmxhZ0V2ZW50BAdldmVudElkBGFkZHIEZmxhZwRub3RlBAskdDA5MTI2OTE1OQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAULJHQwOTEyNjkxNTkCXzEEBmNhbGxlcggFCyR0MDkxMjY5MTU5Al8yAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAICAAkAzAgCAg9DSEFOR0VfUkVRVUlSRUQJAMwIAgIHRkxBR0dFRAkAzAgCAgdJTExFR0FMBQNuaWwFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50RmxhZwIFBGFkZHIFB2V2ZW50SWQFBGZsYWcJAMwIAgkBC1N0cmluZ0VudHJ5AgkBDGtleUV2ZW50Tm90ZQIFBGFkZHIFB2V2ZW50SWQFBG5vdGUFA25pbAkAAgEJAKwCAgIOVW5rbm93IHN0YXR1cyAFBGZsYWcJAAIBAhNZb3UgYXJlIG5vdCBhbGxvd2VkAWkBCWFkZFRpY2tldAUHZXZlbnRJZARuYW1lC2Rlc2NyaXB0aW9uBXByaWNlDG1heEF2YWlsYWJsZQQLJHQwOTY0Nzk2ODcJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFCyR0MDk2NDc5Njg3Al8xBAZjYWxsZXIIBQskdDA5NjQ3OTY4NwJfMgQEZGF0ZQgFCyR0MDk2NDc5Njg3Al8zBAljaGVja1VzZXIJAQx2YWxpZGF0ZVVzZXIBBQZjYWxsZXIDCQECIT0CBQljaGVja1VzZXICAAkAAgEFCWNoZWNrVXNlcgQMaXNFdmVudE93bmVyCQEWZ2V0RXZlbnRPd25lckJ5RXZlbnRJZAEFB2V2ZW50SWQDCQAAAgUMaXNFdmVudE93bmVyAgAJAAIBAg9FdmVudCBub3QgZm91bmQDCQECIT0CBQxpc0V2ZW50T3duZXIFBmNhbGxlcgkAAgECI1lvdSBhcmUgbm90IHRoZSBvd25lciBvZiB0aGlzIGV2ZW50BA52YWxpZGF0ZVRpY2tldAkBEnZhbGlkYXRlVGlja2V0RGF0YQYFB2V2ZW50SWQFBmNhbGxlcgUEbmFtZQULZGVzY3JpcHRpb24FBXByaWNlBQxtYXhBdmFpbGFibGUDCQECIT0CBQ52YWxpZGF0ZVRpY2tldAIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlUaWNrZXROYW1lAwUGY2FsbGVyBQdldmVudElkBQJpZAUEbmFtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRpY2tldERhdGUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQRkYXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlUaWNrZXREZXNjAwUGY2FsbGVyBQdldmVudElkBQJpZAULZGVzY3JpcHRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlUaWNrZXRQcmljZQMFBmNhbGxlcgUHZXZlbnRJZAUCaWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5VGlja2V0TWF4QXZhaWxhYmxlAwUGY2FsbGVyBQdldmVudElkBQJpZAUMbWF4QXZhaWxhYmxlCQDMCAIJAQxCb29sZWFuRW50cnkCCQEPa2V5VGlja2V0T25TYWxlAwUGY2FsbGVyBQdldmVudElkBQJpZAYFA25pbAFpAQplZGl0VGlja2V0Bgh0aWNrZXRJZAdldmVudElkBG5hbWULZGVzY3JpcHRpb24FcHJpY2UMbWF4QXZhaWxhYmxlBA0kdDAxMDcwNTEwNzQ1CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxMDcwNTEwNzQ1Al8xBAZjYWxsZXIIBQ0kdDAxMDcwNTEwNzQ1Al8yBARkYXRlCAUNJHQwMTA3MDUxMDc0NQJfMwQJY2hlY2tVc2VyCQEMdmFsaWRhdGVVc2VyAQUGY2FsbGVyAwkBAiE9AgUJY2hlY2tVc2VyAgAJAAIBBQljaGVja1VzZXIEDGlzRXZlbnRPd25lcgkBFmdldEV2ZW50T3duZXJCeUV2ZW50SWQBBQdldmVudElkAwkAAAIFDGlzRXZlbnRPd25lcgIACQACAQIPRXZlbnQgbm90IGZvdW5kAwkBAiE9AgUMaXNFdmVudE93bmVyBQZjYWxsZXIJAAIBAiNZb3UgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBldmVudAQLdGlja2V0RXhpc3QJAQ5nZXRTdHJpbmdCeUtleQEJAQ1rZXlUaWNrZXROYW1lAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAMJAAACCQCxAgEFC3RpY2tldEV4aXN0AAAJAAIBAhBUaWNrZXQgbm90IGZvdW5kBA52YWxpZGF0ZVRpY2tldAkBEnZhbGlkYXRlVGlja2V0RGF0YQYFB2V2ZW50SWQFBmNhbGxlcgUEbmFtZQULZGVzY3JpcHRpb24FBXByaWNlBQxtYXhBdmFpbGFibGUDCQECIT0CBQ52YWxpZGF0ZVRpY2tldAIACQACAQIVU29tZXRoaW5nIHdlbnQgd3JvbmchBAp0aWNrZXRTb2xkCQELdmFsdWVPckVsc2UCCQCfCAEJAQ1rZXlUaWNrZXRTb2xkAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAAAAwkAZgIFCnRpY2tldFNvbGQFDG1heEF2YWlsYWJsZQkAAgECPk1heCB0aWNrZXRzIGF2YWlsYWJsZSBjYW5ub3QgYmUgbG93ZXIgdGhhbiBhbW91bnQgYWxyZWFkeSBzb2xkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlUaWNrZXROYW1lAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAUEbmFtZQkAzAgCCQEMSW50ZWdlckVudHJ5AgkBDWtleVRpY2tldERhdGUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQRkYXRlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAQ1rZXlUaWNrZXREZXNjAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAULZGVzY3JpcHRpb24JAMwIAgkBDEludGVnZXJFbnRyeQIJAQ5rZXlUaWNrZXRQcmljZQMFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQFBXByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQEVa2V5VGlja2V0TWF4QXZhaWxhYmxlAwUGY2FsbGVyBQdldmVudElkBQh0aWNrZXRJZAUMbWF4QXZhaWxhYmxlBQNuaWwBaQEPcGF1c2VUaWNrZXRTYWxlAwdldmVudElkCHRpY2tldElkBnN0YXR1cwQNJHQwMTIwODQxMjEyNAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTIwODQxMjEyNAJfMQQGY2FsbGVyCAUNJHQwMTIwODQxMjEyNAJfMgQEZGF0ZQgFDSR0MDEyMDg0MTIxMjQCXzMECWNoZWNrVXNlcgkBDHZhbGlkYXRlVXNlcgEFBmNhbGxlcgMJAQIhPQIFCWNoZWNrVXNlcgIACQACAQUJY2hlY2tVc2VyBAxpc0V2ZW50T3duZXIJARZnZXRFdmVudE93bmVyQnlFdmVudElkAQUHZXZlbnRJZAMJAAACBQxpc0V2ZW50T3duZXICAAkAAgECD0V2ZW50IG5vdCBmb3VuZAMJAQIhPQIFDGlzRXZlbnRPd25lcgUGY2FsbGVyCQACAQIjWW91IGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgZXZlbnQJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ9rZXlUaWNrZXRPblNhbGUDBQZjYWxsZXIFB2V2ZW50SWQFAmlkBQZzdGF0dXMFA25pbAFpAQlidXlUaWNrZXQDCHRpY2tldElkB2V2ZW50SWQGaXNzdWVyBA0kdDAxMjYwNTEyNjQzCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxMjYwNTEyNjQzAl8xBAZjYWxsZXIIBQ0kdDAxMjYwNTEyNjQzAl8yBARkYXRlCAUNJHQwMTI2MDUxMjY0MwJfMwQIdG90YWxORlQJAQt2YWx1ZU9yRWxzZQIJAQ9nZXRJbnRlZ2VyQnlLZXkBAhR0b3RhbF90aWNrZXRzX2lzc3VlZAAABApldmVudE93bmVyCQEWZ2V0RXZlbnRPd25lckJ5RXZlbnRJZAEFB2V2ZW50SWQDCQAAAgUKZXZlbnRPd25lcgIACQACAQIPRXZlbnQgbm90IGZvdW5kAwkBAiE9AgUKZXZlbnRPd25lcgUGaXNzdWVyCQACAQIjWW91IGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgZXZlbnQEC3RpY2tldEV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQENa2V5VGlja2V0TmFtZQMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQDCQAAAgkAsQIBBQt0aWNrZXRFeGlzdAAACQACAQIQVGlja2V0IG5vdCBmb3VuZAQJZXZlbnROYW1lCQEOZ2V0U3RyaW5nQnlLZXkBCQEMa2V5RXZlbnROYW1lAgUGaXNzdWVyBQdldmVudElkAwkAAAIFCWV2ZW50TmFtZQIACQACAQIRQXJ0IGRvZXNuJ3QgZXhpc3QECGlzT25TYWxlCQEPZ2V0Qm9vbGVhbkJ5S2V5AQkBD2tleVRpY2tldE9uU2FsZQMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQECmFtb3VudFNvbGQJAQ9nZXRJbnRlZ2VyQnlLZXkBCQENa2V5VGlja2V0U29sZAMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQEC3RpY2tldFByaWNlCQEPZ2V0SW50ZWdlckJ5S2V5AQkBDmtleVRpY2tldFByaWNlAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAQMcHJpY2VBc3NldElkCQDYBAEFC3NpZ25Bc3NldElkBA0kdDAxMzU2MDEzNjM0CQEUdmFsaWRhdGVQcmljZUFzc2V0SWQDBQFpBQxwcmljZUFzc2V0SWQFC3RpY2tldFByaWNlBAZhbW91bnQIBQ0kdDAxMzU2MDEzNjM0Al8xBAdhc3NldElkCAUNJHQwMTM1NjAxMzYzNAJfMgQKbWF4Q2FuU2VsbAkBD2dldEludGVnZXJCeUtleQEJARVrZXlUaWNrZXRNYXhBdmFpbGFibGUDBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkBA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQdzaWduQ3V0AGQEEmFtb3VudEZvck9yZ2FuaXplcgkAZQIFBmFtb3VudAUNYW1vdW50Rm9yU2lnbgMJAAACBQphbW91bnRTb2xkBQptYXhDYW5TZWxsCQACAQIMQXJ0IHNvbGQgb3V0BA1uZXdBbW91bnRTb2xkCQBkAgUKYW1vdW50U29sZAABBAlpc3N1ZU1ldGEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgtPcmdhbml6ZXI6IAUGaXNzdWVyAgwsCiBFdmVudElEOiAFB2V2ZW50SWQCDSwKIFRpY2tldElEOiAFCHRpY2tldElkAg4sCiBFdmVudE5hbWU6IAUJZXZlbnROYW1lAgosCiBJc3N1ZTogCQCkAwEFDW5ld0Ftb3VudFNvbGQCAS8JAKQDAQUKbWF4Q2FuU2VsbAQIaXNzdWVORlQJAMIIBQkArAICAgNTVF8JAKQDAQkAZAIFCHRvdGFsTkZUAAEFCWlzc3VlTWV0YQABAAAHBAVpZE5GVAkAuAgBBQhpc3N1ZU5GVAQKc2VsbFN0YXR1cwMDCQAAAgUNbmV3QW1vdW50U29sZAUKbWF4Q2FuU2VsbAYJAQEhAQUIaXNPblNhbGUHBgQKcmVjZWl2ZU5GVAgFAWkGY2FsbGVyBAdzb2xkS2V5CQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAgx0aWNrZXRfc29sZF8JAKQDAQUNbmV3QW1vdW50U29sZAIEX29mXwkApAMBBQptYXhDYW5TZWxsAgFfBQdldmVudElkAgFfBQZpc3N1ZXICAV8FCHRpY2tldElkBAlzb2xkVmFsdWUJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQClCAEFCnJlY2VpdmVORlQCAV8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8JAKQDAQUGYW1vdW50AgFfCQDYBAEFBWlkTkZUBAhzb2xkRGF0YQkBC1N0cmluZ0VudHJ5AgUHc29sZEtleQUJc29sZFZhbHVlBAZidXlSZXMJAMwIAgkBDEludGVnZXJFbnRyeQIJAQ1rZXlUaWNrZXRTb2xkAwUGaXNzdWVyBQdldmVudElkBQh0aWNrZXRJZAUNbmV3QW1vdW50U29sZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICBG5mdF8JANgEAQUFaWRORlQFB3NvbGRLZXkJAMwIAgkBDEludGVnZXJFbnRyeQICEHRvdGFsX25mdF9pc3N1ZWQJAGQCBQh0b3RhbE5GVAABCQDMCAIJAQxCb29sZWFuRW50cnkCCQCsAgIJAKwCAgIDU1RfCQCkAwEJAGQCBQh0b3RhbE5GVAABAgVfdXNlZAcJAMwIAgkBDEJvb2xlYW5FbnRyeQIJAQ9rZXlUaWNrZXRPblNhbGUDBQZpc3N1ZXIFB2V2ZW50SWQFCHRpY2tldElkBQpzZWxsU3RhdHVzCQDMCAIFCGlzc3VlTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIFEmFtb3VudEZvck9yZ2FuaXplcgUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQpyZWNlaXZlTkZUAAEFBWlkTkZUCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgUNYW1vdW50Rm9yU2lnbgUHYXNzZXRJZAUDbmlsCQDMCAIFCHNvbGREYXRhBQZidXlSZXMBaQEJdXNlVGlja2V0AgdldmVudElkBmlzc3VlcgQNJHQwMTU0ODQxNTUyMgkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTU0ODQxNTUyMgJfMQQGY2FsbGVyCAUNJHQwMTU0ODQxNTUyMgJfMgQEZGF0ZQgFDSR0MDE1NDg0MTU1MjICXzMEDSR0MDE1NTI4MTU1NjQJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTU1MjgxNTU2NAJfMQQGYW1vdW50CAUNJHQwMTU1MjgxNTU2NAJfMgMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhRXcm9uZyBhc3NldCBhdHRhY2hlZAQIdGlja2V0SWQJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAQJYXNzZXROYW1lBAckbWF0Y2gwCQDsBwEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBWFzc2V0BQckbWF0Y2gwCAUFYXNzZXQEbmFtZQkAAgECEENhbid0IGZpbmQgYXNzZXQEC3RpY2tldEV4aXN0CQEOZ2V0U3RyaW5nQnlLZXkBCQENa2V5VGlja2V0TmFtZQMFBmlzc3VlcgUHZXZlbnRJZAUIdGlja2V0SWQDCQAAAgkAsQIBBQt0aWNrZXRFeGlzdAAACQACAQIQVGlja2V0IG5vdCBmb3VuZAkAzAgCCQEMQm9vbGVhbkVudHJ5AgkArAICBQlhc3NldE5hbWUCBV91c2VkBgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEIBQdwYXltZW50B2Fzc2V0SWQFA25pbAA/ynVv", "height": 2287792, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HThFn29CamKaKrYQ5qyZTj6sP3k8ytBf8WESda3DQVgS Next: DBie2PQi5UE7GwFdzfaRYo7dPhVV8QXZyi2dqeF5H41S Diff:
OldNewDifferences
8282
8383
8484 func keyTicketPrice (caller,eventId,ticketId) = ((((("ticket_price_" + eventId) + "_") + caller) + "_") + ticketId)
85+
86+
87+func keyTicketDate (caller,eventId,ticketId) = ((((("ticket_date_" + eventId) + "_") + caller) + "_") + ticketId)
8588
8689
8790 func keyTicketMaxAvailable (caller,eventId,ticketId) = ((((("ticket_maxAvailable_" + eventId) + "_") + caller) + "_") + ticketId)
174177
175178
176179 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
177- let $t057805816 = isPayment(i)
178- let payment = $t057805816._1
179- let amount = $t057805816._2
180+ let $t058995935 = isPayment(i)
181+ let payment = $t058995935._1
182+ let amount = $t058995935._2
180183 if (!(isDefined(payment.assetId)))
181184 then throw("Wrong asset attached")
182185 else {
206209
207210 @Callable(i)
208211 func addEvent (name,description,tags,cidDisplay,crawler,type,date) = {
209- let $t066886737 = idCallerDate(i)
210- let eventId = $t066886737._1
211- let caller = $t066886737._2
212- let addedDate = $t066886737._3
212+ let $t068076856 = idCallerDate(i)
213+ let eventId = $t068076856._1
214+ let caller = $t068076856._2
215+ let addedDate = $t068076856._3
213216 let checkUser = validateUser(caller)
214217 if ((checkUser != ""))
215218 then throw(checkUser)
253256
254257 @Callable(i)
255258 func flagEvent (eventId,addr,flag,note) = {
256- let $t090079040 = idCallerDate(i)
257- let id = $t090079040._1
258- let caller = $t090079040._2
259+ let $t091269159 = idCallerDate(i)
260+ let id = $t091269159._1
261+ let caller = $t091269159._2
259262 if (containsElement([chris, toString(this)], caller))
260263 then if (containsElement(["", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
261264 then [StringEntry(keyEventFlag(addr, eventId), flag), StringEntry(keyEventNote(addr, eventId), note)]
267270
268271 @Callable(i)
269272 func addTicket (eventId,name,description,price,maxAvailable) = {
270- let $t095289568 = idCallerDate(i)
271- let id = $t095289568._1
272- let caller = $t095289568._2
273- let date = $t095289568._3
273+ let $t096479687 = idCallerDate(i)
274+ let id = $t096479687._1
275+ let caller = $t096479687._2
276+ let date = $t096479687._3
274277 let checkUser = validateUser(caller)
275278 if ((checkUser != ""))
276279 then throw(checkUser)
284287 let validateTicket = validateTicketData(eventId, caller, name, description, price, maxAvailable)
285288 if ((validateTicket != ""))
286289 then throw("Something went wrong!")
287- 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)]
290+ else [StringEntry(keyTicketName(caller, eventId, id), name), IntegerEntry(keyTicketDate(caller, eventId, id), date), StringEntry(keyTicketDesc(caller, eventId, id), description), IntegerEntry(keyTicketPrice(caller, eventId, id), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, id), maxAvailable), BooleanEntry(keyTicketOnSale(caller, eventId, id), true)]
288291 }
289292 }
290293 }
293296
294297 @Callable(i)
295298 func editTicket (ticketId,eventId,name,description,price,maxAvailable) = {
296- let $t01052410564 = idCallerDate(i)
297- let id = $t01052410564._1
298- let caller = $t01052410564._2
299- let date = $t01052410564._3
299+ let $t01070510745 = idCallerDate(i)
300+ let id = $t01070510745._1
301+ let caller = $t01070510745._2
302+ let date = $t01070510745._3
300303 let checkUser = validateUser(caller)
301304 if ((checkUser != ""))
302305 then throw(checkUser)
318321 let ticketSold = valueOrElse(getInteger(keyTicketSold(caller, eventId, ticketId)), 0)
319322 if ((ticketSold > maxAvailable))
320323 then throw("Max tickets available cannot be lower than amount already sold")
321- 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)]
324+ else [StringEntry(keyTicketName(caller, eventId, ticketId), name), IntegerEntry(keyTicketDate(caller, eventId, id), date), StringEntry(keyTicketDesc(caller, eventId, ticketId), description), IntegerEntry(keyTicketPrice(caller, eventId, ticketId), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, ticketId), maxAvailable)]
322325 }
323326 }
324327 }
329332
330333 @Callable(i)
331334 func pauseTicketSale (eventId,ticketId,status) = {
332- let $t01184111881 = idCallerDate(i)
333- let id = $t01184111881._1
334- let caller = $t01184111881._2
335- let date = $t01184111881._3
335+ let $t01208412124 = idCallerDate(i)
336+ let id = $t01208412124._1
337+ let caller = $t01208412124._2
338+ let date = $t01208412124._3
336339 let checkUser = validateUser(caller)
337340 if ((checkUser != ""))
338341 then throw(checkUser)
350353
351354 @Callable(i)
352355 func buyTicket (ticketId,eventId,issuer) = {
353- let $t01236212400 = idCallerDate(i)
354- let id = $t01236212400._1
355- let caller = $t01236212400._2
356- let date = $t01236212400._3
356+ let $t01260512643 = idCallerDate(i)
357+ let id = $t01260512643._1
358+ let caller = $t01260512643._2
359+ let date = $t01260512643._3
357360 let totalNFT = valueOrElse(getIntegerByKey("total_tickets_issued"), 0)
358361 let eventOwner = getEventOwnerByEventId(eventId)
359362 if ((eventOwner == ""))
373376 let amountSold = getIntegerByKey(keyTicketSold(issuer, eventId, ticketId))
374377 let ticketPrice = getIntegerByKey(keyTicketPrice(issuer, eventId, ticketId))
375378 let priceAssetId = toBase58String(signAssetId)
376- let $t01331713391 = validatePriceAssetId(i, priceAssetId, ticketPrice)
377- let amount = $t01331713391._1
378- let assetId = $t01331713391._2
379+ let $t01356013634 = validatePriceAssetId(i, priceAssetId, ticketPrice)
380+ let amount = $t01356013634._1
381+ let assetId = $t01356013634._2
379382 let maxCanSell = getIntegerByKey(keyTicketMaxAvailable(issuer, eventId, ticketId))
380383 let amountForSign = fraction(amount, signCut, 100)
381384 let amountForOrganizer = (amount - amountForSign)
411414
412415 @Callable(i)
413416 func useTicket (eventId,issuer) = {
414- let $t01524115279 = idCallerDate(i)
415- let id = $t01524115279._1
416- let caller = $t01524115279._2
417- let date = $t01524115279._3
418- let $t01528515321 = isPayment(i)
419- let payment = $t01528515321._1
420- let amount = $t01528515321._2
417+ let $t01548415522 = idCallerDate(i)
418+ let id = $t01548415522._1
419+ let caller = $t01548415522._2
420+ let date = $t01548415522._3
421+ let $t01552815564 = isPayment(i)
422+ let payment = $t01552815564._1
423+ let amount = $t01552815564._2
421424 if (!(isDefined(payment.assetId)))
422425 then throw("Wrong asset attached")
423426 else {
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) = ("get_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)
85+
86+
87+func keyTicketDate (caller,eventId,ticketId) = ((((("ticket_date_" + eventId) + "_") + caller) + "_") + ticketId)
8588
8689
8790 func keyTicketMaxAvailable (caller,eventId,ticketId) = ((((("ticket_maxAvailable_" + eventId) + "_") + caller) + "_") + ticketId)
8891
8992
9093 func keyTicketSold (caller,eventId,ticketId) = ((((("ticket_sold_" + eventId) + "_") + caller) + "_") + ticketId)
9194
9295
9396 func keyTicketOnSale (caller,eventId,ticketId) = ((((("ticket_sold_" + eventId) + "_") + caller) + "_") + ticketId)
9497
9598
9699 func validateString (str,max) = if ((size(str) == 0))
97100 then throw("Field cannot be is empty")
98101 else if ((size(str) > max))
99102 then throw((str + " is too long"))
100103 else true
101104
102105
103106 func validateInt (num) = (0 > num)
104107
105108
106109 func getEventOwnerByEventId (eventId) = valueOrElse(getString(this, keyEventOwnerByEventId(eventId)), "")
107110
108111
109112 func validateUser (caller) = {
110113 let userStatus = valueOrElse(getString(userDapp, keyUserStatus(caller)), userUnregistered)
111114 if ((userStatus == userUnregistered))
112115 then "Register this account first with \"Account\" tab"
113116 else if ((userStatus == userSuspended))
114117 then "Account suspended"
115118 else ""
116119 }
117120
118121
119122 func validateType (type) = containsElement(["online", "offline", "both"], type)
120123
121124
122125 func validateEventData (caller,cidDisplay,name,description,tags,type,date) = {
123126 let checkUser = validateUser(caller)
124127 if ((checkUser != ""))
125128 then throw(checkUser)
126129 else if ((size(cidDisplay) == 0))
127130 then throw("Display CID cannot be empty")
128131 else if (!(validateCID(cidDisplay)))
129132 then throw("Problem with CID")
130133 else if (!(validateString(name, 200)))
131134 then throw("100 Char. max name")
132135 else if (!(validateType(type)))
133136 then throw("Wrong event type")
134137 else if (!(validateString(description, 1000)))
135138 then throw("1000 Char. max description")
136139 else if (!(validateString(date, 1000)))
137140 then throw("1000 Char. max date")
138141 else if ((size(split(tags, ",")) > 5))
139142 then throw("5 tags max.")
140143 else ""
141144 }
142145
143146
144147 func validateTicketData (eventId,caller,name,description,price,maxAvailable) = {
145148 let checkUser = validateUser(caller)
146149 if ((checkUser != ""))
147150 then throw(checkUser)
148151 else if (!(validateString(name, 200)))
149152 then throw("100 Char. max name")
150153 else if (!(validateString(description, 1000)))
151154 then throw("1000 Char. max description")
152155 else if (if (validateInt(price))
153156 then true
154157 else validateInt(maxAvailable))
155158 then throw("Positive amount only")
156159 else if (!(validateString(description, 1000)))
157160 then throw("1000 Char. max description")
158161 else ""
159162 }
160163
161164
162165 func idCallerDate (i) = if (!(dappRunning))
163166 then throw(maintenanceMSG)
164167 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
165168
166169
167170 func isPayment (i) = if ((size(i.payments) == 0))
168171 then throw("No payment attached")
169172 else {
170173 let payment = value(i.payments[0])
171174 let amount = value(payment.amount)
172175 $Tuple2(payment, amount)
173176 }
174177
175178
176179 func validatePriceAssetId (i,priceAssetId,artworkPrice) = {
177- let $t057805816 = isPayment(i)
178- let payment = $t057805816._1
179- let amount = $t057805816._2
180+ let $t058995935 = isPayment(i)
181+ let payment = $t058995935._1
182+ let amount = $t058995935._2
180183 if (!(isDefined(payment.assetId)))
181184 then throw("Wrong asset attached")
182185 else {
183186 let assetId = if (if ((size(priceAssetId) > 0))
184187 then (toBase58String(value(payment.assetId)) == priceAssetId)
185188 else false)
186189 then payment.assetId
187190 else throw("Wrong asset attached")
188191 if ((artworkPrice != amount))
189192 then throw("Payment amount don't match")
190193 else $Tuple2(amount, assetId)
191194 }
192195 }
193196
194197
195198 @Callable(invoke)
196199 func setConf (key,val) = {
197200 let caller = toString(invoke.caller)
198201 if (containsElement([chris, toString(this)], caller))
199202 then if (contains(key, "conf_"))
200203 then [StringEntry(key, val)]
201204 else throw("Entries starting with conf_ only")
202205 else throw("You are not allowed to change this")
203206 }
204207
205208
206209
207210 @Callable(i)
208211 func addEvent (name,description,tags,cidDisplay,crawler,type,date) = {
209- let $t066886737 = idCallerDate(i)
210- let eventId = $t066886737._1
211- let caller = $t066886737._2
212- let addedDate = $t066886737._3
212+ let $t068076856 = idCallerDate(i)
213+ let eventId = $t068076856._1
214+ let caller = $t068076856._2
215+ let addedDate = $t068076856._3
213216 let checkUser = validateUser(caller)
214217 if ((checkUser != ""))
215218 then throw(checkUser)
216219 else {
217220 let validateEvent = validateEventData(caller, cidDisplay, name, description, tags, type, date)
218221 if ((validateEvent != ""))
219222 then throw("Something went wrong!")
220223 else [IntegerEntry(keyEventAddedDate(caller, eventId), addedDate), StringEntry(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)]
221224 }
222225 }
223226
224227
225228
226229 @Callable(i)
227230 func editEvent (eventId,name,description,tags,cidDisplay,crawler,type,date) = if (!(dappRunning))
228231 then throw(maintenanceMSG)
229232 else {
230233 let caller = toBase58String(i.caller.bytes)
231234 let checkUser = validateUser(caller)
232235 if ((checkUser != ""))
233236 then throw(checkUser)
234237 else {
235238 let validateEvent = validateEventData(caller, cidDisplay, name, description, tags, type, date)
236239 if ((validateEvent != ""))
237240 then throw("Something went wrong!")
238241 else {
239242 let entryExist = getStringByKey(keyEventName(caller, eventId))
240243 if ((entryExist == ""))
241244 then throw("Entry not found")
242245 else {
243246 let flag = getStringByKey(keyEventFlag(caller, eventId))
244247 if ((flag == "ILLEGAL"))
245248 then throw("Cannot update ILLEGAL Event")
246249 else [StringEntry(keyEventName(caller, eventId), name), StringEntry(keyEventDate(caller, eventId), date), StringEntry(keyEventDesc(caller, eventId), description), StringEntry(keyEventTags(caller, eventId), tags), StringEntry(keyEventType(caller, eventId), type), StringEntry(keyEventCrawler(caller, eventId), crawler)]
247250 }
248251 }
249252 }
250253 }
251254
252255
253256
254257 @Callable(i)
255258 func flagEvent (eventId,addr,flag,note) = {
256- let $t090079040 = idCallerDate(i)
257- let id = $t090079040._1
258- let caller = $t090079040._2
259+ let $t091269159 = idCallerDate(i)
260+ let id = $t091269159._1
261+ let caller = $t091269159._2
259262 if (containsElement([chris, toString(this)], caller))
260263 then if (containsElement(["", "CHANGE_REQUIRED", "FLAGGED", "ILLEGAL"], flag))
261264 then [StringEntry(keyEventFlag(addr, eventId), flag), StringEntry(keyEventNote(addr, eventId), note)]
262265 else throw(("Unknow status " + flag))
263266 else throw("You are not allowed")
264267 }
265268
266269
267270
268271 @Callable(i)
269272 func addTicket (eventId,name,description,price,maxAvailable) = {
270- let $t095289568 = idCallerDate(i)
271- let id = $t095289568._1
272- let caller = $t095289568._2
273- let date = $t095289568._3
273+ let $t096479687 = idCallerDate(i)
274+ let id = $t096479687._1
275+ let caller = $t096479687._2
276+ let date = $t096479687._3
274277 let checkUser = validateUser(caller)
275278 if ((checkUser != ""))
276279 then throw(checkUser)
277280 else {
278281 let isEventOwner = getEventOwnerByEventId(eventId)
279282 if ((isEventOwner == ""))
280283 then throw("Event not found")
281284 else if ((isEventOwner != caller))
282285 then throw("You are not the owner of this event")
283286 else {
284287 let validateTicket = validateTicketData(eventId, caller, name, description, price, maxAvailable)
285288 if ((validateTicket != ""))
286289 then throw("Something went wrong!")
287- 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)]
290+ else [StringEntry(keyTicketName(caller, eventId, id), name), IntegerEntry(keyTicketDate(caller, eventId, id), date), StringEntry(keyTicketDesc(caller, eventId, id), description), IntegerEntry(keyTicketPrice(caller, eventId, id), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, id), maxAvailable), BooleanEntry(keyTicketOnSale(caller, eventId, id), true)]
288291 }
289292 }
290293 }
291294
292295
293296
294297 @Callable(i)
295298 func editTicket (ticketId,eventId,name,description,price,maxAvailable) = {
296- let $t01052410564 = idCallerDate(i)
297- let id = $t01052410564._1
298- let caller = $t01052410564._2
299- let date = $t01052410564._3
299+ let $t01070510745 = idCallerDate(i)
300+ let id = $t01070510745._1
301+ let caller = $t01070510745._2
302+ let date = $t01070510745._3
300303 let checkUser = validateUser(caller)
301304 if ((checkUser != ""))
302305 then throw(checkUser)
303306 else {
304307 let isEventOwner = getEventOwnerByEventId(eventId)
305308 if ((isEventOwner == ""))
306309 then throw("Event not found")
307310 else if ((isEventOwner != caller))
308311 then throw("You are not the owner of this event")
309312 else {
310313 let ticketExist = getStringByKey(keyTicketName(caller, eventId, ticketId))
311314 if ((size(ticketExist) == 0))
312315 then throw("Ticket not found")
313316 else {
314317 let validateTicket = validateTicketData(eventId, caller, name, description, price, maxAvailable)
315318 if ((validateTicket != ""))
316319 then throw("Something went wrong!")
317320 else {
318321 let ticketSold = valueOrElse(getInteger(keyTicketSold(caller, eventId, ticketId)), 0)
319322 if ((ticketSold > maxAvailable))
320323 then throw("Max tickets available cannot be lower than amount already sold")
321- 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)]
324+ else [StringEntry(keyTicketName(caller, eventId, ticketId), name), IntegerEntry(keyTicketDate(caller, eventId, id), date), StringEntry(keyTicketDesc(caller, eventId, ticketId), description), IntegerEntry(keyTicketPrice(caller, eventId, ticketId), price), IntegerEntry(keyTicketMaxAvailable(caller, eventId, ticketId), maxAvailable)]
322325 }
323326 }
324327 }
325328 }
326329 }
327330
328331
329332
330333 @Callable(i)
331334 func pauseTicketSale (eventId,ticketId,status) = {
332- let $t01184111881 = idCallerDate(i)
333- let id = $t01184111881._1
334- let caller = $t01184111881._2
335- let date = $t01184111881._3
335+ let $t01208412124 = idCallerDate(i)
336+ let id = $t01208412124._1
337+ let caller = $t01208412124._2
338+ let date = $t01208412124._3
336339 let checkUser = validateUser(caller)
337340 if ((checkUser != ""))
338341 then throw(checkUser)
339342 else {
340343 let isEventOwner = getEventOwnerByEventId(eventId)
341344 if ((isEventOwner == ""))
342345 then throw("Event not found")
343346 else if ((isEventOwner != caller))
344347 then throw("You are not the owner of this event")
345348 else [BooleanEntry(keyTicketOnSale(caller, eventId, id), status)]
346349 }
347350 }
348351
349352
350353
351354 @Callable(i)
352355 func buyTicket (ticketId,eventId,issuer) = {
353- let $t01236212400 = idCallerDate(i)
354- let id = $t01236212400._1
355- let caller = $t01236212400._2
356- let date = $t01236212400._3
356+ let $t01260512643 = idCallerDate(i)
357+ let id = $t01260512643._1
358+ let caller = $t01260512643._2
359+ let date = $t01260512643._3
357360 let totalNFT = valueOrElse(getIntegerByKey("total_tickets_issued"), 0)
358361 let eventOwner = getEventOwnerByEventId(eventId)
359362 if ((eventOwner == ""))
360363 then throw("Event not found")
361364 else if ((eventOwner != issuer))
362365 then throw("You are not the owner of this event")
363366 else {
364367 let ticketExist = getStringByKey(keyTicketName(issuer, eventId, ticketId))
365368 if ((size(ticketExist) == 0))
366369 then throw("Ticket not found")
367370 else {
368371 let eventName = getStringByKey(keyEventName(issuer, eventId))
369372 if ((eventName == ""))
370373 then throw("Art doesn't exist")
371374 else {
372375 let isOnSale = getBooleanByKey(keyTicketOnSale(issuer, eventId, ticketId))
373376 let amountSold = getIntegerByKey(keyTicketSold(issuer, eventId, ticketId))
374377 let ticketPrice = getIntegerByKey(keyTicketPrice(issuer, eventId, ticketId))
375378 let priceAssetId = toBase58String(signAssetId)
376- let $t01331713391 = validatePriceAssetId(i, priceAssetId, ticketPrice)
377- let amount = $t01331713391._1
378- let assetId = $t01331713391._2
379+ let $t01356013634 = validatePriceAssetId(i, priceAssetId, ticketPrice)
380+ let amount = $t01356013634._1
381+ let assetId = $t01356013634._2
379382 let maxCanSell = getIntegerByKey(keyTicketMaxAvailable(issuer, eventId, ticketId))
380383 let amountForSign = fraction(amount, signCut, 100)
381384 let amountForOrganizer = (amount - amountForSign)
382385 if ((amountSold == maxCanSell))
383386 then throw("Art sold out")
384387 else {
385388 let newAmountSold = (amountSold + 1)
386389 let issueMeta = ((((((((((("Organizer: " + issuer) + ",
387390 EventID: ") + eventId) + ",
388391 TicketID: ") + ticketId) + ",
389392 EventName: ") + eventName) + ",
390393 Issue: ") + toString(newAmountSold)) + "/") + toString(maxCanSell))
391394 let issueNFT = Issue(("ST_" + toString((totalNFT + 1))), issueMeta, 1, 0, false)
392395 let idNFT = calculateAssetId(issueNFT)
393396 let sellStatus = if (if ((newAmountSold == maxCanSell))
394397 then true
395398 else !(isOnSale))
396399 then false
397400 else true
398401 let receiveNFT = i.caller
399402 let soldKey = ((((((((("ticket_sold_" + toString(newAmountSold)) + "_of_") + toString(maxCanSell)) + "_") + eventId) + "_") + issuer) + "_") + ticketId)
400403 let soldValue = ((((((((toString(receiveNFT) + "_") + toString(date)) + "_") + id) + "_") + toString(amount)) + "_") + toBase58String(idNFT))
401404 let soldData = StringEntry(soldKey, soldValue)
402405 let buyRes = [IntegerEntry(keyTicketSold(issuer, eventId, ticketId), newAmountSold), StringEntry(("nft_" + toBase58String(idNFT)), soldKey), IntegerEntry("total_nft_issued", (totalNFT + 1)), BooleanEntry((("ST_" + toString((totalNFT + 1))) + "_used"), false), BooleanEntry(keyTicketOnSale(issuer, eventId, ticketId), sellStatus), issueNFT, ScriptTransfer(Address(fromBase58String(issuer)), amountForOrganizer, assetId), ScriptTransfer(receiveNFT, 1, idNFT), ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
403406 soldData :: buyRes
404407 }
405408 }
406409 }
407410 }
408411 }
409412
410413
411414
412415 @Callable(i)
413416 func useTicket (eventId,issuer) = {
414- let $t01524115279 = idCallerDate(i)
415- let id = $t01524115279._1
416- let caller = $t01524115279._2
417- let date = $t01524115279._3
418- let $t01528515321 = isPayment(i)
419- let payment = $t01528515321._1
420- let amount = $t01528515321._2
417+ let $t01548415522 = idCallerDate(i)
418+ let id = $t01548415522._1
419+ let caller = $t01548415522._2
420+ let date = $t01548415522._3
421+ let $t01552815564 = isPayment(i)
422+ let payment = $t01552815564._1
423+ let amount = $t01552815564._2
421424 if (!(isDefined(payment.assetId)))
422425 then throw("Wrong asset attached")
423426 else {
424427 let ticketId = toBase58String(value(payment.assetId))
425428 let assetName = match assetInfo(value(payment.assetId)) {
426429 case asset: Asset =>
427430 asset.name
428431 case _ =>
429432 throw("Can't find asset")
430433 }
431434 let ticketExist = getStringByKey(keyTicketName(issuer, eventId, ticketId))
432435 if ((size(ticketExist) == 0))
433436 then throw("Ticket not found")
434437 else [BooleanEntry((assetName + "_used"), true), ScriptTransfer(Address(fromBase58String(caller)), 1, payment.assetId)]
435438 }
436439 }
437440
438441

github/deemru/w8io/169f3d6 
78.08 ms