tx · 5p8LUKmcLET4n6q1Ck9r3YqQDJGHqL6dv4qdkPFWDpqp

3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz:  -0.01700000 Waves

2023.12.02 08:57 [2868628] smart account 3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz > SELF 0.00000000 Waves

{ "type": 13, "id": "5p8LUKmcLET4n6q1Ck9r3YqQDJGHqL6dv4qdkPFWDpqp", "fee": 1700000, "feeAssetId": null, "timestamp": 1701496669608, "version": 2, "chainId": 84, "sender": "3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz", "senderPublicKey": "9p5EiEVtTgiMBxj67TfVfstKuQs1LHPxoZRiRhyS5oiN", "proofs": [ "5vP42UTsFAPmZwtCfdLj2CDtDKpXNr187PzD5WGc9oDLs1GGKoFkvzDUD8BrZE1PcUeda8mt6H3TUiBS757zDw8n" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgILQAHVkVSU0lPTgIFMS4wLjABCWdldFN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAlvcmFjbGVGZWUJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECD2NvbmZfb3JhY2xlX2ZlZQALZmVlUmVjZWl2ZXIJAQlnZXRTdHJCeUsBAhFjb25mX2ZlZV9yZWNlaXZlcgAPcHV6emxlX2FydF9wb29sCQEJZ2V0U3RyQnlLAQIUY29uZl9wdXp6bGVfYXJ0X3Bvb2wAE3NpZ25BcnRBcnR3b3Jrc0RhcHAJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECEmNvbmZfYXJ0d29ya3NfZGFwcAARdXNkdFBQQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhtjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFRfUFAADmFydEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIXY29uZl9hY2NlcHRlZF9hc3NldF9BUlQAEXVzZGNQUEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIbY29uZl9hY2NlcHRlZF9hc3NldF9VU0RDX1BQAA9lYXN0QXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X0VBU1QAEXB1enpsZUFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIaY29uZl9hY2NlcHRlZF9hc3NldF9QVVpaTEUAEGV0aFBQQXNzZXRJZF9zdHIJAQlnZXRTdHJCeUsBAhpjb25mX2FjY2VwdGVkX2Fzc2V0X0VUSF9QUAAQd2F2ZXNBc3NldElkX3N0cgIFV0FWRVMADXVzZHRQUEFzc2V0SWQJANkEAQURdXNkdFBQQXNzZXRJZF9zdHIACmFydEFzc2V0SWQJANkEAQUOYXJ0QXNzZXRJZF9zdHIADXVzZGNQUEFzc2V0SWQJANkEAQURdXNkY1BQQXNzZXRJZF9zdHIAC2Vhc3RBc3NldElkCQDZBAEFD2Vhc3RBc3NldElkX3N0cgANcHV6emxlQXNzZXRJZAkA2QQBBRFwdXp6bGVBc3NldElkX3N0cgAMZXRoUFBBc3NldElkCQDZBAEFEGV0aFBQQXNzZXRJZF9zdHIADHdhdmVzQXNzZXRJZAEAABNhbGxfYWNjZXB0ZWRfYXNzZXRzCQDMCAIFEXVzZHRQUEFzc2V0SWRfc3RyCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIFEXVzZGNQUEFzc2V0SWRfc3RyCQDMCAIFD2Vhc3RBc3NldElkX3N0cgkAzAgCBRFwdXp6bGVBc3NldElkX3N0cgkAzAgCBRB3YXZlc0Fzc2V0SWRfc3RyCQDMCAIFEGV0aFBQQXNzZXRJZF9zdHIFA25pbAAFY2hyaXMJAQlnZXRTdHJCeUsBAgxjb25mX2FkbWluXzEADmNvbW1pc3Npb25fZmVlAAMADmRhcHBSdW5uaW5nS2V5AhRjb25mX2RhcHBfaXNfcnVubmluZwARbWFpbnRlbmFuY2VNU0dLZXkCFGNvbmZfbWFpbnRlbmFuY2VfbXNnAAtkYXBwUnVubmluZwkBC3ZhbHVlT3JFbHNlAgkAmwgCBQR0aGlzBQ5kYXBwUnVubmluZ0tleQYADm1haW50ZW5hbmNlTVNHCQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFEW1haW50ZW5hbmNlTVNHS2V5AgAACW51bVNhbGVzSwIJbnVtX3NhbGVzAQlnZXRJbnRCeUsBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAEKZ2V0U2FsZUtleQMGY2FsbGVyBW5mdElkBmlzc3VlcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDXNhbGUybmRfaW5mb18FBmNhbGxlcgIBXwUFbmZ0SWQCAV8FBmlzc3VlcgEJZ2V0QmlkS2V5BApvZmZlck93bmVyBW5mdElkCXNhbGVPd25lcgdvZmZlcklkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCW9mZmVyMm5kXwUKb2ZmZXJPd25lcgIBXwUFbmZ0SWQCAV8FCXNhbGVPd25lcgIBXwUHb2ZmZXJJZAETZ2V0SW50QnlLRnJvbU9yYWNsZQEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUJb3JhY2xlRmVlBQNrZXkCH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUBDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEKTkZUSXNWYWxpZAEMYXNzZXREZXRhaWxzAwMJAAACCAUMYXNzZXREZXRhaWxzCHF1YW50aXR5AAEJAAACCAUMYXNzZXREZXRhaWxzCGRlY2ltYWxzAAAHCQAAAggFDGFzc2V0RGV0YWlscwpyZWlzc3VhYmxlBwcBEGFjY2VwdGVkQXNzZXRJZHMBB2Fzc2V0SWQDCQEBIQEJAQ9jb250YWluc0VsZW1lbnQCBRNhbGxfYWNjZXB0ZWRfYXNzZXRzBQdhc3NldElkCQACAQJAT25seSAkQVJULCBVU0RULVBQLCBVU0RDLVBQLCBFQVNULCBQVVpaTEUsIEVUSCBvciBXQVZFUyBhY2NlcHRlZAYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQVuZnRpZAQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRpZAMJAAACCQCxAgEFCXNhbGVPd25lcgAACQACAQINTkZUIG5vdCBmb3VuZAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRpZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAhBORlQgbm90IGZvciBzYWxlBQlzYWxlT3duZXIBCmdldEJpZERhdGEBA2tleQQHYmlkRGF0YQkBCWdldFN0ckJ5SwEJAKwCAgUDa2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg9PZmZlciBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAgkAlQoDBQpiaWREYXRhQXJyBQdhc3NldElkBQdiaWREYXRhAQpnZXRCYWxhbmNlAQdhc3NldElkBAckbWF0Y2gwBQdhc3NldElkAwkAAQIFByRtYXRjaDACCkJ5dGVWZWN0b3IEAWIFByRtYXRjaDAJAPAHAgUEdGhpcwUBYggJAO8HAQUEdGhpcwlhdmFpbGFibGUBDHNldFRyYW5zZmVycwUGYW1vdW50B2Fzc2V0SWQFbmZ0aWQJc2FsZU93bmVyBmNhbGxlcgQNYW1vdW50Rm9yU2lnbgkAawMFBmFtb3VudAUOY29tbWlzc2lvbl9mZWUAZAQOYW1vdW50Rm9yT3duZXIJAGUCBQZhbW91bnQFDWFtb3VudEZvclNpZ24EImFtb3VudF9jb21taXNzaW9uX2Zvcl9zaWduX3RvX3N3YXAFDWFtb3VudEZvclNpZ24EEWFtb3VudF9hcnRfYmVmb3JlCQEKZ2V0QmFsYW5jZQEFCmFydEFzc2V0SWQDCQAAAgURYW1vdW50X2FydF9iZWZvcmUFEWFtb3VudF9hcnRfYmVmb3JlBA9zd2FwX2ZlZV90b19hcnQDCQECIT0CBQdhc3NldElkBQphcnRBc3NldElkCQD8BwQJAQdBZGRyZXNzAQkA2QQBBQ9wdXp6bGVfYXJ0X3Bvb2wCBHN3YXAJAMwIAgUOYXJ0QXNzZXRJZF9zdHIJAMwIAgABBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIFB2Fzc2V0SWQFImFtb3VudF9jb21taXNzaW9uX2Zvcl9zaWduX3RvX3N3YXAFA25pbAUEdW5pdAMJAAACBQ9zd2FwX2ZlZV90b19hcnQFD3N3YXBfZmVlX3RvX2FydAQQYW1vdW50X2FydF9hZnRlcgkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEGFtb3VudF9hcnRfYWZ0ZXIFEGFtb3VudF9hcnRfYWZ0ZXIEC2NvbW1pc3Npb25zCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIDCQAAAgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAUNYW1vdW50Rm9yU2lnbgkAZQIFEGFtb3VudF9hcnRfYWZ0ZXIFEWFtb3VudF9hcnRfYmVmb3JlBQphcnRBc3NldElkBAhvd25lckZlZQkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFCXNhbGVPd25lcgUOYW1vdW50Rm9yT3duZXIFB2Fzc2V0SWQEDGNvbGxlY3Rvck5GVAkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgABCQDZBAEFBW5mdGlkCQCVCgMFC2NvbW1pc3Npb25zBQhvd25lckZlZQUMY29sbGVjdG9yTkZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQ92YWxpZGF0ZU1pblNlbGwBBXByaWNlAwkAZgIAAAUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UGAQ9wcm92aWRlQmFzZURhdGECAWkFbmZ0SWQECyR0MDUxOTU1MjM1CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQskdDA1MTk1NTIzNQJfMQQGY2FsbGVyCAULJHQwNTE5NTUyMzUCXzIEBGRhdGUIBQskdDA1MTk1NTIzNQJfMwQMYXNzZXREZXRhaWxzCQEFdmFsdWUBCQDsBwEJANkEAQUFbmZ0SWQECmlzVmFsaWRORlQJAQpORlRJc1ZhbGlkAQUMYXNzZXREZXRhaWxzCQCXCgUFAmlkBQZjYWxsZXIFBGRhdGUFCmlzVmFsaWRORlQIBQxhc3NldERldGFpbHMGaXNzdWVyAQ51cGRhdGVOdW1TYWxlcwAECG51bVNhbGVzCQEJZ2V0SW50QnlLAQUJbnVtU2FsZXNLCQEMSW50ZWdlckVudHJ5AgUJbnVtU2FsZXNLCQBkAgUIbnVtU2FsZXMAAQEHaGF2ZVNURAIGaXNzdWVyBm5kZnRJZAQEZGF0YQkBC3ZhbHVlT3JFbHNlAgkAnQgCCQEHQWRkcmVzcwEJANkEAQUGaXNzdWVyCQCsAgIJAKwCAgIIc3RkX25mdF8FBm5kZnRJZAIJX21ldGFkYXRhAgAJAQIhPQIFBGRhdGECAAkGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzBmludm9rZQEKYXBwUnVubmluZwIGaXNMaXZlB21lc3NhZ2UEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgQCaWQJANgEAQgFBmludm9rZQ10cmFuc2FjdGlvbklkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOZGFwcFJ1bm5pbmdLZXkFBmlzTGl2ZQkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWludGVuYW5jZU1TR0tleQUHbWVzc2FnZQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwFpAQdzZWxsTkZUAgVwcmljZQVhc3NldAQLJHQwNjU3MDY2MDYJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAULJHQwNjU3MDY2MDYCXzEEBmFtb3VudAgFCyR0MDY1NzA2NjA2Al8yAwkBAiE9AgUGYW1vdW50AAEJAAIBAg9ObyBORlQgYXR0YWNoZWQEBW5mdElkAwkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAkAAgECE1dhdmVzIGlzIG5vdCBhIE5GVC4ECyR0MDY3OTI2ODYyCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAULJHQwNjc5MjY4NjICXzEEBmNhbGxlcggFCyR0MDY3OTI2ODYyAl8yBARkYXRlCAULJHQwNjc5MjY4NjICXzMECmlzVmFsaWRORlQIBQskdDA2NzkyNjg2MgJfNAQGaXNzdWVyCAULJHQwNjc5MjY4NjICXzUDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQDCQAAAgUGaXNzdWVyBRNzaWduQXJ0QXJ0d29ya3NEYXBwCQACAQI3VGhpcyBkQXBwIGlzIG9ubHkgZm9yIE5GVCBpc3N1ZWQgb3V0c2lkZSBTSUdOIEFydCBkQXBwLgMJAQEhAQkBB2hhdmVTVEQCCQClCAEFBmlzc3VlcgUFbmZ0SWQJAAIBAidObyBuZnQgc3RhbmRhcmQgZm91bmQgb24gaXNzdWVyIGFjY291bnQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUFYXNzZXQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEKZ2V0U2FsZUtleQMFBmNhbGxlcgUFbmZ0SWQJAKUIAQUGaXNzdWVyAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUFcHJpY2UCAV8FBWFzc2V0AgFfBQVuZnRJZAIBXwkApQgBBQZpc3N1ZXICAV8FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAIET1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkBQZjYWxsZXIFA25pbAFpAQ91cGRhdGVTYWxlUHJpY2UDBW5mdElkBXByaWNlBWFzc2V0BAskdDA3NzcxNzg0MQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFCyR0MDc3NzE3ODQxAl8xBAZjYWxsZXIIBQskdDA3NzcxNzg0MQJfMgQEZGF0ZQgFCyR0MDc3NzE3ODQxAl8zBAppc1ZhbGlkTkZUCAULJHQwNzc3MTc4NDECXzQEBmlzc3VlcggFCyR0MDc3NzE3ODQxAl81AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECQE9ubHkgJEFSVCwgVVNEVC1QUCwgVVNEQy1QUCwgRUFTVCwgUFVaWkxFLCBFVEggb3IgV0FWRVMgYWNjZXB0ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQHc2FsZUtleQkBCmdldFNhbGVLZXkDBQZjYWxsZXIFBW5mdElkCQClCAEFBmlzc3VlcgQIc2FsZUluZm8JALUJAgkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4CAV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzYWxlS2V5AgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFCHNhbGVJbmZvAAACAV8JAKQDAQUFcHJpY2UCAV8FBWFzc2V0AgFfCQCRAwIFCHNhbGVJbmZvAAMCAV8JAJEDAgUIc2FsZUluZm8ABAIBXwkAkQMCBQhzYWxlSW5mbwAFBQNuaWwBaQEKY2FuY2VsU2FsZQEFbmZ0SWQECyR0MDg4OTM5MTExCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAULJHQwODg5MzkxMTECXzEEBmNhbGxlcggFCyR0MDg4OTM5MTExAl8yBARkYXRlCAULJHQwODg5MzkxMTECXzMECmlzVmFsaWRORlQIBQskdDA4ODkzOTExMQJfNAQGaXNzdWVyCAULJHQwODg5MzkxMTECXzUECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQDCQECIT0CBQlzYWxlT3duZXIFBmNhbGxlcgkAAgECFllvdSBkb24ndCBvd24gdGhpcyBORlQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIPU2FsZSBub3QgYWN0aXZlBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQMFBmNhbGxlcgUFbmZ0SWQJAKUIAQUGaXNzdWVyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgABCQDZBAEFBW5mdElkBQNuaWwBaQEGYnV5TkZUAQVuZnRJZAQMJHQwOTk0MjEwMDEyCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUMJHQwOTk0MjEwMDEyAl8xBAZjYWxsZXIIBQwkdDA5OTQyMTAwMTICXzIEBGRhdGUIBQwkdDA5OTQyMTAwMTICXzMECmlzVmFsaWRORlQIBQwkdDA5OTQyMTAwMTICXzQEBmlzc3VlcggFDCR0MDk5NDIxMDAxMgJfNQMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQEB3NhbGVLZXkJAQpnZXRTYWxlS2V5AwUJc2FsZU93bmVyBQVuZnRJZAkApQgBBQZpc3N1ZXIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgMJAAACCQCxAgEFCHNhbGVJbmZvAAAJAAIBAg9TYWxlIE5vdCBmb3VuZCEEDXNhbGVJbmZvQXJyYXkJALUJAgUIc2FsZUluZm8CAV8DCQAAAgkAtgkBCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQAACQACAQIKT2ZmZXIgb25seQQNJHQwMTA0MTExMDQ0NwkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxMDQxMTEwNDQ3Al8xBAZhbW91bnQIBQ0kdDAxMDQxMTEwNDQ3Al8yBA9wYXltZW50QXNzZXRTdHIDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAgADAwkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAEJAKQDAQUGYW1vdW50BgkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAIFD3BheW1lbnRBc3NldFN0cgkAAgECGlBheW1lbnQgaW5mb3MgZG9uJ3QgbWF0Y2guBA0kdDAxMDk2MTExMDY4CQEMc2V0VHJhbnNmZXJzBQUGYW1vdW50CAUHcGF5bWVudAdhc3NldElkBQVuZnRJZAUJc2FsZU93bmVyBQZjYWxsZXIEC2NvbW1pc3Npb25zCAUNJHQwMTA5NjExMTA2OAJfMQQIb3duZXJGZWUIBQ0kdDAxMDk2MTExMDY4Al8yBAxjb2xsZWN0b3JORlQIBQ0kdDAxMDk2MTExMDY4Al8zCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHc2FsZUtleQIBXwUCaWQCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAIBXwUGY2FsbGVyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUCQDMCAIFC2NvbW1pc3Npb25zBQNuaWwBaQEIc2V0T2ZmZXIBBW5mdElkBA0kdDAxMTQ2NzExNTQxCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTE0NjcxMTU0MQJfMQQKb2ZmZXJPd25lcggFDSR0MDExNDY3MTE1NDECXzIEBGRhdGUIBQ0kdDAxMTQ2NzExNTQxAl8zBAppc1ZhbGlkTkZUCAUNJHQwMTE0NjcxMTU0MQJfNAQGaXNzdWVyCAUNJHQwMTE0NjcxMTU0MQJfNQMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQNJHQwMTE2MDIxMTYzOAkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxMTYwMjExNjM4Al8xBAZhbW91bnQIBQ0kdDAxMTYwMjExNjM4Al8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkAAAIFBmFtb3VudAAACQACAQIWT2ZmZXIgb2YgMCBub3QgYWxsb3dlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBmFtb3VudAkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEJZ2V0QmlkS2V5BAUKb2ZmZXJPd25lcgUFbmZ0SWQFCXNhbGVPd25lcgUCaWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUGYW1vdW50AgFfBQdhc3NldElkAgFfBQVuZnRJZAIBXwkApQgBBQZpc3N1ZXICAV8FCm9mZmVyT3duZXICAV8FAmlkBQNuaWwBaQELYWNjZXB0T2ZmZXIDBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcgQNJHQwMTI0MjcxMjQ5NwkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDEyNDI3MTI0OTcCXzEEBmNhbGxlcggFDSR0MDEyNDI3MTI0OTcCXzIEBGRhdGUIBQ0kdDAxMjQyNzEyNDk3Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTI0MjcxMjQ5NwJfNAQGaXNzdWVyCAUNJHQwMTI0MjcxMjQ5NwJfNQMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQDCQECIT0CBQZjYWxsZXIFCXNhbGVPd25lcgkAAgECIE9ubHkgc2FsZSBvd25lciBjYW4gYWNjZXB0IG9mZmVyBAZiaWRLZXkJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQdvZmZlcklkBA0kdDAxMjc1MTEyODA2CQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDEyNzUxMTI4MDYCXzEEB2Fzc2V0SWQIBQ0kdDAxMjc1MTEyODA2Al8yBAdiaWREYXRhCAUNJHQwMTI3NTExMjgwNgJfMwQHc2FsZUtleQkBCmdldFNhbGVLZXkDBQlzYWxlT3duZXIFBW5mdElkCQClCAEFBmlzc3VlcgQIc2FsZUluZm8JAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAwkAAAIJALECAQUIc2FsZUluZm8AAAkAAgECD1NhbGUgTm90IGZvdW5kIQQGYW1vdW50CQEFdmFsdWUBCQC2CQEJAJEDAgUKYmlkRGF0YUFycgABBA0kdDAxMzA0MjEzMTQ4CQEMc2V0VHJhbnNmZXJzBQUGYW1vdW50BQdhc3NldElkBQVuZnRJZAUJc2FsZU93bmVyCQCRAwIFCmJpZERhdGFBcnIABgQLY29tbWlzc2lvbnMIBQ0kdDAxMzA0MjEzMTQ4Al8xBAhvd25lckZlZQgFDSR0MDEzMDQyMTMxNDgCXzIEDGNvbGxlY3Rvck5GVAgFDSR0MDEzMDQyMTMxNDgCXzMECmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAkA2AQBCQEFdmFsdWUBBQdhc3NldElkAgVXQVZFUwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIOX0NMT1NFRC1PRkZFUl8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FCm9mZmVyT3duZXICAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkU3RyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUCQDMCAIFC2NvbW1pc3Npb25zBQNuaWwBaQELY2FuY2VsT2ZmZXIEBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcglzYWxlT3duZXIEDSR0MDEzOTM2MTQwMTAJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEzOTM2MTQwMTACXzEEBmNhbGxlcggFDSR0MDEzOTM2MTQwMTACXzIEBGRhdGUIBQ0kdDAxMzkzNjE0MDEwAl8zAwMJAQIhPQIFBmNhbGxlcgUKb2ZmZXJPd25lcgkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIHCQACAQIdWW91IGNhbm5vdCBjYW5jZWwgdGhpcyBvZmZlci4EBmJpZEtleQkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFB29mZmVySWQEDSR0MDE0MTgyMTQyMzcJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMTQxODIxNDIzNwJfMQQHYXNzZXRJZAgFDSR0MDE0MTgyMTQyMzcCXzIEB2JpZERhdGEIBQ0kdDAxNDE4MjE0MjM3Al8zCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwAb5/Raw==", "height": 2868628, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6x6BFzVViP7SrVmLsgNstymLW2yUySjaygCz1366RHTc Next: H3DWjkznvZfxRAjQXMqJqiDDyUP2CdTAgARUBUnj2iXg Diff:
OldNewDifferences
164164 }
165165
166166
167-func validateMinSell (price) = if ((0 >= price))
167+func validateMinSell (price) = if ((0 > price))
168168 then throw("Wrong minimum sell price")
169169 else true
170170
171171
172172 func provideBaseData (i,nftId) = {
173- let $t051965236 = idCallerDate(i)
174- let id = $t051965236._1
175- let caller = $t051965236._2
176- let date = $t051965236._3
173+ let $t051955235 = idCallerDate(i)
174+ let id = $t051955235._1
175+ let caller = $t051955235._2
176+ let date = $t051955235._3
177177 let assetDetails = value(assetInfo(fromBase58String(nftId)))
178178 let isValidNFT = NFTIsValid(assetDetails)
179179 $Tuple5(id, caller, date, isValidNFT, assetDetails.issuer)
217217
218218 @Callable(i)
219219 func sellNFT (price,asset) = {
220- let $t065716607 = isPayment(i)
221- let payment = $t065716607._1
222- let amount = $t065716607._2
220+ let $t065706606 = isPayment(i)
221+ let payment = $t065706606._1
222+ let amount = $t065706606._2
223223 if ((amount != 1))
224224 then throw("No NFT attached")
225225 else {
226226 let nftId = if (isDefined(payment.assetId))
227227 then toBase58String(value(payment.assetId))
228228 else throw("Waves is not a NFT.")
229- let $t067936863 = provideBaseData(i, nftId)
230- let id = $t067936863._1
231- let caller = $t067936863._2
232- let date = $t067936863._3
233- let isValidNFT = $t067936863._4
234- let issuer = $t067936863._5
229+ let $t067926862 = provideBaseData(i, nftId)
230+ let id = $t067926862._1
231+ let caller = $t067926862._2
232+ let date = $t067926862._3
233+ let isValidNFT = $t067926862._4
234+ let issuer = $t067926862._5
235235 if (!(isValidNFT))
236236 then throw("Not a valid nft")
237237 else if ((issuer == signArtArtworksDapp))
250250
251251 @Callable(i)
252252 func updateSalePrice (nftId,price,asset) = {
253- let $t077727842 = provideBaseData(i, nftId)
254- let id = $t077727842._1
255- let caller = $t077727842._2
256- let date = $t077727842._3
257- let isValidNFT = $t077727842._4
258- let issuer = $t077727842._5
253+ let $t077717841 = provideBaseData(i, nftId)
254+ let id = $t077717841._1
255+ let caller = $t077717841._2
256+ let date = $t077717841._3
257+ let isValidNFT = $t077717841._4
258+ let issuer = $t077717841._5
259259 if (!(isValidNFT))
260260 then throw("Not a valid nft")
261261 else {
283283
284284 @Callable(i)
285285 func cancelSale (nftId) = {
286- let $t088949112 = provideBaseData(i, nftId)
287- let id = $t088949112._1
288- let caller = $t088949112._2
289- let date = $t088949112._3
290- let isValidNFT = $t088949112._4
291- let issuer = $t088949112._5
286+ let $t088939111 = provideBaseData(i, nftId)
287+ let id = $t088939111._1
288+ let caller = $t088939111._2
289+ let date = $t088939111._3
290+ let isValidNFT = $t088939111._4
291+ let issuer = $t088939111._5
292292 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
293293 if ((saleOwner != caller))
294294 then throw("You don't own this NFT")
308308
309309 @Callable(i)
310310 func buyNFT (nftId) = {
311- let $t0994310013 = provideBaseData(i, nftId)
312- let id = $t0994310013._1
313- let caller = $t0994310013._2
314- let date = $t0994310013._3
315- let isValidNFT = $t0994310013._4
316- let issuer = $t0994310013._5
311+ let $t0994210012 = provideBaseData(i, nftId)
312+ let id = $t0994210012._1
313+ let caller = $t0994210012._2
314+ let date = $t0994210012._3
315+ let isValidNFT = $t0994210012._4
316+ let issuer = $t0994210012._5
317317 if (!(isValidNFT))
318318 then throw("Not a valid nft")
319319 else {
327327 if ((parseInt(saleInfoArray[1]) == 0))
328328 then throw("Offer only")
329329 else {
330- let $t01041210448 = isPayment(i)
331- let payment = $t01041210448._1
332- let amount = $t01041210448._2
330+ let $t01041110447 = isPayment(i)
331+ let payment = $t01041110447._1
332+ let amount = $t01041110447._2
333333 let paymentAssetStr = if (isDefined(payment.assetId))
334334 then toBase58String(value(payment.assetId))
335335 else ""
338338 else (saleInfoArray[2] != paymentAssetStr))
339339 then throw("Payment infos don't match.")
340340 else {
341- let $t01096211069 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
342- let commissions = $t01096211069._1
343- let ownerFee = $t01096211069._2
344- let collectorNFT = $t01096211069._3
341+ let $t01096111068 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
342+ let commissions = $t01096111068._1
343+ let ownerFee = $t01096111068._2
344+ let collectorNFT = $t01096111068._3
345345 [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(), ownerFee, collectorNFT, commissions]
346346 }
347347 }
353353
354354 @Callable(i)
355355 func setOffer (nftId) = {
356- let $t01146811542 = provideBaseData(i, nftId)
357- let id = $t01146811542._1
358- let offerOwner = $t01146811542._2
359- let date = $t01146811542._3
360- let isValidNFT = $t01146811542._4
361- let issuer = $t01146811542._5
356+ let $t01146711541 = provideBaseData(i, nftId)
357+ let id = $t01146711541._1
358+ let offerOwner = $t01146711541._2
359+ let date = $t01146711541._3
360+ let isValidNFT = $t01146711541._4
361+ let issuer = $t01146711541._5
362362 if (!(isValidNFT))
363363 then throw("Not a valid nft")
364364 else {
365- let $t01160311639 = isPayment(i)
366- let payment = $t01160311639._1
367- let amount = $t01160311639._2
365+ let $t01160211638 = isPayment(i)
366+ let payment = $t01160211638._1
367+ let amount = $t01160211638._2
368368 let assetId = if (!(isDefined(payment.assetId)))
369369 then "WAVES"
370370 else toBase58String(value(payment.assetId))
385385
386386 @Callable(i)
387387 func acceptOffer (nftId,offerId,offerOwner) = {
388- let $t01242812498 = provideBaseData(i, nftId)
389- let id = $t01242812498._1
390- let caller = $t01242812498._2
391- let date = $t01242812498._3
392- let isValidNFT = $t01242812498._4
393- let issuer = $t01242812498._5
388+ let $t01242712497 = provideBaseData(i, nftId)
389+ let id = $t01242712497._1
390+ let caller = $t01242712497._2
391+ let date = $t01242712497._3
392+ let isValidNFT = $t01242712497._4
393+ let issuer = $t01242712497._5
394394 if (!(isValidNFT))
395395 then throw("Not a valid nft")
396396 else {
399399 then throw("Only sale owner can accept offer")
400400 else {
401401 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
402- let $t01275212807 = getBidData(bidKey)
403- let bidDataArr = $t01275212807._1
404- let assetId = $t01275212807._2
405- let bidData = $t01275212807._3
402+ let $t01275112806 = getBidData(bidKey)
403+ let bidDataArr = $t01275112806._1
404+ let assetId = $t01275112806._2
405+ let bidData = $t01275112806._3
406406 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
407407 let saleInfo = getStrByK((saleKey + "_OPEN"))
408408 if ((size(saleInfo) == 0))
409409 then throw("Sale Not found!")
410410 else {
411411 let amount = value(parseInt(bidDataArr[1]))
412- let $t01304313149 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
413- let commissions = $t01304313149._1
414- let ownerFee = $t01304313149._2
415- let collectorNFT = $t01304313149._3
412+ let $t01304213148 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
413+ let commissions = $t01304213148._1
414+ let ownerFee = $t01304213148._2
415+ let collectorNFT = $t01304213148._3
416416 let assetIdStr = if (isDefined(assetId))
417417 then toBase58String(value(assetId))
418418 else "WAVES"
426426
427427 @Callable(i)
428428 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
429- let $t01393714011 = idCallerDate(i)
430- let id = $t01393714011._1
431- let caller = $t01393714011._2
432- let date = $t01393714011._3
429+ let $t01393614010 = idCallerDate(i)
430+ let id = $t01393614010._1
431+ let caller = $t01393614010._2
432+ let date = $t01393614010._3
433433 if (if ((caller != offerOwner))
434434 then (caller != saleOwner)
435435 else false)
436436 then throw("You cannot cancel this offer.")
437437 else {
438438 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
439- let $t01418314238 = getBidData(bidKey)
440- let bidDataArr = $t01418314238._1
441- let assetId = $t01418314238._2
442- let bidData = $t01418314238._3
439+ let $t01418214237 = getBidData(bidKey)
440+ let bidDataArr = $t01418214237._1
441+ let assetId = $t01418214237._2
442+ let bidData = $t01418214237._3
443443 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
444444 }
445445 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let VERSION = "1.0.0"
55
66 func getStrByK (key) = valueOrElse(getString(this, key), "")
77
88
99 let oracleFee = value(addressFromString(getStrByK("conf_oracle_fee")))
1010
1111 let feeReceiver = getStrByK("conf_fee_receiver")
1212
1313 let puzzle_art_pool = getStrByK("conf_puzzle_art_pool")
1414
1515 let signArtArtworksDapp = value(addressFromString(getStrByK("conf_artworks_dapp")))
1616
1717 let usdtPPAssetId_str = getStrByK("conf_accepted_asset_USDT_PP")
1818
1919 let artAssetId_str = getStrByK("conf_accepted_asset_ART")
2020
2121 let usdcPPAssetId_str = getStrByK("conf_accepted_asset_USDC_PP")
2222
2323 let eastAssetId_str = getStrByK("conf_accepted_asset_EAST")
2424
2525 let puzzleAssetId_str = getStrByK("conf_accepted_asset_PUZZLE")
2626
2727 let ethPPAssetId_str = getStrByK("conf_accepted_asset_ETH_PP")
2828
2929 let wavesAssetId_str = "WAVES"
3030
3131 let usdtPPAssetId = fromBase58String(usdtPPAssetId_str)
3232
3333 let artAssetId = fromBase58String(artAssetId_str)
3434
3535 let usdcPPAssetId = fromBase58String(usdcPPAssetId_str)
3636
3737 let eastAssetId = fromBase58String(eastAssetId_str)
3838
3939 let puzzleAssetId = fromBase58String(puzzleAssetId_str)
4040
4141 let ethPPAssetId = fromBase58String(ethPPAssetId_str)
4242
4343 let wavesAssetId = base58''
4444
4545 let all_accepted_assets = [usdtPPAssetId_str, artAssetId_str, usdcPPAssetId_str, eastAssetId_str, puzzleAssetId_str, wavesAssetId_str, ethPPAssetId_str]
4646
4747 let chris = getStrByK("conf_admin_1")
4848
4949 let commission_fee = 3
5050
5151 let dappRunningKey = "conf_dapp_is_running"
5252
5353 let maintenanceMSGKey = "conf_maintenance_msg"
5454
5555 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
5656
5757 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
5858
5959 let numSalesK = "num_sales"
6060
6161 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
6262
6363
6464 func getSaleKey (caller,nftId,issuer) = ((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + issuer)
6565
6666
6767 func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
6868
6969
7070 func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
7171
7272
7373 func idCallerDate (i) = if (!(dappRunning))
7474 then throw(maintenanceMSG)
7575 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
7676
7777
7878 func isPayment (i) = if ((size(i.payments) == 0))
7979 then throw("No payment attached")
8080 else {
8181 let payment = value(i.payments[0])
8282 let amount = value(payment.amount)
8383 $Tuple2(payment, amount)
8484 }
8585
8686
8787 func NFTIsValid (assetDetails) = if (if ((assetDetails.quantity == 1))
8888 then (assetDetails.decimals == 0)
8989 else false)
9090 then (assetDetails.reissuable == false)
9191 else false
9292
9393
9494 func acceptedAssetIds (assetId) = if (!(containsElement(all_accepted_assets, assetId)))
9595 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
9696 else true
9797
9898
9999 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
100100 then unit
101101 else fromBase58String(assetId)
102102
103103
104104 func getSaleOwnerAndStatus (nftid) = {
105105 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
106106 if ((size(saleOwner) == 0))
107107 then throw("NFT not found")
108108 else {
109109 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
110110 if ((saleStatus != "OPEN"))
111111 then throw("NFT not for sale")
112112 else saleOwner
113113 }
114114 }
115115
116116
117117 func getBidData (key) = {
118118 let bidData = getStrByK((key + "_OPEN"))
119119 if ((bidData == ""))
120120 then throw("Offer not found")
121121 else {
122122 let bidDataArr = split(bidData, "_")
123123 let assetId = getBidAssetId(bidDataArr[2])
124124 $Tuple3(bidDataArr, assetId, bidData)
125125 }
126126 }
127127
128128
129129 func getBalance (assetId) = match assetId {
130130 case b: ByteVector =>
131131 assetBalance(this, b)
132132 case _ =>
133133 wavesBalance(this).available
134134 }
135135
136136
137137 func setTransfers (amount,assetId,nftid,saleOwner,caller) = {
138138 let amountForSign = fraction(amount, commission_fee, 100)
139139 let amountForOwner = (amount - amountForSign)
140140 let amount_commission_for_sign_to_swap = amountForSign
141141 let amount_art_before = getBalance(artAssetId)
142142 if ((amount_art_before == amount_art_before))
143143 then {
144144 let swap_fee_to_art = if ((assetId != artAssetId))
145145 then invoke(Address(fromBase58String(puzzle_art_pool)), "swap", [artAssetId_str, 1], [AttachedPayment(assetId, amount_commission_for_sign_to_swap)])
146146 else unit
147147 if ((swap_fee_to_art == swap_fee_to_art))
148148 then {
149149 let amount_art_after = getBalance(artAssetId)
150150 if ((amount_art_after == amount_art_after))
151151 then {
152152 let commissions = ScriptTransfer(Address(fromBase58String(feeReceiver)), if ((assetId == artAssetId))
153153 then amountForSign
154154 else (amount_art_after - amount_art_before), artAssetId)
155155 let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
156156 let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
157157 $Tuple3(commissions, ownerFee, collectorNFT)
158158 }
159159 else throw("Strict value is not equal to itself.")
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163 else throw("Strict value is not equal to itself.")
164164 }
165165
166166
167-func validateMinSell (price) = if ((0 >= price))
167+func validateMinSell (price) = if ((0 > price))
168168 then throw("Wrong minimum sell price")
169169 else true
170170
171171
172172 func provideBaseData (i,nftId) = {
173- let $t051965236 = idCallerDate(i)
174- let id = $t051965236._1
175- let caller = $t051965236._2
176- let date = $t051965236._3
173+ let $t051955235 = idCallerDate(i)
174+ let id = $t051955235._1
175+ let caller = $t051955235._2
176+ let date = $t051955235._3
177177 let assetDetails = value(assetInfo(fromBase58String(nftId)))
178178 let isValidNFT = NFTIsValid(assetDetails)
179179 $Tuple5(id, caller, date, isValidNFT, assetDetails.issuer)
180180 }
181181
182182
183183 func updateNumSales () = {
184184 let numSales = getIntByK(numSalesK)
185185 IntegerEntry(numSalesK, (numSales + 1))
186186 }
187187
188188
189189 func haveSTD (issuer,ndftId) = {
190190 let data = valueOrElse(getString(Address(fromBase58String(issuer)), (("std_nft_" + ndftId) + "_metadata")), "")
191191 (data != "")
192192 }
193193
194194
195195 @Callable(invoke)
196196 func setConf (key,val) = {
197197 let caller = toString(invoke.caller)
198198 if (containsElement([chris, toString(this)], caller))
199199 then if (contains(key, "conf_"))
200200 then [StringEntry(key, val)]
201201 else throw("Entries starting with conf_ only")
202202 else throw("You are not allowed to change this")
203203 }
204204
205205
206206
207207 @Callable(invoke)
208208 func appRunning (isLive,message) = {
209209 let caller = toString(invoke.caller)
210210 let id = toBase58String(invoke.transactionId)
211211 if (containsElement([chris, toString(this)], caller))
212212 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
213213 else throw("You are not allowed to change this")
214214 }
215215
216216
217217
218218 @Callable(i)
219219 func sellNFT (price,asset) = {
220- let $t065716607 = isPayment(i)
221- let payment = $t065716607._1
222- let amount = $t065716607._2
220+ let $t065706606 = isPayment(i)
221+ let payment = $t065706606._1
222+ let amount = $t065706606._2
223223 if ((amount != 1))
224224 then throw("No NFT attached")
225225 else {
226226 let nftId = if (isDefined(payment.assetId))
227227 then toBase58String(value(payment.assetId))
228228 else throw("Waves is not a NFT.")
229- let $t067936863 = provideBaseData(i, nftId)
230- let id = $t067936863._1
231- let caller = $t067936863._2
232- let date = $t067936863._3
233- let isValidNFT = $t067936863._4
234- let issuer = $t067936863._5
229+ let $t067926862 = provideBaseData(i, nftId)
230+ let id = $t067926862._1
231+ let caller = $t067926862._2
232+ let date = $t067926862._3
233+ let isValidNFT = $t067926862._4
234+ let issuer = $t067926862._5
235235 if (!(isValidNFT))
236236 then throw("Not a valid nft")
237237 else if ((issuer == signArtArtworksDapp))
238238 then throw("This dApp is only for NFT issued outside SIGN Art dApp.")
239239 else if (!(haveSTD(toString(issuer), nftId)))
240240 then throw("No nft standard found on issuer account")
241241 else if (!(acceptedAssetIds(asset)))
242242 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
243243 else if (!(validateMinSell(price)))
244244 then throw("Wrong minimum sell price")
245245 else [StringEntry((getSaleKey(caller, nftId, toString(issuer)) + "_OPEN"), ((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + toString(issuer)) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
246246 }
247247 }
248248
249249
250250
251251 @Callable(i)
252252 func updateSalePrice (nftId,price,asset) = {
253- let $t077727842 = provideBaseData(i, nftId)
254- let id = $t077727842._1
255- let caller = $t077727842._2
256- let date = $t077727842._3
257- let isValidNFT = $t077727842._4
258- let issuer = $t077727842._5
253+ let $t077717841 = provideBaseData(i, nftId)
254+ let id = $t077717841._1
255+ let caller = $t077717841._2
256+ let date = $t077717841._3
257+ let isValidNFT = $t077717841._4
258+ let issuer = $t077717841._5
259259 if (!(isValidNFT))
260260 then throw("Not a valid nft")
261261 else {
262262 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
263263 if ((saleOwner != caller))
264264 then throw("You don't own this NFT")
265265 else {
266266 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
267267 if ((saleStatus != "OPEN"))
268268 then throw("Sale not active")
269269 else if (!(acceptedAssetIds(asset)))
270270 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
271271 else if (!(validateMinSell(price)))
272272 then throw("Wrong minimum sell price")
273273 else {
274274 let saleKey = getSaleKey(caller, nftId, toString(issuer))
275275 let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
276276 [StringEntry((saleKey + "_OPEN"), ((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]))]
277277 }
278278 }
279279 }
280280 }
281281
282282
283283
284284 @Callable(i)
285285 func cancelSale (nftId) = {
286- let $t088949112 = provideBaseData(i, nftId)
287- let id = $t088949112._1
288- let caller = $t088949112._2
289- let date = $t088949112._3
290- let isValidNFT = $t088949112._4
291- let issuer = $t088949112._5
286+ let $t088939111 = provideBaseData(i, nftId)
287+ let id = $t088939111._1
288+ let caller = $t088939111._2
289+ let date = $t088939111._3
290+ let isValidNFT = $t088939111._4
291+ let issuer = $t088939111._5
292292 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
293293 if ((saleOwner != caller))
294294 then throw("You don't own this NFT")
295295 else {
296296 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
297297 if ((saleStatus != "OPEN"))
298298 then throw("Sale not active")
299299 else {
300300 let saleKey = getSaleKey(caller, nftId, toString(issuer))
301301 let saleInfo = getStrByK((saleKey + "_OPEN"))
302302 [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(nftId))]
303303 }
304304 }
305305 }
306306
307307
308308
309309 @Callable(i)
310310 func buyNFT (nftId) = {
311- let $t0994310013 = provideBaseData(i, nftId)
312- let id = $t0994310013._1
313- let caller = $t0994310013._2
314- let date = $t0994310013._3
315- let isValidNFT = $t0994310013._4
316- let issuer = $t0994310013._5
311+ let $t0994210012 = provideBaseData(i, nftId)
312+ let id = $t0994210012._1
313+ let caller = $t0994210012._2
314+ let date = $t0994210012._3
315+ let isValidNFT = $t0994210012._4
316+ let issuer = $t0994210012._5
317317 if (!(isValidNFT))
318318 then throw("Not a valid nft")
319319 else {
320320 let saleOwner = getSaleOwnerAndStatus(nftId)
321321 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
322322 let saleInfo = getStrByK((saleKey + "_OPEN"))
323323 if ((size(saleInfo) == 0))
324324 then throw("Sale Not found!")
325325 else {
326326 let saleInfoArray = split(saleInfo, "_")
327327 if ((parseInt(saleInfoArray[1]) == 0))
328328 then throw("Offer only")
329329 else {
330- let $t01041210448 = isPayment(i)
331- let payment = $t01041210448._1
332- let amount = $t01041210448._2
330+ let $t01041110447 = isPayment(i)
331+ let payment = $t01041110447._1
332+ let amount = $t01041110447._2
333333 let paymentAssetStr = if (isDefined(payment.assetId))
334334 then toBase58String(value(payment.assetId))
335335 else ""
336336 if (if ((saleInfoArray[1] != toString(amount)))
337337 then true
338338 else (saleInfoArray[2] != paymentAssetStr))
339339 then throw("Payment infos don't match.")
340340 else {
341- let $t01096211069 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
342- let commissions = $t01096211069._1
343- let ownerFee = $t01096211069._2
344- let collectorNFT = $t01096211069._3
341+ let $t01096111068 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
342+ let commissions = $t01096111068._1
343+ let ownerFee = $t01096111068._2
344+ let collectorNFT = $t01096111068._3
345345 [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(), ownerFee, collectorNFT, commissions]
346346 }
347347 }
348348 }
349349 }
350350 }
351351
352352
353353
354354 @Callable(i)
355355 func setOffer (nftId) = {
356- let $t01146811542 = provideBaseData(i, nftId)
357- let id = $t01146811542._1
358- let offerOwner = $t01146811542._2
359- let date = $t01146811542._3
360- let isValidNFT = $t01146811542._4
361- let issuer = $t01146811542._5
356+ let $t01146711541 = provideBaseData(i, nftId)
357+ let id = $t01146711541._1
358+ let offerOwner = $t01146711541._2
359+ let date = $t01146711541._3
360+ let isValidNFT = $t01146711541._4
361+ let issuer = $t01146711541._5
362362 if (!(isValidNFT))
363363 then throw("Not a valid nft")
364364 else {
365- let $t01160311639 = isPayment(i)
366- let payment = $t01160311639._1
367- let amount = $t01160311639._2
365+ let $t01160211638 = isPayment(i)
366+ let payment = $t01160211638._1
367+ let amount = $t01160211638._2
368368 let assetId = if (!(isDefined(payment.assetId)))
369369 then "WAVES"
370370 else toBase58String(value(payment.assetId))
371371 if (!(acceptedAssetIds(assetId)))
372372 then throw("asset not accepted")
373373 else if ((amount == 0))
374374 then throw("Offer of 0 not allowed")
375375 else if (!(validateMinSell(amount)))
376376 then throw("Wrong minimum sell price")
377377 else {
378378 let saleOwner = getSaleOwnerAndStatus(nftId)
379379 [StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + toString(issuer)) + "_") + offerOwner) + "_") + id))]
380380 }
381381 }
382382 }
383383
384384
385385
386386 @Callable(i)
387387 func acceptOffer (nftId,offerId,offerOwner) = {
388- let $t01242812498 = provideBaseData(i, nftId)
389- let id = $t01242812498._1
390- let caller = $t01242812498._2
391- let date = $t01242812498._3
392- let isValidNFT = $t01242812498._4
393- let issuer = $t01242812498._5
388+ let $t01242712497 = provideBaseData(i, nftId)
389+ let id = $t01242712497._1
390+ let caller = $t01242712497._2
391+ let date = $t01242712497._3
392+ let isValidNFT = $t01242712497._4
393+ let issuer = $t01242712497._5
394394 if (!(isValidNFT))
395395 then throw("Not a valid nft")
396396 else {
397397 let saleOwner = getSaleOwnerAndStatus(nftId)
398398 if ((caller != saleOwner))
399399 then throw("Only sale owner can accept offer")
400400 else {
401401 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
402- let $t01275212807 = getBidData(bidKey)
403- let bidDataArr = $t01275212807._1
404- let assetId = $t01275212807._2
405- let bidData = $t01275212807._3
402+ let $t01275112806 = getBidData(bidKey)
403+ let bidDataArr = $t01275112806._1
404+ let assetId = $t01275112806._2
405+ let bidData = $t01275112806._3
406406 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
407407 let saleInfo = getStrByK((saleKey + "_OPEN"))
408408 if ((size(saleInfo) == 0))
409409 then throw("Sale Not found!")
410410 else {
411411 let amount = value(parseInt(bidDataArr[1]))
412- let $t01304313149 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
413- let commissions = $t01304313149._1
414- let ownerFee = $t01304313149._2
415- let collectorNFT = $t01304313149._3
412+ let $t01304213148 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
413+ let commissions = $t01304213148._1
414+ let ownerFee = $t01304213148._2
415+ let collectorNFT = $t01304213148._3
416416 let assetIdStr = if (isDefined(assetId))
417417 then toBase58String(value(assetId))
418418 else "WAVES"
419419 [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(), ownerFee, collectorNFT, commissions]
420420 }
421421 }
422422 }
423423 }
424424
425425
426426
427427 @Callable(i)
428428 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
429- let $t01393714011 = idCallerDate(i)
430- let id = $t01393714011._1
431- let caller = $t01393714011._2
432- let date = $t01393714011._3
429+ let $t01393614010 = idCallerDate(i)
430+ let id = $t01393614010._1
431+ let caller = $t01393614010._2
432+ let date = $t01393614010._3
433433 if (if ((caller != offerOwner))
434434 then (caller != saleOwner)
435435 else false)
436436 then throw("You cannot cancel this offer.")
437437 else {
438438 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
439- let $t01418314238 = getBidData(bidKey)
440- let bidDataArr = $t01418314238._1
441- let assetId = $t01418314238._2
442- let bidData = $t01418314238._3
439+ let $t01418214237 = getBidData(bidKey)
440+ let bidDataArr = $t01418214237._1
441+ let assetId = $t01418214237._2
442+ let bidData = $t01418214237._3
443443 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
444444 }
445445 }
446446
447447

github/deemru/w8io/3ef1775 
111.72 ms