tx · G8zQEMLBH9GvLiWa24PSUspEqECUUF1zehzyj4NUQK14

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.01000000 Waves

2023.02.06 21:58 [3503711] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "G8zQEMLBH9GvLiWa24PSUspEqECUUF1zehzyj4NUQK14", "fee": 1000000, "feeAssetId": null, "timestamp": 1675709922362, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "4ktVJ3tvsMoW3Bm7y4C6EdWDmFKrrH5ULf65RSzSsmBXG3ygux7Xy7MjizfEcr46gTT8A5v92vqt3DcfAPE5k4eb" ], "script": "base64:BgIVCAISBQoDAQgIEgMKAQgSABIDCgEIHQASbmZ0Q3JlYXRpb25BZGRyZXNzARoBV5PdxNIX5yAK/fchEk7w8HZnJoMDeNRcTAARZWFnbGVCdXllckFkZHJlc3MBGgFXOlFhR4ekF3ncYJWgtmbLPN4lL64w7/v2ABlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzARoBV3tk1VvWnhe5qtPmj/wDXMjEFvibuoYp4gAObmZ0RHVja1dyYXBwZXIBGgFXFK1EUpul/f9hF//YOufxZ4qAnBS4L88eABFuZnRTaWduQXJ0V3JhcHBlcgEaAVfuoRoVw/G2X0Rl/1/IFTnEeUXVGEVHMAcAFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIBGgFXwK3CbTLNka+lV0XYh/JTwVqOyL0misoLABRuZnRXYXZlc1B1bmtzV3JhcHBlcgEaAVd5moowGgnVnajKJ2gj2RvVoec0kMbogy0AFG5mdFdhdmVzTGFuZHNXcmFwcGVyARoBV3P7lvq2A+DsHJ59ULYOpvcQd/BBgIBaBgAWbmZ0V2F2ZXNEb21haW5zV3JhcHBlcgEaAVcvNky87e0jyCsD2mXR9NMFHb6L1OfjO/EAEGluY3ViYXRvckFkZHJlc3MBGgFXjLVIn36eFdUYl44bd/sJf2di2uFtYyVJAA5icmVlZGVyQWRkcmVzcwEaAVd+57n5ccRMeFx9eHuGcYJDFaZ5ag+2Hx4AGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzARoBV12L8V/LKCBrH2ajyG7aC6iX7Q/o/clE8QATem9tYmllSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBVzwia2+DPLzn0NsAUzuxeI+PJBHmuBOukwAScHVua3NJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXS+xPjera0gSnSXFRUVq2krtB1F+FwuxoABNhbGllbnNJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXa8tPpNumumqoNfvKdRF0dc6oz4cuF9IYABVtYWRQdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVe2FZAHGGJgl+unSJcp8qs1zX7kAqoNhtkAFm1hZFB1bmtzMklzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdGTWoQ1BXw/a91Ekxg94A8K/h2ZCBxCwUAD3dsSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV87Ziuc6DASTIb885/WtYnS02KhH4S06qAAZd2F2ZXNEb21haW5zSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBVzan6/3hqWCcbJvuRoacQVfiyT5MFkAIRgEPaWZXYXZlc0xhbmRzTkZUAQVhc3NldAMDAwkAAAIIBQVhc3NldAZpc3N1ZXIFD3dsSXNzdWVyQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBDGlmU2lnbkFydE5mdAEFYXNzZXQDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUZc2lnbkFydE5mdENyZWF0aW9uQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBCWlmRHVja05mdAEFYXNzZXQDAwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFEGluY3ViYXRvckFkZHJlc3MGCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFDmJyZWVkZXJBZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEPaWZXYXZlc1B1bmtzTmZ0AQVhc3NldAMDAwkAZwIJAQt2YWx1ZU9yRWxzZQIJAM8IAgkAzAgCBRN6b21iaWVJc3N1ZXJBZGRyZXNzCQDMCAIFEnB1bmtzSXNzdWVyQWRkcmVzcwkAzAgCBRNhbGllbnNJc3N1ZXJBZGRyZXNzCQDMCAIFFW1hZFB1bmtzSXNzdWVyQWRkcmVzcwkAzAgCBRZtYWRQdW5rczJJc3N1ZXJBZGRyZXNzBQNuaWwIBQVhc3NldAZpc3N1ZXIA////////////AQAACQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwERaWZVbHRyYVN0YWtpbmdOZnQBBWFzc2V0BAppc0VhZ2xlTkZUBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQURZWFnbGVCdXllckFkZHJlc3MJAKwCAgkArAICAgRhcnRfCQDYBAEIBQVhc3NldAJpZAIFX3R5cGUDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwCQAAAgUBcwIFZWFnbGUHBAlpc0FuaWFORlQEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRJuZnRDcmVhdGlvbkFkZHJlc3MJAKwCAgkArAICAgRuZnRfCQDYBAEIBQVhc3NldAJpZAIHX2lzc3VlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDADCQAAAgUBcwIjM1BNa2k1c0hCc1FiNEtnRGtuYlV3c0wzWWd4YUN6YVpuQ0oJAQhjb250YWlucwIIBQVhc3NldARuYW1lAgxCb3JlZCBBbmlhICMHBwMFCmlzRWFnbGVORlQGBQlpc0FuaWFORlQBEWlmV2F2ZXNEb21haW5zTmZ0AQVhc3NldAMDAwkAAAIIBQVhc3NldAZpc3N1ZXIFGXdhdmVzRG9tYWluc0lzc3VlckFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHARRpc05mdEZyb21NYXJrZXRwbGFjZQEFYXNzZXQDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUSbmZ0Q3JlYXRpb25BZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwERZ2V0QWRkcmVzc0ZvcldyYXABBWFzc2V0AwkBEWlmVWx0cmFTdGFraW5nTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUWbmZ0VWx0cmFTdGFraW5nV3JhcHBlcgMJAQ9pZldhdmVzUHVua3NOZnQBBQVhc3NldAkBB0FkZHJlc3MBBRRuZnRXYXZlc1B1bmtzV3JhcHBlcgMJAQxpZlNpZ25BcnROZnQBBQVhc3NldAkBB0FkZHJlc3MBBRFuZnRTaWduQXJ0V3JhcHBlcgMJAQlpZkR1Y2tOZnQBBQVhc3NldAkBB0FkZHJlc3MBBQ5uZnREdWNrV3JhcHBlcgMJAQ9pZldhdmVzTGFuZHNORlQBBQVhc3NldAkBB0FkZHJlc3MBBRRuZnRXYXZlc0xhbmRzV3JhcHBlcgMJARFpZldhdmVzRG9tYWluc05mdAEFBWFzc2V0CQEHQWRkcmVzcwEFFm5mdFdhdmVzRG9tYWluc1dyYXBwZXIFBHVuaXQBE2dldEFkZHJlc3NGb3JVbndyYXABBm5mdFN0cgQJaXNTaWduQXJ0BAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIJAKwCAgkArAICAgtzaWduQXJ0TmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEBmlzRHVjawQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAgdfZHVja0lkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwQOaXNVbHRyYVN0YWtpbmcEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNQdW5rcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNMYW5kcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzTGFuZHNXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDmlzV2F2ZXNEb21haW5zBAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQUWbmZ0V2F2ZXNEb21haW5zV3JhcHBlcgkArAICCQCsAgICCFdyYXBwZWRfBQZuZnRTdHICCF90b2tlbklkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwMFDmlzVWx0cmFTdGFraW5nCQEHQWRkcmVzcwEFFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIDBQxpc1dhdmVzUHVua3MJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNQdW5rc1dyYXBwZXIDBQlpc1NpZ25BcnQJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIDBQZpc0R1Y2sJAQdBZGRyZXNzAQUObmZ0RHVja1dyYXBwZXIDBQxpc1dhdmVzTGFuZHMJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNMYW5kc1dyYXBwZXIDBQ5pc1dhdmVzRG9tYWlucwkBB0FkZHJlc3MBBRZuZnRXYXZlc0RvbWFpbnNXcmFwcGVyBQR1bml0AQljaGVja0NhbGwBAWkECXdoaXRlTGlzdAkAzAgCCQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzBQNuaWwEDndoaXRlTGlzdEluZGV4CQELdmFsdWVPckVsc2UCCQDPCAIFCXdoaXRlTGlzdAgFAWkGY2FsbGVyAP///////////wEDCQBnAgUOd2hpdGVMaXN0SW5kZXgAAAYDCQECIT0CCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgkAAgECJ0NhbGwgZnJvbSBhbm90aGVyIGNvbnRyYWN0IGlzIGZvcmJpZGRlbgYEAWkBDmxvY2tBbmRTZWxsTkZUAwtidXlPdXRQcmljZQ1idXlPdXRBc3NldElkDXNlbGxlckNvbW1lbnQEC2lzVmFsaWRDYWxsCQEJY2hlY2tDYWxsAQUBaQQHYXNzZXRJZAkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAt3cmFwQWRkcmVzcwkBEWdldEFkZHJlc3NGb3JXcmFwAQUFYXNzZXQEDnN0YWtlZE5GVElkU3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBAxsb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBGxvY2sFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICKVNvbXRoaW5nIHdyb25nIHdoZW4gbG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQxsb2NrZWROZnRTdHIFDGxvY2tlZE5mdFN0cgUMbG9ja2VkTmZ0U3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDYBAEIBQVhc3NldAJpZAMDBQtpc1ZhbGlkQ2FsbAkAZgIJALECAQUOc3Rha2VkTkZUSWRTdHIAAAcEA2ludgkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgdzZWxsTkZUCQDMCAIFC2J1eU91dFByaWNlCQDMCAIFDWJ1eU91dEFzc2V0SWQJAMwIAgUNc2VsbGVyQ29tbWVudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFDnN0YWtlZE5GVElkU3RyAAEFA25pbAMJAAACBQNpbnYFA2ludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIaVGhlIGNyZWF0ZWQgTkZUIGlzIGludmFsaWQBaQETY2FuY2VsU2VsbEFuZFVubG9jawEFbmZ0SWQEC2lzVmFsaWRDYWxsCQEJY2hlY2tDYWxsAQUBaQQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQVuZnRJZAQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUFbmZ0SWQDAwULaXNWYWxpZENhbGwJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BwQOY2FuY2VsZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBBRptYXJrZXRwbGFjZUNvbnRyYWN0QWRkcmVzcwIKY2FuY2VsU2VsbAkAzAgCBQVuZnRJZAUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIjU29tdGhpbmcgd3Jvbmcgd2hlbiBjYW5jZWwgc2VsbCBORlQDCQAAAgUOY2FuY2VsZWROZnRTdHIFDmNhbmNlbGVkTmZ0U3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBA51bmxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIGdW5sb2NrBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIIBQVhc3NldAJpZAABBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQkArAICAitTb210aGluZyB3cm9uZyB3aGVuIHVubG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQ51bmxvY2tlZE5mdFN0cgUOdW5sb2NrZWROZnRTdHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ5jYW5jZWxlZE5mdFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQZ1bmxvY2sABAtpc1ZhbGlkQ2FsbAkBCWNoZWNrQ2FsbAEFAWkEBWFzc2V0CQEFdmFsdWUBCQDsBwEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMDAwULaXNWYWxpZENhbGwJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEHBAphc3NldElkU3RyCQDYBAEIBQVhc3NldAJpZAQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAUOdW5sb2NrZWROZnRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQgFBWFzc2V0AmlkBQNuaWwJANgEAQgFBWFzc2V0AmlkCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQNidXkBBW5mdElkBAtpc1ZhbGlkQ2FsbAkBCWNoZWNrQ2FsbAEFAWkECWJvdWdodE5mdAQHJG1hdGNoMAkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgZidXlORlQJAMwIAgUFbmZ0SWQFA25pbAgFAWkIcGF5bWVudHMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIbU29tdGhpbmcgd3Jvbmcgd2hlbiBidXkgTkZUAwkAAAIFCWJvdWdodE5mdAUJYm91Z2h0TmZ0BAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFCWJvdWdodE5mdAMDAwULaXNWYWxpZENhbGwJAGYCCQCxAgEFCWJvdWdodE5mdAAABwkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQHBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQVuZnRJZAMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyAwkAAAIICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwUWbmZ0V2F2ZXNEb21haW5zV3JhcHBlcgQmdHJhbnNmZXJXYXZlc0RvbWFpbnNUb2tlbldpdGhPd25lcnNoaXAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCCHRyYW5zZmVyCQDMCAIJAKUIAQgFAWkGY2FsbGVyBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIJANkEAQUOdW5sb2NrZWROZnRTdHIAAQUDbmlsAwkAAAIFJnRyYW5zZmVyV2F2ZXNEb21haW5zVG9rZW5XaXRoT3duZXJzaGlwBSZ0cmFuc2ZlcldhdmVzRG9tYWluc1Rva2VuV2l0aE93bmVyc2hpcAUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUJYm91Z2h0TmZ0BQNuaWwJAAIBAhFJdmFsaWQgYm91Z2h0IE5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkujbFR", "height": 3503711, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5yGBVRpt9yNsVfrTobkTmLawmMcDA2wVRCwSqKc5vQY1 Next: none Diff:
OldNewDifferences
323323 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
324324 }
325325 if ((unlockedNftStr == unlockedNftStr))
326- then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
326+ then if ((value(wrapAddress).bytes == nftWavesDomainsWrapper))
327+ then {
328+ let transferWavesDomainsTokenWithOwnership = invoke(value(wrapAddress), "transfer", [toString(i.caller)], [AttachedPayment(fromBase58String(unlockedNftStr), 1)])
329+ if ((transferWavesDomainsTokenWithOwnership == transferWavesDomainsTokenWithOwnership))
330+ then nil
331+ else throw("Strict value is not equal to itself.")
332+ }
333+ else [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
327334 else throw("Strict value is not equal to itself.")
328335 }
329336 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
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 nftWavesLandsWrapper = base58'3PCW9q51iwFiaDZB8SSRgc7jqjYgTgQy5T3'
1919
2020 let nftWavesDomainsWrapper = base58'3P6EXY5LjsD8xth9GHemxemFHqCL4QzJSaU'
2121
2222 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
2323
2424 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
2525
2626 let marketplaceContractAddress = base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc'
2727
2828 let zombieIssuerAddress = Address(base58'3P7QrWH1ETLfKAJcFHYPJmQusNbDuW98Hop')
2929
3030 let punksIssuerAddress = Address(base58'3P8rLVnwrTf4k5AB3emuduhZZb1yKcitTHy')
3131
3232 let aliensIssuerAddress = Address(base58'3PBkrb5LrGDvCwkx4VHZzZkqMNvvGqrJJWj')
3333
3434 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3535
3636 let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
3737
3838 let wlIssuerAddress = Address(base58'3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1')
3939
4040 let wavesDomainsIssuerAddress = Address(base58'3P6utP25F4wMUGG4hGdDtMXMKu2tTeNkgRs')
4141
4242 func ifWavesLandsNFT (asset) = if (if (if ((asset.issuer == wlIssuerAddress))
4343 then (asset.decimals == 0)
4444 else false)
4545 then (asset.reissuable == false)
4646 else false)
4747 then (asset.quantity == 1)
4848 else false
4949
5050
5151 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
5252 then (asset.decimals == 0)
5353 else false)
5454 then (asset.reissuable == false)
5555 else false)
5656 then (asset.quantity == 1)
5757 else false
5858
5959
6060 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
6161 then true
6262 else (asset.issuer.bytes == breederAddress))
6363 then (asset.decimals == 0)
6464 else false)
6565 then (asset.reissuable == false)
6666 else false)
6767 then (asset.quantity == 1)
6868 else false
6969
7070
7171 func ifWavesPunksNft (asset) = if (if (if ((valueOrElse(indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress, madPunks2IssuerAddress], asset.issuer), -1) >= 0))
7272 then (asset.decimals == 0)
7373 else false)
7474 then (asset.reissuable == false)
7575 else false)
7676 then (asset.quantity == 1)
7777 else false
7878
7979
8080 func ifUltraStakingNft (asset) = {
8181 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
8282 case s: String =>
8383 (s == "eagle")
8484 case _ =>
8585 false
8686 }
8787 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
8888 case s: String =>
8989 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
9090 then contains(asset.name, "Bored Ania #")
9191 else false
9292 case _ =>
9393 false
9494 }
9595 if (isEagleNFT)
9696 then true
9797 else isAniaNFT
9898 }
9999
100100
101101 func ifWavesDomainsNft (asset) = if (if (if ((asset.issuer == wavesDomainsIssuerAddress))
102102 then (asset.decimals == 0)
103103 else false)
104104 then (asset.reissuable == false)
105105 else false)
106106 then (asset.quantity == 1)
107107 else false
108108
109109
110110 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
111111 then (asset.decimals == 0)
112112 else false)
113113 then (asset.reissuable == false)
114114 else false)
115115 then (asset.quantity == 1)
116116 else false
117117
118118
119119 func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
120120 then Address(nftUltraStakingWrapper)
121121 else if (ifWavesPunksNft(asset))
122122 then Address(nftWavesPunksWrapper)
123123 else if (ifSignArtNft(asset))
124124 then Address(nftSignArtWrapper)
125125 else if (ifDuckNft(asset))
126126 then Address(nftDuckWrapper)
127127 else if (ifWavesLandsNFT(asset))
128128 then Address(nftWavesLandsWrapper)
129129 else if (ifWavesDomainsNft(asset))
130130 then Address(nftWavesDomainsWrapper)
131131 else unit
132132
133133
134134 func getAddressForUnwrap (nftStr) = {
135135 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
136136 case s: String =>
137137 (size(s) > 0)
138138 case _ =>
139139 false
140140 }
141141 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
142142 case s: String =>
143143 (size(s) > 0)
144144 case _ =>
145145 false
146146 }
147147 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
148148 case s: String =>
149149 (size(s) > 0)
150150 case _ =>
151151 false
152152 }
153153 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
154154 case s: String =>
155155 (size(s) > 0)
156156 case _ =>
157157 false
158158 }
159159 let isWavesLands = match getString(Address(nftWavesLandsWrapper), (("nft_" + nftStr) + "_assetId")) {
160160 case s: String =>
161161 (size(s) > 0)
162162 case _ =>
163163 false
164164 }
165165 let isWavesDomains = match getString(Address(nftWavesDomainsWrapper), (("Wrapped_" + nftStr) + "_tokenId")) {
166166 case s: String =>
167167 (size(s) > 0)
168168 case _ =>
169169 false
170170 }
171171 if (isUltraStaking)
172172 then Address(nftUltraStakingWrapper)
173173 else if (isWavesPunks)
174174 then Address(nftWavesPunksWrapper)
175175 else if (isSignArt)
176176 then Address(nftSignArtWrapper)
177177 else if (isDuck)
178178 then Address(nftDuckWrapper)
179179 else if (isWavesLands)
180180 then Address(nftWavesLandsWrapper)
181181 else if (isWavesDomains)
182182 then Address(nftWavesDomainsWrapper)
183183 else unit
184184 }
185185
186186
187187 func checkCall (i) = {
188188 let whiteList = [Address(marketplaceContractAddress)]
189189 let whiteListIndex = valueOrElse(indexOf(whiteList, i.caller), -1)
190190 if ((whiteListIndex >= 0))
191191 then true
192192 else if ((i.caller != i.originCaller))
193193 then throw("Call from another contract is forbidden")
194194 else true
195195 }
196196
197197
198198 @Callable(i)
199199 func lockAndSellNFT (buyOutPrice,buyOutAssetId,sellerComment) = {
200200 let isValidCall = checkCall(i)
201201 let assetId = value(value(i.payments[0]).assetId)
202202 let asset = value(assetInfo(assetId))
203203 let wrapAddress = getAddressForWrap(asset)
204204 let stakedNFTIdStr = if (isDefined(wrapAddress))
205205 then {
206206 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
207207 case s: String =>
208208 s
209209 case _ =>
210210 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
211211 }
212212 if ((lockedNftStr == lockedNftStr))
213213 then lockedNftStr
214214 else throw("Strict value is not equal to itself.")
215215 }
216216 else toBase58String(asset.id)
217217 if (if (isValidCall)
218218 then (size(stakedNFTIdStr) > 0)
219219 else false)
220220 then {
221221 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId, sellerComment], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
222222 if ((inv == inv))
223223 then nil
224224 else throw("Strict value is not equal to itself.")
225225 }
226226 else throw("The created NFT is invalid")
227227 }
228228
229229
230230
231231 @Callable(i)
232232 func cancelSellAndUnlock (nftId) = {
233233 let isValidCall = checkCall(i)
234234 let asset = value(assetInfo(fromBase58String(nftId)))
235235 let wrapAddress = getAddressForUnwrap(nftId)
236236 if (if (isValidCall)
237237 then isNftFromMarketplace(asset)
238238 else false)
239239 then {
240240 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
241241 case s: String =>
242242 s
243243 case _ =>
244244 throw("Somthing wrong when cancel sell NFT")
245245 }
246246 if ((canceledNftStr == canceledNftStr))
247247 then if (isDefined(wrapAddress))
248248 then {
249249 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
250250 case s: String =>
251251 s
252252 case _ =>
253253 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
254254 }
255255 if ((unlockedNftStr == unlockedNftStr))
256256 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
257257 else throw("Strict value is not equal to itself.")
258258 }
259259 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
260260 else throw("Strict value is not equal to itself.")
261261 }
262262 else throw("Ivalid NFT attached")
263263 }
264264
265265
266266
267267 @Callable(i)
268268 func unlock () = {
269269 let isValidCall = checkCall(i)
270270 let asset = value(assetInfo(value(i.payments[0].assetId)))
271271 if (if (if (isValidCall)
272272 then isNftFromMarketplace(asset)
273273 else false)
274274 then (i.payments[0].amount == 1)
275275 else false)
276276 then {
277277 let assetIdStr = toBase58String(asset.id)
278278 let wrapAddress = getAddressForUnwrap(assetIdStr)
279279 if (isDefined(wrapAddress))
280280 then {
281281 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
282282 case s: String =>
283283 s
284284 case _ =>
285285 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
286286 }
287287 if ((unlockedNftStr == unlockedNftStr))
288288 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
289289 else throw("Strict value is not equal to itself.")
290290 }
291291 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
292292 }
293293 else throw("Ivalid NFT attached")
294294 }
295295
296296
297297
298298 @Callable(i)
299299 func buy (nftId) = {
300300 let isValidCall = checkCall(i)
301301 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
302302 case s: String =>
303303 s
304304 case _ =>
305305 throw("Somthing wrong when buy NFT")
306306 }
307307 if ((boughtNft == boughtNft))
308308 then {
309309 let asset = value(assetInfo(fromBase58String(boughtNft)))
310310 if (if (if (isValidCall)
311311 then (size(boughtNft) > 0)
312312 else false)
313313 then isNftFromMarketplace(asset)
314314 else false)
315315 then {
316316 let wrapAddress = getAddressForUnwrap(nftId)
317317 if (isDefined(wrapAddress))
318318 then {
319319 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
320320 case s: String =>
321321 s
322322 case _ =>
323323 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
324324 }
325325 if ((unlockedNftStr == unlockedNftStr))
326- then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
326+ then if ((value(wrapAddress).bytes == nftWavesDomainsWrapper))
327+ then {
328+ let transferWavesDomainsTokenWithOwnership = invoke(value(wrapAddress), "transfer", [toString(i.caller)], [AttachedPayment(fromBase58String(unlockedNftStr), 1)])
329+ if ((transferWavesDomainsTokenWithOwnership == transferWavesDomainsTokenWithOwnership))
330+ then nil
331+ else throw("Strict value is not equal to itself.")
332+ }
333+ else [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
327334 else throw("Strict value is not equal to itself.")
328335 }
329336 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
330337 }
331338 else throw("Ivalid bought NFT")
332339 }
333340 else throw("Strict value is not equal to itself.")
334341 }
335342
336343
337344 @Verifier(tx)
338345 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
339346

github/deemru/w8io/3ef1775 
40.08 ms