tx · FGEtnvnvTzTZFygJA3g85pGgDWp57iyaN38MYct3nNDv

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.00700000 Waves

2022.08.23 20:23 [3262898] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "FGEtnvnvTzTZFygJA3g85pGgDWp57iyaN38MYct3nNDv", "fee": 700000, "feeAssetId": null, "timestamp": 1661275406991, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "2LrnKx7sqDjDnGpavZsUudJpECqo8opMfNQoZgeRdn44rTPMnqKViQWoH5517dz6Fbszsa7i4VJ3TkrraDX9A6d2" ], "script": "base64:BgIUCAISBAoCAQgSAwoBCBIAEgMKAQgVABJuZnRDcmVhdGlvbkFkZHJlc3MBGgFXk93E0hfnIAr99yESTvDwdmcmgwN41FxMABFlYWdsZUJ1eWVyQWRkcmVzcwEaAVc6UWFHh6QXedxglaC2Zss83iUvrjDv+/YAGXNpZ25BcnROZnRDcmVhdGlvbkFkZHJlc3MBGgFXe2TVW9aeF7mq0+aP/ANcyMQW+Ju6hiniAA5uZnREdWNrV3JhcHBlcgEaAVcUrURSm6X9/2EX/9g65/FnioCcFLgvzx4AEW5mdFNpZ25BcnRXcmFwcGVyARoBV+6hGhXD8bZfRGX/X8gVOcR5RdUYRUcwBwAWbmZ0VWx0cmFTdGFraW5nV3JhcHBlcgEaAVfArcJtMs2Rr6VXRdiH8lPBWo7IvSaKygsAFG5mdFdhdmVzUHVua3NXcmFwcGVyARoBV3maijAaCdWdqMonaCPZG9Wh5zSQxuiDLQAQaW5jdWJhdG9yQWRkcmVzcwEaAVeMtUiffp4V1RiXjht3+wl/Z2La4W1jJUkADmJyZWVkZXJBZGRyZXNzARoBV37nuflxxEx4XH14e4ZxgkMVpnlqD7YfHgAabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MBGgFXXYvxX8soIGsfZqPIbtoLqJftD+j9yUTxABN6b21iaWVJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXPCJrb4M8vOfQ2wBTO7F4j48kEea4E66TABJwdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdL7E+N6trSBKdJcVFRWraSu0HUX4XC7GgAE2FsaWVuc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdry0+k26a6aqg1+8p1EXR1zqjPhy4X0hgAFW1hZFB1bmtzSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV7YVkAcYYmCX66dIlynyqzXNfuQCqg2G2QEMaWZTaWduQXJ0TmZ0AQVhc3NldAMDAwkAAAIICAUFYXNzZXQGaXNzdWVyBWJ5dGVzBRlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEJaWZEdWNrTmZ0AQVhc3NldAMDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUQaW5jdWJhdG9yQWRkcmVzcwYJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUOYnJlZWRlckFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHAQ9pZldhdmVzUHVua3NOZnQBBWFzc2V0AwMDAwMDCQAAAggFBWFzc2V0Bmlzc3VlcgUTem9tYmllSXNzdWVyQWRkcmVzcwYJAAACCAUFYXNzZXQGaXNzdWVyBRJwdW5rc0lzc3VlckFkZHJlc3MGCQAAAggFBWFzc2V0Bmlzc3VlcgUTYWxpZW5zSXNzdWVyQWRkcmVzcwYJAAACCAUFYXNzZXQGaXNzdWVyBRVtYWRQdW5rc0lzc3VlckFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHARFpZlVsdHJhU3Rha2luZ05mdAEFYXNzZXQECmlzRWFnbGVORlQEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRFlYWdsZUJ1eWVyQWRkcmVzcwkArAICCQCsAgICBGFydF8JANgEAQgFBWFzc2V0AmlkAgVfdHlwZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAAACBQFzAgVlYWdsZQcECWlzQW5pYU5GVAQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFEm5mdENyZWF0aW9uQWRkcmVzcwkArAICCQCsAgICBG5mdF8JANgEAQgFBWFzc2V0AmlkAgdfaXNzdWVyAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAMJAAACBQFzAiMzUE1raTVzSEJzUWI0S2dEa25iVXdzTDNZZ3hhQ3phWm5DSgkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUCDEJvcmVkIEFuaWEgIwcHAwUKaXNFYWdsZU5GVAYFCWlzQW5pYU5GVAEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBWFzc2V0AwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFEm5mdENyZWF0aW9uQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBEWdldEFkZHJlc3NGb3JXcmFwAQVhc3NldAMJARFpZlVsdHJhU3Rha2luZ05mdAEFBWFzc2V0CQEHQWRkcmVzcwEFFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIDCQEPaWZXYXZlc1B1bmtzTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNQdW5rc1dyYXBwZXIDCQEMaWZTaWduQXJ0TmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIDCQEJaWZEdWNrTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUObmZ0RHVja1dyYXBwZXIFBHVuaXQBE2dldEFkZHJlc3NGb3JVbndyYXABBm5mdFN0cgQJaXNTaWduQXJ0BAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIJAKwCAgkArAICAgtzaWduQXJ0TmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEBmlzRHVjawQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAgdfZHVja0lkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwQOaXNVbHRyYVN0YWtpbmcEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNQdW5rcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcDBQ5pc1VsdHJhU3Rha2luZwkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyAwUMaXNXYXZlc1B1bmtzCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyAwUJaXNTaWduQXJ0CQEHQWRkcmVzcwEFEW5mdFNpZ25BcnRXcmFwcGVyAwUGaXNEdWNrCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyBQR1bml0BAFpAQ5sb2NrQW5kU2VsbE5GVAILYnV5T3V0UHJpY2UNYnV5T3V0QXNzZXRJZAQHYXNzZXRJZAkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAt3cmFwQWRkcmVzcwkBEWdldEFkZHJlc3NGb3JXcmFwAQUFYXNzZXQEDnN0YWtlZE5GVElkU3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBAxsb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBGxvY2sFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICKVNvbXRoaW5nIHdyb25nIHdoZW4gbG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQxsb2NrZWROZnRTdHIFDGxvY2tlZE5mdFN0cgUMbG9ja2VkTmZ0U3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDYBAEIBQVhc3NldAJpZAMJAGYCCQCxAgEFDnN0YWtlZE5GVElkU3RyAAAEA2ludgkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgdzZWxsTkZUCQDMCAIFC2J1eU91dFByaWNlCQDMCAIFDWJ1eU91dEFzc2V0SWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQ5zdGFrZWRORlRJZFN0cgABBQNuaWwDCQAAAgUDaW52BQNpbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECGlRoZSBjcmVhdGVkIE5GVCBpcyBpbnZhbGlkAWkBE2NhbmNlbFNlbGxBbmRVbmxvY2sBBW5mdElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFBW5mdElkBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQVuZnRJZAMJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BA5jYW5jZWxlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgpjYW5jZWxTZWxsCQDMCAIFBW5mdElkBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAiNTb210aGluZyB3cm9uZyB3aGVuIGNhbmNlbCBzZWxsIE5GVAMJAAACBQ5jYW5jZWxlZE5mdFN0cgUOY2FuY2VsZWROZnRTdHIDCQEJaXNEZWZpbmVkAQULd3JhcEFkZHJlc3MEDnVubG9ja2VkTmZ0U3RyBAckbWF0Y2gwCQD8BwQJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzAgZ1bmxvY2sFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggFBWFzc2V0AmlkAAEFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICK1NvbXRoaW5nIHdyb25nIHdoZW4gdW5sb2NrIE5GVCBpbiBhZGRyZXNzOiAJANgEAQgJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzBWJ5dGVzAwkAAAIFDnVubG9ja2VkTmZ0U3RyBQ51bmxvY2tlZE5mdFN0cgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ51bmxvY2tlZE5mdFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDmNhbmNlbGVkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhNJdmFsaWQgTkZUIGF0dGFjaGVkAWkBBnVubG9jawAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMDCQEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBQVhc3NldAkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEHBAphc3NldElkU3RyCQDYBAEIBQVhc3NldAJpZAQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAUOdW5sb2NrZWROZnRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQgFBWFzc2V0AmlkBQNuaWwJANgEAQgFBWFzc2V0AmlkCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQNidXkBBW5mdElkBAlib3VnaHROZnQEByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBBRptYXJrZXRwbGFjZUNvbnRyYWN0QWRkcmVzcwIGYnV5TkZUCQDMCAIFBW5mdElkBQNuaWwIBQFpCHBheW1lbnRzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECG1NvbXRoaW5nIHdyb25nIHdoZW4gYnV5IE5GVAMJAAACBQlib3VnaHROZnQFCWJvdWdodE5mdAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQlib3VnaHROZnQDAwkAZgIJALECAQUJYm91Z2h0TmZ0AAAJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BwQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUFbmZ0SWQDCQEJaXNEZWZpbmVkAQULd3JhcEFkZHJlc3MEDnVubG9ja2VkTmZ0U3RyBAckbWF0Y2gwCQD8BwQJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzAgZ1bmxvY2sFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggFBWFzc2V0AmlkAAEFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICK1NvbXRoaW5nIHdyb25nIHdoZW4gdW5sb2NrIE5GVCBpbiBhZGRyZXNzOiAJANgEAQgJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzBWJ5dGVzAwkAAAIFDnVubG9ja2VkTmZ0U3RyBQ51bmxvY2tlZE5mdFN0cgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ51bmxvY2tlZE5mdFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFCWJvdWdodE5mdAUDbmlsCQACAQIRSXZhbGlkIGJvdWdodCBORlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5ly5ISw==", "height": 3262898, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: CfiXxuUrdGWU19RQJFNZ8NCyq268bTT2gG8Cn1ueetzX Next: BPF3R9wa3hHvh7ujuMyXjvRQ5HbFh6888RxBrErg2r2y Diff:
OldNewDifferences
2727
2828 let aliensIssuerAddress = Address(base58'3PBkrb5LrGDvCwkx4VHZzZkqMNvvGqrJJWj')
2929
30+let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
31+
3032 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
3133 then (asset.decimals == 0)
3234 else false)
4749 else false
4850
4951
50-func ifWavesPunksNft (asset) = if (if (if (if (if ((asset.issuer == zombieIssuerAddress))
52+func ifWavesPunksNft (asset) = if (if (if (if (if (if ((asset.issuer == zombieIssuerAddress))
5153 then true
5254 else (asset.issuer == punksIssuerAddress))
5355 then true
5456 else (asset.issuer == aliensIssuerAddress))
57+ then true
58+ else (asset.issuer == madPunksIssuerAddress))
5559 then (asset.decimals == 0)
5660 else false)
5761 then (asset.reissuable == false)
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
30+let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
31+
3032 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
3133 then (asset.decimals == 0)
3234 else false)
3335 then (asset.reissuable == false)
3436 else false)
3537 then (asset.quantity == 1)
3638 else false
3739
3840
3941 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
4042 then true
4143 else (asset.issuer.bytes == breederAddress))
4244 then (asset.decimals == 0)
4345 else false)
4446 then (asset.reissuable == false)
4547 else false)
4648 then (asset.quantity == 1)
4749 else false
4850
4951
50-func ifWavesPunksNft (asset) = if (if (if (if (if ((asset.issuer == zombieIssuerAddress))
52+func ifWavesPunksNft (asset) = if (if (if (if (if (if ((asset.issuer == zombieIssuerAddress))
5153 then true
5254 else (asset.issuer == punksIssuerAddress))
5355 then true
5456 else (asset.issuer == aliensIssuerAddress))
57+ then true
58+ else (asset.issuer == madPunksIssuerAddress))
5559 then (asset.decimals == 0)
5660 else false)
5761 then (asset.reissuable == false)
5862 else false)
5963 then (asset.quantity == 1)
6064 else false
6165
6266
6367 func ifUltraStakingNft (asset) = {
6468 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
6569 case s: String =>
6670 (s == "eagle")
6771 case _ =>
6872 false
6973 }
7074 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
7175 case s: String =>
7276 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
7377 then contains(asset.name, "Bored Ania #")
7478 else false
7579 case _ =>
7680 false
7781 }
7882 if (isEagleNFT)
7983 then true
8084 else isAniaNFT
8185 }
8286
8387
8488 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
8589 then (asset.decimals == 0)
8690 else false)
8791 then (asset.reissuable == false)
8892 else false)
8993 then (asset.quantity == 1)
9094 else false
9195
9296
9397 func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
9498 then Address(nftUltraStakingWrapper)
9599 else if (ifWavesPunksNft(asset))
96100 then Address(nftWavesPunksWrapper)
97101 else if (ifSignArtNft(asset))
98102 then Address(nftSignArtWrapper)
99103 else if (ifDuckNft(asset))
100104 then Address(nftDuckWrapper)
101105 else unit
102106
103107
104108 func getAddressForUnwrap (nftStr) = {
105109 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
106110 case s: String =>
107111 (size(s) > 0)
108112 case _ =>
109113 false
110114 }
111115 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
112116 case s: String =>
113117 (size(s) > 0)
114118 case _ =>
115119 false
116120 }
117121 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
118122 case s: String =>
119123 (size(s) > 0)
120124 case _ =>
121125 false
122126 }
123127 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
124128 case s: String =>
125129 (size(s) > 0)
126130 case _ =>
127131 false
128132 }
129133 if (isUltraStaking)
130134 then Address(nftUltraStakingWrapper)
131135 else if (isWavesPunks)
132136 then Address(nftWavesPunksWrapper)
133137 else if (isSignArt)
134138 then Address(nftSignArtWrapper)
135139 else if (isDuck)
136140 then Address(nftDuckWrapper)
137141 else unit
138142 }
139143
140144
141145 @Callable(i)
142146 func lockAndSellNFT (buyOutPrice,buyOutAssetId) = {
143147 let assetId = value(value(i.payments[0]).assetId)
144148 let asset = value(assetInfo(assetId))
145149 let wrapAddress = getAddressForWrap(asset)
146150 let stakedNFTIdStr = if (isDefined(wrapAddress))
147151 then {
148152 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
149153 case s: String =>
150154 s
151155 case _ =>
152156 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
153157 }
154158 if ((lockedNftStr == lockedNftStr))
155159 then lockedNftStr
156160 else throw("Strict value is not equal to itself.")
157161 }
158162 else toBase58String(asset.id)
159163 if ((size(stakedNFTIdStr) > 0))
160164 then {
161165 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
162166 if ((inv == inv))
163167 then nil
164168 else throw("Strict value is not equal to itself.")
165169 }
166170 else throw("The created NFT is invalid")
167171 }
168172
169173
170174
171175 @Callable(i)
172176 func cancelSellAndUnlock (nftId) = {
173177 let asset = value(assetInfo(fromBase58String(nftId)))
174178 let wrapAddress = getAddressForUnwrap(nftId)
175179 if (isNftFromMarketplace(asset))
176180 then {
177181 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
178182 case s: String =>
179183 s
180184 case _ =>
181185 throw("Somthing wrong when cancel sell NFT")
182186 }
183187 if ((canceledNftStr == canceledNftStr))
184188 then if (isDefined(wrapAddress))
185189 then {
186190 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
187191 case s: String =>
188192 s
189193 case _ =>
190194 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
191195 }
192196 if ((unlockedNftStr == unlockedNftStr))
193197 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
194198 else throw("Strict value is not equal to itself.")
195199 }
196200 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
197201 else throw("Strict value is not equal to itself.")
198202 }
199203 else throw("Ivalid NFT attached")
200204 }
201205
202206
203207
204208 @Callable(i)
205209 func unlock () = {
206210 let asset = value(assetInfo(value(i.payments[0].assetId)))
207211 if (if (isNftFromMarketplace(asset))
208212 then (i.payments[0].amount == 1)
209213 else false)
210214 then {
211215 let assetIdStr = toBase58String(asset.id)
212216 let wrapAddress = getAddressForUnwrap(assetIdStr)
213217 if (isDefined(wrapAddress))
214218 then {
215219 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
216220 case s: String =>
217221 s
218222 case _ =>
219223 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
220224 }
221225 if ((unlockedNftStr == unlockedNftStr))
222226 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
223227 else throw("Strict value is not equal to itself.")
224228 }
225229 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
226230 }
227231 else throw("Ivalid NFT attached")
228232 }
229233
230234
231235
232236 @Callable(i)
233237 func buy (nftId) = {
234238 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
235239 case s: String =>
236240 s
237241 case _ =>
238242 throw("Somthing wrong when buy NFT")
239243 }
240244 if ((boughtNft == boughtNft))
241245 then {
242246 let asset = value(assetInfo(fromBase58String(boughtNft)))
243247 if (if ((size(boughtNft) > 0))
244248 then isNftFromMarketplace(asset)
245249 else false)
246250 then {
247251 let wrapAddress = getAddressForUnwrap(nftId)
248252 if (isDefined(wrapAddress))
249253 then {
250254 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
251255 case s: String =>
252256 s
253257 case _ =>
254258 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
255259 }
256260 if ((unlockedNftStr == unlockedNftStr))
257261 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
258262 else throw("Strict value is not equal to itself.")
259263 }
260264 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
261265 }
262266 else throw("Ivalid bought NFT")
263267 }
264268 else throw("Strict value is not equal to itself.")
265269 }
266270
267271
268272 @Verifier(tx)
269273 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
270274

github/deemru/w8io/3ef1775 
39.91 ms