tx · GeUcjWtmgZrK1ehsDty2hQyQsh75yvQR5wXgM73MNewk

3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H:  -0.11000000 Waves

2022.11.25 14:16 [2332557] smart account 3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H > SELF 0.00000000 Waves

{ "type": 13, "id": "GeUcjWtmgZrK1ehsDty2hQyQsh75yvQR5wXgM73MNewk", "fee": 11000000, "feeAssetId": null, "timestamp": 1669374961897, "version": 2, "chainId": 84, "sender": "3N4boZRUJ2LxY5jLyp6hmxGktqnawQidu6H", "senderPublicKey": "BDeCphaaC4MZvfmbJqQZ78EvuEBZTJ1VEW7fbxue8BUu", "proofs": [ "5wRbq2oNiR3mU4sp84R1hEVaVHdUVoZvqTU8HR9n61d2zYPwyrEPuRff9gMXtK9NvcCrwBzYeEyZmPyqvYRzsuTs" ], "script": "base64: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ZXBhcmF0b3IJAAIBAiFNYXggbnVtYmVyIG9mIHBhcmFtZXRlcnMgZXhjZWVkZWQBDnBhcnNlQXNBdWN0aW9uAQdkZXRhaWxzBANyZXMJALUJAgUHZGV0YWlscwUJc2VwYXJhdG9yCQCXCgUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUDcmVzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNyZXMAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA3JlcwACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDcmVzAAMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNyZXMABAELcGFyc2VBc1NlbGwBB2RldGFpbHMEA3JlcwkAtQkCBQdkZXRhaWxzBQlzZXBhcmF0b3IJAJQKAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQNyZXMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA3JlcwABAQpqb2luU3RydWN0AQZwYXJhbXMEByRtYXRjaDAFBnBhcmFtcwMJAAECBQckbWF0Y2gwAh4oQWRkcmVzcywgSW50LCBTdHJpbmcsIFN0cmluZykEB2F1Y3Rpb24FByRtYXRjaDAJAQpqb2luU3RyaW5nAQkAzAgCCQClCAEIBQdhdWN0aW9uAl8xCQDMCAIJAKQDAQgFB2F1Y3Rpb24CXzIJAMwIAggFB2F1Y3Rpb24CXzMJAMwIAggFB2F1Y3Rpb24CXzQFA25pbAMJAAECBQckbWF0Y2gwAg4oQWRkcmVzcywgSW50KQQEc2VsbAUHJG1hdGNoMAkBCmpvaW5TdHJpbmcBCQDMCAIJAKUIAQgFBHNlbGwCXzEJAMwIAgkApAMBCAUEc2VsbAJfMgUDbmlsCQACAQITV3JvbmcgcGFyYW1zIHR1cHBsZQEKc2V0QXVjdGlvbgUGc2VsbGVyBW5mdElkCnN0YXJ0UHJpY2UFc3RhcnQDZW5kCQELU3RyaW5nRW50cnkCCQENZ2V0QXVjdGlvbktleQEFBW5mdElkCQEKam9pblN0cnVjdAEJAJYKBAUGc2VsbGVyBQpzdGFydFByaWNlBQVzdGFydAUDZW5kAQdzZXRTZWxsAwVuZnRJZAZjZWxsZXIFcHJpY2UJAQtTdHJpbmdFbnRyeQIJAQpnZXRTZWxsS2V5AQUFbmZ0SWQJAQpqb2luU3RydWN0AQkAlAoCBQZjZWxsZXIFBXByaWNlAQpnZXRBdWN0aW9uAQVuZnRJZAkBBXZhbHVlAQkAnQgCBQR0aGlzCQENZ2V0QXVjdGlvbktleQEFBW5mdElkAQdnZXRTZWxsAQVuZnRJZAkBBXZhbHVlAQkAnQgCBQR0aGlzCQEKZ2V0U2VsbEtleQEFBW5mdElkARhjYWxjUHJpY2VBdEN1cnJlbnRNb21lbnQCB2Fzc2V0SWQGbW9tZW50BAdkZXRhaWxzCQEKZ2V0QXVjdGlvbgEFB2Fzc2V0SWQECyR0MDI3NTUyODU5CQEOcGFyc2VBc0F1Y3Rpb24BBQdkZXRhaWxzBAZzZWxsZXIIBQskdDAyNzU1Mjg1OQJfMQQPc3RhcnRQcmljZVZhbHVlCAULJHQwMjc1NTI4NTkCXzIEDWVuZFByaWNlVmFsdWUIBQskdDAyNzU1Mjg1OQJfMwQQc3RhcnRQZXJpb2RWYWx1ZQgFCyR0MDI3NTUyODU5Al80BA5lbmRQZXJpb2RWYWx1ZQgFCyR0MDI3NTUyODU5Al81AwkAZwIFBm1vbWVudAUOZW5kUGVyaW9kVmFsdWUJAJQKAgUGc2VsbGVyBQ1lbmRQcmljZVZhbHVlBApkZWx0YVByaWNlCQBlAgUPc3RhcnRQcmljZVZhbHVlBQ1lbmRQcmljZVZhbHVlBAZwZXJpb2QJAGUCBQ5lbmRQZXJpb2RWYWx1ZQUQc3RhcnRQZXJpb2RWYWx1ZQQHc3BlbmRlZAkAZQIFBm1vbWVudAUQc3RhcnRQZXJpb2RWYWx1ZQkAlAoCBQZzZWxsZXIJAGUCBQ9zdGFydFByaWNlVmFsdWUJAGsDBQdzcGVuZGVkBQpkZWx0YVByaWNlBQZwZXJpb2QBBWlzTmZ0AQdhc3NldElkBAckbWF0Y2gwCQDsBwEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBXRva2VuBQckbWF0Y2gwAwMJAAACCAUFdG9rZW4IZGVjaW1hbHMAAAkAAAIIBQV0b2tlbghxdWFudGl0eQABBwkAAAIIBQV0b2tlbgpyZWlzc3VhYmxlBwcHAQxpc1RydXN0ZWROZnQBB2Fzc2V0SWQEBmlzc3VlcggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkBDWdldFRydXN0ZWRLZXkBBQZpc3N1ZXIHAQtpc1NlbGxFeGlzdAEHYXNzZXRJZAkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkBCmdldFNlbGxLZXkBBQdhc3NldElkAQ5pc0F1Y3Rpb25FeGlzdAEHYXNzZXRJZAkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkBDWdldEF1Y3Rpb25LZXkBBQdhc3NldElkARJpc0NvcnJlY3RTZWxsUHJpY2UBBXByaWNlCQBmAgUFcHJpY2UAAAEWaXNDb3JyZWN0QXVjdGlvblByaWNlcwIKc3RhcnRQcmljZQhlbmRQcmljZQkAZgIFCnN0YXJ0UHJpY2UFCGVuZFByaWNlAQdpc0FkbWluAQZjYWxsZXIJAAACBQZjYWxsZXIFBHRoaXMBDWlzVmFsaWRDYWxsZXICBmNhbGxlcgZzZWxsZXIDCQAAAgUGY2FsbGVyBQR0aGlzBgkAAAIFBmNhbGxlcgUGc2VsbGVyAQ5pc0F1Y3Rpb25FbmRlZAIDbm93A2VuZAkAZgIFA25vdwUDZW5kAQ1pc0Vub3VnaEZ1bmRzAgdwYXltZW50EmN1cnJlbnRNb21lbnRQcmljZQkAZwIFB3BheW1lbnQFEmN1cnJlbnRNb21lbnRQcmljZQEHaXNXYXdlcwEHYXNzZXRJZAkAAAIFB2Fzc2V0SWQFBHVuaXQBDGlzQ29ycmVjdE5mdAEFbmZ0SWQDCQEBIQEJAQVpc05mdAEFBW5mdElkCQACAQIQVG9rZW4gaXMgbm90IE5mdAMJAQtpc1NlbGxFeGlzdAEFBW5mdElkCQACAQITU2VsbCBhbHJlYWR5IGV4aXN0cwMJAQ5pc0F1Y3Rpb25FeGlzdAEFBW5mdElkCQACAQIWQXVjdGlvbiBhbHJlYWR5IGV4aXN0cwUEdW5pdAERaXNDb3JyZWN0UGF5bWVudHMDDHBheW1lbnRBc3NldA1wYXltZW50QW1vdW50BXByaWNlAwkBASEBCQEHaXNXYXdlcwEFDHBheW1lbnRBc3NldAkAAgECGFBheW1lbnQgbXVzdCBiZSBhdCBXQVZFUwMJAQEhAQkBDWlzRW5vdWdoRnVuZHMCBQ1wYXltZW50QW1vdW50BQVwcmljZQkAAgECEE5vdCBlbm91Z2ggZnVuZHMFBHVuaXQBB2NhbGNGZWUAAAABDmNhbGNUcnVzdGVkRmVlAAAAARJyZXN1bHRGdW5kc0Ftb3VudHMDCWlzVHJ1c3RlZA1wYXltZW50QW1vdW50C2FjdHVhbFByaWNlAwUJaXNUcnVzdGVkCQCUCgIJAGUCBQthY3R1YWxQcmljZQkBDmNhbGNUcnVzdGVkRmVlAAkAZQIFDXBheW1lbnRBbW91bnQFC2FjdHVhbFByaWNlCQCUCgIJAGUCBQthY3R1YWxQcmljZQkBB2NhbGNGZWUACQBlAgUNcGF5bWVudEFtb3VudAULYWN0dWFsUHJpY2UBB2dldFNsb3QBBW5mdElkAwkBC2lzU2VsbEV4aXN0AQUFbmZ0SWQJAJQKAgUFa1NlbGwJAQdnZXRTZWxsAQUFbmZ0SWQDCQEOaXNBdWN0aW9uRXhpc3QBBQVuZnRJZAkAlAoCBQhrQXVjdGlvbgkBCmdldEF1Y3Rpb24BBQVuZnRJZAkAAgECElNsb3QgZG9lc25gdCBleGlzdAAEa0J1eQIDYnV5AAtBU0lNSV9UT0tFTgEgyfO3KK1nQRdNMgY1dCxkhGzviOKkmyfHFOqpH9CNn1QKAWkBCWNyZWF0ZU5mdAkIbmZ0X25hbWUJbmZ0X293bmVyD25mdF9kQXBwQWRkcmVzcwhuZnRfdHlwZQhuZnRfdGFncxFuZnRfc2VsbGluZ19wcmljZQ9uZnRfZGVzY3JpcHRpb24KbmZ0X29uU2VsbAhuZnRfZGF0YQQIbmV3VG9rZW4JAMIIBQUIbmZ0X25hbWUFD25mdF9kZXNjcmlwdGlvbgABAAAHBAdpc3N1ZUlkCQC4CAEFCG5ld1Rva2VuCQDMCAIFCG5ld1Rva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdpc3N1ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIFT3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X3R5cGUFCG5mdF90eXBlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X3RhZ3MFCG5mdF90YWdzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIPbmZ0X2RBcHBBZGRyZXNzBQ9uZnRfZEFwcEFkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIRbmZ0X3NlbGxpbmdfcHJpY2UFEW5mdF9zZWxsaW5nX3ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIKbmZ0X29uU2VsbAUKbmZ0X29uU2VsbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCG5mdF9kYXRhBQhuZnRfZGF0YQUDbmlsAWkBCGlzc3VlTmZ0AgRuYW1lBG1ldGEECG5ld1Rva2VuCQDCCAUFBG5hbWUFBG1ldGEAAQAABwQHaXNzdWVJZAkAuAgBBQhuZXdUb2tlbgkAzAgCBQhuZXdUb2tlbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHaXNzdWVJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICBU93bmVyCQClCAEIBQFpBmNhbGxlcgUDbmlsAWkBBmJ1eU5GVAEFbmZ0SUQEB2Fzc2V0SWQJANkEAQUFbmZ0SUQEBmFtb3VudAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEB2Ftb3VudDEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAEGYW1vdW50BAVwcmljZQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCiCAEJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgUFbmZ0SUQCHlRoZXJlIGlzIG5vIHByaWNlIGZvciB0aGlzIE5GVAQFb3duZXIJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3ICBU93bmVyAghObyBvd25lcgMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAAgECDFBheSBpbiB3YXZlcwMJAQIhPQIICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAULQVNJTUlfVE9LRU4JAAIBAgxQYXkgaW4gQVNJTUkDCQBmAgkBDXBhcnNlSW50VmFsdWUBBQVwcmljZQUGYW1vdW50CQACAQIVSW52YWxpZCBwYXltZW50IFdBVkVTCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQV2YWx1ZQEJAKYIAQUFb3duZXIJAQ1wYXJzZUludFZhbHVlAQUFcHJpY2UFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQlzZXBhcmF0b3IFBGtCdXkJAKwCAgkArAICBQVuZnRJRAUJc2VwYXJhdG9yCQCkAwEFBmFtb3VudAUDbmlsAWkBB3NlbGxORlQBBXByaWNlBAskdDA3NDEyNzQ5NwkAlAoCCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAZ0b2tlbjAIBQskdDA3NDEyNzQ5NwJfMQQHYW1vdW50MAgFCyR0MDc0MTI3NDk3Al8yAwkBASEBCQEFaXNOZnQBBQZ0b2tlbjAJAAIBAhBUb2tlbiBpcyBub3QgTkZUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgkA2AQBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAKQDAQUFcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQlzZXBhcmF0b3IFBWtTZWxsCQCsAgIJAKwCAgkA2AQBBQZ0b2tlbjAFCXNlcGFyYXRvcgkApAMBBQdhbW91bnQwBQNuaWwBaQEHYWRkU2VsbAEFcHJpY2UEBW5mdElkCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQt2YWx1ZU9yRWxzZQIJAQxpc0NvcnJlY3ROZnQBBQVuZnRJZAMJAQEhAQkBEmlzQ29ycmVjdFNlbGxQcmljZQEFBXByaWNlCQACAQIRUHJpY2UgbXVzdCBiZSA+IDAJAMwIAgkBB3NldFNlbGwDBQVuZnRJZAgFAWkGY2FsbGVyBQVwcmljZQUDbmlsAWkBCmFkZEF1Y3Rpb24DCnN0YXJ0UHJpY2UFc3RhcnQDZW5kBAVuZnRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkCQELdmFsdWVPckVsc2UCCQEMaXNDb3JyZWN0TmZ0AQUFbmZ0SWQJAMwIAgkBCnNldEF1Y3Rpb24FCAUBaQZjYWxsZXIFBW5mdElkBQpzdGFydFByaWNlBQVzdGFydAUDZW5kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFBW5mdElkBQlzZXBhcmF0b3ICCW5mdF9vd25lcgkApQgBCAUBaQZjYWxsZXIFA25pbAFpAQtidXlGcm9tU2xvdAEFbmZ0SWQECyR0MDg0MTc4NTA2CQCUCgIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEDHBheW1lbnRBc3NldAgFCyR0MDg0MTc4NTA2Al8xBA1wYXltZW50QW1vdW50CAULJHQwODQxNzg1MDYCXzIEB2Fzc2V0SWQJANkEAQUFbmZ0SWQECyR0MDg1NTA4NTg4CQEHZ2V0U2xvdAEFB2Fzc2V0SWQEBHR5cGUIBQskdDA4NTUwODU4OAJfMQQHZGV0YWlscwgFCyR0MDg1NTA4NTg4Al8yBAdiYXNlUmVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAQpnZXRTbG90S2V5AgUEdHlwZQUHYXNzZXRJZAUDbmlsAwkAAAIFBHR5cGUFBWtTZWxsBAskdDA4NzMwODc3NwkBC3BhcnNlQXNTZWxsAQUHZGV0YWlscwQGc2VsbGVyCAULJHQwODczMDg3NzcCXzEECnByaWNlVmFsdWUIBQskdDA4NzMwODc3NwJfMgkBC3ZhbHVlT3JFbHNlAgkBEWlzQ29ycmVjdFBheW1lbnRzAwUMcGF5bWVudEFzc2V0BQ1wYXltZW50QW1vdW50BQpwcmljZVZhbHVlBAskdDA4ODYyODk2NAkBEnJlc3VsdEZ1bmRzQW1vdW50cwMJAQxpc1RydXN0ZWROZnQBBQdhc3NldElkBQ1wYXltZW50QW1vdW50BQpwcmljZVZhbHVlBAxzZWxsZXJBbW91bnQIBQskdDA4ODYyODk2NAJfMQQLYnV5ZXJBbW91bnQIBQskdDA4ODYyODk2NAJfMgQKdXBkYXRlZFJlcwkAzggCBQdiYXNlUmVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBnNlbGxlcgUMc2VsbGVyQW1vdW50BQR1bml0BQNuaWwDCQBmAgULYnV5ZXJBbW91bnQAAAkAzggCBQp1cGRhdGVkUmVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgULYnV5ZXJBbW91bnQFBHVuaXQFA25pbAUKdXBkYXRlZFJlcwQLJHQwOTE4MTkyNTAJARhjYWxjUHJpY2VBdEN1cnJlbnRNb21lbnQCBQdhc3NldElkBQZoZWlnaHQEBnNlbGxlcggFCyR0MDkxODE5MjUwAl8xBAthY3R1YWxQcmljZQgFCyR0MDkxODE5MjUwAl8yCQELdmFsdWVPckVsc2UCCQERaXNDb3JyZWN0UGF5bWVudHMDBQxwYXltZW50QXNzZXQFDXBheW1lbnRBbW91bnQFC2FjdHVhbFByaWNlBAskdDA5MzM2OTQzOQkBEnJlc3VsdEZ1bmRzQW1vdW50cwMJAQxpc1RydXN0ZWROZnQBBQdhc3NldElkBQ1wYXltZW50QW1vdW50BQthY3R1YWxQcmljZQQMc2VsbGVyQW1vdW50CAULJHQwOTMzNjk0MzkCXzEEC2J1eWVyQW1vdW50CAULJHQwOTMzNjk0MzkCXzIECnVwZGF0ZWRSZXMJAM4IAgUHYmFzZVJlcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDBQZzZWxsZXIFDHNlbGxlckFtb3VudAUEdW5pdAUDbmlsAwkAZgIFC2J1eWVyQW1vdW50AAAJAM4IAgUKdXBkYXRlZFJlcwkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIFC2J1eWVyQW1vdW50BQR1bml0BQNuaWwFCnVwZGF0ZWRSZXMBaQELZGVjbGluZVNsb3QBBW5mdElkBAdhc3NldElkCQDZBAEFBW5mdElkBAskdDA5NzQwOTc3OAkBB2dldFNsb3QBBQdhc3NldElkBAR0eXBlCAULJHQwOTc0MDk3NzgCXzEEB2RldGFpbHMIBQskdDA5NzQwOTc3OAJfMgQHYmFzZVJlcwkAzAgCCQELRGVsZXRlRW50cnkBCQEKZ2V0U2xvdEtleQIFBHR5cGUFB2Fzc2V0SWQFA25pbAMJAAACBQR0eXBlBQVrU2VsbAQLJHQwOTg3MDk5MTcJAQtwYXJzZUFzU2VsbAEFB2RldGFpbHMEBnNlbGxlcggFCyR0MDk4NzA5OTE3Al8xBApwcmljZVZhbHVlCAULJHQwOTg3MDk5MTcCXzIDCQEBIQEJAQ1pc1ZhbGlkQ2FsbGVyAggFAWkGY2FsbGVyBQZzZWxsZXIJAAIBAg5JbnZhbGlkIGNhbGxlcgkAzggCBQdiYXNlUmVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBnNlbGxlcgABBQdhc3NldElkBQNuaWwEDSR0MDEwMDYyMTAxNjYJAQ5wYXJzZUFzQXVjdGlvbgEFB2RldGFpbHMEBnNlbGxlcggFDSR0MDEwMDYyMTAxNjYCXzEED3N0YXJ0UHJpY2VWYWx1ZQgFDSR0MDEwMDYyMTAxNjYCXzIEDWVuZFByaWNlVmFsdWUIBQ0kdDAxMDA2MjEwMTY2Al8zBBBzdGFydFBlcmlvZFZhbHVlCAUNJHQwMTAwNjIxMDE2NgJfNAQOZW5kUGVyaW9kVmFsdWUIBQ0kdDAxMDA2MjEwMTY2Al81AwkBASEBCQENaXNWYWxpZENhbGxlcgIIBQFpBmNhbGxlcgUGc2VsbGVyCQACAQIOSW52YWxpZCBjYWxsZXIDCQEBIQEJAQ5pc0F1Y3Rpb25FbmRlZAIFBmhlaWdodAUOZW5kUGVyaW9kVmFsdWUJAAIBAhdXYWl0IGZvciBlbmQgb2YgYXVjdGlvbgkAzggCBQdiYXNlUmVzCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMFBnNlbGxlcgABBQdhc3NldElkBQNuaWwBaQEQc2V0VHJ1c3RlZElzc3VlcgELdHJ1c3RlZEFkZHIDCQEBIQEJAQdpc0FkbWluAQgFAWkGY2FsbGVyCQACAQIKT25seSBhZG1pbgkAzAgCCQEMQm9vbGVhbkVudHJ5AgkBDWdldFRydXN0ZWRLZXkBCQERQGV4dHJOYXRpdmUoMTA2MikBBQt0cnVzdGVkQWRkcgYFA25pbAFpARdnZXRQcmljZUF0Q3VycmVudE1vbWVudAIFbmZ0SWQGbW9tZW50BAdhc3NldElkCQDZBAEFBW5mdElkBA0kdDAxMDcwNzEwNzcwCQEYY2FsY1ByaWNlQXRDdXJyZW50TW9tZW50AgUHYXNzZXRJZAUGbW9tZW50BAZzZWxsZXIIBQ0kdDAxMDcwNzEwNzcwAl8xBAVwcmljZQgFDSR0MDEwNzA3MTA3NzACXzIJAMwIAgkBDEludGVnZXJFbnRyeQIJAQtnZXRQcmljZUtleQEFB2Fzc2V0SWQFBXByaWNlBQNuaWwAZrn/Wg==", "height": 2332557, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: ENQ2ao1hJpNA9UypZA39y8r1mRUPUnPzAXoom4iMoWro Next: 6MLHAedobyZN3VwFXFDwg8BjaDLf8tTnVRbzxd1m7TNE Diff:
OldNewDifferences
125125
126126
127127 func joinStruct (params) = match params {
128- case auction: (Address, Int, Int, Int, Int) =>
129- joinString([toString(auction._1), toString(auction._2), toString(auction._3), toString(auction._4), toString(auction._5)])
128+ case auction: (Address, Int, String, String) =>
129+ joinString([toString(auction._1), toString(auction._2), auction._3, auction._4])
130130 case sell: (Address, Int) =>
131131 joinString([toString(sell._1), toString(sell._2)])
132132 case _ =>
134134 }
135135
136136
137-func setAuction (seller,nftId,startPrice,endPrice,start,end) = StringEntry(getAuctionKey(nftId), joinStruct($Tuple5(seller, startPrice, endPrice, start, end)))
137+func setAuction (seller,nftId,startPrice,start,end) = StringEntry(getAuctionKey(nftId), joinStruct($Tuple4(seller, startPrice, start, end)))
138138
139139
140140 func setSell (nftId,celler,price) = StringEntry(getSellKey(nftId), joinStruct($Tuple2(celler, price)))
148148
149149 func calcPriceAtCurrentMoment (assetId,moment) = {
150150 let details = getAuction(assetId)
151- let $t028172921 = parseAsAuction(details)
152- let seller = $t028172921._1
153- let startPriceValue = $t028172921._2
154- let endPriceValue = $t028172921._3
155- let startPeriodValue = $t028172921._4
156- let endPeriodValue = $t028172921._5
151+ let $t027552859 = parseAsAuction(details)
152+ let seller = $t027552859._1
153+ let startPriceValue = $t027552859._2
154+ let endPriceValue = $t027552859._3
155+ let startPeriodValue = $t027552859._4
156+ let endPeriodValue = $t027552859._5
157157 if ((moment >= endPeriodValue))
158158 then $Tuple2(seller, endPriceValue)
159159 else {
190190
191191
192192 func isCorrectSellPrice (price) = (price > 0)
193-
194-
195-func isCorrectAuctionPeriod (start,end) = (end > start)
196193
197194
198195 func isCorrectAuctionPrices (startPrice,endPrice) = (startPrice > endPrice)
251248
252249 let kBuy = "buy"
253250
251+let ASIMI_TOKEN = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
252+
254253 @Callable(i)
255254 func createNft (nft_name,nft_owner,nft_dAppAddress,nft_type,nft_tags,nft_selling_price,nft_description,nft_onSell,nft_data) = {
256255 let newToken = Issue(nft_name, nft_description, 1, 0, false)
273272 func buyNFT (nftID) = {
274273 let assetId = fromBase58String(nftID)
275274 let amount = value(i.payments[0].amount)
275+ let amount1 = value(i.payments[1].amount)
276276 let price = valueOrErrorMessage(getString(((kPrice + separator) + nftID)), "There is no price for this NFT")
277277 let owner = valueOrErrorMessage(getStringValue(((nftID + separator) + "Owner")), "No owner")
278278 if ((i.payments[0].assetId != unit))
279279 then throw("Pay in waves")
280- else if ((parseIntValue(price) > amount))
281- then throw("Invalid payment")
282- else [ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(value(addressFromString(owner)), parseIntValue(price), unit), StringEntry(((toString(i.caller) + separator) + kBuy), ((nftID + separator) + toString(amount)))]
280+ else if ((i.payments[1].assetId != ASIMI_TOKEN))
281+ then throw("Pay in ASIMI")
282+ else if ((parseIntValue(price) > amount))
283+ then throw("Invalid payment WAVES")
284+ else [ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(value(addressFromString(owner)), parseIntValue(price), unit), StringEntry(((toString(i.caller) + separator) + kBuy), ((nftID + separator) + toString(amount)))]
283285 }
284286
285287
286288
287289 @Callable(i)
288290 func sellNFT (price) = {
289- let $t073397424 = $Tuple2(value(i.payments[0].assetId), value(i.payments[0].amount))
290- let token0 = $t073397424._1
291- let amount0 = $t073397424._2
291+ let $t074127497 = $Tuple2(value(i.payments[0].assetId), value(i.payments[0].amount))
292+ let token0 = $t074127497._1
293+ let amount0 = $t074127497._2
292294 if (!(isNft(token0)))
293295 then throw("Token is not NFT")
294296 else [StringEntry(((kPrice + separator) + toBase58String(value(i.payments[0].assetId))), toString(price)), StringEntry(((toString(i.caller) + separator) + kSell), ((toBase58String(token0) + separator) + toString(amount0)))]
307309
308310
309311 @Callable(i)
310-func addAuction (startPrice,endPrice,start,end,nft_name,nft_owner,nft_dAppAddress,nft_type,nft_tags,nft_selling_price,nft_description,nft_onSell,nft_data) = {
312+func addAuction (startPrice,start,end) = {
311313 let nftId = value(i.payments[0].assetId)
312- valueOrElse(isCorrectNft(nftId), if (!(isCorrectAuctionPeriod(start, end)))
313- then throw("Period is not correct")
314- else if (!(isCorrectAuctionPrices(startPrice, endPrice)))
315- then throw("Start price must be > endPrice")
316- else [setAuction(i.caller, nftId, startPrice, endPrice, start, end), StringEntry(((toBase58String(nftId) + separator) + "nft_owner"), toString(i.caller)), StringEntry(((toBase58String(nftId) + separator) + "nft_type"), nft_type), StringEntry(((toBase58String(nftId) + separator) + "nft_tags"), nft_tags), StringEntry(((toBase58String(nftId) + separator) + "nft_dAppAddress"), nft_dAppAddress), IntegerEntry(((toBase58String(nftId) + separator) + "nft_selling_price"), nft_selling_price), StringEntry(((toBase58String(nftId) + separator) + "nft_onSell"), nft_onSell), StringEntry(((toBase58String(nftId) + separator) + "nft_data"), nft_data)])
314+ valueOrElse(isCorrectNft(nftId), [setAuction(i.caller, nftId, startPrice, start, end), StringEntry(((toBase58String(nftId) + separator) + "nft_owner"), toString(i.caller))])
317315 }
318316
319317
320318
321319 @Callable(i)
322320 func buyFromSlot (nftId) = {
323- let $t092249313 = $Tuple2(i.payments[0].assetId, value(i.payments[0].amount))
324- let paymentAsset = $t092249313._1
325- let paymentAmount = $t092249313._2
321+ let $t084178506 = $Tuple2(i.payments[0].assetId, value(i.payments[0].amount))
322+ let paymentAsset = $t084178506._1
323+ let paymentAmount = $t084178506._2
326324 let assetId = fromBase58String(nftId)
327- let $t093579395 = getSlot(assetId)
328- let type = $t093579395._1
329- let details = $t093579395._2
325+ let $t085508588 = getSlot(assetId)
326+ let type = $t085508588._1
327+ let details = $t085508588._2
330328 let baseRes = [ScriptTransfer(i.caller, 1, assetId), DeleteEntry(getSlotKey(type, assetId))]
331329 if ((type == kSell))
332330 then {
333- let $t095379584 = parseAsSell(details)
334- let seller = $t095379584._1
335- let priceValue = $t095379584._2
331+ let $t087308777 = parseAsSell(details)
332+ let seller = $t087308777._1
333+ let priceValue = $t087308777._2
336334 valueOrElse(isCorrectPayments(paymentAsset, paymentAmount, priceValue), {
337- let $t096699771 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, priceValue)
338- let sellerAmount = $t096699771._1
339- let buyerAmount = $t096699771._2
335+ let $t088628964 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, priceValue)
336+ let sellerAmount = $t088628964._1
337+ let buyerAmount = $t088628964._2
340338 let updatedRes = (baseRes ++ [ScriptTransfer(seller, sellerAmount, unit)])
341339 if ((buyerAmount > 0))
342340 then (updatedRes ++ [ScriptTransfer(i.caller, buyerAmount, unit)])
344342 })
345343 }
346344 else {
347- let $t0998810057 = calcPriceAtCurrentMoment(assetId, height)
348- let seller = $t0998810057._1
349- let actualPrice = $t0998810057._2
345+ let $t091819250 = calcPriceAtCurrentMoment(assetId, height)
346+ let seller = $t091819250._1
347+ let actualPrice = $t091819250._2
350348 valueOrElse(isCorrectPayments(paymentAsset, paymentAmount, actualPrice), {
351- let $t01014310246 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, actualPrice)
352- let sellerAmount = $t01014310246._1
353- let buyerAmount = $t01014310246._2
349+ let $t093369439 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, actualPrice)
350+ let sellerAmount = $t093369439._1
351+ let buyerAmount = $t093369439._2
354352 let updatedRes = (baseRes ++ [ScriptTransfer(seller, sellerAmount, unit)])
355353 if ((buyerAmount > 0))
356354 then (updatedRes ++ [ScriptTransfer(i.caller, buyerAmount, unit)])
364362 @Callable(i)
365363 func declineSlot (nftId) = {
366364 let assetId = fromBase58String(nftId)
367- let $t01054710585 = getSlot(assetId)
368- let type = $t01054710585._1
369- let details = $t01054710585._2
365+ let $t097409778 = getSlot(assetId)
366+ let type = $t097409778._1
367+ let details = $t097409778._2
370368 let baseRes = [DeleteEntry(getSlotKey(type, assetId))]
371369 if ((type == kSell))
372370 then {
373- let $t01067710724 = parseAsSell(details)
374- let seller = $t01067710724._1
375- let priceValue = $t01067710724._2
371+ let $t098709917 = parseAsSell(details)
372+ let seller = $t098709917._1
373+ let priceValue = $t098709917._2
376374 if (!(isValidCaller(i.caller, seller)))
377375 then throw("Invalid caller")
378376 else (baseRes ++ [ScriptTransfer(seller, 1, assetId)])
379377 }
380378 else {
381- let $t01086910973 = parseAsAuction(details)
382- let seller = $t01086910973._1
383- let startPriceValue = $t01086910973._2
384- let endPriceValue = $t01086910973._3
385- let startPeriodValue = $t01086910973._4
386- let endPeriodValue = $t01086910973._5
379+ let $t01006210166 = parseAsAuction(details)
380+ let seller = $t01006210166._1
381+ let startPriceValue = $t01006210166._2
382+ let endPriceValue = $t01006210166._3
383+ let startPeriodValue = $t01006210166._4
384+ let endPeriodValue = $t01006210166._5
387385 if (!(isValidCaller(i.caller, seller)))
388386 then throw("Invalid caller")
389387 else if (!(isAuctionEnded(height, endPeriodValue)))
404402 @Callable(i)
405403 func getPriceAtCurrentMoment (nftId,moment) = {
406404 let assetId = fromBase58String(nftId)
407- let $t01151411577 = calcPriceAtCurrentMoment(assetId, moment)
408- let seller = $t01151411577._1
409- let price = $t01151411577._2
405+ let $t01070710770 = calcPriceAtCurrentMoment(assetId, moment)
406+ let seller = $t01070710770._1
407+ let price = $t01070710770._2
410408 [IntegerEntry(getPriceKey(assetId), price)]
411409 }
412410
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let separator = "_"
55
66 let kAuction = "auction"
77
88 let kSell = "sell"
99
1010 let kTrusted = "trusted"
1111
1212 let kPrice = "price"
1313
1414 func getSlotKey (prefix,nftId) = ((prefix + separator) + toBase58String(nftId))
1515
1616
1717 func getPriceKey (nftId) = ((kPrice + separator) + toBase58String(nftId))
1818
1919
2020 func getSellKey (nftId) = ((kSell + separator) + toBase58String(nftId))
2121
2222
2323 func getAuctionKey (nftId) = ((kAuction + separator) + toBase58String(nftId))
2424
2525
2626 func getTrustedKey (issuer) = ((kTrusted + separator) + toString(issuer))
2727
2828
2929 func addToList (accum,nextValue) = (accum ++ [nextValue])
3030
3131
3232 func joinString (params) = {
3333 let length = size(params)
3434 if ((length == 0))
3535 then throw("Empty params")
3636 else if ((length == 1))
3737 then makeString({
3838 let $l = params
3939 let $s = size($l)
4040 let $acc0 = nil
4141 func $f0_1 ($a,$i) = if (($i >= $s))
4242 then $a
4343 else addToList($a, $l[$i])
4444
4545 func $f0_2 ($a,$i) = if (($i >= $s))
4646 then $a
4747 else throw("List size exceeds 1")
4848
4949 $f0_2($f0_1($acc0, 0), 1)
5050 }, separator)
5151 else if ((length == 2))
5252 then makeString({
5353 let $l = params
5454 let $s = size($l)
5555 let $acc0 = nil
5656 func $f0_1 ($a,$i) = if (($i >= $s))
5757 then $a
5858 else addToList($a, $l[$i])
5959
6060 func $f0_2 ($a,$i) = if (($i >= $s))
6161 then $a
6262 else throw("List size exceeds 2")
6363
6464 $f0_2($f0_1($f0_1($acc0, 0), 1), 2)
6565 }, separator)
6666 else if ((length == 3))
6767 then makeString({
6868 let $l = params
6969 let $s = size($l)
7070 let $acc0 = nil
7171 func $f0_1 ($a,$i) = if (($i >= $s))
7272 then $a
7373 else addToList($a, $l[$i])
7474
7575 func $f0_2 ($a,$i) = if (($i >= $s))
7676 then $a
7777 else throw("List size exceeds 3")
7878
7979 $f0_2($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3)
8080 }, separator)
8181 else if ((length == 4))
8282 then makeString({
8383 let $l = params
8484 let $s = size($l)
8585 let $acc0 = nil
8686 func $f0_1 ($a,$i) = if (($i >= $s))
8787 then $a
8888 else addToList($a, $l[$i])
8989
9090 func $f0_2 ($a,$i) = if (($i >= $s))
9191 then $a
9292 else throw("List size exceeds 4")
9393
9494 $f0_2($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4)
9595 }, separator)
9696 else if ((length == 5))
9797 then makeString({
9898 let $l = params
9999 let $s = size($l)
100100 let $acc0 = nil
101101 func $f0_1 ($a,$i) = if (($i >= $s))
102102 then $a
103103 else addToList($a, $l[$i])
104104
105105 func $f0_2 ($a,$i) = if (($i >= $s))
106106 then $a
107107 else throw("List size exceeds 5")
108108
109109 $f0_2($f0_1($f0_1($f0_1($f0_1($f0_1($acc0, 0), 1), 2), 3), 4), 5)
110110 }, separator)
111111 else throw("Max number of parameters exceeded")
112112 }
113113
114114
115115 func parseAsAuction (details) = {
116116 let res = split(details, separator)
117117 $Tuple5(addressFromStringValue(res[0]), parseIntValue(res[1]), parseIntValue(res[2]), parseIntValue(res[3]), parseIntValue(res[4]))
118118 }
119119
120120
121121 func parseAsSell (details) = {
122122 let res = split(details, separator)
123123 $Tuple2(addressFromStringValue(res[0]), parseIntValue(res[1]))
124124 }
125125
126126
127127 func joinStruct (params) = match params {
128- case auction: (Address, Int, Int, Int, Int) =>
129- joinString([toString(auction._1), toString(auction._2), toString(auction._3), toString(auction._4), toString(auction._5)])
128+ case auction: (Address, Int, String, String) =>
129+ joinString([toString(auction._1), toString(auction._2), auction._3, auction._4])
130130 case sell: (Address, Int) =>
131131 joinString([toString(sell._1), toString(sell._2)])
132132 case _ =>
133133 throw("Wrong params tupple")
134134 }
135135
136136
137-func setAuction (seller,nftId,startPrice,endPrice,start,end) = StringEntry(getAuctionKey(nftId), joinStruct($Tuple5(seller, startPrice, endPrice, start, end)))
137+func setAuction (seller,nftId,startPrice,start,end) = StringEntry(getAuctionKey(nftId), joinStruct($Tuple4(seller, startPrice, start, end)))
138138
139139
140140 func setSell (nftId,celler,price) = StringEntry(getSellKey(nftId), joinStruct($Tuple2(celler, price)))
141141
142142
143143 func getAuction (nftId) = value(getString(this, getAuctionKey(nftId)))
144144
145145
146146 func getSell (nftId) = value(getString(this, getSellKey(nftId)))
147147
148148
149149 func calcPriceAtCurrentMoment (assetId,moment) = {
150150 let details = getAuction(assetId)
151- let $t028172921 = parseAsAuction(details)
152- let seller = $t028172921._1
153- let startPriceValue = $t028172921._2
154- let endPriceValue = $t028172921._3
155- let startPeriodValue = $t028172921._4
156- let endPeriodValue = $t028172921._5
151+ let $t027552859 = parseAsAuction(details)
152+ let seller = $t027552859._1
153+ let startPriceValue = $t027552859._2
154+ let endPriceValue = $t027552859._3
155+ let startPeriodValue = $t027552859._4
156+ let endPeriodValue = $t027552859._5
157157 if ((moment >= endPeriodValue))
158158 then $Tuple2(seller, endPriceValue)
159159 else {
160160 let deltaPrice = (startPriceValue - endPriceValue)
161161 let period = (endPeriodValue - startPeriodValue)
162162 let spended = (moment - startPeriodValue)
163163 $Tuple2(seller, (startPriceValue - fraction(spended, deltaPrice, period)))
164164 }
165165 }
166166
167167
168168 func isNft (assetId) = match assetInfo(assetId) {
169169 case token: Asset =>
170170 if (if ((token.decimals == 0))
171171 then (token.quantity == 1)
172172 else false)
173173 then (token.reissuable == false)
174174 else false
175175 case _ =>
176176 false
177177 }
178178
179179
180180 func isTrustedNft (assetId) = {
181181 let issuer = value(assetInfo(assetId)).issuer
182182 valueOrElse(getBoolean(this, getTrustedKey(issuer)), false)
183183 }
184184
185185
186186 func isSellExist (assetId) = isDefined(getString(this, getSellKey(assetId)))
187187
188188
189189 func isAuctionExist (assetId) = isDefined(getString(this, getAuctionKey(assetId)))
190190
191191
192192 func isCorrectSellPrice (price) = (price > 0)
193-
194-
195-func isCorrectAuctionPeriod (start,end) = (end > start)
196193
197194
198195 func isCorrectAuctionPrices (startPrice,endPrice) = (startPrice > endPrice)
199196
200197
201198 func isAdmin (caller) = (caller == this)
202199
203200
204201 func isValidCaller (caller,seller) = if ((caller == this))
205202 then true
206203 else (caller == seller)
207204
208205
209206 func isAuctionEnded (now,end) = (now > end)
210207
211208
212209 func isEnoughFunds (payment,currentMomentPrice) = (payment >= currentMomentPrice)
213210
214211
215212 func isWawes (assetId) = (assetId == unit)
216213
217214
218215 func isCorrectNft (nftId) = if (!(isNft(nftId)))
219216 then throw("Token is not Nft")
220217 else if (isSellExist(nftId))
221218 then throw("Sell already exists")
222219 else if (isAuctionExist(nftId))
223220 then throw("Auction already exists")
224221 else unit
225222
226223
227224 func isCorrectPayments (paymentAsset,paymentAmount,price) = if (!(isWawes(paymentAsset)))
228225 then throw("Payment must be at WAVES")
229226 else if (!(isEnoughFunds(paymentAmount, price)))
230227 then throw("Not enough funds")
231228 else unit
232229
233230
234231 func calcFee () = 0
235232
236233
237234 func calcTrustedFee () = 0
238235
239236
240237 func resultFundsAmounts (isTrusted,paymentAmount,actualPrice) = if (isTrusted)
241238 then $Tuple2((actualPrice - calcTrustedFee()), (paymentAmount - actualPrice))
242239 else $Tuple2((actualPrice - calcFee()), (paymentAmount - actualPrice))
243240
244241
245242 func getSlot (nftId) = if (isSellExist(nftId))
246243 then $Tuple2(kSell, getSell(nftId))
247244 else if (isAuctionExist(nftId))
248245 then $Tuple2(kAuction, getAuction(nftId))
249246 else throw("Slot doesn`t exist")
250247
251248
252249 let kBuy = "buy"
253250
251+let ASIMI_TOKEN = base58'EbLVSrAi6vS3AkLwBinzZCvAXP2yYiFJEzj1MBVHcwZ5'
252+
254253 @Callable(i)
255254 func createNft (nft_name,nft_owner,nft_dAppAddress,nft_type,nft_tags,nft_selling_price,nft_description,nft_onSell,nft_data) = {
256255 let newToken = Issue(nft_name, nft_description, 1, 0, false)
257256 let issueId = calculateAssetId(newToken)
258257 [newToken, ScriptTransfer(i.caller, 1, issueId), StringEntry(((toBase58String(issueId) + separator) + "Owner"), toString(i.caller)), StringEntry(((toBase58String(issueId) + separator) + "nft_type"), nft_type), StringEntry(((toBase58String(issueId) + separator) + "nft_tags"), nft_tags), StringEntry(((toBase58String(issueId) + separator) + "nft_dAppAddress"), nft_dAppAddress), IntegerEntry(((toBase58String(issueId) + separator) + "nft_selling_price"), nft_selling_price), StringEntry(((toBase58String(issueId) + separator) + "nft_onSell"), nft_onSell), StringEntry(((toBase58String(issueId) + separator) + "nft_data"), nft_data)]
259258 }
260259
261260
262261
263262 @Callable(i)
264263 func issueNft (name,meta) = {
265264 let newToken = Issue(name, meta, 1, 0, false)
266265 let issueId = calculateAssetId(newToken)
267266 [newToken, ScriptTransfer(i.caller, 1, issueId), StringEntry(((toBase58String(issueId) + separator) + "Owner"), toString(i.caller))]
268267 }
269268
270269
271270
272271 @Callable(i)
273272 func buyNFT (nftID) = {
274273 let assetId = fromBase58String(nftID)
275274 let amount = value(i.payments[0].amount)
275+ let amount1 = value(i.payments[1].amount)
276276 let price = valueOrErrorMessage(getString(((kPrice + separator) + nftID)), "There is no price for this NFT")
277277 let owner = valueOrErrorMessage(getStringValue(((nftID + separator) + "Owner")), "No owner")
278278 if ((i.payments[0].assetId != unit))
279279 then throw("Pay in waves")
280- else if ((parseIntValue(price) > amount))
281- then throw("Invalid payment")
282- else [ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(value(addressFromString(owner)), parseIntValue(price), unit), StringEntry(((toString(i.caller) + separator) + kBuy), ((nftID + separator) + toString(amount)))]
280+ else if ((i.payments[1].assetId != ASIMI_TOKEN))
281+ then throw("Pay in ASIMI")
282+ else if ((parseIntValue(price) > amount))
283+ then throw("Invalid payment WAVES")
284+ else [ScriptTransfer(i.caller, 1, assetId), ScriptTransfer(value(addressFromString(owner)), parseIntValue(price), unit), StringEntry(((toString(i.caller) + separator) + kBuy), ((nftID + separator) + toString(amount)))]
283285 }
284286
285287
286288
287289 @Callable(i)
288290 func sellNFT (price) = {
289- let $t073397424 = $Tuple2(value(i.payments[0].assetId), value(i.payments[0].amount))
290- let token0 = $t073397424._1
291- let amount0 = $t073397424._2
291+ let $t074127497 = $Tuple2(value(i.payments[0].assetId), value(i.payments[0].amount))
292+ let token0 = $t074127497._1
293+ let amount0 = $t074127497._2
292294 if (!(isNft(token0)))
293295 then throw("Token is not NFT")
294296 else [StringEntry(((kPrice + separator) + toBase58String(value(i.payments[0].assetId))), toString(price)), StringEntry(((toString(i.caller) + separator) + kSell), ((toBase58String(token0) + separator) + toString(amount0)))]
295297 }
296298
297299
298300
299301 @Callable(i)
300302 func addSell (price) = {
301303 let nftId = value(i.payments[0].assetId)
302304 valueOrElse(isCorrectNft(nftId), if (!(isCorrectSellPrice(price)))
303305 then throw("Price must be > 0")
304306 else [setSell(nftId, i.caller, price)])
305307 }
306308
307309
308310
309311 @Callable(i)
310-func addAuction (startPrice,endPrice,start,end,nft_name,nft_owner,nft_dAppAddress,nft_type,nft_tags,nft_selling_price,nft_description,nft_onSell,nft_data) = {
312+func addAuction (startPrice,start,end) = {
311313 let nftId = value(i.payments[0].assetId)
312- valueOrElse(isCorrectNft(nftId), if (!(isCorrectAuctionPeriod(start, end)))
313- then throw("Period is not correct")
314- else if (!(isCorrectAuctionPrices(startPrice, endPrice)))
315- then throw("Start price must be > endPrice")
316- else [setAuction(i.caller, nftId, startPrice, endPrice, start, end), StringEntry(((toBase58String(nftId) + separator) + "nft_owner"), toString(i.caller)), StringEntry(((toBase58String(nftId) + separator) + "nft_type"), nft_type), StringEntry(((toBase58String(nftId) + separator) + "nft_tags"), nft_tags), StringEntry(((toBase58String(nftId) + separator) + "nft_dAppAddress"), nft_dAppAddress), IntegerEntry(((toBase58String(nftId) + separator) + "nft_selling_price"), nft_selling_price), StringEntry(((toBase58String(nftId) + separator) + "nft_onSell"), nft_onSell), StringEntry(((toBase58String(nftId) + separator) + "nft_data"), nft_data)])
314+ valueOrElse(isCorrectNft(nftId), [setAuction(i.caller, nftId, startPrice, start, end), StringEntry(((toBase58String(nftId) + separator) + "nft_owner"), toString(i.caller))])
317315 }
318316
319317
320318
321319 @Callable(i)
322320 func buyFromSlot (nftId) = {
323- let $t092249313 = $Tuple2(i.payments[0].assetId, value(i.payments[0].amount))
324- let paymentAsset = $t092249313._1
325- let paymentAmount = $t092249313._2
321+ let $t084178506 = $Tuple2(i.payments[0].assetId, value(i.payments[0].amount))
322+ let paymentAsset = $t084178506._1
323+ let paymentAmount = $t084178506._2
326324 let assetId = fromBase58String(nftId)
327- let $t093579395 = getSlot(assetId)
328- let type = $t093579395._1
329- let details = $t093579395._2
325+ let $t085508588 = getSlot(assetId)
326+ let type = $t085508588._1
327+ let details = $t085508588._2
330328 let baseRes = [ScriptTransfer(i.caller, 1, assetId), DeleteEntry(getSlotKey(type, assetId))]
331329 if ((type == kSell))
332330 then {
333- let $t095379584 = parseAsSell(details)
334- let seller = $t095379584._1
335- let priceValue = $t095379584._2
331+ let $t087308777 = parseAsSell(details)
332+ let seller = $t087308777._1
333+ let priceValue = $t087308777._2
336334 valueOrElse(isCorrectPayments(paymentAsset, paymentAmount, priceValue), {
337- let $t096699771 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, priceValue)
338- let sellerAmount = $t096699771._1
339- let buyerAmount = $t096699771._2
335+ let $t088628964 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, priceValue)
336+ let sellerAmount = $t088628964._1
337+ let buyerAmount = $t088628964._2
340338 let updatedRes = (baseRes ++ [ScriptTransfer(seller, sellerAmount, unit)])
341339 if ((buyerAmount > 0))
342340 then (updatedRes ++ [ScriptTransfer(i.caller, buyerAmount, unit)])
343341 else updatedRes
344342 })
345343 }
346344 else {
347- let $t0998810057 = calcPriceAtCurrentMoment(assetId, height)
348- let seller = $t0998810057._1
349- let actualPrice = $t0998810057._2
345+ let $t091819250 = calcPriceAtCurrentMoment(assetId, height)
346+ let seller = $t091819250._1
347+ let actualPrice = $t091819250._2
350348 valueOrElse(isCorrectPayments(paymentAsset, paymentAmount, actualPrice), {
351- let $t01014310246 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, actualPrice)
352- let sellerAmount = $t01014310246._1
353- let buyerAmount = $t01014310246._2
349+ let $t093369439 = resultFundsAmounts(isTrustedNft(assetId), paymentAmount, actualPrice)
350+ let sellerAmount = $t093369439._1
351+ let buyerAmount = $t093369439._2
354352 let updatedRes = (baseRes ++ [ScriptTransfer(seller, sellerAmount, unit)])
355353 if ((buyerAmount > 0))
356354 then (updatedRes ++ [ScriptTransfer(i.caller, buyerAmount, unit)])
357355 else updatedRes
358356 })
359357 }
360358 }
361359
362360
363361
364362 @Callable(i)
365363 func declineSlot (nftId) = {
366364 let assetId = fromBase58String(nftId)
367- let $t01054710585 = getSlot(assetId)
368- let type = $t01054710585._1
369- let details = $t01054710585._2
365+ let $t097409778 = getSlot(assetId)
366+ let type = $t097409778._1
367+ let details = $t097409778._2
370368 let baseRes = [DeleteEntry(getSlotKey(type, assetId))]
371369 if ((type == kSell))
372370 then {
373- let $t01067710724 = parseAsSell(details)
374- let seller = $t01067710724._1
375- let priceValue = $t01067710724._2
371+ let $t098709917 = parseAsSell(details)
372+ let seller = $t098709917._1
373+ let priceValue = $t098709917._2
376374 if (!(isValidCaller(i.caller, seller)))
377375 then throw("Invalid caller")
378376 else (baseRes ++ [ScriptTransfer(seller, 1, assetId)])
379377 }
380378 else {
381- let $t01086910973 = parseAsAuction(details)
382- let seller = $t01086910973._1
383- let startPriceValue = $t01086910973._2
384- let endPriceValue = $t01086910973._3
385- let startPeriodValue = $t01086910973._4
386- let endPeriodValue = $t01086910973._5
379+ let $t01006210166 = parseAsAuction(details)
380+ let seller = $t01006210166._1
381+ let startPriceValue = $t01006210166._2
382+ let endPriceValue = $t01006210166._3
383+ let startPeriodValue = $t01006210166._4
384+ let endPeriodValue = $t01006210166._5
387385 if (!(isValidCaller(i.caller, seller)))
388386 then throw("Invalid caller")
389387 else if (!(isAuctionEnded(height, endPeriodValue)))
390388 then throw("Wait for end of auction")
391389 else (baseRes ++ [ScriptTransfer(seller, 1, assetId)])
392390 }
393391 }
394392
395393
396394
397395 @Callable(i)
398396 func setTrustedIssuer (trustedAddr) = if (!(isAdmin(i.caller)))
399397 then throw("Only admin")
400398 else [BooleanEntry(getTrustedKey(addressFromStringValue(trustedAddr)), true)]
401399
402400
403401
404402 @Callable(i)
405403 func getPriceAtCurrentMoment (nftId,moment) = {
406404 let assetId = fromBase58String(nftId)
407- let $t01151411577 = calcPriceAtCurrentMoment(assetId, moment)
408- let seller = $t01151411577._1
409- let price = $t01151411577._2
405+ let $t01070710770 = calcPriceAtCurrentMoment(assetId, moment)
406+ let seller = $t01070710770._1
407+ let price = $t01070710770._2
410408 [IntegerEntry(getPriceKey(assetId), price)]
411409 }
412410
413411

github/deemru/w8io/169f3d6 
76.13 ms