tx · H5K9gmGNazEoWU2VmzSsjmFb7FdQ9u73nSjQ6vs1U8zN

3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A:  -0.01000000 Waves

2023.01.16 15:37 [3472986] smart account 3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A > SELF 0.00000000 Waves

{ "type": 13, "id": "H5K9gmGNazEoWU2VmzSsjmFb7FdQ9u73nSjQ6vs1U8zN", "fee": 1000000, "feeAssetId": null, "timestamp": 1673872744151, "version": 2, "chainId": 87, "sender": "3P6fAxtw12pjFhayEfpcUWxgu2BHVCeP78A", "senderPublicKey": "A96wNJF8YTgx1J9Q4nK3oqNoExh6dPSyFAdEkmzN7XDa", "proofs": [ "59UL5p4z3fHvs8xHY1KVByQXbXKhje54zHWB4fvSnWtqXifcdTT25DiTcgDzAzfbs8XLzQy27uEgrm3pxaf3Eb84" ], "script": "base64:BgIVCAISBQoDAQgIEgMKAQgSABIDCgEIGgASbmZ0Q3JlYXRpb25BZGRyZXNzARoBV5PdxNIX5yAK/fchEk7w8HZnJoMDeNRcTAARZWFnbGVCdXllckFkZHJlc3MBGgFXOlFhR4ekF3ncYJWgtmbLPN4lL64w7/v2ABlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzARoBV3tk1VvWnhe5qtPmj/wDXMjEFvibuoYp4gAObmZ0RHVja1dyYXBwZXIBGgFXFK1EUpul/f9hF//YOufxZ4qAnBS4L88eABFuZnRTaWduQXJ0V3JhcHBlcgEaAVfuoRoVw/G2X0Rl/1/IFTnEeUXVGEVHMAcAFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIBGgFXwK3CbTLNka+lV0XYh/JTwVqOyL0misoLABRuZnRXYXZlc1B1bmtzV3JhcHBlcgEaAVd5moowGgnVnajKJ2gj2RvVoec0kMbogy0AFG5mdFdhdmVzTGFuZHNXcmFwcGVyARoBV3P7lvq2A+DsHJ59ULYOpvcQd/BBgIBaBgAQaW5jdWJhdG9yQWRkcmVzcwEaAVeMtUiffp4V1RiXjht3+wl/Z2La4W1jJUkADmJyZWVkZXJBZGRyZXNzARoBV37nuflxxEx4XH14e4ZxgkMVpnlqD7YfHgAabWFya2V0cGxhY2VDb250cmFjdEFkZHJlc3MBGgFXXYvxX8soIGsfZqPIbtoLqJftD+j9yUTxABN6b21iaWVJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXPCJrb4M8vOfQ2wBTO7F4j48kEea4E66TABJwdW5rc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdL7E+N6trSBKdJcVFRWraSu0HUX4XC7GgAE2FsaWVuc0lzc3VlckFkZHJlc3MJAQdBZGRyZXNzAQEaAVdry0+k26a6aqg1+8p1EXR1zqjPhy4X0hgAFW1hZFB1bmtzSXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV7YVkAcYYmCX66dIlynyqzXNfuQCqg2G2QAWbWFkUHVua3MySXNzdWVyQWRkcmVzcwkBB0FkZHJlc3MBARoBV0ZNahDUFfD9r3USTGD3gDwr+HZkIHELBQAPd2xJc3N1ZXJBZGRyZXNzCQEHQWRkcmVzcwEBGgFXztmK5zoMBJMhvzzn9a1idLTYqEfhLTqoAQ9pZldhdmVzTGFuZHNORlQBBWFzc2V0AwMDCQAAAggFBWFzc2V0Bmlzc3VlcgUPd2xJc3N1ZXJBZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEMaWZTaWduQXJ0TmZ0AQVhc3NldAMDAwkAAAIICAUFYXNzZXQGaXNzdWVyBWJ5dGVzBRlzaWduQXJ0TmZ0Q3JlYXRpb25BZGRyZXNzCQAAAggFBWFzc2V0CGRlY2ltYWxzAAAHCQAAAggFBWFzc2V0CnJlaXNzdWFibGUHBwkAAAIIBQVhc3NldAhxdWFudGl0eQABBwEJaWZEdWNrTmZ0AQVhc3NldAMDAwMJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUQaW5jdWJhdG9yQWRkcmVzcwYJAAACCAgFBWFzc2V0Bmlzc3VlcgVieXRlcwUOYnJlZWRlckFkZHJlc3MJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHAQ9pZldhdmVzUHVua3NOZnQBBWFzc2V0AwMDCQBnAgkBC3ZhbHVlT3JFbHNlAgkAzwgCCQDMCAIFE3pvbWJpZUlzc3VlckFkZHJlc3MJAMwIAgUScHVua3NJc3N1ZXJBZGRyZXNzCQDMCAIFE2FsaWVuc0lzc3VlckFkZHJlc3MJAMwIAgUVbWFkUHVua3NJc3N1ZXJBZGRyZXNzCQDMCAIFFm1hZFB1bmtzMklzc3VlckFkZHJlc3MFA25pbAgFBWFzc2V0Bmlzc3VlcgD///////////8BAAAJAAACCAUFYXNzZXQIZGVjaW1hbHMAAAcJAAACCAUFYXNzZXQKcmVpc3N1YWJsZQcHCQAAAggFBWFzc2V0CHF1YW50aXR5AAEHARFpZlVsdHJhU3Rha2luZ05mdAEFYXNzZXQECmlzRWFnbGVORlQEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRFlYWdsZUJ1eWVyQWRkcmVzcwkArAICCQCsAgICBGFydF8JANgEAQgFBWFzc2V0AmlkAgVfdHlwZQMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAAACBQFzAgVlYWdsZQcECWlzQW5pYU5GVAQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFEm5mdENyZWF0aW9uQWRkcmVzcwkArAICCQCsAgICBG5mdF8JANgEAQgFBWFzc2V0AmlkAgdfaXNzdWVyAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAMJAAACBQFzAiMzUE1raTVzSEJzUWI0S2dEa25iVXdzTDNZZ3hhQ3phWm5DSgkBCGNvbnRhaW5zAggFBWFzc2V0BG5hbWUCDEJvcmVkIEFuaWEgIwcHAwUKaXNFYWdsZU5GVAYFCWlzQW5pYU5GVAEUaXNOZnRGcm9tTWFya2V0cGxhY2UBBWFzc2V0AwMDCQAAAggIBQVhc3NldAZpc3N1ZXIFYnl0ZXMFEm5mdENyZWF0aW9uQWRkcmVzcwkAAAIIBQVhc3NldAhkZWNpbWFscwAABwkAAAIIBQVhc3NldApyZWlzc3VhYmxlBwcJAAACCAUFYXNzZXQIcXVhbnRpdHkAAQcBEWdldEFkZHJlc3NGb3JXcmFwAQVhc3NldAMJARFpZlVsdHJhU3Rha2luZ05mdAEFBWFzc2V0CQEHQWRkcmVzcwEFFm5mdFVsdHJhU3Rha2luZ1dyYXBwZXIDCQEPaWZXYXZlc1B1bmtzTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNQdW5rc1dyYXBwZXIDCQEMaWZTaWduQXJ0TmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIDCQEJaWZEdWNrTmZ0AQUFYXNzZXQJAQdBZGRyZXNzAQUObmZ0RHVja1dyYXBwZXIDCQEPaWZXYXZlc0xhbmRzTkZUAQUFYXNzZXQJAQdBZGRyZXNzAQUUbmZ0V2F2ZXNMYW5kc1dyYXBwZXIFBHVuaXQBE2dldEFkZHJlc3NGb3JVbndyYXABBm5mdFN0cgQJaXNTaWduQXJ0BAckbWF0Y2gwCQCdCAIJAQdBZGRyZXNzAQURbmZ0U2lnbkFydFdyYXBwZXIJAKwCAgkArAICAgtzaWduQXJ0TmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEBmlzRHVjawQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAgdfZHVja0lkAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAkAZgIJALECAQUBcwAABwQOaXNVbHRyYVN0YWtpbmcEByRtYXRjaDAJAJ0IAgkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNQdW5rcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcEDGlzV2F2ZXNMYW5kcwQHJG1hdGNoMAkAnQgCCQEHQWRkcmVzcwEFFG5mdFdhdmVzTGFuZHNXcmFwcGVyCQCsAgIJAKwCAgIEbmZ0XwUGbmZ0U3RyAghfYXNzZXRJZAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAJAGYCCQCxAgEFAXMAAAcDBQ5pc1VsdHJhU3Rha2luZwkBB0FkZHJlc3MBBRZuZnRVbHRyYVN0YWtpbmdXcmFwcGVyAwUMaXNXYXZlc1B1bmtzCQEHQWRkcmVzcwEFFG5mdFdhdmVzUHVua3NXcmFwcGVyAwUJaXNTaWduQXJ0CQEHQWRkcmVzcwEFEW5mdFNpZ25BcnRXcmFwcGVyAwUGaXNEdWNrCQEHQWRkcmVzcwEFDm5mdER1Y2tXcmFwcGVyAwUMaXNXYXZlc0xhbmRzCQEHQWRkcmVzcwEFFG5mdFdhdmVzTGFuZHNXcmFwcGVyBQR1bml0AQljaGVja0NhbGwBAWkECXdoaXRlTGlzdAkAzAgCCQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzBQNuaWwEDndoaXRlTGlzdEluZGV4CQELdmFsdWVPckVsc2UCCQDPCAIFCXdoaXRlTGlzdAgFAWkGY2FsbGVyAP///////////wEDCQBnAgUOd2hpdGVMaXN0SW5kZXgAAAYDCQECIT0CCAUBaQZjYWxsZXIIBQFpDG9yaWdpbkNhbGxlcgkAAgECJ0NhbGwgZnJvbSBhbm90aGVyIGNvbnRyYWN0IGlzIGZvcmJpZGRlbgYEAWkBDmxvY2tBbmRTZWxsTkZUAwtidXlPdXRQcmljZQ1idXlPdXRBc3NldElkDXNlbGxlckNvbW1lbnQEC2lzVmFsaWRDYWxsCQEJY2hlY2tDYWxsAQUBaQQHYXNzZXRJZAkBBXZhbHVlAQgJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAVhc3NldAkBBXZhbHVlAQkA7AcBBQdhc3NldElkBAt3cmFwQWRkcmVzcwkBEWdldEFkZHJlc3NGb3JXcmFwAQUFYXNzZXQEDnN0YWtlZE5GVElkU3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBAxsb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBGxvY2sFA25pbAkAzAgCCQCRAwIIBQFpCHBheW1lbnRzAAAFA25pbAMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAXMFByRtYXRjaDAFAXMJAAIBCQCsAgICKVNvbXRoaW5nIHdyb25nIHdoZW4gbG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQxsb2NrZWROZnRTdHIFDGxvY2tlZE5mdFN0cgUMbG9ja2VkTmZ0U3RyCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQDYBAEIBQVhc3NldAJpZAMDBQtpc1ZhbGlkQ2FsbAkAZgIJALECAQUOc3Rha2VkTkZUSWRTdHIAAAcEA2ludgkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgdzZWxsTkZUCQDMCAIFC2J1eU91dFByaWNlCQDMCAIFDWJ1eU91dEFzc2V0SWQJAMwIAgUNc2VsbGVyQ29tbWVudAUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCQDZBAEFDnN0YWtlZE5GVElkU3RyAAEFA25pbAMJAAACBQNpbnYFA2ludgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQIaVGhlIGNyZWF0ZWQgTkZUIGlzIGludmFsaWQBaQETY2FuY2VsU2VsbEFuZFVubG9jawEFbmZ0SWQEC2lzVmFsaWRDYWxsCQEJY2hlY2tDYWxsAQUBaQQFYXNzZXQJAQV2YWx1ZQEJAOwHAQkA2QQBBQVuZnRJZAQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUFbmZ0SWQDAwULaXNWYWxpZENhbGwJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BwQOY2FuY2VsZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBB0FkZHJlc3MBBRptYXJrZXRwbGFjZUNvbnRyYWN0QWRkcmVzcwIKY2FuY2VsU2VsbAkAzAgCBQVuZnRJZAUDbmlsBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIjU29tdGhpbmcgd3Jvbmcgd2hlbiBjYW5jZWwgc2VsbCBORlQDCQAAAgUOY2FuY2VsZWROZnRTdHIFDmNhbmNlbGVkTmZ0U3RyAwkBCWlzRGVmaW5lZAEFC3dyYXBBZGRyZXNzBA51bmxvY2tlZE5mdFN0cgQHJG1hdGNoMAkA/AcECQEFdmFsdWUBBQt3cmFwQWRkcmVzcwIGdW5sb2NrBQNuaWwJAMwIAgkBD0F0dGFjaGVkUGF5bWVudAIIBQVhc3NldAJpZAABBQNuaWwDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQkArAICAitTb210aGluZyB3cm9uZyB3aGVuIHVubG9jayBORlQgaW4gYWRkcmVzczogCQDYBAEICQEFdmFsdWUBBQt3cmFwQWRkcmVzcwVieXRlcwMJAAACBQ51bmxvY2tlZE5mdFN0cgUOdW5sb2NrZWROZnRTdHIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQkA2QQBBQ5jYW5jZWxlZE5mdFN0cgUDbmlsCQACAQIkU3RyaWN0IHZhbHVlIGlzIG5vdCBlcXVhbCB0byBpdHNlbGYuCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQZ1bmxvY2sABAtpc1ZhbGlkQ2FsbAkBCWNoZWNrQ2FsbAEFAWkEBWFzc2V0CQEFdmFsdWUBCQDsBwEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAMDAwULaXNWYWxpZENhbGwJARRpc05mdEZyb21NYXJrZXRwbGFjZQEFBWFzc2V0BwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AAEHBAphc3NldElkU3RyCQDYBAEIBQVhc3NldAJpZAQLd3JhcEFkZHJlc3MJARNnZXRBZGRyZXNzRm9yVW53cmFwAQUKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQCUCgIJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUOdW5sb2NrZWROZnRTdHIFA25pbAUOdW5sb2NrZWROZnRTdHIJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAJQKAgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQgFBWFzc2V0AmlkBQNuaWwJANgEAQgFBWFzc2V0AmlkCQACAQITSXZhbGlkIE5GVCBhdHRhY2hlZAFpAQNidXkBBW5mdElkBAtpc1ZhbGlkQ2FsbAkBCWNoZWNrQ2FsbAEFAWkECWJvdWdodE5mdAQHJG1hdGNoMAkA/AcECQEHQWRkcmVzcwEFGm1hcmtldHBsYWNlQ29udHJhY3RBZGRyZXNzAgZidXlORlQJAMwIAgUFbmZ0SWQFA25pbAgFAWkIcGF5bWVudHMDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFzBQckbWF0Y2gwBQFzCQACAQIbU29tdGhpbmcgd3Jvbmcgd2hlbiBidXkgTkZUAwkAAAIFCWJvdWdodE5mdAUJYm91Z2h0TmZ0BAVhc3NldAkBBXZhbHVlAQkA7AcBCQDZBAEFCWJvdWdodE5mdAMDAwULaXNWYWxpZENhbGwJAGYCCQCxAgEFCWJvdWdodE5mdAAABwkBFGlzTmZ0RnJvbU1hcmtldHBsYWNlAQUFYXNzZXQHBAt3cmFwQWRkcmVzcwkBE2dldEFkZHJlc3NGb3JVbndyYXABBQVuZnRJZAMJAQlpc0RlZmluZWQBBQt3cmFwQWRkcmVzcwQOdW5sb2NrZWROZnRTdHIEByRtYXRjaDAJAPwHBAkBBXZhbHVlAQULd3JhcEFkZHJlc3MCBnVubG9jawUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCCAUFYXNzZXQCaWQAAQUDbmlsAwkAAQIFByRtYXRjaDACBlN0cmluZwQBcwUHJG1hdGNoMAUBcwkAAgEJAKwCAgIrU29tdGhpbmcgd3Jvbmcgd2hlbiB1bmxvY2sgTkZUIGluIGFkZHJlc3M6IAkA2AQBCAkBBXZhbHVlAQULd3JhcEFkZHJlc3MFYnl0ZXMDCQAAAgUOdW5sb2NrZWROZnRTdHIFDnVubG9ja2VkTmZ0U3RyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABCQDZBAEFDnVubG9ja2VkTmZ0U3RyBQNuaWwJAAIBAiRTdHJpY3QgdmFsdWUgaXMgbm90IGVxdWFsIHRvIGl0c2VsZi4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEJANkEAQUJYm91Z2h0TmZ0BQNuaWwJAAIBAhFJdmFsaWQgYm91Z2h0IE5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgECdHgBBnZlcmlmeQAJAPQDAwgFAnR4CWJvZHlCeXRlcwkAkQMCCAUCdHgGcHJvb2ZzAAAIBQJ0eA9zZW5kZXJQdWJsaWNLZXl+07/b", "height": 3472986, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 4q4iaH37rXyK24Nbm6i4tF7bhhVfKwBKoSbhkBx5vxMA Next: 5yGBVRpt9yNsVfrTobkTmLawmMcDA2wVRCwSqKc5vQY1 Diff:
OldNewDifferences
161161 }
162162
163163
164-func checkCall (i) = if ((i.caller != i.originCaller))
165- then throw("Call from another contract is forbidden")
166- else true
164+func checkCall (i) = {
165+ let whiteList = [Address(marketplaceContractAddress)]
166+ let whiteListIndex = valueOrElse(indexOf(whiteList, i.caller), -1)
167+ if ((whiteListIndex >= 0))
168+ then true
169+ else if ((i.caller != i.originCaller))
170+ then throw("Call from another contract is forbidden")
171+ else true
172+ }
167173
168174
169175 @Callable(i)
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 incubatorAddress = base58'3PEktVux2RhchSN63DsDo4b4mz4QqzKSeDv'
2121
2222 let breederAddress = base58'3PDVuU45H7Eh5dmtNbnRNRStGwULA7NY6Hb'
2323
2424 let marketplaceContractAddress = base58'3PATXDVE53rKJtkwXYV3tvuLVS2fDtGtKCc'
2525
2626 let zombieIssuerAddress = Address(base58'3P7QrWH1ETLfKAJcFHYPJmQusNbDuW98Hop')
2727
2828 let punksIssuerAddress = Address(base58'3P8rLVnwrTf4k5AB3emuduhZZb1yKcitTHy')
2929
3030 let aliensIssuerAddress = Address(base58'3PBkrb5LrGDvCwkx4VHZzZkqMNvvGqrJJWj')
3131
3232 let madPunksIssuerAddress = Address(base58'3PJXfYMavRVzBDXqsFfwkLdEV7yuF5RToya')
3333
3434 let madPunks2IssuerAddress = Address(base58'3P8LcmWrr9SFrxwheZQENov5fPHEWtiwroN')
3535
3636 let wlIssuerAddress = Address(base58'3PLncXtS1U83D6cQbFD3H8rBHPLgzxSFKZ1')
3737
3838 func ifWavesLandsNFT (asset) = if (if (if ((asset.issuer == wlIssuerAddress))
3939 then (asset.decimals == 0)
4040 else false)
4141 then (asset.reissuable == false)
4242 else false)
4343 then (asset.quantity == 1)
4444 else false
4545
4646
4747 func ifSignArtNft (asset) = if (if (if ((asset.issuer.bytes == signArtNftCreationAddress))
4848 then (asset.decimals == 0)
4949 else false)
5050 then (asset.reissuable == false)
5151 else false)
5252 then (asset.quantity == 1)
5353 else false
5454
5555
5656 func ifDuckNft (asset) = if (if (if (if ((asset.issuer.bytes == incubatorAddress))
5757 then true
5858 else (asset.issuer.bytes == breederAddress))
5959 then (asset.decimals == 0)
6060 else false)
6161 then (asset.reissuable == false)
6262 else false)
6363 then (asset.quantity == 1)
6464 else false
6565
6666
6767 func ifWavesPunksNft (asset) = if (if (if ((valueOrElse(indexOf([zombieIssuerAddress, punksIssuerAddress, aliensIssuerAddress, madPunksIssuerAddress, madPunks2IssuerAddress], asset.issuer), -1) >= 0))
6868 then (asset.decimals == 0)
6969 else false)
7070 then (asset.reissuable == false)
7171 else false)
7272 then (asset.quantity == 1)
7373 else false
7474
7575
7676 func ifUltraStakingNft (asset) = {
7777 let isEagleNFT = match getString(Address(eagleBuyerAddress), (("art_" + toBase58String(asset.id)) + "_type")) {
7878 case s: String =>
7979 (s == "eagle")
8080 case _ =>
8181 false
8282 }
8383 let isAniaNFT = match getString(Address(nftCreationAddress), (("nft_" + toBase58String(asset.id)) + "_issuer")) {
8484 case s: String =>
8585 if ((s == "3PMki5sHBsQb4KgDknbUwsL3YgxaCzaZnCJ"))
8686 then contains(asset.name, "Bored Ania #")
8787 else false
8888 case _ =>
8989 false
9090 }
9191 if (isEagleNFT)
9292 then true
9393 else isAniaNFT
9494 }
9595
9696
9797 func isNftFromMarketplace (asset) = if (if (if ((asset.issuer.bytes == nftCreationAddress))
9898 then (asset.decimals == 0)
9999 else false)
100100 then (asset.reissuable == false)
101101 else false)
102102 then (asset.quantity == 1)
103103 else false
104104
105105
106106 func getAddressForWrap (asset) = if (ifUltraStakingNft(asset))
107107 then Address(nftUltraStakingWrapper)
108108 else if (ifWavesPunksNft(asset))
109109 then Address(nftWavesPunksWrapper)
110110 else if (ifSignArtNft(asset))
111111 then Address(nftSignArtWrapper)
112112 else if (ifDuckNft(asset))
113113 then Address(nftDuckWrapper)
114114 else if (ifWavesLandsNFT(asset))
115115 then Address(nftWavesLandsWrapper)
116116 else unit
117117
118118
119119 func getAddressForUnwrap (nftStr) = {
120120 let isSignArt = match getString(Address(nftSignArtWrapper), (("signArtNft_" + nftStr) + "_assetId")) {
121121 case s: String =>
122122 (size(s) > 0)
123123 case _ =>
124124 false
125125 }
126126 let isDuck = match getString(Address(nftDuckWrapper), (("nft_" + nftStr) + "_duckId")) {
127127 case s: String =>
128128 (size(s) > 0)
129129 case _ =>
130130 false
131131 }
132132 let isUltraStaking = match getString(Address(nftUltraStakingWrapper), (("nft_" + nftStr) + "_assetId")) {
133133 case s: String =>
134134 (size(s) > 0)
135135 case _ =>
136136 false
137137 }
138138 let isWavesPunks = match getString(Address(nftWavesPunksWrapper), (("nft_" + nftStr) + "_assetId")) {
139139 case s: String =>
140140 (size(s) > 0)
141141 case _ =>
142142 false
143143 }
144144 let isWavesLands = match getString(Address(nftWavesLandsWrapper), (("nft_" + nftStr) + "_assetId")) {
145145 case s: String =>
146146 (size(s) > 0)
147147 case _ =>
148148 false
149149 }
150150 if (isUltraStaking)
151151 then Address(nftUltraStakingWrapper)
152152 else if (isWavesPunks)
153153 then Address(nftWavesPunksWrapper)
154154 else if (isSignArt)
155155 then Address(nftSignArtWrapper)
156156 else if (isDuck)
157157 then Address(nftDuckWrapper)
158158 else if (isWavesLands)
159159 then Address(nftWavesLandsWrapper)
160160 else unit
161161 }
162162
163163
164-func checkCall (i) = if ((i.caller != i.originCaller))
165- then throw("Call from another contract is forbidden")
166- else true
164+func checkCall (i) = {
165+ let whiteList = [Address(marketplaceContractAddress)]
166+ let whiteListIndex = valueOrElse(indexOf(whiteList, i.caller), -1)
167+ if ((whiteListIndex >= 0))
168+ then true
169+ else if ((i.caller != i.originCaller))
170+ then throw("Call from another contract is forbidden")
171+ else true
172+ }
167173
168174
169175 @Callable(i)
170176 func lockAndSellNFT (buyOutPrice,buyOutAssetId,sellerComment) = {
171177 let isValidCall = checkCall(i)
172178 let assetId = value(value(i.payments[0]).assetId)
173179 let asset = value(assetInfo(assetId))
174180 let wrapAddress = getAddressForWrap(asset)
175181 let stakedNFTIdStr = if (isDefined(wrapAddress))
176182 then {
177183 let lockedNftStr = match invoke(value(wrapAddress), "lock", nil, [i.payments[0]]) {
178184 case s: String =>
179185 s
180186 case _ =>
181187 throw(("Somthing wrong when lock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
182188 }
183189 if ((lockedNftStr == lockedNftStr))
184190 then lockedNftStr
185191 else throw("Strict value is not equal to itself.")
186192 }
187193 else toBase58String(asset.id)
188194 if (if (isValidCall)
189195 then (size(stakedNFTIdStr) > 0)
190196 else false)
191197 then {
192198 let inv = invoke(Address(marketplaceContractAddress), "sellNFT", [buyOutPrice, buyOutAssetId, sellerComment], [AttachedPayment(fromBase58String(stakedNFTIdStr), 1)])
193199 if ((inv == inv))
194200 then nil
195201 else throw("Strict value is not equal to itself.")
196202 }
197203 else throw("The created NFT is invalid")
198204 }
199205
200206
201207
202208 @Callable(i)
203209 func cancelSellAndUnlock (nftId) = {
204210 let isValidCall = checkCall(i)
205211 let asset = value(assetInfo(fromBase58String(nftId)))
206212 let wrapAddress = getAddressForUnwrap(nftId)
207213 if (if (isValidCall)
208214 then isNftFromMarketplace(asset)
209215 else false)
210216 then {
211217 let canceledNftStr = match invoke(Address(marketplaceContractAddress), "cancelSell", [nftId], nil) {
212218 case s: String =>
213219 s
214220 case _ =>
215221 throw("Somthing wrong when cancel sell NFT")
216222 }
217223 if ((canceledNftStr == canceledNftStr))
218224 then if (isDefined(wrapAddress))
219225 then {
220226 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
221227 case s: String =>
222228 s
223229 case _ =>
224230 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
225231 }
226232 if ((unlockedNftStr == unlockedNftStr))
227233 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
228234 else throw("Strict value is not equal to itself.")
229235 }
230236 else [ScriptTransfer(i.caller, 1, fromBase58String(canceledNftStr))]
231237 else throw("Strict value is not equal to itself.")
232238 }
233239 else throw("Ivalid NFT attached")
234240 }
235241
236242
237243
238244 @Callable(i)
239245 func unlock () = {
240246 let isValidCall = checkCall(i)
241247 let asset = value(assetInfo(value(i.payments[0].assetId)))
242248 if (if (if (isValidCall)
243249 then isNftFromMarketplace(asset)
244250 else false)
245251 then (i.payments[0].amount == 1)
246252 else false)
247253 then {
248254 let assetIdStr = toBase58String(asset.id)
249255 let wrapAddress = getAddressForUnwrap(assetIdStr)
250256 if (isDefined(wrapAddress))
251257 then {
252258 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
253259 case s: String =>
254260 s
255261 case _ =>
256262 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
257263 }
258264 if ((unlockedNftStr == unlockedNftStr))
259265 then $Tuple2([ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))], unlockedNftStr)
260266 else throw("Strict value is not equal to itself.")
261267 }
262268 else $Tuple2([ScriptTransfer(i.caller, 1, asset.id)], toBase58String(asset.id))
263269 }
264270 else throw("Ivalid NFT attached")
265271 }
266272
267273
268274
269275 @Callable(i)
270276 func buy (nftId) = {
271277 let isValidCall = checkCall(i)
272278 let boughtNft = match invoke(Address(marketplaceContractAddress), "buyNFT", [nftId], i.payments) {
273279 case s: String =>
274280 s
275281 case _ =>
276282 throw("Somthing wrong when buy NFT")
277283 }
278284 if ((boughtNft == boughtNft))
279285 then {
280286 let asset = value(assetInfo(fromBase58String(boughtNft)))
281287 if (if (if (isValidCall)
282288 then (size(boughtNft) > 0)
283289 else false)
284290 then isNftFromMarketplace(asset)
285291 else false)
286292 then {
287293 let wrapAddress = getAddressForUnwrap(nftId)
288294 if (isDefined(wrapAddress))
289295 then {
290296 let unlockedNftStr = match invoke(value(wrapAddress), "unlock", nil, [AttachedPayment(asset.id, 1)]) {
291297 case s: String =>
292298 s
293299 case _ =>
294300 throw(("Somthing wrong when unlock NFT in address: " + toBase58String(value(wrapAddress).bytes)))
295301 }
296302 if ((unlockedNftStr == unlockedNftStr))
297303 then [ScriptTransfer(i.caller, 1, fromBase58String(unlockedNftStr))]
298304 else throw("Strict value is not equal to itself.")
299305 }
300306 else [ScriptTransfer(i.caller, 1, fromBase58String(boughtNft))]
301307 }
302308 else throw("Ivalid bought NFT")
303309 }
304310 else throw("Strict value is not equal to itself.")
305311 }
306312
307313
308314 @Verifier(tx)
309315 func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
310316

github/deemru/w8io/3ef1775 
54.82 ms