tx · 5yGBVRpt9yNsVfrTobkTmLawmMcDA2wVRCwSqKc5vQY1

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.01000000 Waves

2023.01.25 16:20 [3486064] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "5yGBVRpt9yNsVfrTobkTmLawmMcDA2wVRCwSqKc5vQY1", "fee": 1000000, "feeAssetId": null, "timestamp": 1674652805485, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "3TndWw4MWm5E1nyQnaZMGzqU8FxhLMmVXAyCUG1kdVcGGQ8oHLQy9XN8TWxn5KerHctS8fXSkB7PQXniPEhcaBA" ], "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/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgZidXlORlQJAMwIAgUFbmZ0SWQFA25pbAgFAWkIcGF5bWVudHMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIbU29tdGhpbmcgd3Jvbmcgd2hlbiBidXkgTkZUAwkAAAIFCWJvdWdodE5mdAUJYm91Z2h0TmZ0BAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFCWJvdWdodE5mdAMDAwULaXNWYWxpZENhbGwJAGYCCQCxAgEFCWJvdWdodE5mdAAABwkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQHBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQVuZnRJZAMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUJYm91Z2h0TmZ0BQNuaWwJAAIBAhFJdmFsaWQgYm91Z2h0IE5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXkWrlKr", "height": 3486064, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: H5K9gmGNazEoWU2VmzSsjmFb7FdQ9u73nSjQ6vs1U8zN Next: G8zQEMLBH9GvLiWa24PSUspEqECUUF1zehzyj4NUQK14 Diff:
OldNewDifferences
1717
1818 let nftWavesLandsWrapper = base58'3PCW9q51iwFiaDZB8SSRgc7jqjYgTgQy5T3'
1919
20+let nftWavesDomainsWrapper = base58'3P6EXY5LjsD8xth9GHemxemFHqCL4QzJSaU'
21+
2022 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
2123
2224 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
3436 let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
3537
3638 let wlIssuerAddress = Address(base58'3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1')
39+
40+let wavesDomainsIssuerAddress = Address(base58'3P6utP25F4wMUGG4hGdDtMXMKu2tTeNkgRs')
3741
3842 func ifWavesLandsNFT (asset) = if (if (if ((asset.issuer == wlIssuerAddress))
3943 then (asset.decimals == 0)
9498 }
9599
96100
101+func ifWavesDomainsNft (asset) = if (if (if ((asset.issuer == wavesDomainsIssuerAddress))
102+ then (asset.decimals == 0)
103+ else false)
104+ then (asset.reissuable == false)
105+ else false)
106+ then (asset.quantity == 1)
107+ else false
108+
109+
97110 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
98111 then (asset.decimals == 0)
99112 else false)
113126 then Address(nftDuckWrapper)
114127 else if (ifWavesLandsNFT(asset))
115128 then Address(nftWavesLandsWrapper)
116- else unit
129+ else if (ifWavesDomainsNft(asset))
130+ then Address(nftWavesDomainsWrapper)
131+ else unit
117132
118133
119134 func getAddressForUnwrap (nftStr) = {
147162 case _ =>
148163 false
149164 }
165+ let isWavesDomains = match getString(Address(nftWavesDomainsWrapper), (("Wrapped_" + nftStr) + "_tokenId")) {
166+ case s: String =>
167+ (size(s) > 0)
168+ case _ =>
169+ false
170+ }
150171 if (isUltraStaking)
151172 then Address(nftUltraStakingWrapper)
152173 else if (isWavesPunks)
157178 then Address(nftDuckWrapper)
158179 else if (isWavesLands)
159180 then Address(nftWavesLandsWrapper)
160- else unit
181+ else if (isWavesDomains)
182+ then Address(nftWavesDomainsWrapper)
183+ else unit
161184 }
162185
163186
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
20+let nftWavesDomainsWrapper = base58'3P6EXY5LjsD8xth9GHemxemFHqCL4QzJSaU'
21+
2022 let incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
2123
2224 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
2325
2426 let marketplaceContractAddress = base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc'
2527
2628 let zombieIssuerAddress = Address(base58'3P7QrWH1ETLfKAJcFHYPJmQusNbDuW98Hop')
2729
2830 let punksIssuerAddress = Address(base58'3P8rLVnwrTf4k5AB3emuduhZZb1yKcitTHy')
2931
3032 let aliensIssuerAddress = Address(base58'3PBkrb5LrGDvCwkx4VHZzZkqMNvvGqrJJWj')
3133
3234 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3335
3436 let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
3537
3638 let wlIssuerAddress = Address(base58'3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1')
39+
40+let wavesDomainsIssuerAddress = Address(base58'3P6utP25F4wMUGG4hGdDtMXMKu2tTeNkgRs')
3741
3842 func ifWavesLandsNFT (asset) = if (if (if ((asset.issuer == wlIssuerAddress))
3943 then (asset.decimals == 0)
4044 else false)
4145 then (asset.reissuable == false)
4246 else false)
4347 then (asset.quantity == 1)
4448 else false
4549
4650
4751 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
4852 then (asset.decimals == 0)
4953 else false)
5054 then (asset.reissuable == false)
5155 else false)
5256 then (asset.quantity == 1)
5357 else false
5458
5559
5660 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
5761 then true
5862 else (asset.issuer.bytes == breederAddress))
5963 then (asset.decimals == 0)
6064 else false)
6165 then (asset.reissuable == false)
6266 else false)
6367 then (asset.quantity == 1)
6468 else false
6569
6670
6771 func ifWavesPunksNft (asset) = if (if (if ((valueOrElse(indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress, madPunks2IssuerAddress], asset.issuer), -1) >= 0))
6872 then (asset.decimals == 0)
6973 else false)
7074 then (asset.reissuable == false)
7175 else false)
7276 then (asset.quantity == 1)
7377 else false
7478
7579
7680 func ifUltraStakingNft (asset) = {
7781 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
7882 case s: String =>
7983 (s == "eagle")
8084 case _ =>
8185 false
8286 }
8387 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
8488 case s: String =>
8589 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
8690 then contains(asset.name, "Bored Ania #")
8791 else false
8892 case _ =>
8993 false
9094 }
9195 if (isEagleNFT)
9296 then true
9397 else isAniaNFT
9498 }
9599
96100
101+func ifWavesDomainsNft (asset) = if (if (if ((asset.issuer == wavesDomainsIssuerAddress))
102+ then (asset.decimals == 0)
103+ else false)
104+ then (asset.reissuable == false)
105+ else false)
106+ then (asset.quantity == 1)
107+ else false
108+
109+
97110 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
98111 then (asset.decimals == 0)
99112 else false)
100113 then (asset.reissuable == false)
101114 else false)
102115 then (asset.quantity == 1)
103116 else false
104117
105118
106119 func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
107120 then Address(nftUltraStakingWrapper)
108121 else if (ifWavesPunksNft(asset))
109122 then Address(nftWavesPunksWrapper)
110123 else if (ifSignArtNft(asset))
111124 then Address(nftSignArtWrapper)
112125 else if (ifDuckNft(asset))
113126 then Address(nftDuckWrapper)
114127 else if (ifWavesLandsNFT(asset))
115128 then Address(nftWavesLandsWrapper)
116- else unit
129+ else if (ifWavesDomainsNft(asset))
130+ then Address(nftWavesDomainsWrapper)
131+ else unit
117132
118133
119134 func getAddressForUnwrap (nftStr) = {
120135 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
121136 case s: String =>
122137 (size(s) > 0)
123138 case _ =>
124139 false
125140 }
126141 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
127142 case s: String =>
128143 (size(s) > 0)
129144 case _ =>
130145 false
131146 }
132147 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
133148 case s: String =>
134149 (size(s) > 0)
135150 case _ =>
136151 false
137152 }
138153 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
139154 case s: String =>
140155 (size(s) > 0)
141156 case _ =>
142157 false
143158 }
144159 let isWavesLands = match getString(Address(nftWavesLandsWrapper), (("nft_" + nftStr) + "_assetId")) {
145160 case s: String =>
146161 (size(s) > 0)
147162 case _ =>
148163 false
149164 }
165+ let isWavesDomains = match getString(Address(nftWavesDomainsWrapper), (("Wrapped_" + nftStr) + "_tokenId")) {
166+ case s: String =>
167+ (size(s) > 0)
168+ case _ =>
169+ false
170+ }
150171 if (isUltraStaking)
151172 then Address(nftUltraStakingWrapper)
152173 else if (isWavesPunks)
153174 then Address(nftWavesPunksWrapper)
154175 else if (isSignArt)
155176 then Address(nftSignArtWrapper)
156177 else if (isDuck)
157178 then Address(nftDuckWrapper)
158179 else if (isWavesLands)
159180 then Address(nftWavesLandsWrapper)
160- else unit
181+ else if (isWavesDomains)
182+ then Address(nftWavesDomainsWrapper)
183+ else unit
161184 }
162185
163186
164187 func checkCall (i) = {
165188 let whiteList = [Address(marketplaceContractAddress)]
166189 let whiteListIndex = valueOrElse(indexOf(whiteList, i.caller), -1)
167190 if ((whiteListIndex >= 0))
168191 then true
169192 else if ((i.caller != i.originCaller))
170193 then throw("Call from another contract is forbidden")
171194 else true
172195 }
173196
174197
175198 @Callable(i)
176199 func lockAndSellNFT (buyOutPrice,buyOutAssetId,sellerComment) = {
177200 let isValidCall = checkCall(i)
178201 let assetId = value(value(i.payments[0]).assetId)
179202 let asset = value(assetInfo(assetId))
180203 let wrapAddress = getAddressForWrap(asset)
181204 let stakedNFTIdStr = if (isDefined(wrapAddress))
182205 then {
183206 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
184207 case s: String =>
185208 s
186209 case _ =>
187210 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
188211 }
189212 if ((lockedNftStr == lockedNftStr))
190213 then lockedNftStr
191214 else throw("Strict value is not equal to itself.")
192215 }
193216 else toBase58String(asset.id)
194217 if (if (isValidCall)
195218 then (size(stakedNFTIdStr) > 0)
196219 else false)
197220 then {
198221 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId, sellerComment], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
199222 if ((inv == inv))
200223 then nil
201224 else throw("Strict value is not equal to itself.")
202225 }
203226 else throw("The created NFT is invalid")
204227 }
205228
206229
207230
208231 @Callable(i)
209232 func cancelSellAndUnlock (nftId) = {
210233 let isValidCall = checkCall(i)
211234 let asset = value(assetInfo(fromBase58String(nftId)))
212235 let wrapAddress = getAddressForUnwrap(nftId)
213236 if (if (isValidCall)
214237 then isNftFromMarketplace(asset)
215238 else false)
216239 then {
217240 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
218241 case s: String =>
219242 s
220243 case _ =>
221244 throw("Somthing wrong when cancel sell NFT")
222245 }
223246 if ((canceledNftStr == canceledNftStr))
224247 then if (isDefined(wrapAddress))
225248 then {
226249 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
227250 case s: String =>
228251 s
229252 case _ =>
230253 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
231254 }
232255 if ((unlockedNftStr == unlockedNftStr))
233256 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
234257 else throw("Strict value is not equal to itself.")
235258 }
236259 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
237260 else throw("Strict value is not equal to itself.")
238261 }
239262 else throw("Ivalid NFT attached")
240263 }
241264
242265
243266
244267 @Callable(i)
245268 func unlock () = {
246269 let isValidCall = checkCall(i)
247270 let asset = value(assetInfo(value(i.payments[0].assetId)))
248271 if (if (if (isValidCall)
249272 then isNftFromMarketplace(asset)
250273 else false)
251274 then (i.payments[0].amount == 1)
252275 else false)
253276 then {
254277 let assetIdStr = toBase58String(asset.id)
255278 let wrapAddress = getAddressForUnwrap(assetIdStr)
256279 if (isDefined(wrapAddress))
257280 then {
258281 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
259282 case s: String =>
260283 s
261284 case _ =>
262285 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
263286 }
264287 if ((unlockedNftStr == unlockedNftStr))
265288 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
266289 else throw("Strict value is not equal to itself.")
267290 }
268291 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
269292 }
270293 else throw("Ivalid NFT attached")
271294 }
272295
273296
274297
275298 @Callable(i)
276299 func buy (nftId) = {
277300 let isValidCall = checkCall(i)
278301 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
279302 case s: String =>
280303 s
281304 case _ =>
282305 throw("Somthing wrong when buy NFT")
283306 }
284307 if ((boughtNft == boughtNft))
285308 then {
286309 let asset = value(assetInfo(fromBase58String(boughtNft)))
287310 if (if (if (isValidCall)
288311 then (size(boughtNft) > 0)
289312 else false)
290313 then isNftFromMarketplace(asset)
291314 else false)
292315 then {
293316 let wrapAddress = getAddressForUnwrap(nftId)
294317 if (isDefined(wrapAddress))
295318 then {
296319 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
297320 case s: String =>
298321 s
299322 case _ =>
300323 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
301324 }
302325 if ((unlockedNftStr == unlockedNftStr))
303326 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
304327 else throw("Strict value is not equal to itself.")
305328 }
306329 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
307330 }
308331 else throw("Ivalid bought NFT")
309332 }
310333 else throw("Strict value is not equal to itself.")
311334 }
312335
313336
314337 @Verifier(tx)
315338 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
316339

github/deemru/w8io/3ef1775 
37.84 ms