tx · CUmss3sa6v9PQZ3ya5ba7SKFiXQDLXJegBa1MYiXA5Em

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.00600000 Waves

2022.08.05 08:13 [3236251] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "CUmss3sa6v9PQZ3ya5ba7SKFiXQDLXJegBa1MYiXA5Em", "fee": 600000, "feeAssetId": null, "timestamp": 1659676447033, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "3RwEmNpigTxqLbq7xtuR7ybUDj9RTydW1UhjvjMkxDm7mvFrvh4mJxjVaUWyomqStsbFozrVh1NWYLYaJsTr8kRh" ], "script": "base64:BgIUCAISBAoCAQgSAwoBCBIAEgMKAQgTABJuZnRDcmVhdGlvbkFkZHJlc3MBGgFXk93E0hfnIAr99yESTvDwdmcmgwN41FxMABFlYWdsZUJ1eWVyQWRkcmVzcwEaAVc6UWFHh6QXedxglaC2Zss83iUvrjDv+/YAGXNpZ25BcnROZnRDcmVhdGlvbkFkZHJlc3MBGgFXe2TVW9aeF7mq0+aP/ANcyMQW+Ju6hiniAA5uZnREdWNrV3JhcHBlcgEaAVcUrURSm6X9/2EX/9g65/FnioCcFLgvzx4AEW5mdFNpZ25BcnRXcmFwcGVyARoBV+6hGhXD8bZfRGX/X8gVOcR5RdUYRUcwBwAWbmZ0VWx0cmFTdGFraW5nV3JhcHBlcgEaAVfArcJtMs2Rr6VXRdiH8lPBWo7IvSaKygsAFG5mdFdhdmVzUHVua3NXcmFwcGVyARoBV3maijAaCdWdqMonaCPZG9Wh5zSQxuiDLQAQaW5jdWJhdG9yQWRkcmVzcwEaAVeMtUiffp4V1RiXjht3+wl/Z2La4W1jJUkADmJyZWVkZXJBZGRyZXNzARoBV37nuflxxEx4XH14e4ZxgkMVpnlqD7YfHgAabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MBGgFXXYvxX8soIGsfZqPIbtoLqJftD+j9yUTxABN6b21iaWVJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXPCJrb4M8vOfQ2wBTO7F4j48kEea4E66TABJwdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdL7E+N6trSBKdJcVFRWraSu0HUX4XC7GgBDGlmU2lnbkFydE5mdAEFYXNzZXQDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUZc2lnbkFydE5mdENyZWF0aW9uQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBCWlmRHVja05mdAEFYXNzZXQDAwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFEGluY3ViYXRvckFkZHJlc3MGCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFDmJyZWVkZXJBZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEPaWZXYXZlc1B1bmtzTmZ0AQVhc3NldAMDAwMJAAACCAUFYXNzZXQGaXNzdWVyBRN6b21iaWVJc3N1ZXJBZGRyZXNzBgkAAAIIBQVhc3NldAZpc3N1ZXIFEnB1bmtzSXNzdWVyQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBEWlmVWx0cmFTdGFraW5nTmZ0AQVhc3NldAQKaXNFYWdsZU5GVAQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFEWVhZ2xlQnV5ZXJBZGRyZXNzCQCsAgIJAKwCAgIEYXJ0XwkA2AQBCAUFYXNzZXQCaWQCBV90eXBlAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAAAIFAXMCBWVhZ2xlBwQJaXNBbmlhTkZUBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQUSbmZ0Q3JlYXRpb25BZGRyZXNzCQCsAgIJAKwCAgIEbmZ0XwkA2AQBCAUFYXNzZXQCaWQCB19pc3N1ZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwAwkAAAIFAXMCIzNQTWtpNXNIQnNRYjRLZ0RrbmJVd3NMM1lneGFDemFabkNKCQEIY29udGFpbnMCCAUFYXNzZXQEbmFtZQIMQm9yZWQgQW5pYSAjBwcDBQppc0VhZ2xlTkZUBgUJaXNBbmlhTkZUARRpc05mdEZyb21NYXJrZXRwbGFjZQEFYXNzZXQDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUSbmZ0Q3JlYXRpb25BZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwERZ2V0QWRkcmVzc0ZvcldyYXABBWFzc2V0AwkBEWlmVWx0cmFTdGFraW5nTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUWbmZ0VWx0cmFTdGFraW5nV3JhcHBlcgMJAQ9pZldhdmVzUHVua3NOZnQBBQVhc3NldAkBB0FkZHJlc3MBBRRuZnRXYXZlc1B1bmtzV3JhcHBlcgMJAQxpZlNpZ25BcnROZnQBBQVhc3NldAkBB0FkZHJlc3MBBRFuZnRTaWduQXJ0V3JhcHBlcgMJAQlpZkR1Y2tOZnQBBQVhc3NldAkBB0FkZHJlc3MBBQ5uZnREdWNrV3JhcHBlcgUEdW5pdAETZ2V0QWRkcmVzc0ZvclVud3JhcAEGbmZ0U3RyBAlpc1NpZ25BcnQEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRFuZnRTaWduQXJ0V3JhcHBlcgkArAICCQCsAgICC3NpZ25BcnROZnRfBQZuZnRTdHICCF9hc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwQGaXNEdWNrBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQUObmZ0RHVja1dyYXBwZXIJAKwCAgkArAICAgRuZnRfBQZuZnRTdHICB19kdWNrSWQDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQBmAgkAsQIBBQFzAAAHBA5pc1VsdHJhU3Rha2luZwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIJAKwCAgkArAICAgRuZnRfBQZuZnRTdHICCF9hc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwQMaXNXYXZlc1B1bmtzBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNQdW5rc1dyYXBwZXIJAKwCAgkArAICAgRuZnRfBQZuZnRTdHICCF9hc3NldElkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwMFDmlzVWx0cmFTdGFraW5nCQEHQWRkcmVzcwEFFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIDBQxpc1dhdmVzUHVua3MJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNQdW5rc1dyYXBwZXIDBQlpc1NpZ25BcnQJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIDBQZpc0R1Y2sJAQdBZGRyZXNzAQUObmZ0RHVja1dyYXBwZXIFBHVuaXQEAWkBDmxvY2tBbmRTZWxsTkZUAgtidXlPdXRQcmljZQ1idXlPdXRBc3NldElkBAdhc3NldElkCQEFdmFsdWUBCAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEFB2Fzc2V0SWQEC3dyYXBBZGRyZXNzCQERZ2V0QWRkcmVzc0ZvcldyYXABBQVhc3NldAQOc3Rha2VkTkZUSWRTdHIDCQEJaXNEZWZpbmVkAQULd3JhcEFkZHJlc3MEDGxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIEbG9jawUDbmlsCQDMCAIJAJEDAggFAWkIcGF5bWVudHMAAAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIpU29tdGhpbmcgd3Jvbmcgd2hlbiBsb2NrIE5GVCBpbiBhZGRyZXNzOiAJANgEAQgJAQV2YWx1ZQEFC3dyYXBBZGRyZXNzBWJ5dGVzAwkAAAIFDGxvY2tlZE5mdFN0cgUMbG9ja2VkTmZ0U3RyBQxsb2NrZWROZnRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JANgEAQgFBWFzc2V0AmlkAwkAZgIJALECAQUOc3Rha2VkTkZUSWRTdHIAAAQDaW52CQD8BwQJAQdBZGRyZXNzAQUabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MCB3NlbGxORlQJAMwIAgULYnV5T3V0UHJpY2UJAMwIAgUNYnV5T3V0QXNzZXRJZAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFDnN0YWtlZE5GVElkU3RyAAEFA25pbAMJAAACBQNpbnYFA2ludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIaVGhlIGNyZWF0ZWQgTkZUIGlzIGludmFsaWQBaQETY2FuY2VsU2VsbEFuZFVubG9jawEFbmZ0SWQEBWFzc2V0CQEFdmFsdWUBCQDsBwEJANkEAQUFbmZ0SWQEC3dyYXBBZGRyZXNzCQETZ2V0QWRkcmVzc0ZvclVud3JhcAEFBW5mdElkAwkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQEDmNhbmNlbGVkTmZ0U3RyBAckbWF0Y2gwCQD8BwQJAQdBZGRyZXNzAQUabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MCCmNhbmNlbFNlbGwJAMwIAgUFbmZ0SWQFA25pbAUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgECI1NvbXRoaW5nIHdyb25nIHdoZW4gY2FuY2VsIHNlbGwgTkZUAwkAAAIFDmNhbmNlbGVkTmZ0U3RyBQ5jYW5jZWxlZE5mdFN0cgMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOY2FuY2VsZWROZnRTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECE0l2YWxpZCBORlQgYXR0YWNoZWQBaQEGdW5sb2NrAAQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkAwMJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0CQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQAAQcECmFzc2V0SWRTdHIJANgEAQgFBWFzc2V0AmlkBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBA51bmxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIGdW5sb2NrBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIIBQVhc3NldAJpZAABBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQkArAICAitTb210aGluZyB3cm9uZyB3aGVuIHVubG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQ51bmxvY2tlZE5mdFN0cgUOdW5sb2NrZWROZnRTdHIJAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ51bmxvY2tlZE5mdFN0cgUDbmlsBQ51bmxvY2tlZE5mdFN0cgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAlAoCCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCAUFYXNzZXQCaWQFA25pbAkA2AQBCAUFYXNzZXQCaWQJAAIBAhNJdmFsaWQgTkZUIGF0dGFjaGVkAWkBA2J1eQEFbmZ0SWQECWJvdWdodE5mdAQHJG1hdGNoMAkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgZidXlORlQJAMwIAgUFbmZ0SWQFA25pbAgFAWkIcGF5bWVudHMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIbU29tdGhpbmcgd3Jvbmcgd2hlbiBidXkgTkZUAwkAAAIFCWJvdWdodE5mdAUJYm91Z2h0TmZ0BAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFCWJvdWdodE5mdAMDCQBmAgkAsQIBBQlib3VnaHROZnQAAAkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQHBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQVuZnRJZAMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUJYm91Z2h0TmZ0BQNuaWwJAAIBAhFJdmFsaWQgYm91Z2h0IE5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXlV2xSh", "height": 3236251, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4HvrpPj5b96dLVGZTiFeimnHWBANXdcNrAoikJ6KdpXe Next: CfiXxuUrdGWU19RQJFNZ8NCyq268bTT2gG8Cn1ueetzX Diff:
OldNewDifferences
8686 else false
8787
8888
89-func getAddressForWrap (asset) = {
90- let allowAssets = ["HqKqjXZCDqcJFphPY4nPTuni7ZWrGDB3b2ebqqsCHBgp", "CjUDaUe8PGH4y28xdRScFTVzmBc8MdWebjRCWsLVPztw", "B3mghbyC9AKkJaYNT7NV8kVQyLsoAoTzoLKYkr14s6Lm", "DCyHUbDogVvKkSjFvLd25djCviqCK8pLYsMfG54kLJSg"]
91- let isAllow = match indexOf(allowAssets, toBase58String(asset.id)) {
92- case t: Int =>
93- true
94- case _ =>
95- false
96- }
97- if (if (isAllow)
98- then ifUltraStakingNft(asset)
99- else false)
100- then Address(nftUltraStakingWrapper)
101- else if (ifWavesPunksNft(asset))
102- then Address(nftWavesPunksWrapper)
103- else if (ifSignArtNft(asset))
104- then Address(nftSignArtWrapper)
105- else if (ifDuckNft(asset))
106- then Address(nftDuckWrapper)
107- else unit
108- }
89+func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
90+ then Address(nftUltraStakingWrapper)
91+ else if (ifWavesPunksNft(asset))
92+ then Address(nftWavesPunksWrapper)
93+ else if (ifSignArtNft(asset))
94+ then Address(nftSignArtWrapper)
95+ else if (ifDuckNft(asset))
96+ then Address(nftDuckWrapper)
97+ else unit
10998
11099
111100 func getAddressForUnwrap (nftStr) = {
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 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
2929 then (asset.decimals == 0)
3030 else false)
3131 then (asset.reissuable == false)
3232 else false)
3333 then (asset.quantity == 1)
3434 else false
3535
3636
3737 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
3838 then true
3939 else (asset.issuer.bytes == breederAddress))
4040 then (asset.decimals == 0)
4141 else false)
4242 then (asset.reissuable == false)
4343 else false)
4444 then (asset.quantity == 1)
4545 else false
4646
4747
4848 func ifWavesPunksNft (asset) = if (if (if (if ((asset.issuer == zombieIssuerAddress))
4949 then true
5050 else (asset.issuer == punksIssuerAddress))
5151 then (asset.decimals == 0)
5252 else false)
5353 then (asset.reissuable == false)
5454 else false)
5555 then (asset.quantity == 1)
5656 else false
5757
5858
5959 func ifUltraStakingNft (asset) = {
6060 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
6161 case s: String =>
6262 (s == "eagle")
6363 case _ =>
6464 false
6565 }
6666 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
6767 case s: String =>
6868 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
6969 then contains(asset.name, "Bored Ania #")
7070 else false
7171 case _ =>
7272 false
7373 }
7474 if (isEagleNFT)
7575 then true
7676 else isAniaNFT
7777 }
7878
7979
8080 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
8181 then (asset.decimals == 0)
8282 else false)
8383 then (asset.reissuable == false)
8484 else false)
8585 then (asset.quantity == 1)
8686 else false
8787
8888
89-func getAddressForWrap (asset) = {
90- let allowAssets = ["HqKqjXZCDqcJFphPY4nPTuni7ZWrGDB3b2ebqqsCHBgp", "CjUDaUe8PGH4y28xdRScFTVzmBc8MdWebjRCWsLVPztw", "B3mghbyC9AKkJaYNT7NV8kVQyLsoAoTzoLKYkr14s6Lm", "DCyHUbDogVvKkSjFvLd25djCviqCK8pLYsMfG54kLJSg"]
91- let isAllow = match indexOf(allowAssets, toBase58String(asset.id)) {
92- case t: Int =>
93- true
94- case _ =>
95- false
96- }
97- if (if (isAllow)
98- then ifUltraStakingNft(asset)
99- else false)
100- then Address(nftUltraStakingWrapper)
101- else if (ifWavesPunksNft(asset))
102- then Address(nftWavesPunksWrapper)
103- else if (ifSignArtNft(asset))
104- then Address(nftSignArtWrapper)
105- else if (ifDuckNft(asset))
106- then Address(nftDuckWrapper)
107- else unit
108- }
89+func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
90+ then Address(nftUltraStakingWrapper)
91+ else if (ifWavesPunksNft(asset))
92+ then Address(nftWavesPunksWrapper)
93+ else if (ifSignArtNft(asset))
94+ then Address(nftSignArtWrapper)
95+ else if (ifDuckNft(asset))
96+ then Address(nftDuckWrapper)
97+ else unit
10998
11099
111100 func getAddressForUnwrap (nftStr) = {
112101 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
113102 case s: String =>
114103 (size(s) > 0)
115104 case _ =>
116105 false
117106 }
118107 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
119108 case s: String =>
120109 (size(s) > 0)
121110 case _ =>
122111 false
123112 }
124113 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
125114 case s: String =>
126115 (size(s) > 0)
127116 case _ =>
128117 false
129118 }
130119 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
131120 case s: String =>
132121 (size(s) > 0)
133122 case _ =>
134123 false
135124 }
136125 if (isUltraStaking)
137126 then Address(nftUltraStakingWrapper)
138127 else if (isWavesPunks)
139128 then Address(nftWavesPunksWrapper)
140129 else if (isSignArt)
141130 then Address(nftSignArtWrapper)
142131 else if (isDuck)
143132 then Address(nftDuckWrapper)
144133 else unit
145134 }
146135
147136
148137 @Callable(i)
149138 func lockAndSellNFT (buyOutPrice,buyOutAssetId) = {
150139 let assetId = value(value(i.payments[0]).assetId)
151140 let asset = value(assetInfo(assetId))
152141 let wrapAddress = getAddressForWrap(asset)
153142 let stakedNFTIdStr = if (isDefined(wrapAddress))
154143 then {
155144 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
156145 case s: String =>
157146 s
158147 case _ =>
159148 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
160149 }
161150 if ((lockedNftStr == lockedNftStr))
162151 then lockedNftStr
163152 else throw("Strict value is not equal to itself.")
164153 }
165154 else toBase58String(asset.id)
166155 if ((size(stakedNFTIdStr) > 0))
167156 then {
168157 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
169158 if ((inv == inv))
170159 then nil
171160 else throw("Strict value is not equal to itself.")
172161 }
173162 else throw("The created NFT is invalid")
174163 }
175164
176165
177166
178167 @Callable(i)
179168 func cancelSellAndUnlock (nftId) = {
180169 let asset = value(assetInfo(fromBase58String(nftId)))
181170 let wrapAddress = getAddressForUnwrap(nftId)
182171 if (isNftFromMarketplace(asset))
183172 then {
184173 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
185174 case s: String =>
186175 s
187176 case _ =>
188177 throw("Somthing wrong when cancel sell NFT")
189178 }
190179 if ((canceledNftStr == canceledNftStr))
191180 then if (isDefined(wrapAddress))
192181 then {
193182 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
194183 case s: String =>
195184 s
196185 case _ =>
197186 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
198187 }
199188 if ((unlockedNftStr == unlockedNftStr))
200189 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
201190 else throw("Strict value is not equal to itself.")
202191 }
203192 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
204193 else throw("Strict value is not equal to itself.")
205194 }
206195 else throw("Ivalid NFT attached")
207196 }
208197
209198
210199
211200 @Callable(i)
212201 func unlock () = {
213202 let asset = value(assetInfo(value(i.payments[0].assetId)))
214203 if (if (isNftFromMarketplace(asset))
215204 then (i.payments[0].amount == 1)
216205 else false)
217206 then {
218207 let assetIdStr = toBase58String(asset.id)
219208 let wrapAddress = getAddressForUnwrap(assetIdStr)
220209 if (isDefined(wrapAddress))
221210 then {
222211 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
223212 case s: String =>
224213 s
225214 case _ =>
226215 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
227216 }
228217 if ((unlockedNftStr == unlockedNftStr))
229218 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
230219 else throw("Strict value is not equal to itself.")
231220 }
232221 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
233222 }
234223 else throw("Ivalid NFT attached")
235224 }
236225
237226
238227
239228 @Callable(i)
240229 func buy (nftId) = {
241230 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
242231 case s: String =>
243232 s
244233 case _ =>
245234 throw("Somthing wrong when buy NFT")
246235 }
247236 if ((boughtNft == boughtNft))
248237 then {
249238 let asset = value(assetInfo(fromBase58String(boughtNft)))
250239 if (if ((size(boughtNft) > 0))
251240 then isNftFromMarketplace(asset)
252241 else false)
253242 then {
254243 let wrapAddress = getAddressForUnwrap(nftId)
255244 if (isDefined(wrapAddress))
256245 then {
257246 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
258247 case s: String =>
259248 s
260249 case _ =>
261250 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
262251 }
263252 if ((unlockedNftStr == unlockedNftStr))
264253 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
265254 else throw("Strict value is not equal to itself.")
266255 }
267256 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
268257 }
269258 else throw("Ivalid bought NFT")
270259 }
271260 else throw("Strict value is not equal to itself.")
272261 }
273262
274263
275264 @Verifier(tx)
276265 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
277266

github/deemru/w8io/3ef1775 
56.79 ms