tx · FV6afV32nJ7MgELxLv4AzyLaPY4KXDWHKsXDnM53m8iK

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.00700000 Waves

2022.09.01 20:31 [3275862] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "FV6afV32nJ7MgELxLv4AzyLaPY4KXDWHKsXDnM53m8iK", "fee": 700000, "feeAssetId": null, "timestamp": 1662053604016, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "4AeB6gTYPZG6c7yW8gM543evRpqbrodCtBLmxsK2GiUn3BBBXfriYGReVUErhkDwpTzEZn9LbDNt5UkB94XdREMs" ], "script": "base64:BgIVCAISBQoDAQgIEgMKAQgSABIDCgEIFgASbmZ0Q3JlYXRpb25BZGRyZXNzARoBV5PdxNIX5yAK/fchEk7w8HZnJoMDeNRcTAARZWFnbGVCdXllckFkZHJlc3MBGgFXOlFhR4ekF3ncYJWgtmbLPN4lL64w7/v2ABlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzARoBV3tk1VvWnhe5qtPmj/wDXMjEFvibuoYp4gAObmZ0RHVja1dyYXBwZXIBGgFXFK1EUpul/f9hF//YOufxZ4qAnBS4L88eABFuZnRTaWduQXJ0V3JhcHBlcgEaAVfuoRoVw/G2X0Rl/1/IFTnEeUXVGEVHMAcAFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIBGgFXwK3CbTLNka+lV0XYh/JTwVqOyL0misoLABRuZnRXYXZlc1B1bmtzV3JhcHBlcgEaAVd5moowGgnVnajKJ2gj2RvVoec0kMbogy0AEGluY3ViYXRvckFkZHJlc3MBGgFXjLVIn36eFdUYl44bd/sJf2di2uFtYyVJAA5icmVlZGVyQWRkcmVzcwEaAVd+57n5ccRMeFx9eHuGcYJDFaZ5ag+2Hx4AGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzARoBV12L8V/LKCBrH2ajyG7aC6iX7Q/o/clE8QATem9tYmllSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBVzwia2+DPLzn0NsAUzuxeI+PJBHmuBOukwAScHVua3NJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXS+xPjera0gSnSXFRUVq2krtB1F+FwuxoABNhbGllbnNJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXa8tPpNumumqoNfvKdRF0dc6oz4cuF9IYABVtYWRQdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVe2FZAHGGJgl+unSJcp8qs1zX7kAqoNhtkAFm1hZFB1bmtzMklzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdGTWoQ1BXw/a91Ekxg94A8K/h2ZCBxCwUBDGlmU2lnbkFydE5mdAEFYXNzZXQDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUZc2lnbkFydE5mdENyZWF0aW9uQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBCWlmRHVja05mdAEFYXNzZXQDAwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFEGluY3ViYXRvckFkZHJlc3MGCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFDmJyZWVkZXJBZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEPaWZXYXZlc1B1bmtzTmZ0AQVhc3NldAMDAwkAZwIJAQt2YWx1ZU9yRWxzZQIJAM8IAgkAzAgCBRN6b21iaWVJc3N1ZXJBZGRyZXNzCQDMCAIFEnB1bmtzSXNzdWVyQWRkcmVzcwkAzAgCBRNhbGllbnNJc3N1ZXJBZGRyZXNzCQDMCAIFFW1hZFB1bmtzSXNzdWVyQWRkcmVzcwkAzAgCBRZtYWRQdW5rczJJc3N1ZXJBZGRyZXNzBQNuaWwIBQVhc3NldAZpc3N1ZXIA////////////AQAACQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwERaWZVbHRyYVN0YWtpbmdOZnQBBWFzc2V0BAppc0VhZ2xlTkZUBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQURZWFnbGVCdXllckFkZHJlc3MJAKwCAgkArAICAgRhcnRfCQDYBAEIBQVhc3NldAJpZAIFX3R5cGUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQAAAgUBcwIFZWFnbGUHBAlpc0FuaWFORlQEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRJuZnRDcmVhdGlvbkFkZHJlc3MJAKwCAgkArAICAgRuZnRfCQDYBAEIBQVhc3NldAJpZAIHX2lzc3VlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDADCQAAAgUBcwIjM1BNa2k1c0hCc1FiNEtnRGtuYlV3c0wzWWd4YUN6YVpuQ0oJAQhjb250YWlucwIIBQVhc3NldARuYW1lAgxCb3JlZCBBbmlhICMHBwMFCmlzRWFnbGVORlQGBQlpc0FuaWFORlQBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQVhc3NldAMDAwkAAAIICAUFYXNzZXQGaXNzdWVyBWJ5dGVzBRJuZnRDcmVhdGlvbkFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHARFnZXRBZGRyZXNzRm9yV3JhcAEFYXNzZXQDCQERaWZVbHRyYVN0YWtpbmdOZnQBBQVhc3NldAkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyAwkBD2lmV2F2ZXNQdW5rc05mdAEFBWFzc2V0CQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyAwkBDGlmU2lnbkFydE5mdAEFBWFzc2V0CQEHQWRkcmVzcwEFEW5mdFNpZ25BcnRXcmFwcGVyAwkBCWlmRHVja05mdAEFBWFzc2V0CQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyBQR1bml0ARNnZXRBZGRyZXNzRm9yVW53cmFwAQZuZnRTdHIECWlzU2lnbkFydAQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFEW5mdFNpZ25BcnRXcmFwcGVyCQCsAgIJAKwCAgILc2lnbkFydE5mdF8FBm5mdFN0cgIIX2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQBmAgkAsQIBBQFzAAAHBAZpc0R1Y2sEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBQ5uZnREdWNrV3JhcHBlcgkArAICCQCsAgICBG5mdF8FBm5mdFN0cgIHX2R1Y2tJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDmlzVWx0cmFTdGFraW5nBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQUWbmZ0VWx0cmFTdGFraW5nV3JhcHBlcgkArAICCQCsAgICBG5mdF8FBm5mdFN0cgIIX2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQBmAgkAsQIBBQFzAAAHBAxpc1dhdmVzUHVua3MEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRRuZnRXYXZlc1B1bmtzV3JhcHBlcgkArAICCQCsAgICBG5mdF8FBm5mdFN0cgIIX2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQBmAgkAsQIBBQFzAAAHAwUOaXNVbHRyYVN0YWtpbmcJAQdBZGRyZXNzAQUWbmZ0VWx0cmFTdGFraW5nV3JhcHBlcgMFDGlzV2F2ZXNQdW5rcwkBB0FkZHJlc3MBBRRuZnRXYXZlc1B1bmtzV3JhcHBlcgMFCWlzU2lnbkFydAkBB0FkZHJlc3MBBRFuZnRTaWduQXJ0V3JhcHBlcgMFBmlzRHVjawkBB0FkZHJlc3MBBQ5uZnREdWNrV3JhcHBlcgUEdW5pdAQBaQEObG9ja0FuZFNlbGxORlQDC2J1eU91dFByaWNlDWJ1eU91dEFzc2V0SWQNc2VsbGVyQ29tbWVudAQHYXNzZXRJZAkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAt3cmFwQWRkcmVzcwkBEWdldEFkZHJlc3NGb3JXcmFwAQUFYXNzZXQEDnN0YWtlZE5GVElkU3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBAxsb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBGxvY2sFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICKVNvbXRoaW5nIHdyb25nIHdoZW4gbG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQxsb2NrZWROZnRTdHIFDGxvY2tlZE5mdFN0cgUMbG9ja2VkTmZ0U3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDYBAEIBQVhc3NldAJpZAMJAGYCCQCxAgEFDnN0YWtlZE5GVElkU3RyAAAEA2ludgkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgdzZWxsTkZUCQDMCAIFC2J1eU91dFByaWNlCQDMCAIFDWJ1eU91dEFzc2V0SWQJAMwIAgUNc2VsbGVyQ29tbWVudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFDnN0YWtlZE5GVElkU3RyAAEFA25pbAMJAAACBQNpbnYFA2ludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIaVGhlIGNyZWF0ZWQgTkZUIGlzIGludmFsaWQBaQETY2FuY2VsU2VsbEFuZFVubG9jawEFbmZ0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUFbmZ0SWQEC3dyYXBBZGRyZXNzCQETZ2V0QWRkcmVzc0ZvclVud3JhcAEFBW5mdElkAwkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQEDmNhbmNlbGVkTmZ0U3RyBAckbWF0Y2gwCQD8BwQJAQdBZGRyZXNzAQUabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MCCmNhbmNlbFNlbGwJAMwIAgUFbmZ0SWQFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECI1NvbXRoaW5nIHdyb25nIHdoZW4gY2FuY2VsIHNlbGwgTkZUAwkAAAIFDmNhbmNlbGVkTmZ0U3RyBQ5jYW5jZWxlZE5mdFN0cgMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOY2FuY2VsZWROZnRTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECE0l2YWxpZCBORlQgYXR0YWNoZWQBaQEGdW5sb2NrAAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAwMJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0CQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQcECmFzc2V0SWRTdHIJANgEAQgFBWFzc2V0AmlkBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBA51bmxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIGdW5sb2NrBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIIBQVhc3NldAJpZAABBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQkArAICAitTb210aGluZyB3cm9uZyB3aGVuIHVubG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQ51bmxvY2tlZE5mdFN0cgUOdW5sb2NrZWROZnRTdHIJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ51bmxvY2tlZE5mdFN0cgUDbmlsBQ51bmxvY2tlZE5mdFN0cgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCAUFYXNzZXQCaWQFA25pbAkA2AQBCAUFYXNzZXQCaWQJAAIBAhNJdmFsaWQgTkZUIGF0dGFjaGVkAWkBA2J1eQEFbmZ0SWQECWJvdWdodE5mdAQHJG1hdGNoMAkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgZidXlORlQJAMwIAgUFbmZ0SWQFA25pbAgFAWkIcGF5bWVudHMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIbU29tdGhpbmcgd3Jvbmcgd2hlbiBidXkgTkZUAwkAAAIFCWJvdWdodE5mdAUJYm91Z2h0TmZ0BAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFCWJvdWdodE5mdAMDCQBmAgkAsQIBBQlib3VnaHROZnQAAAkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQHBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQVuZnRJZAMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUJYm91Z2h0TmZ0BQNuaWwJAAIBAhFJdmFsaWQgYm91Z2h0IE5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXmKlP65", "height": 3275862, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: BPF3R9wa3hHvh7ujuMyXjvRQ5HbFh6888RxBrErg2r2y Next: 8Re3ZSoRoJNCnGNNChVQYAtQza667D3B6NFAVSjeqa7d Diff:
OldNewDifferences
139139
140140
141141 @Callable(i)
142-func lockAndSellNFT (buyOutPrice,buyOutAssetId) = {
142+func lockAndSellNFT (buyOutPrice,buyOutAssetId,sellerComment) = {
143143 let assetId = value(value(i.payments[0]).assetId)
144144 let asset = value(assetInfo(assetId))
145145 let wrapAddress = getAddressForWrap(asset)
158158 else toBase58String(asset.id)
159159 if ((size(stakedNFTIdStr) > 0))
160160 then {
161- let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
161+ let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId, sellerComment], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
162162 if ((inv == inv))
163163 then nil
164164 else throw("Strict value is not equal to itself.")
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let nftCreationAddress = base58'3PFQjjDMiZKQZdu5JqTHD7HwgSXyp9Rw9By'
55
66 let eagleBuyerAddress = base58'3P7FFQkgALLZDJpCf3smY517wjgPMswGoRP'
77
88 let signArtNftCreationAddress = base58'3PDBLdsUrcsiPxNbt8g2gQVoefKgzt3kJzV'
99
1010 let nftDuckWrapper = base58'3P3pDosq4GCwfJkvq4yqKvvoTwmoqc9qPmo'
1111
1212 let nftSignArtWrapper = base58'3PPgeYTWMRZ7S7jSLpnVuKKB9r6XuDk3ndC'
1313
1414 let nftUltraStakingWrapper = base58'3PKVgd6ds1xervK6bPXbEHBqg8ibTcf5HZk'
1515
1616 let nftWavesPunksWrapper = base58'3PD1sd55PYzmGUrQ896Qt3uvdbtgjCVpajE'
1717
1818 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
1919
2020 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
2121
2222 let marketplaceContractAddress = base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc'
2323
2424 let zombieIssuerAddress = Address(base58'3P7QrWH1ETLfKAJcFHYPJmQusNbDuW98Hop')
2525
2626 let punksIssuerAddress = Address(base58'3P8rLVnwrTf4k5AB3emuduhZZb1yKcitTHy')
2727
2828 let aliensIssuerAddress = Address(base58'3PBkrb5LrGDvCwkx4VHZzZkqMNvvGqrJJWj')
2929
3030 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3131
3232 let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
3333
3434 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
3535 then (asset.decimals == 0)
3636 else false)
3737 then (asset.reissuable == false)
3838 else false)
3939 then (asset.quantity == 1)
4040 else false
4141
4242
4343 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
4444 then true
4545 else (asset.issuer.bytes == breederAddress))
4646 then (asset.decimals == 0)
4747 else false)
4848 then (asset.reissuable == false)
4949 else false)
5050 then (asset.quantity == 1)
5151 else false
5252
5353
5454 func ifWavesPunksNft (asset) = if (if (if ((valueOrElse(indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress, madPunks2IssuerAddress], asset.issuer), -1) >= 0))
5555 then (asset.decimals == 0)
5656 else false)
5757 then (asset.reissuable == false)
5858 else false)
5959 then (asset.quantity == 1)
6060 else false
6161
6262
6363 func ifUltraStakingNft (asset) = {
6464 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
6565 case s: String =>
6666 (s == "eagle")
6767 case _ =>
6868 false
6969 }
7070 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
7171 case s: String =>
7272 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
7373 then contains(asset.name, "Bored Ania #")
7474 else false
7575 case _ =>
7676 false
7777 }
7878 if (isEagleNFT)
7979 then true
8080 else isAniaNFT
8181 }
8282
8383
8484 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
8585 then (asset.decimals == 0)
8686 else false)
8787 then (asset.reissuable == false)
8888 else false)
8989 then (asset.quantity == 1)
9090 else false
9191
9292
9393 func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
9494 then Address(nftUltraStakingWrapper)
9595 else if (ifWavesPunksNft(asset))
9696 then Address(nftWavesPunksWrapper)
9797 else if (ifSignArtNft(asset))
9898 then Address(nftSignArtWrapper)
9999 else if (ifDuckNft(asset))
100100 then Address(nftDuckWrapper)
101101 else unit
102102
103103
104104 func getAddressForUnwrap (nftStr) = {
105105 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
106106 case s: String =>
107107 (size(s) > 0)
108108 case _ =>
109109 false
110110 }
111111 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
112112 case s: String =>
113113 (size(s) > 0)
114114 case _ =>
115115 false
116116 }
117117 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
118118 case s: String =>
119119 (size(s) > 0)
120120 case _ =>
121121 false
122122 }
123123 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
124124 case s: String =>
125125 (size(s) > 0)
126126 case _ =>
127127 false
128128 }
129129 if (isUltraStaking)
130130 then Address(nftUltraStakingWrapper)
131131 else if (isWavesPunks)
132132 then Address(nftWavesPunksWrapper)
133133 else if (isSignArt)
134134 then Address(nftSignArtWrapper)
135135 else if (isDuck)
136136 then Address(nftDuckWrapper)
137137 else unit
138138 }
139139
140140
141141 @Callable(i)
142-func lockAndSellNFT (buyOutPrice,buyOutAssetId) = {
142+func lockAndSellNFT (buyOutPrice,buyOutAssetId,sellerComment) = {
143143 let assetId = value(value(i.payments[0]).assetId)
144144 let asset = value(assetInfo(assetId))
145145 let wrapAddress = getAddressForWrap(asset)
146146 let stakedNFTIdStr = if (isDefined(wrapAddress))
147147 then {
148148 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
149149 case s: String =>
150150 s
151151 case _ =>
152152 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
153153 }
154154 if ((lockedNftStr == lockedNftStr))
155155 then lockedNftStr
156156 else throw("Strict value is not equal to itself.")
157157 }
158158 else toBase58String(asset.id)
159159 if ((size(stakedNFTIdStr) > 0))
160160 then {
161- let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
161+ let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId, sellerComment], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
162162 if ((inv == inv))
163163 then nil
164164 else throw("Strict value is not equal to itself.")
165165 }
166166 else throw("The created NFT is invalid")
167167 }
168168
169169
170170
171171 @Callable(i)
172172 func cancelSellAndUnlock (nftId) = {
173173 let asset = value(assetInfo(fromBase58String(nftId)))
174174 let wrapAddress = getAddressForUnwrap(nftId)
175175 if (isNftFromMarketplace(asset))
176176 then {
177177 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
178178 case s: String =>
179179 s
180180 case _ =>
181181 throw("Somthing wrong when cancel sell NFT")
182182 }
183183 if ((canceledNftStr == canceledNftStr))
184184 then if (isDefined(wrapAddress))
185185 then {
186186 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
187187 case s: String =>
188188 s
189189 case _ =>
190190 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
191191 }
192192 if ((unlockedNftStr == unlockedNftStr))
193193 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
194194 else throw("Strict value is not equal to itself.")
195195 }
196196 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
197197 else throw("Strict value is not equal to itself.")
198198 }
199199 else throw("Ivalid NFT attached")
200200 }
201201
202202
203203
204204 @Callable(i)
205205 func unlock () = {
206206 let asset = value(assetInfo(value(i.payments[0].assetId)))
207207 if (if (isNftFromMarketplace(asset))
208208 then (i.payments[0].amount == 1)
209209 else false)
210210 then {
211211 let assetIdStr = toBase58String(asset.id)
212212 let wrapAddress = getAddressForUnwrap(assetIdStr)
213213 if (isDefined(wrapAddress))
214214 then {
215215 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
216216 case s: String =>
217217 s
218218 case _ =>
219219 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
220220 }
221221 if ((unlockedNftStr == unlockedNftStr))
222222 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
223223 else throw("Strict value is not equal to itself.")
224224 }
225225 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
226226 }
227227 else throw("Ivalid NFT attached")
228228 }
229229
230230
231231
232232 @Callable(i)
233233 func buy (nftId) = {
234234 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
235235 case s: String =>
236236 s
237237 case _ =>
238238 throw("Somthing wrong when buy NFT")
239239 }
240240 if ((boughtNft == boughtNft))
241241 then {
242242 let asset = value(assetInfo(fromBase58String(boughtNft)))
243243 if (if ((size(boughtNft) > 0))
244244 then isNftFromMarketplace(asset)
245245 else false)
246246 then {
247247 let wrapAddress = getAddressForUnwrap(nftId)
248248 if (isDefined(wrapAddress))
249249 then {
250250 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
251251 case s: String =>
252252 s
253253 case _ =>
254254 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
255255 }
256256 if ((unlockedNftStr == unlockedNftStr))
257257 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
258258 else throw("Strict value is not equal to itself.")
259259 }
260260 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
261261 }
262262 else throw("Ivalid bought NFT")
263263 }
264264 else throw("Strict value is not equal to itself.")
265265 }
266266
267267
268268 @Verifier(tx)
269269 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
270270

github/deemru/w8io/3ef1775 
47.34 ms