tx · 8Re3ZSoRoJNCnGNNChVQYAtQza667D3B6NFAVSjeqa7d

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.01000000 Waves

2022.10.31 19:55 [3362242] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "8Re3ZSoRoJNCnGNNChVQYAtQza667D3B6NFAVSjeqa7d", "fee": 1000000, "feeAssetId": null, "timestamp": 1667235350599, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "3Qr6uNHHWS4wBmJKT4F7QWGoHYZabq8SXoTdKrotR7vir4jHNNxFzHwXyiDS65oNs5f1VXd1JaEfrurULfR9AkmU" ], "script": "base64:BgIVCAISBQoDAQgIEgMKAQgSABIDCgEIGQASbmZ0Q3JlYXRpb25BZGRyZXNzARoBV5PdxNIX5yAK/fchEk7w8HZnJoMDeNRcTAARZWFnbGVCdXllckFkZHJlc3MBGgFXOlFhR4ekF3ncYJWgtmbLPN4lL64w7/v2ABlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzARoBV3tk1VvWnhe5qtPmj/wDXMjEFvibuoYp4gAObmZ0RHVja1dyYXBwZXIBGgFXFK1EUpul/f9hF//YOufxZ4qAnBS4L88eABFuZnRTaWduQXJ0V3JhcHBlcgEaAVfuoRoVw/G2X0Rl/1/IFTnEeUXVGEVHMAcAFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIBGgFXwK3CbTLNka+lV0XYh/JTwVqOyL0misoLABRuZnRXYXZlc1B1bmtzV3JhcHBlcgEaAVd5moowGgnVnajKJ2gj2RvVoec0kMbogy0AFG5mdFdhdmVzTGFuZHNXcmFwcGVyARoBV3P7lvq2A+DsHJ59ULYOpvcQd/BBgIBaBgAQaW5jdWJhdG9yQWRkcmVzcwEaAVeMtUiffp4V1RiXjht3+wl/Z2La4W1jJUkADmJyZWVkZXJBZGRyZXNzARoBV37nuflxxEx4XH14e4ZxgkMVpnlqD7YfHgAabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MBGgFXXYvxX8soIGsfZqPIbtoLqJftD+j9yUTxABN6b21iaWVJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXPCJrb4M8vOfQ2wBTO7F4j48kEea4E66TABJwdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdL7E+N6trSBKdJcVFRWraSu0HUX4XC7GgAE2FsaWVuc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdry0+k26a6aqg1+8p1EXR1zqjPhy4X0hgAFW1hZFB1bmtzSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV7YVkAcYYmCX66dIlynyqzXNfuQCqg2G2QAWbWFkUHVua3MySXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV0ZNahDUFfD9r3USTGD3gDwr+HZkIHELBQAPd2xJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXztmK5zoMBJMhvzzn9a1idLTYqEfhLTqoAQ9pZldhdmVzTGFuZHNORlQBBWFzc2V0AwMDCQAAAggFBWFzc2V0Bmlzc3VlcgUPd2xJc3N1ZXJBZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEMaWZTaWduQXJ0TmZ0AQVhc3NldAMDAwkAAAIICAUFYXNzZXQGaXNzdWVyBWJ5dGVzBRlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEJaWZEdWNrTmZ0AQVhc3NldAMDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUQaW5jdWJhdG9yQWRkcmVzcwYJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUOYnJlZWRlckFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHAQ9pZldhdmVzUHVua3NOZnQBBWFzc2V0AwMDCQBnAgkBC3ZhbHVlT3JFbHNlAgkAzwgCCQDMCAIFE3pvbWJpZUlzc3VlckFkZHJlc3MJAMwIAgUScHVua3NJc3N1ZXJBZGRyZXNzCQDMCAIFE2FsaWVuc0lzc3VlckFkZHJlc3MJAMwIAgUVbWFkUHVua3NJc3N1ZXJBZGRyZXNzCQDMCAIFFm1hZFB1bmtzMklzc3VlckFkZHJlc3MFA25pbAgFBWFzc2V0Bmlzc3VlcgD///////////8BAAAJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHARFpZlVsdHJhU3Rha2luZ05mdAEFYXNzZXQECmlzRWFnbGVORlQEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRFlYWdsZUJ1eWVyQWRkcmVzcwkArAICCQCsAgICBGFydF8JANgEAQgFBWFzc2V0AmlkAgVfdHlwZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAAACBQFzAgVlYWdsZQcECWlzQW5pYU5GVAQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFEm5mdENyZWF0aW9uQWRkcmVzcwkArAICCQCsAgICBG5mdF8JANgEAQgFBWFzc2V0AmlkAgdfaXNzdWVyAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAMJAAACBQFzAiMzUE1raTVzSEJzUWI0S2dEa25iVXdzTDNZZ3hhQ3phWm5DSgkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUCDEJvcmVkIEFuaWEgIwcHAwUKaXNFYWdsZU5GVAYFCWlzQW5pYU5GVAEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBWFzc2V0AwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFEm5mdENyZWF0aW9uQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBEWdldEFkZHJlc3NGb3JXcmFwAQVhc3NldAMJARFpZlVsdHJhU3Rha2luZ05mdAEFBWFzc2V0CQEHQWRkcmVzcwEFFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIDCQEPaWZXYXZlc1B1bmtzTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNQdW5rc1dyYXBwZXIDCQEMaWZTaWduQXJ0TmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIDCQEJaWZEdWNrTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUObmZ0RHVja1dyYXBwZXIDCQEPaWZXYXZlc0xhbmRzTkZUAQUFYXNzZXQJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNMYW5kc1dyYXBwZXIFBHVuaXQBE2dldEFkZHJlc3NGb3JVbndyYXABBm5mdFN0cgQJaXNTaWduQXJ0BAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIJAKwCAgkArAICAgtzaWduQXJ0TmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEBmlzRHVjawQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAgdfZHVja0lkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwQOaXNVbHRyYVN0YWtpbmcEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNQdW5rcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNMYW5kcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzTGFuZHNXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcDBQ5pc1VsdHJhU3Rha2luZwkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyAwUMaXNXYXZlc1B1bmtzCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyAwUJaXNTaWduQXJ0CQEHQWRkcmVzcwEFEW5mdFNpZ25BcnRXcmFwcGVyAwUGaXNEdWNrCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyAwUMaXNXYXZlc0xhbmRzCQEHQWRkcmVzcwEFFG5mdFdhdmVzTGFuZHNXcmFwcGVyBQR1bml0BAFpAQ5sb2NrQW5kU2VsbE5GVAMLYnV5T3V0UHJpY2UNYnV5T3V0QXNzZXRJZA1zZWxsZXJDb21tZW50BAdhc3NldElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEC3dyYXBBZGRyZXNzCQERZ2V0QWRkcmVzc0ZvcldyYXABBQVhc3NldAQOc3Rha2VkTkZUSWRTdHIDCQEJaXNEZWZpbmVkAQULd3JhcEFkZHJlc3MEDGxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIEbG9jawUDbmlsCQDMCAIJAJEDAggFAWkIcGF5bWVudHMAAAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIpU29tdGhpbmcgd3Jvbmcgd2hlbiBsb2NrIE5GVCBpbiBhZGRyZXNzOiAJANgEAQgJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzBWJ5dGVzAwkAAAIFDGxvY2tlZE5mdFN0cgUMbG9ja2VkTmZ0U3RyBQxsb2NrZWROZnRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JANgEAQgFBWFzc2V0AmlkAwkAZgIJALECAQUOc3Rha2VkTkZUSWRTdHIAAAQDaW52CQD8BwQJAQdBZGRyZXNzAQUabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MCB3NlbGxORlQJAMwIAgULYnV5T3V0UHJpY2UJAMwIAgUNYnV5T3V0QXNzZXRJZAkAzAgCBQ1zZWxsZXJDb21tZW50BQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUOc3Rha2VkTkZUSWRTdHIAAQUDbmlsAwkAAAIFA2ludgUDaW52BQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhpUaGUgY3JlYXRlZCBORlQgaXMgaW52YWxpZAFpARNjYW5jZWxTZWxsQW5kVW5sb2NrAQVuZnRJZAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQVuZnRJZAQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUFbmZ0SWQDCQEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBQVhc3NldAQOY2FuY2VsZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBBRptYXJrZXRwbGFjZUNvbnRyYWN0QWRkcmVzcwIKY2FuY2VsU2VsbAkAzAgCBQVuZnRJZAUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIjU29tdGhpbmcgd3Jvbmcgd2hlbiBjYW5jZWwgc2VsbCBORlQDCQAAAgUOY2FuY2VsZWROZnRTdHIFDmNhbmNlbGVkTmZ0U3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBA51bmxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIGdW5sb2NrBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIIBQVhc3NldAJpZAABBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQkArAICAitTb210aGluZyB3cm9uZyB3aGVuIHVubG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQ51bmxvY2tlZE5mdFN0cgUOdW5sb2NrZWROZnRTdHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ5jYW5jZWxlZE5mdFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQZ1bmxvY2sABAVhc3NldAkBBXZhbHVlAQkA7AcBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQDAwkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQJAAACCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAABBwQKYXNzZXRJZFN0cgkA2AQBCAUFYXNzZXQCaWQEC3dyYXBBZGRyZXNzCQETZ2V0QWRkcmVzc0ZvclVud3JhcAEFCmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQULd3JhcEFkZHJlc3MEDnVubG9ja2VkTmZ0U3RyBAckbWF0Y2gwCQD8BwQJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzAgZ1bmxvY2sFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggFBWFzc2V0AmlkAAEFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICK1NvbXRoaW5nIHdyb25nIHdoZW4gdW5sb2NrIE5GVCBpbiBhZGRyZXNzOiAJANgEAQgJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzBWJ5dGVzAwkAAAIFDnVubG9ja2VkTmZ0U3RyBQ51bmxvY2tlZE5mdFN0cgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwFDnVubG9ja2VkTmZ0U3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEIBQVhc3NldAJpZAUDbmlsCQDYBAEIBQVhc3NldAJpZAkAAgECE0l2YWxpZCBORlQgYXR0YWNoZWQBaQEDYnV5AQVuZnRJZAQJYm91Z2h0TmZ0BAckbWF0Y2gwCQD8BwQJAQdBZGRyZXNzAQUabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MCBmJ1eU5GVAkAzAgCBQVuZnRJZAUDbmlsCAUBaQhwYXltZW50cwMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAhtTb210aGluZyB3cm9uZyB3aGVuIGJ1eSBORlQDCQAAAgUJYm91Z2h0TmZ0BQlib3VnaHROZnQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUJYm91Z2h0TmZ0AwMJAGYCCQCxAgEFCWJvdWdodE5mdAAACQEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBQVhc3NldAcEC3dyYXBBZGRyZXNzCQETZ2V0QWRkcmVzc0ZvclVud3JhcAEFBW5mdElkAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBA51bmxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIGdW5sb2NrBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIIBQVhc3NldAJpZAABBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQkArAICAitTb210aGluZyB3cm9uZyB3aGVuIHVubG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQ51bmxvY2tlZE5mdFN0cgUOdW5sb2NrZWROZnRTdHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQlib3VnaHROZnQFA25pbAkAAgECEUl2YWxpZCBib3VnaHQgTkZUCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuAQJ0eAEGdmVyaWZ5AAkA9AMDCAUCdHgJYm9keUJ5dGVzCQCRAwIIBQJ0eAZwcm9vZnMAAAgFAnR4D3NlbmRlclB1YmxpY0tleQsM61k=", "height": 3362242, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FV6afV32nJ7MgELxLv4AzyLaPY4KXDWHKsXDnM53m8iK Next: 5t286gNF2aN3ujQCDQWR2QqCbmX8jx7VJcMpavGbQyx1 Diff:
OldNewDifferences
1515
1616 let nftWavesPunksWrapper = base58'3PD1sd55PYzmGUrQ896Qt3uvdbtgjCVpajE'
1717
18+let nftWavesLandsWrapper = base58'3PCW9q51iwFiaDZB8SSRgc7jqjYgTgQy5T3'
19+
1820 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
1921
2022 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
3032 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3133
3234 let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
35+
36+let wlIssuerAddress = Address(base58'3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1')
37+
38+func ifWavesLandsNFT (asset) = if (if (if ((asset.issuer == wlIssuerAddress))
39+ then (asset.decimals == 0)
40+ else false)
41+ then (asset.reissuable == false)
42+ else false)
43+ then (asset.quantity == 1)
44+ else false
45+
3346
3447 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
3548 then (asset.decimals == 0)
98111 then Address(nftSignArtWrapper)
99112 else if (ifDuckNft(asset))
100113 then Address(nftDuckWrapper)
101- else unit
114+ else if (ifWavesLandsNFT(asset))
115+ then Address(nftWavesLandsWrapper)
116+ else unit
102117
103118
104119 func getAddressForUnwrap (nftStr) = {
126141 case _ =>
127142 false
128143 }
144+ let isWavesLands = match getString(Address(nftWavesLandsWrapper), (("nft_" + nftStr) + "_assetId")) {
145+ case s: String =>
146+ (size(s) > 0)
147+ case _ =>
148+ false
149+ }
129150 if (isUltraStaking)
130151 then Address(nftUltraStakingWrapper)
131152 else if (isWavesPunks)
134155 then Address(nftSignArtWrapper)
135156 else if (isDuck)
136157 then Address(nftDuckWrapper)
137- else unit
158+ else if (isWavesLands)
159+ then Address(nftWavesLandsWrapper)
160+ else unit
138161 }
139162
140163
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
18+let nftWavesLandsWrapper = base58'3PCW9q51iwFiaDZB8SSRgc7jqjYgTgQy5T3'
19+
1820 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
1921
2022 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
2123
2224 let marketplaceContractAddress = base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc'
2325
2426 let zombieIssuerAddress = Address(base58'3P7QrWH1ETLfKAJcFHYPJmQusNbDuW98Hop')
2527
2628 let punksIssuerAddress = Address(base58'3P8rLVnwrTf4k5AB3emuduhZZb1yKcitTHy')
2729
2830 let aliensIssuerAddress = Address(base58'3PBkrb5LrGDvCwkx4VHZzZkqMNvvGqrJJWj')
2931
3032 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3133
3234 let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
35+
36+let wlIssuerAddress = Address(base58'3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1')
37+
38+func ifWavesLandsNFT (asset) = if (if (if ((asset.issuer == wlIssuerAddress))
39+ then (asset.decimals == 0)
40+ else false)
41+ then (asset.reissuable == false)
42+ else false)
43+ then (asset.quantity == 1)
44+ else false
45+
3346
3447 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
3548 then (asset.decimals == 0)
3649 else false)
3750 then (asset.reissuable == false)
3851 else false)
3952 then (asset.quantity == 1)
4053 else false
4154
4255
4356 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
4457 then true
4558 else (asset.issuer.bytes == breederAddress))
4659 then (asset.decimals == 0)
4760 else false)
4861 then (asset.reissuable == false)
4962 else false)
5063 then (asset.quantity == 1)
5164 else false
5265
5366
5467 func ifWavesPunksNft (asset) = if (if (if ((valueOrElse(indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress, madPunks2IssuerAddress], asset.issuer), -1) >= 0))
5568 then (asset.decimals == 0)
5669 else false)
5770 then (asset.reissuable == false)
5871 else false)
5972 then (asset.quantity == 1)
6073 else false
6174
6275
6376 func ifUltraStakingNft (asset) = {
6477 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
6578 case s: String =>
6679 (s == "eagle")
6780 case _ =>
6881 false
6982 }
7083 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
7184 case s: String =>
7285 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
7386 then contains(asset.name, "Bored Ania #")
7487 else false
7588 case _ =>
7689 false
7790 }
7891 if (isEagleNFT)
7992 then true
8093 else isAniaNFT
8194 }
8295
8396
8497 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
8598 then (asset.decimals == 0)
8699 else false)
87100 then (asset.reissuable == false)
88101 else false)
89102 then (asset.quantity == 1)
90103 else false
91104
92105
93106 func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
94107 then Address(nftUltraStakingWrapper)
95108 else if (ifWavesPunksNft(asset))
96109 then Address(nftWavesPunksWrapper)
97110 else if (ifSignArtNft(asset))
98111 then Address(nftSignArtWrapper)
99112 else if (ifDuckNft(asset))
100113 then Address(nftDuckWrapper)
101- else unit
114+ else if (ifWavesLandsNFT(asset))
115+ then Address(nftWavesLandsWrapper)
116+ else unit
102117
103118
104119 func getAddressForUnwrap (nftStr) = {
105120 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
106121 case s: String =>
107122 (size(s) > 0)
108123 case _ =>
109124 false
110125 }
111126 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
112127 case s: String =>
113128 (size(s) > 0)
114129 case _ =>
115130 false
116131 }
117132 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
118133 case s: String =>
119134 (size(s) > 0)
120135 case _ =>
121136 false
122137 }
123138 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
124139 case s: String =>
125140 (size(s) > 0)
126141 case _ =>
127142 false
128143 }
144+ let isWavesLands = match getString(Address(nftWavesLandsWrapper), (("nft_" + nftStr) + "_assetId")) {
145+ case s: String =>
146+ (size(s) > 0)
147+ case _ =>
148+ false
149+ }
129150 if (isUltraStaking)
130151 then Address(nftUltraStakingWrapper)
131152 else if (isWavesPunks)
132153 then Address(nftWavesPunksWrapper)
133154 else if (isSignArt)
134155 then Address(nftSignArtWrapper)
135156 else if (isDuck)
136157 then Address(nftDuckWrapper)
137- else unit
158+ else if (isWavesLands)
159+ then Address(nftWavesLandsWrapper)
160+ else unit
138161 }
139162
140163
141164 @Callable(i)
142165 func lockAndSellNFT (buyOutPrice,buyOutAssetId,sellerComment) = {
143166 let assetId = value(value(i.payments[0]).assetId)
144167 let asset = value(assetInfo(assetId))
145168 let wrapAddress = getAddressForWrap(asset)
146169 let stakedNFTIdStr = if (isDefined(wrapAddress))
147170 then {
148171 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
149172 case s: String =>
150173 s
151174 case _ =>
152175 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
153176 }
154177 if ((lockedNftStr == lockedNftStr))
155178 then lockedNftStr
156179 else throw("Strict value is not equal to itself.")
157180 }
158181 else toBase58String(asset.id)
159182 if ((size(stakedNFTIdStr) > 0))
160183 then {
161184 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId, sellerComment], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
162185 if ((inv == inv))
163186 then nil
164187 else throw("Strict value is not equal to itself.")
165188 }
166189 else throw("The created NFT is invalid")
167190 }
168191
169192
170193
171194 @Callable(i)
172195 func cancelSellAndUnlock (nftId) = {
173196 let asset = value(assetInfo(fromBase58String(nftId)))
174197 let wrapAddress = getAddressForUnwrap(nftId)
175198 if (isNftFromMarketplace(asset))
176199 then {
177200 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
178201 case s: String =>
179202 s
180203 case _ =>
181204 throw("Somthing wrong when cancel sell NFT")
182205 }
183206 if ((canceledNftStr == canceledNftStr))
184207 then if (isDefined(wrapAddress))
185208 then {
186209 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
187210 case s: String =>
188211 s
189212 case _ =>
190213 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
191214 }
192215 if ((unlockedNftStr == unlockedNftStr))
193216 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
194217 else throw("Strict value is not equal to itself.")
195218 }
196219 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
197220 else throw("Strict value is not equal to itself.")
198221 }
199222 else throw("Ivalid NFT attached")
200223 }
201224
202225
203226
204227 @Callable(i)
205228 func unlock () = {
206229 let asset = value(assetInfo(value(i.payments[0].assetId)))
207230 if (if (isNftFromMarketplace(asset))
208231 then (i.payments[0].amount == 1)
209232 else false)
210233 then {
211234 let assetIdStr = toBase58String(asset.id)
212235 let wrapAddress = getAddressForUnwrap(assetIdStr)
213236 if (isDefined(wrapAddress))
214237 then {
215238 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
216239 case s: String =>
217240 s
218241 case _ =>
219242 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
220243 }
221244 if ((unlockedNftStr == unlockedNftStr))
222245 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
223246 else throw("Strict value is not equal to itself.")
224247 }
225248 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
226249 }
227250 else throw("Ivalid NFT attached")
228251 }
229252
230253
231254
232255 @Callable(i)
233256 func buy (nftId) = {
234257 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
235258 case s: String =>
236259 s
237260 case _ =>
238261 throw("Somthing wrong when buy NFT")
239262 }
240263 if ((boughtNft == boughtNft))
241264 then {
242265 let asset = value(assetInfo(fromBase58String(boughtNft)))
243266 if (if ((size(boughtNft) > 0))
244267 then isNftFromMarketplace(asset)
245268 else false)
246269 then {
247270 let wrapAddress = getAddressForUnwrap(nftId)
248271 if (isDefined(wrapAddress))
249272 then {
250273 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
251274 case s: String =>
252275 s
253276 case _ =>
254277 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
255278 }
256279 if ((unlockedNftStr == unlockedNftStr))
257280 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
258281 else throw("Strict value is not equal to itself.")
259282 }
260283 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
261284 }
262285 else throw("Ivalid bought NFT")
263286 }
264287 else throw("Strict value is not equal to itself.")
265288 }
266289
267290
268291 @Verifier(tx)
269292 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
270293

github/deemru/w8io/3ef1775 
47.86 ms