tx · BPF3R9wa3hHvh7ujuMyXjvRQ5HbFh6888RxBrErg2r2y

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.00700000 Waves

2022.08.24 07:51 [3263578] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "BPF3R9wa3hHvh7ujuMyXjvRQ5HbFh6888RxBrErg2r2y", "fee": 700000, "feeAssetId": null, "timestamp": 1661316734340, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "3FAgGpnjvd9Znj7kPgJGXDrCDm2jVCt5BfvFUumMVWRb5v7ydzpLrYJ3neGd75ndh5w197jYtm6GJkmiaYM92tBm" ], "script": "base64:BgIUCAISBAoCAQgSAwoBCBIAEgMKAQgWABJuZnRDcmVhdGlvbkFkZHJlc3MBGgFXk93E0hfnIAr99yESTvDwdmcmgwN41FxMABFlYWdsZUJ1eWVyQWRkcmVzcwEaAVc6UWFHh6QXedxglaC2Zss83iUvrjDv+/YAGXNpZ25BcnROZnRDcmVhdGlvbkFkZHJlc3MBGgFXe2TVW9aeF7mq0+aP/ANcyMQW+Ju6hiniAA5uZnREdWNrV3JhcHBlcgEaAVcUrURSm6X9/2EX/9g65/FnioCcFLgvzx4AEW5mdFNpZ25BcnRXcmFwcGVyARoBV+6hGhXD8bZfRGX/X8gVOcR5RdUYRUcwBwAWbmZ0VWx0cmFTdGFraW5nV3JhcHBlcgEaAVfArcJtMs2Rr6VXRdiH8lPBWo7IvSaKygsAFG5mdFdhdmVzUHVua3NXcmFwcGVyARoBV3maijAaCdWdqMonaCPZG9Wh5zSQxuiDLQAQaW5jdWJhdG9yQWRkcmVzcwEaAVeMtUiffp4V1RiXjht3+wl/Z2La4W1jJUkADmJyZWVkZXJBZGRyZXNzARoBV37nuflxxEx4XH14e4ZxgkMVpnlqD7YfHgAabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MBGgFXXYvxX8soIGsfZqPIbtoLqJftD+j9yUTxABN6b21iaWVJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXPCJrb4M8vOfQ2wBTO7F4j48kEea4E66TABJwdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdL7E+N6trSBKdJcVFRWraSu0HUX4XC7GgAE2FsaWVuc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdry0+k26a6aqg1+8p1EXR1zqjPhy4X0hgAFW1hZFB1bmtzSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV7YVkAcYYmCX66dIlynyqzXNfuQCqg2G2QAWbWFkUHVua3MySXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV0ZNahDUFfD9r3USTGD3gDwr+HZkIHELBQEMaWZTaWduQXJ0TmZ0AQVhc3NldAMDAwkAAAIICAUFYXNzZXQGaXNzdWVyBWJ5dGVzBRlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEJaWZEdWNrTmZ0AQVhc3NldAMDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUQaW5jdWJhdG9yQWRkcmVzcwYJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUOYnJlZWRlckFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHAQ9pZldhdmVzUHVua3NOZnQBBWFzc2V0AwMDCQBnAgkBC3ZhbHVlT3JFbHNlAgkAzwgCCQDMCAIFE3pvbWJpZUlzc3VlckFkZHJlc3MJAMwIAgUScHVua3NJc3N1ZXJBZGRyZXNzCQDMCAIFE2FsaWVuc0lzc3VlckFkZHJlc3MJAMwIAgUVbWFkUHVua3NJc3N1ZXJBZGRyZXNzCQDMCAIFFm1hZFB1bmtzMklzc3VlckFkZHJlc3MFA25pbAgFBWFzc2V0Bmlzc3VlcgD///////////8BAAAJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHARFpZlVsdHJhU3Rha2luZ05mdAEFYXNzZXQECmlzRWFnbGVORlQEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRFlYWdsZUJ1eWVyQWRkcmVzcwkArAICCQCsAgICBGFydF8JANgEAQgFBWFzc2V0AmlkAgVfdHlwZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAAACBQFzAgVlYWdsZQcECWlzQW5pYU5GVAQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFEm5mdENyZWF0aW9uQWRkcmVzcwkArAICCQCsAgICBG5mdF8JANgEAQgFBWFzc2V0AmlkAgdfaXNzdWVyAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAMJAAACBQFzAiMzUE1raTVzSEJzUWI0S2dEa25iVXdzTDNZZ3hhQ3phWm5DSgkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUCDEJvcmVkIEFuaWEgIwcHAwUKaXNFYWdsZU5GVAYFCWlzQW5pYU5GVAEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBWFzc2V0AwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFEm5mdENyZWF0aW9uQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBEWdldEFkZHJlc3NGb3JXcmFwAQVhc3NldAMJARFpZlVsdHJhU3Rha2luZ05mdAEFBWFzc2V0CQEHQWRkcmVzcwEFFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIDCQEPaWZXYXZlc1B1bmtzTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNQdW5rc1dyYXBwZXIDCQEMaWZTaWduQXJ0TmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIDCQEJaWZEdWNrTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUObmZ0RHVja1dyYXBwZXIFBHVuaXQBE2dldEFkZHJlc3NGb3JVbndyYXABBm5mdFN0cgQJaXNTaWduQXJ0BAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIJAKwCAgkArAICAgtzaWduQXJ0TmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEBmlzRHVjawQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAgdfZHVja0lkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwQOaXNVbHRyYVN0YWtpbmcEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNQdW5rcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcDBQ5pc1VsdHJhU3Rha2luZwkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyAwUMaXNXYXZlc1B1bmtzCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyAwUJaXNTaWduQXJ0CQEHQWRkcmVzcwEFEW5mdFNpZ25BcnRXcmFwcGVyAwUGaXNEdWNrCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyBQR1bml0BAFpAQ5sb2NrQW5kU2VsbE5GVAILYnV5T3V0UHJpY2UNYnV5T3V0QXNzZXRJZAQHYXNzZXRJZAkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAt3cmFwQWRkcmVzcwkBEWdldEFkZHJlc3NGb3JXcmFwAQUFYXNzZXQEDnN0YWtlZE5GVElkU3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBAxsb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBGxvY2sFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICKVNvbXRoaW5nIHdyb25nIHdoZW4gbG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQxsb2NrZWROZnRTdHIFDGxvY2tlZE5mdFN0cgUMbG9ja2VkTmZ0U3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDYBAEIBQVhc3NldAJpZAMJAGYCCQCxAgEFDnN0YWtlZE5GVElkU3RyAAAEA2ludgkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgdzZWxsTkZUCQDMCAIFC2J1eU91dFByaWNlCQDMCAIFDWJ1eU91dEFzc2V0SWQFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AgkA2QQBBQ5zdGFrZWRORlRJZFN0cgABBQNuaWwDCQAAAgUDaW52BQNpbnYFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECGlRoZSBjcmVhdGVkIE5GVCBpcyBpbnZhbGlkAWkBE2NhbmNlbFNlbGxBbmRVbmxvY2sBBW5mdElkBAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFBW5mdElkBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQVuZnRJZAMJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BA5jYW5jZWxlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgpjYW5jZWxTZWxsCQDMCAIFBW5mdElkBQNuaWwFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBAiNTb210aGluZyB3cm9uZyB3aGVuIGNhbmNlbCBzZWxsIE5GVAMJAAACBQ5jYW5jZWxlZE5mdFN0cgUOY2FuY2VsZWROZnRTdHIDCQEJaXNEZWZpbmVkAQULd3JhcEFkZHJlc3MEDnVubG9ja2VkTmZ0U3RyBAckbWF0Y2gwCQD8BwQJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzAgZ1bmxvY2sFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggFBWFzc2V0AmlkAAEFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICK1NvbXRoaW5nIHdyb25nIHdoZW4gdW5sb2NrIE5GVCBpbiBhZGRyZXNzOiAJANgEAQgJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzBWJ5dGVzAwkAAAIFDnVubG9ja2VkTmZ0U3RyBQ51bmxvY2tlZE5mdFN0cgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ51bmxvY2tlZE5mdFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDmNhbmNlbGVkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAAIBAhNJdmFsaWQgTkZUIGF0dGFjaGVkAWkBBnVubG9jawAEBWFzc2V0CQEFdmFsdWUBCQDsBwEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMDCQEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBQVhc3NldAkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEHBAphc3NldElkU3RyCQDYBAEIBQVhc3NldAJpZAQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAUOdW5sb2NrZWROZnRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQgFBWFzc2V0AmlkBQNuaWwJANgEAQgFBWFzc2V0AmlkCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQNidXkBBW5mdElkBAlib3VnaHROZnQEByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBBRptYXJrZXRwbGFjZUNvbnRyYWN0QWRkcmVzcwIGYnV5TkZUCQDMCAIFBW5mdElkBQNuaWwIBQFpCHBheW1lbnRzAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECG1NvbXRoaW5nIHdyb25nIHdoZW4gYnV5IE5GVAMJAAACBQlib3VnaHROZnQFCWJvdWdodE5mdAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQlib3VnaHROZnQDAwkAZgIJALECAQUJYm91Z2h0TmZ0AAAJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BwQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUFbmZ0SWQDCQEJaXNEZWZpbmVkAQULd3JhcEFkZHJlc3MEDnVubG9ja2VkTmZ0U3RyBAckbWF0Y2gwCQD8BwQJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzAgZ1bmxvY2sFA25pbAkAzAgCCQEPQXR0YWNoZWRQYXltZW50AggFBWFzc2V0AmlkAAEFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICK1NvbXRoaW5nIHdyb25nIHdoZW4gdW5sb2NrIE5GVCBpbiBhZGRyZXNzOiAJANgEAQgJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzBWJ5dGVzAwkAAAIFDnVubG9ja2VkTmZ0U3RyBQ51bmxvY2tlZE5mdFN0cgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ51bmxvY2tlZE5mdFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFCWJvdWdodE5mdAUDbmlsCQACAQIRSXZhbGlkIGJvdWdodCBORlQJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4BAnR4AQZ2ZXJpZnkACQD0AwMIBQJ0eAlib2R5Qnl0ZXMJAJEDAggFAnR4BnByb29mcwAACAUCdHgPc2VuZGVyUHVibGljS2V5eVtA+g==", "height": 3263578, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FGEtnvnvTzTZFygJA3g85pGgDWp57iyaN38MYct3nNDv Next: FV6afV32nJ7MgELxLv4AzyLaPY4KXDWHKsXDnM53m8iK Diff:
OldNewDifferences
2929
3030 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3131
32+let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
33+
3234 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
3335 then (asset.decimals == 0)
3436 else false)
4951 else false
5052
5153
52-func ifWavesPunksNft (asset) = if (if (if (if (if (if ((asset.issuer == zombieIssuerAddress))
53- then true
54- else (asset.issuer == punksIssuerAddress))
55- then true
56- else (asset.issuer == aliensIssuerAddress))
57- then true
58- else (asset.issuer == madPunksIssuerAddress))
54+func ifWavesPunksNft (asset) = if (if (if ((valueOrElse(indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress, madPunks2IssuerAddress], asset.issuer), -1) >= 0))
5955 then (asset.decimals == 0)
6056 else false)
6157 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
3030 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3131
32+let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
33+
3234 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
3335 then (asset.decimals == 0)
3436 else false)
3537 then (asset.reissuable == false)
3638 else false)
3739 then (asset.quantity == 1)
3840 else false
3941
4042
4143 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
4244 then true
4345 else (asset.issuer.bytes == breederAddress))
4446 then (asset.decimals == 0)
4547 else false)
4648 then (asset.reissuable == false)
4749 else false)
4850 then (asset.quantity == 1)
4951 else false
5052
5153
52-func ifWavesPunksNft (asset) = if (if (if (if (if (if ((asset.issuer == zombieIssuerAddress))
53- then true
54- else (asset.issuer == punksIssuerAddress))
55- then true
56- else (asset.issuer == aliensIssuerAddress))
57- then true
58- else (asset.issuer == madPunksIssuerAddress))
54+func ifWavesPunksNft (asset) = if (if (if ((valueOrElse(indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress, madPunks2IssuerAddress], asset.issuer), -1) >= 0))
5955 then (asset.decimals == 0)
6056 else false)
6157 then (asset.reissuable == false)
6258 else false)
6359 then (asset.quantity == 1)
6460 else false
6561
6662
6763 func ifUltraStakingNft (asset) = {
6864 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
6965 case s: String =>
7066 (s == "eagle")
7167 case _ =>
7268 false
7369 }
7470 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
7571 case s: String =>
7672 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
7773 then contains(asset.name, "Bored Ania #")
7874 else false
7975 case _ =>
8076 false
8177 }
8278 if (isEagleNFT)
8379 then true
8480 else isAniaNFT
8581 }
8682
8783
8884 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
8985 then (asset.decimals == 0)
9086 else false)
9187 then (asset.reissuable == false)
9288 else false)
9389 then (asset.quantity == 1)
9490 else false
9591
9692
9793 func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
9894 then Address(nftUltraStakingWrapper)
9995 else if (ifWavesPunksNft(asset))
10096 then Address(nftWavesPunksWrapper)
10197 else if (ifSignArtNft(asset))
10298 then Address(nftSignArtWrapper)
10399 else if (ifDuckNft(asset))
104100 then Address(nftDuckWrapper)
105101 else unit
106102
107103
108104 func getAddressForUnwrap (nftStr) = {
109105 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
110106 case s: String =>
111107 (size(s) > 0)
112108 case _ =>
113109 false
114110 }
115111 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
116112 case s: String =>
117113 (size(s) > 0)
118114 case _ =>
119115 false
120116 }
121117 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
122118 case s: String =>
123119 (size(s) > 0)
124120 case _ =>
125121 false
126122 }
127123 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
128124 case s: String =>
129125 (size(s) > 0)
130126 case _ =>
131127 false
132128 }
133129 if (isUltraStaking)
134130 then Address(nftUltraStakingWrapper)
135131 else if (isWavesPunks)
136132 then Address(nftWavesPunksWrapper)
137133 else if (isSignArt)
138134 then Address(nftSignArtWrapper)
139135 else if (isDuck)
140136 then Address(nftDuckWrapper)
141137 else unit
142138 }
143139
144140
145141 @Callable(i)
146142 func lockAndSellNFT (buyOutPrice,buyOutAssetId) = {
147143 let assetId = value(value(i.payments[0]).assetId)
148144 let asset = value(assetInfo(assetId))
149145 let wrapAddress = getAddressForWrap(asset)
150146 let stakedNFTIdStr = if (isDefined(wrapAddress))
151147 then {
152148 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
153149 case s: String =>
154150 s
155151 case _ =>
156152 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
157153 }
158154 if ((lockedNftStr == lockedNftStr))
159155 then lockedNftStr
160156 else throw("Strict value is not equal to itself.")
161157 }
162158 else toBase58String(asset.id)
163159 if ((size(stakedNFTIdStr) > 0))
164160 then {
165161 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
166162 if ((inv == inv))
167163 then nil
168164 else throw("Strict value is not equal to itself.")
169165 }
170166 else throw("The created NFT is invalid")
171167 }
172168
173169
174170
175171 @Callable(i)
176172 func cancelSellAndUnlock (nftId) = {
177173 let asset = value(assetInfo(fromBase58String(nftId)))
178174 let wrapAddress = getAddressForUnwrap(nftId)
179175 if (isNftFromMarketplace(asset))
180176 then {
181177 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
182178 case s: String =>
183179 s
184180 case _ =>
185181 throw("Somthing wrong when cancel sell NFT")
186182 }
187183 if ((canceledNftStr == canceledNftStr))
188184 then if (isDefined(wrapAddress))
189185 then {
190186 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
191187 case s: String =>
192188 s
193189 case _ =>
194190 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
195191 }
196192 if ((unlockedNftStr == unlockedNftStr))
197193 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
198194 else throw("Strict value is not equal to itself.")
199195 }
200196 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
201197 else throw("Strict value is not equal to itself.")
202198 }
203199 else throw("Ivalid NFT attached")
204200 }
205201
206202
207203
208204 @Callable(i)
209205 func unlock () = {
210206 let asset = value(assetInfo(value(i.payments[0].assetId)))
211207 if (if (isNftFromMarketplace(asset))
212208 then (i.payments[0].amount == 1)
213209 else false)
214210 then {
215211 let assetIdStr = toBase58String(asset.id)
216212 let wrapAddress = getAddressForUnwrap(assetIdStr)
217213 if (isDefined(wrapAddress))
218214 then {
219215 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
220216 case s: String =>
221217 s
222218 case _ =>
223219 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
224220 }
225221 if ((unlockedNftStr == unlockedNftStr))
226222 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
227223 else throw("Strict value is not equal to itself.")
228224 }
229225 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
230226 }
231227 else throw("Ivalid NFT attached")
232228 }
233229
234230
235231
236232 @Callable(i)
237233 func buy (nftId) = {
238234 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
239235 case s: String =>
240236 s
241237 case _ =>
242238 throw("Somthing wrong when buy NFT")
243239 }
244240 if ((boughtNft == boughtNft))
245241 then {
246242 let asset = value(assetInfo(fromBase58String(boughtNft)))
247243 if (if ((size(boughtNft) > 0))
248244 then isNftFromMarketplace(asset)
249245 else false)
250246 then {
251247 let wrapAddress = getAddressForUnwrap(nftId)
252248 if (isDefined(wrapAddress))
253249 then {
254250 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
255251 case s: String =>
256252 s
257253 case _ =>
258254 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
259255 }
260256 if ((unlockedNftStr == unlockedNftStr))
261257 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
262258 else throw("Strict value is not equal to itself.")
263259 }
264260 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
265261 }
266262 else throw("Ivalid bought NFT")
267263 }
268264 else throw("Strict value is not equal to itself.")
269265 }
270266
271267
272268 @Verifier(tx)
273269 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
274270

github/deemru/w8io/3ef1775 
44.48 ms