tx · GWWneMizPEiBHsFUvDugy1fBKxE2Pv8LuuALAXK5GpgA

3NA8MoNPikwC3J5qFE4bJNyb234chSY61sV:  -0.01500000 Waves

2022.11.05 04:57 [2303169] smart account 3NA8MoNPikwC3J5qFE4bJNyb234chSY61sV > SELF 0.00000000 Waves

{ "type": 13, "id": "GWWneMizPEiBHsFUvDugy1fBKxE2Pv8LuuALAXK5GpgA", "fee": 1500000, "feeAssetId": null, "timestamp": 1667613494127, "version": 2, "chainId": 84, "sender": "3NA8MoNPikwC3J5qFE4bJNyb234chSY61sV", "senderPublicKey": "9DhkQ7ZkQPRhQPKPcvpn8J9G9kBWYmZaLGNFxUzf1UJd", "proofs": [ "4ZeR95z1MpwVnSBVdmAwh6ZMGkob5Gwi7hsrPL1zWqrX5yUfLZHsHkJaYcpPywpiBckkR37wsjs8bcrCPht7kWTV" ], "script": "base64:BgI4CAISBAoCCAgSBAoCBAgSAwoBARIECgIIARIDCgEIEgMKAQgSAwoBCBIFCgMICAgSBwoFCAgICAgoAAdWRVJTSU9OAgUxLjAuMAEJZ2V0U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgABCWdldEludEJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFBHRoaXMFA2tleQAAAAtmZWVSZWNlaXZlcgkBCWdldFN0ckJ5SwECEWNvbmZfZmVlX3JlY2VpdmVyAApldmVudHNEYXBwCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAhBjb25mX2V2ZW50c19kYXBwAAh1c2VyRGFwcAkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIPY29uZl91c2Vyc19kYXBwAAdzaWduQ3V0CQEJZ2V0SW50QnlLAQIMY29uZl9zaWduY3V0AAtzaWduQXNzZXRJZAkA2QQBCQEJZ2V0U3RyQnlLAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAVjaHJpcwkBCWdldFN0ckJ5SwECDGNvbmZfYWRtaW5fMQANdXNlclN1c3BlbmRlZAIJU1VTUEVOREVEAAxldmVudElsbGVnYWwCB0lMTEVHQUwADmV2ZW50U3VzcGVuZGVkAglTVVNQRU5ERUQADmRhcHBSdW5uaW5nS2V5AhRjb25mX2RhcHBfaXNfcnVubmluZwARbWFpbnRlbmFuY2VNU0dLZXkCFGNvbmZfbWFpbnRlbmFuY2VfbXNnAAtkYXBwUnVubmluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ5kYXBwUnVubmluZ0tleQYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFEW1haW50ZW5hbmNlTVNHS2V5AgAACW51bVNhbGVzSwIJbnVtX3NhbGVzAQ1nZXRVc2VyU3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUIdXNlckRhcHAFA2tleQIFRXJyb3IBDmdldEV2ZW50U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUKZXZlbnRzRGFwcAUDa2V5AgABDWtleVVzZXJTdGF0dXMBBGFkZHIJAKwCAgIMdXNlcl9zdGF0dXNfBQRhZGRyAQdrZXlGbGFnAg1vcmdhbml6ZXJBZGRyB2V2ZW50SWQJAKwCAgkArAICCQCsAgICC2V2ZW50X2ZsYWdfBQdldmVudElkAgFfBQ1vcmdhbml6ZXJBZGRyAQprZXlORlREYXRhAQJpZAkArAICAgRuZnRfBQJpZAEKZ2V0U2FsZUtleQUGY2FsbGVyCHRpY2tldElkB2V2ZW50SWQNb3JnYW5pemVyQWRkcgVuZnRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINc2FsZTJuZF9pbmZvXwUGY2FsbGVyAgFfBQh0aWNrZXRJZAIBXwUHZXZlbnRJZAIBXwUNb3JnYW5pemVyQWRkcgIBXwUFbmZ0SWQBCWdldEJpZEtleQUKb2ZmZXJPd25lcgh0aWNrZXRJZAlzYWxlT3duZXIHb2ZmZXJJZAVuZnRJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJb2ZmZXIybmRfBQpvZmZlck93bmVyAgFfBQh0aWNrZXRJZAIBXwUJc2FsZU93bmVyAgFfBQdvZmZlcklkAgFfBQVuZnRJZAEMaWRDYWxsZXJEYXRlAQFpAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHCQCVCgMJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAEJaXNQYXltZW50AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQJAJQKAgUHcGF5bWVudAUGYW1vdW50AQxhc3NldElzVmFsaWQBDGFzc2V0RGV0YWlscwMDAwkAAAIIBQxhc3NldERldGFpbHMIcXVhbnRpdHkAAQkAAAIIBQxhc3NldERldGFpbHMIZGVjaW1hbHMAAAcJAAACCAUMYXNzZXREZXRhaWxzCnJlaXNzdWFibGUHBwkAAAIIBQxhc3NldERldGFpbHMGaXNzdWVyBQpldmVudHNEYXBwBwEOaXNTaWduRXZlbnRORlQBAmlkBAxhc3NldERldGFpbHMJAQV2YWx1ZQEJAOwHAQUCaWQJAQxhc3NldElzVmFsaWQBBQxhc3NldERldGFpbHMBEGFjY2VwdGVkQXNzZXRJZHMBB2Fzc2V0SWQDCQECIT0CBQdhc3NldElkCQDYBAEFC3NpZ25Bc3NldElkBwYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQJANkEAQUHYXNzZXRJZAEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQh0aWNrZXRJZAQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQh0aWNrZXRJZAMJAAACCQCxAgEFCXNhbGVPd25lcgAACQACAQIQVGlja2V0IG5vdCBmb3VuZAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQh0aWNrZXRJZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAhNUaWNrZXQgbm90IGZvciBzYWxlBQlzYWxlT3duZXIBCmdldEJpZERhdGEBA2tleQQHYmlkRGF0YQkBCWdldFN0ckJ5SwEJAKwCAgUDa2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg9PZmZlciBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAgkAlQoDBQpiaWREYXRhQXJyBQdhc3NldElkBQdiaWREYXRhAQxldmVudElzVmFsaWQBC2V2ZW50U3RhdHVzAwkBAiE9AgULZXZlbnRTdGF0dXMFDGV2ZW50SWxsZWdhbAkBAiE9AgULZXZlbnRTdGF0dXMFDmV2ZW50U3VzcGVuZGVkBwEQY2hlY2tFdmVudFN0YXR1cwIEYWRkcgJpZAQLZXZlbnRTdGF0dXMJAQ5nZXRFdmVudFN0ckJ5SwEJAQdrZXlGbGFnAgUEYWRkcgUCaWQDCQEMZXZlbnRJc1ZhbGlkAQULZXZlbnRTdGF0dXMGCQACAQkArAICAhpPcmlnaW5hbCBldmVudCBmbGFnZ2VkIGFzIAULZXZlbnRTdGF0dXMBFGNoZWNrT3JnYW5pemVyU3RhdHVzAQRhZGRyBA9vcmdhbml6ZXJTdGF0dXMJAQ1nZXRVc2VyU3RyQnlLAQkBDWtleVVzZXJTdGF0dXMBBQRhZGRyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUNdXNlclN1c3BlbmRlZAUDbmlsBQ9vcmdhbml6ZXJTdGF0dXMJAAIBCQCsAgICE09yaWdpbmFsIG9yZ2FuaXplciAFD29yZ2FuaXplclN0YXR1cwYBDGNoZWNrTkZUSW5mbwEHYXNzZXRJZAQHbmZ0RGF0YQkAtQkCCQEOZ2V0RXZlbnRTdHJCeUsBCQEKa2V5TkZURGF0YQEFB2Fzc2V0SWQCAV8DAwkBASEBCQEQY2hlY2tFdmVudFN0YXR1cwIJAJEDAgUHbmZ0RGF0YQAGCQCRAwIFB25mdERhdGEABQkBASEBCQEUY2hlY2tPcmdhbml6ZXJTdGF0dXMBCQCRAwIFB25mdERhdGEABgcJAJYKBAcJAJEDAgUHbmZ0RGF0YQAGCQCRAwIFB25mdERhdGEABwkAkQMCBQduZnREYXRhAAUJAJYKBAYJAJEDAgUHbmZ0RGF0YQAGCQCRAwIFB25mdERhdGEABwkAkQMCBQduZnREYXRhAAUBD2NoZWNrRVZFTlRFeGlzdAIHZXZlbnRJZA1vcmdhbml6ZXJBZGRyAwMJAQEhAQkBEGNoZWNrRXZlbnRTdGF0dXMCBQ1vcmdhbml6ZXJBZGRyBQdldmVudElkCQEBIQEJARRjaGVja09yZ2FuaXplclN0YXR1cwEFDW9yZ2FuaXplckFkZHIHBwYBDHNldFRyYW5zZmVycwgGYW1vdW50B2Fzc2V0SWQFbmZ0SWQNb3JnYW5pemVyQWRkcglzYWxlT3duZXIGY2FsbGVyB2V2ZW50SWQIdGlja2V0SWQEDG9yZ2FuaXplckN1dAkBCWdldEludEJ5SwEJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAhF0aWNrZXRfcm95YWx0aWVzXwUHZXZlbnRJZAIBXwUNb3JnYW5pemVyQWRkcgIBXwUIdGlja2V0SWQEDWFtb3VudEZvclNpZ24JAGsDBQZhbW91bnQFB3NpZ25DdXQAZAQSYW1vdW50Rm9yT3JnYW5pemVyCQBrAwUGYW1vdW50BQxvcmdhbml6ZXJDdXQAZAQOYW1vdW50Rm9yT3duZXIJAGUCBQZhbW91bnQJAGQCBQ1hbW91bnRGb3JTaWduBRJhbW91bnRGb3JPcmdhbml6ZXIEC2NvbW1pc3Npb25zCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtmZWVSZWNlaXZlcgUNYW1vdW50Rm9yU2lnbgUHYXNzZXRJZAUDbmlsBAxvcmdhbml6ZXJGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQ1vcmdhbml6ZXJBZGRyBRJhbW91bnRGb3JPcmdhbml6ZXIFB2Fzc2V0SWQECG93bmVyRmVlCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUJc2FsZU93bmVyBQ5hbW91bnRGb3JPd25lcgUHYXNzZXRJZAQMY29sbGVjdG9yTkZUCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEJANkEAQUFbmZ0SWQJAJYKBAULY29tbWlzc2lvbnMFDG9yZ2FuaXplckZlZQUIb3duZXJGZWUFDGNvbGxlY3Rvck5GVAEPcHJvdmlkZUJhc2VEYXRhAgFpBW5mdElkBAskdDA1OTQwNTk3OQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAULJHQwNTk0MDU5NzkCXzEEBmNhbGxlcggFCyR0MDU5NDA1OTc5Al8yBARkYXRlCAULJHQwNTk0MDU5NzkCXzMECyR0MDU5ODI2MDU0CQEMY2hlY2tORlRJbmZvAQUFbmZ0SWQECmlzVmFsaWRORlQIBQskdDA1OTgyNjA1NAJfMQQHZXZlbnRJZAgFCyR0MDU5ODI2MDU0Al8yBA1vcmdhbml6ZXJBZGRyCAULJHQwNTk4MjYwNTQCXzMECHRpY2tldElkCAULJHQwNTk4MjYwNTQCXzQJAJkKBwUCaWQFBmNhbGxlcgUEZGF0ZQUKaXNWYWxpZE5GVAUHZXZlbnRJZAUNb3JnYW5pemVyQWRkcgUIdGlja2V0SWQBDnVwZGF0ZU51bVNhbGVzAAQIbnVtU2FsZXMJAQlnZXRJbnRCeUsBBQludW1TYWxlc0sJAQxJbnRlZ2VyRW50cnkCBQludW1TYWxlc0sJAGQCBQhudW1TYWxlcwABCQZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQphcHBSdW5uaW5nAgZpc0xpdmUHbWVzc2FnZQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyBAJpZAkA2AQBCAUGaW52b2tlDXRyYW5zYWN0aW9uSWQDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQxCb29sZWFuRW50cnkCBQ5kYXBwUnVubmluZ0tleQUGaXNMaXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFEW1haW50ZW5hbmNlTVNHS2V5BQdtZXNzYWdlBQNuaWwJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBB3NlbGxORlQBBXByaWNlBAskdDA3MTA3NzE0MwkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQskdDA3MTA3NzE0MwJfMQQGYW1vdW50CAULJHQwNzEwNzcxNDMCXzIDCQECIT0CBQZhbW91bnQAAQkAAgECEk5vIFRpY2tldCBhdHRhY2hlZAQFbmZ0SWQDAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJAQ5pc1NpZ25FdmVudE5GVAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQHCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAh1Pbmx5IFNJR04gRXZlbnQgTkZUIGFjY2VwdGVkLgQLJHQwNzM4NDc0NzkJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQskdDA3Mzg0NzQ3OQJfMQQGY2FsbGVyCAULJHQwNzM4NDc0NzkCXzIEBGRhdGUIBQskdDA3Mzg0NzQ3OQJfMwQKaXNWYWxpZE5GVAgFCyR0MDczODQ3NDc5Al80BAdldmVudElkCAULJHQwNzM4NDc0NzkCXzUEDW9yZ2FuaXplckFkZHIIBQskdDA3Mzg0NzQ3OQJfNgQIdGlja2V0SWQIBQskdDA3Mzg0NzQ3OQJfNwMJAQEhAQUKaXNWYWxpZE5GVAkAAgECEk5vdCBhIHZhbGlkIHRpY2tldAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQpnZXRTYWxlS2V5BQUGY2FsbGVyBQh0aWNrZXRJZAUHZXZlbnRJZAUNb3JnYW5pemVyQWRkcgUFbmZ0SWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQRkYXRlAgFfCQCkAwEFBXByaWNlAgFfCQDYBAEFC3NpZ25Bc3NldElkAgFfBQVuZnRJZAIBXwUIdGlja2V0SWQCAV8FB2V2ZW50SWQCAV8FDW9yZ2FuaXplckFkZHICAV8FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAIET1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkBQZjYWxsZXIFA25pbAFpAQ91cGRhdGVTYWxlUHJpY2UCBW5mdElkBXByaWNlBAskdDA4MDE3ODExMgkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFCyR0MDgwMTc4MTEyAl8xBAZjYWxsZXIIBQskdDA4MDE3ODExMgJfMgQEZGF0ZQgFCyR0MDgwMTc4MTEyAl8zBAppc1ZhbGlkTkZUCAULJHQwODAxNzgxMTICXzQEB2V2ZW50SWQIBQskdDA4MDE3ODExMgJfNQQNb3JnYW5pemVyQWRkcggFCyR0MDgwMTc4MTEyAl82BAh0aWNrZXRJZAgFCyR0MDgwMTc4MTEyAl83AwkBASEBBQppc1ZhbGlkTkZUCQACAQISTm90IGEgdmFsaWQgdGlja2V0BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhlZb3UgZG9uJ3Qgb3duIHRoaXMgdGlja2V0BApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQQHc2FsZUtleQkBCmdldFNhbGVLZXkFBQZjYWxsZXIFCHRpY2tldElkBQdldmVudElkBQ1vcmdhbml6ZXJBZGRyBQVuZnRJZAQIc2FsZUluZm8JALUJAgkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4CAV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzYWxlS2V5AgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUIc2FsZUluZm8AAAIBXwkApAMBBQVwcmljZQIBXwkA2AQBBQtzaWduQXNzZXRJZAIBXwkAkQMCBQhzYWxlSW5mbwADAgFfCQCRAwIFCHNhbGVJbmZvAAQCAV8JAJEDAgUIc2FsZUluZm8ABQIBXwkAkQMCBQhzYWxlSW5mbwAGAgFfCQCRAwIFCHNhbGVJbmZvAAcFA25pbAFpAQpjYW5jZWxTYWxlAQVuZnRJZAQLJHQwOTA0NTkyODgJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQskdDA5MDQ1OTI4OAJfMQQGY2FsbGVyCAULJHQwOTA0NTkyODgCXzIEBGRhdGUIBQskdDA5MDQ1OTI4OAJfMwQKaXNWYWxpZE5GVAgFCyR0MDkwNDU5Mjg4Al80BAdldmVudElkCAULJHQwOTA0NTkyODgCXzUEDW9yZ2FuaXplckFkZHIIBQskdDA5MDQ1OTI4OAJfNgQIdGlja2V0SWQIBQskdDA5MDQ1OTI4OAJfNwQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAMJAQIhPQIFCXNhbGVPd25lcgUGY2FsbGVyCQACAQIZWW91IGRvbid0IG93biB0aGlzIHRpY2tldAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAg9TYWxlIG5vdCBhY3RpdmUEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BQUGY2FsbGVyBQh0aWNrZXRJZAUHZXZlbnRJZAUNb3JnYW5pemVyQWRkcgUFbmZ0SWQECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgpfQ0FOQ0VMTEVECQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEJANkEAQUIdGlja2V0SWQFA25pbAFpAQZidXlORlQBBW5mdElkBA0kdDAxMDEzODEwMjYyCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTAxMzgxMDI2MgJfMQQGY2FsbGVyCAUNJHQwMTAxMzgxMDI2MgJfMgQEZGF0ZQgFDSR0MDEwMTM4MTAyNjICXzMECmlzVmFsaWRORlQIBQ0kdDAxMDEzODEwMjYyAl80BAdldmVudElkCAUNJHQwMTAxMzgxMDI2MgJfNQQNb3JnYW5pemVyQWRkcggFDSR0MDEwMTM4MTAyNjICXzYECHRpY2tldElkCAUNJHQwMTAxMzgxMDI2MgJfNwMJAQEhAQUKaXNWYWxpZE5GVAkAAgECEk5vdCBhIHZhbGlkIHRpY2tldAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BQUJc2FsZU93bmVyBQh0aWNrZXRJZAUHZXZlbnRJZAUNb3JnYW5pemVyQWRkcgUFbmZ0SWQECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgMJAAACCQCxAgEFCHNhbGVJbmZvAAAJAAIBAg9TYWxlIE5vdCBmb3VuZCEEDXNhbGVJbmZvQXJyYXkJALUJAgUIc2FsZUluZm8CAV8DCQAAAgkAtgkBCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQAACQACAQIKT2ZmZXIgb25seQQNJHQwMTA2NzcxMDcxMwkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxMDY3NzEwNzEzAl8xBAZhbW91bnQIBQ0kdDAxMDY3NzEwNzEzAl8yBA9wYXltZW50QXNzZXRTdHIJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAMDCQECIT0CCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQkApAMBBQZhbW91bnQGCQECIT0CCQCRAwIFDXNhbGVJbmZvQXJyYXkAAgUPcGF5bWVudEFzc2V0U3RyCQACAQIaUGF5bWVudCBpbmZvcyBkb24ndCBtYXRjaC4EDSR0MDEwOTE0MTEwNjcJAQxzZXRUcmFuc2ZlcnMIBQZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQFBW5mdElkBQ1vcmdhbml6ZXJBZGRyBQlzYWxlT3duZXIFBmNhbGxlcgUHZXZlbnRJZAUIdGlja2V0SWQEC2NvbW1pc3Npb25zCAUNJHQwMTA5MTQxMTA2NwJfMQQKY3JlYXRvckZlZQgFDSR0MDEwOTE0MTEwNjcCXzIECG93bmVyRmVlCAUNJHQwMTA5MTQxMTA2NwJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMTA5MTQxMTA2NwJfNAkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHc2FsZUtleQIBXwUCaWQCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAIBXwUGY2FsbGVyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUKY3JlYXRvckZlZQkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQFA25pbAULY29tbWlzc2lvbnMBaQEIc2V0T2ZmZXIBBW5mdElkBA0kdDAxMTQ3ODExNTc3CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTE0NzgxMTU3NwJfMQQKb2ZmZXJPd25lcggFDSR0MDExNDc4MTE1NzcCXzIEBGRhdGUIBQ0kdDAxMTQ3ODExNTc3Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTE0NzgxMTU3NwJfNAQHZXZlbnRJZAgFDSR0MDExNDc4MTE1NzcCXzUEDW9yZ2FuaXplckFkZHIIBQ0kdDAxMTQ3ODExNTc3Al82BAh0aWNrZXRJZAgFDSR0MDExNDc4MTE1NzcCXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAhJOb3QgYSB2YWxpZCB0aWNrZXQEDSR0MDExNjQxMTE2NzcJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTE2NDExMTY3NwJfMQQGYW1vdW50CAUNJHQwMTE2NDExMTY3NwJfMgQHYXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFB2Fzc2V0SWQJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQAAAgUGYW1vdW50AAAJAAIBAhZPZmZlciBvZiAwIG5vdCBhbGxvd2VkBAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQlnZXRCaWRLZXkFBQpvZmZlck93bmVyBQh0aWNrZXRJZAUJc2FsZU93bmVyBQJpZAUFbmZ0SWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQRkYXRlAgFfCQCkAwEFBmFtb3VudAIBXwUHYXNzZXRJZAIBXwUFbmZ0SWQCAV8FB2V2ZW50SWQCAV8FDW9yZ2FuaXplckFkZHICAV8FCm9mZmVyT3duZXICAV8FAmlkBQNuaWwBaQELYWNjZXB0T2ZmZXIDBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcgQNJHQwMTIzNTYxMjQ1MQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDEyMzU2MTI0NTECXzEEBmNhbGxlcggFDSR0MDEyMzU2MTI0NTECXzIEBGRhdGUIBQ0kdDAxMjM1NjEyNDUxAl8zBAppc1ZhbGlkTkZUCAUNJHQwMTIzNTYxMjQ1MQJfNAQHZXZlbnRJZAgFDSR0MDEyMzU2MTI0NTECXzUEDW9yZ2FuaXplckFkZHIIBQ0kdDAxMjM1NjEyNDUxAl82BAh0aWNrZXRJZAgFDSR0MDEyMzU2MTI0NTECXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAhJOb3QgYSB2YWxpZCB0aWNrZXQECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkAwkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIJAAIBAiBPbmx5IHNhbGUgb3duZXIgY2FuIGFjY2VwdCBvZmZlcgQGYmlkS2V5CQEJZ2V0QmlkS2V5BQUKb2ZmZXJPd25lcgUIdGlja2V0SWQFCXNhbGVPd25lcgUHb2ZmZXJJZAUFbmZ0SWQEDSR0MDEyNzE3MTI3NzIJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMTI3MTcxMjc3MgJfMQQHYXNzZXRJZAgFDSR0MDEyNzE3MTI3NzICXzIEB2JpZERhdGEIBQ0kdDAxMjcxNzEyNzcyAl8zBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQUFCXNhbGVPd25lcgUIdGlja2V0SWQFB2V2ZW50SWQFDW9yZ2FuaXplckFkZHIFBW5mdElkBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4DCQAAAgkAsQIBBQhzYWxlSW5mbwAACQACAQIPU2FsZSBOb3QgZm91bmQhBAZhbW91bnQJAQV2YWx1ZQEJALYJAQkAkQMCBQpiaWREYXRhQXJyAAEEDSR0MDEzMDIxMTMxNzMJAQxzZXRUcmFuc2ZlcnMIBQZhbW91bnQFB2Fzc2V0SWQFBW5mdElkBQ1vcmdhbml6ZXJBZGRyBQlzYWxlT3duZXIJAJEDAgUKYmlkRGF0YUFycgAGBQdldmVudElkBQh0aWNrZXRJZAQLY29tbWlzc2lvbnMIBQ0kdDAxMzAyMTEzMTczAl8xBApjcmVhdG9yRmVlCAUNJHQwMTMwMjExMzE3MwJfMgQIb3duZXJGZWUIBQ0kdDAxMzAyMTEzMTczAl8zBAxjb2xsZWN0b3JORlQIBQ0kdDAxMzAyMTEzMTczAl80BAphc3NldElkU3RyCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIOX0NMT1NFRC1PRkZFUl8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FCm9mZmVyT3duZXICAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkU3RyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUKY3JlYXRvckZlZQkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQFA25pbAULY29tbWlzc2lvbnMBaQELY2FuY2VsT2ZmZXIFBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcglzYWxlT3duZXIIdGlja2V0SWQEDSR0MDEzOTQ5MTQwMjEJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEzOTQ5MTQwMjECXzEEBmNhbGxlcggFDSR0MDEzOTQ5MTQwMjECXzIEBGRhdGUIBQ0kdDAxMzk0OTE0MDIxAl8zAwMJAQIhPQIFBmNhbGxlcgUKb2ZmZXJPd25lcgkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIHCQACAQIdWW91IGNhbm5vdCBjYW5jZWwgdGhpcyBvZmZlci4EBmJpZEtleQkBCWdldEJpZEtleQUFCm9mZmVyT3duZXIFCHRpY2tldElkBQlzYWxlT3duZXIFB29mZmVySWQFBW5mdElkBA0kdDAxNDIwMjE0MjU3CQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDE0MjAyMTQyNTcCXzEEB2Fzc2V0SWQIBQ0kdDAxNDIwMjE0MjU3Al8yBAdiaWREYXRhCAUNJHQwMTQyMDIxNDI1NwJfMwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBmJpZEtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZiaWRLZXkCCl9DQU5DRUxMRUQJAKwCAgkArAICCQCsAgIJAKwCAgUHYmlkRGF0YQILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQUHYXNzZXRJZAUDbmlsAD+wJEM=", "height": 2303169, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 5C5mUVEzribAiGDfrMADLN6wszVS2pmM4SS8ewhz2Tp1 Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 6 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let VERSION = "1.0.0"
5+
6+func getStrByK (key) = valueOrElse(getString(this, key), "")
7+
8+
9+func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
10+
11+
12+let feeReceiver = getStrByK("conf_fee_receiver")
13+
14+let eventsDapp = value(addressFromString(getStrByK("conf_events_dapp")))
15+
16+let userDapp = value(addressFromString(getStrByK("conf_users_dapp")))
17+
18+let signCut = getIntByK("conf_signcut")
19+
20+let signAssetId = fromBase58String(getStrByK("conf_accepted_asset_SIGN"))
21+
22+let chris = getStrByK("conf_admin_1")
23+
24+let userSuspended = "SUSPENDED"
25+
26+let eventIllegal = "ILLEGAL"
27+
28+let eventSuspended = "SUSPENDED"
29+
30+let dappRunningKey = "conf_dapp_is_running"
31+
32+let maintenanceMSGKey = "conf_maintenance_msg"
33+
34+let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
35+
36+let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
37+
38+let numSalesK = "num_sales"
39+
40+func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
41+
42+
43+func getEventStrByK (key) = valueOrElse(getString(eventsDapp, key), "")
44+
45+
46+func keyUserStatus (addr) = ("user_status_" + addr)
47+
48+
49+func keyFlag (organizerAddr,eventId) = ((("event_flag_" + eventId) + "_") + organizerAddr)
50+
51+
52+func keyNFTData (id) = ("nft_" + id)
53+
54+
55+func getSaleKey (caller,ticketId,eventId,organizerAddr,nftId) = ((((((((("sale2nd_info_" + caller) + "_") + ticketId) + "_") + eventId) + "_") + organizerAddr) + "_") + nftId)
56+
57+
58+func getBidKey (offerOwner,ticketId,saleOwner,offerId,nftId) = ((((((((("offer2nd_" + offerOwner) + "_") + ticketId) + "_") + saleOwner) + "_") + offerId) + "_") + nftId)
59+
60+
61+func idCallerDate (i) = if (!(dappRunning))
62+ then throw(maintenanceMSG)
63+ else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
64+
65+
66+func isPayment (i) = if ((size(i.payments) == 0))
67+ then throw("No payment attached")
68+ else {
69+ let payment = value(i.payments[0])
70+ let amount = value(payment.amount)
71+ $Tuple2(payment, amount)
72+ }
73+
74+
75+func assetIsValid (assetDetails) = if (if (if ((assetDetails.quantity == 1))
76+ then (assetDetails.decimals == 0)
77+ else false)
78+ then (assetDetails.reissuable == false)
79+ else false)
80+ then (assetDetails.issuer == eventsDapp)
81+ else false
82+
83+
84+func isSignEventNFT (id) = {
85+ let assetDetails = value(assetInfo(id))
86+ assetIsValid(assetDetails)
87+ }
88+
89+
90+func acceptedAssetIds (assetId) = if ((assetId != toBase58String(signAssetId)))
91+ then false
92+ else true
93+
94+
95+func getBidAssetId (assetId) = fromBase58String(assetId)
96+
97+
98+func getSaleOwnerAndStatus (ticketId) = {
99+ let saleOwner = getStrByK(("current_owner_on_dapp_" + ticketId))
100+ if ((size(saleOwner) == 0))
101+ then throw("Ticket not found")
102+ else {
103+ let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + ticketId))
104+ if ((saleStatus != "OPEN"))
105+ then throw("Ticket not for sale")
106+ else saleOwner
107+ }
108+ }
109+
110+
111+func getBidData (key) = {
112+ let bidData = getStrByK((key + "_OPEN"))
113+ if ((bidData == ""))
114+ then throw("Offer not found")
115+ else {
116+ let bidDataArr = split(bidData, "_")
117+ let assetId = getBidAssetId(bidDataArr[2])
118+ $Tuple3(bidDataArr, assetId, bidData)
119+ }
120+ }
121+
122+
123+func eventIsValid (eventStatus) = if ((eventStatus != eventIllegal))
124+ then (eventStatus != eventSuspended)
125+ else false
126+
127+
128+func checkEventStatus (addr,id) = {
129+ let eventStatus = getEventStrByK(keyFlag(addr, id))
130+ if (eventIsValid(eventStatus))
131+ then true
132+ else throw(("Original event flagged as " + eventStatus))
133+ }
134+
135+
136+func checkOrganizerStatus (addr) = {
137+ let organizerStatus = getUserStrByK(keyUserStatus(addr))
138+ if (containsElement([userSuspended], organizerStatus))
139+ then throw(("Original organizer " + organizerStatus))
140+ else true
141+ }
142+
143+
144+func checkNFTInfo (assetId) = {
145+ let nftData = split(getEventStrByK(keyNFTData(assetId)), "_")
146+ if (if (!(checkEventStatus(nftData[6], nftData[5])))
147+ then !(checkOrganizerStatus(nftData[6]))
148+ else false)
149+ then $Tuple4(false, nftData[6], nftData[7], nftData[5])
150+ else $Tuple4(true, nftData[6], nftData[7], nftData[5])
151+ }
152+
153+
154+func checkEVENTExist (eventId,organizerAddr) = if (if (!(checkEventStatus(organizerAddr, eventId)))
155+ then !(checkOrganizerStatus(organizerAddr))
156+ else false)
157+ then false
158+ else true
159+
160+
161+func setTransfers (amount,assetId,nftId,organizerAddr,saleOwner,caller,eventId,ticketId) = {
162+ let organizerCut = getIntByK(((((("ticket_royalties_" + eventId) + "_") + organizerAddr) + "_") + ticketId))
163+ let amountForSign = fraction(amount, signCut, 100)
164+ let amountForOrganizer = fraction(amount, organizerCut, 100)
165+ let amountForOwner = (amount - (amountForSign + amountForOrganizer))
166+ let commissions = [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
167+ let organizerFee = ScriptTransfer(Address(fromBase58String(organizerAddr)), amountForOrganizer, assetId)
168+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
169+ let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftId))
170+ $Tuple4(commissions, organizerFee, ownerFee, collectorNFT)
171+ }
172+
173+
174+func provideBaseData (i,nftId) = {
175+ let $t059405979 = idCallerDate(i)
176+ let id = $t059405979._1
177+ let caller = $t059405979._2
178+ let date = $t059405979._3
179+ let $t059826054 = checkNFTInfo(nftId)
180+ let isValidNFT = $t059826054._1
181+ let eventId = $t059826054._2
182+ let organizerAddr = $t059826054._3
183+ let ticketId = $t059826054._4
184+ $Tuple7(id, caller, date, isValidNFT, eventId, organizerAddr, ticketId)
185+ }
186+
187+
188+func updateNumSales () = {
189+ let numSales = getIntByK(numSalesK)
190+ IntegerEntry(numSalesK, (numSales + 1))
191+ }
192+
193+
194+@Callable(invoke)
195+func setConf (key,val) = {
196+ let caller = toString(invoke.caller)
197+ if (containsElement([chris, toString(this)], caller))
198+ then if (contains(key, "conf_"))
199+ then [StringEntry(key, val)]
200+ else throw("Entries starting with conf_ only")
201+ else throw("You are not allowed to change this")
202+ }
203+
204+
205+
206+@Callable(invoke)
207+func appRunning (isLive,message) = {
208+ let caller = toString(invoke.caller)
209+ let id = toBase58String(invoke.transactionId)
210+ if (containsElement([chris, toString(this)], caller))
211+ then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
212+ else throw("You are not allowed to change this")
213+ }
214+
215+
216+
217+@Callable(i)
218+func sellNFT (price) = {
219+ let $t071077143 = isPayment(i)
220+ let payment = $t071077143._1
221+ let amount = $t071077143._2
222+ if ((amount != 1))
223+ then throw("No Ticket attached")
224+ else {
225+ let nftId = if (if (isDefined(payment.assetId))
226+ then isSignEventNFT(value(payment.assetId))
227+ else false)
228+ then toBase58String(value(payment.assetId))
229+ else throw("Only SIGN Event NFT accepted.")
230+ let $t073847479 = provideBaseData(i, nftId)
231+ let id = $t073847479._1
232+ let caller = $t073847479._2
233+ let date = $t073847479._3
234+ let isValidNFT = $t073847479._4
235+ let eventId = $t073847479._5
236+ let organizerAddr = $t073847479._6
237+ let ticketId = $t073847479._7
238+ if (!(isValidNFT))
239+ then throw("Not a valid ticket")
240+ else [StringEntry((getSaleKey(caller, ticketId, eventId, organizerAddr, nftId) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(price)) + "_") + toBase58String(signAssetId)) + "_") + nftId) + "_") + ticketId) + "_") + eventId) + "_") + organizerAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
241+ }
242+ }
243+
244+
245+
246+@Callable(i)
247+func updateSalePrice (nftId,price) = {
248+ let $t080178112 = provideBaseData(i, nftId)
249+ let id = $t080178112._1
250+ let caller = $t080178112._2
251+ let date = $t080178112._3
252+ let isValidNFT = $t080178112._4
253+ let eventId = $t080178112._5
254+ let organizerAddr = $t080178112._6
255+ let ticketId = $t080178112._7
256+ if (!(isValidNFT))
257+ then throw("Not a valid ticket")
258+ else {
259+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
260+ if ((saleOwner != caller))
261+ then throw("You don't own this ticket")
262+ else {
263+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
264+ if ((saleStatus != "OPEN"))
265+ then throw("Sale not active")
266+ else {
267+ let saleKey = getSaleKey(caller, ticketId, eventId, organizerAddr, nftId)
268+ let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
269+[StringEntry((saleKey + "_OPEN"), ((((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + toBase58String(signAssetId)) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]) + "_") + saleInfo[7]))]
270+ }
271+ }
272+ }
273+ }
274+
275+
276+
277+@Callable(i)
278+func cancelSale (nftId) = {
279+ let $t090459288 = provideBaseData(i, nftId)
280+ let id = $t090459288._1
281+ let caller = $t090459288._2
282+ let date = $t090459288._3
283+ let isValidNFT = $t090459288._4
284+ let eventId = $t090459288._5
285+ let organizerAddr = $t090459288._6
286+ let ticketId = $t090459288._7
287+ let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
288+ if ((saleOwner != caller))
289+ then throw("You don't own this ticket")
290+ else {
291+ let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
292+ if ((saleStatus != "OPEN"))
293+ then throw("Sale not active")
294+ else {
295+ let saleKey = getSaleKey(caller, ticketId, eventId, organizerAddr, nftId)
296+ let saleInfo = getStrByK((saleKey + "_OPEN"))
297+[DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CANCELLED"), ((((saleInfo + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(ticketId))]
298+ }
299+ }
300+ }
301+
302+
303+
304+@Callable(i)
305+func buyNFT (nftId) = {
306+ let $t01013810262 = provideBaseData(i, nftId)
307+ let id = $t01013810262._1
308+ let caller = $t01013810262._2
309+ let date = $t01013810262._3
310+ let isValidNFT = $t01013810262._4
311+ let eventId = $t01013810262._5
312+ let organizerAddr = $t01013810262._6
313+ let ticketId = $t01013810262._7
314+ if (!(isValidNFT))
315+ then throw("Not a valid ticket")
316+ else {
317+ let saleOwner = getSaleOwnerAndStatus(nftId)
318+ let saleKey = getSaleKey(saleOwner, ticketId, eventId, organizerAddr, nftId)
319+ let saleInfo = getStrByK((saleKey + "_OPEN"))
320+ if ((size(saleInfo) == 0))
321+ then throw("Sale Not found!")
322+ else {
323+ let saleInfoArray = split(saleInfo, "_")
324+ if ((parseInt(saleInfoArray[1]) == 0))
325+ then throw("Offer only")
326+ else {
327+ let $t01067710713 = isPayment(i)
328+ let payment = $t01067710713._1
329+ let amount = $t01067710713._2
330+ let paymentAssetStr = toBase58String(value(payment.assetId))
331+ if (if ((saleInfoArray[1] != toString(amount)))
332+ then true
333+ else (saleInfoArray[2] != paymentAssetStr))
334+ then throw("Payment infos don't match.")
335+ else {
336+ let $t01091411067 = setTransfers(amount, payment.assetId, nftId, organizerAddr, saleOwner, caller, eventId, ticketId)
337+ let commissions = $t01091411067._1
338+ let creatorFee = $t01091411067._2
339+ let ownerFee = $t01091411067._3
340+ let collectorNFT = $t01091411067._4
341+ ([DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((saleInfo + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), updateNumSales(), creatorFee, ownerFee, collectorNFT] ++ commissions)
342+ }
343+ }
344+ }
345+ }
346+ }
347+
348+
349+
350+@Callable(i)
351+func setOffer (nftId) = {
352+ let $t01147811577 = provideBaseData(i, nftId)
353+ let id = $t01147811577._1
354+ let offerOwner = $t01147811577._2
355+ let date = $t01147811577._3
356+ let isValidNFT = $t01147811577._4
357+ let eventId = $t01147811577._5
358+ let organizerAddr = $t01147811577._6
359+ let ticketId = $t01147811577._7
360+ if (!(isValidNFT))
361+ then throw("Not a valid ticket")
362+ else {
363+ let $t01164111677 = isPayment(i)
364+ let payment = $t01164111677._1
365+ let amount = $t01164111677._2
366+ let assetId = toBase58String(value(payment.assetId))
367+ if (!(acceptedAssetIds(assetId)))
368+ then throw("asset not accepted")
369+ else if ((amount == 0))
370+ then throw("Offer of 0 not allowed")
371+ else {
372+ let saleOwner = getSaleOwnerAndStatus(nftId)
373+[StringEntry((getBidKey(offerOwner, ticketId, saleOwner, id, nftId) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + eventId) + "_") + organizerAddr) + "_") + offerOwner) + "_") + id))]
374+ }
375+ }
376+ }
377+
378+
379+
380+@Callable(i)
381+func acceptOffer (nftId,offerId,offerOwner) = {
382+ let $t01235612451 = provideBaseData(i, nftId)
383+ let id = $t01235612451._1
384+ let caller = $t01235612451._2
385+ let date = $t01235612451._3
386+ let isValidNFT = $t01235612451._4
387+ let eventId = $t01235612451._5
388+ let organizerAddr = $t01235612451._6
389+ let ticketId = $t01235612451._7
390+ if (!(isValidNFT))
391+ then throw("Not a valid ticket")
392+ else {
393+ let saleOwner = getSaleOwnerAndStatus(nftId)
394+ if ((caller != saleOwner))
395+ then throw("Only sale owner can accept offer")
396+ else {
397+ let bidKey = getBidKey(offerOwner, ticketId, saleOwner, offerId, nftId)
398+ let $t01271712772 = getBidData(bidKey)
399+ let bidDataArr = $t01271712772._1
400+ let assetId = $t01271712772._2
401+ let bidData = $t01271712772._3
402+ let saleKey = getSaleKey(saleOwner, ticketId, eventId, organizerAddr, nftId)
403+ let saleInfo = getStrByK((saleKey + "_OPEN"))
404+ if ((size(saleInfo) == 0))
405+ then throw("Sale Not found!")
406+ else {
407+ let amount = value(parseInt(bidDataArr[1]))
408+ let $t01302113173 = setTransfers(amount, assetId, nftId, organizerAddr, saleOwner, bidDataArr[6], eventId, ticketId)
409+ let commissions = $t01302113173._1
410+ let creatorFee = $t01302113173._2
411+ let ownerFee = $t01302113173._3
412+ let collectorNFT = $t01302113173._4
413+ let assetIdStr = toBase58String(value(assetId))
414+ ([DeleteEntry((saleKey + "_OPEN")), DeleteEntry((bidKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((bidKey + "_CLOSED"), ((((bidData + "_CLOSED_") + toString(date)) + "_") + id)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((((((saleInfo + "_CLOSED-OFFER_") + toString(date)) + "_") + id) + "_") + offerOwner) + "_") + toString(amount)) + "_") + assetIdStr)), updateNumSales(), creatorFee, ownerFee, collectorNFT] ++ commissions)
415+ }
416+ }
417+ }
418+ }
419+
420+
421+
422+@Callable(i)
423+func cancelOffer (nftId,offerId,offerOwner,saleOwner,ticketId) = {
424+ let $t01394914021 = idCallerDate(i)
425+ let id = $t01394914021._1
426+ let caller = $t01394914021._2
427+ let date = $t01394914021._3
428+ if (if ((caller != offerOwner))
429+ then (caller != saleOwner)
430+ else false)
431+ then throw("You cannot cancel this offer.")
432+ else {
433+ let bidKey = getBidKey(offerOwner, ticketId, saleOwner, offerId, nftId)
434+ let $t01420214257 = getBidData(bidKey)
435+ let bidDataArr = $t01420214257._1
436+ let assetId = $t01420214257._2
437+ let bidData = $t01420214257._3
438+[DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
439+ }
440+ }
441+
442+

github/deemru/w8io/873ac7e 
60.45 ms