tx · HdkmyngesycDaLJw2uAZkdgF1MFAXHCjDEo7B938N63H

3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx:  -0.10000000 Waves

2022.12.26 11:00 [2376988] smart account 3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx > SELF 0.00000000 Waves

{ "type": 13, "id": "HdkmyngesycDaLJw2uAZkdgF1MFAXHCjDEo7B938N63H", "fee": 10000000, "feeAssetId": null, "timestamp": 1672041647329, "version": 2, "chainId": 84, "sender": "3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx", "senderPublicKey": "EKZmHJ5bK3qKKgRdq8rAamt9qrDbVMLARzRqXoQW258v", "proofs": [ "24mATc299Ya8YX4nErVP9GJjSm8gaTySR6HCmg7hDRvGoeznCFTwhk4gDLPNMfyGpCXGcWLVDgQgCAg3KJUhxk2F" ], "script": "base64:BgI9CAISCAoGCAgBCAgIEgMKAQESBAoCCAgSBgoECAgIARIGCgQICAgIEgUKAwgICBIDCgEIEgMKAQgSAwoBCCkACXNlcGFyYXRvcgIBXwAIa0F1Y3Rpb24CB2F1Y3Rpb24ABWtTZWxsAgRzZWxsAAhrVHJ1c3RlZAIHdHJ1c3RlZAAGa1ByaWNlAgVwcmljZQEKZ2V0U2xvdEtleQIGcHJlZml4BW5mdElkCQCsAgIJAKwCAgUGcHJlZml4BQlzZXBhcmF0b3IJANgEAQUFbmZ0SWQBC2dldFByaWNlS2V5AQVuZnRJZAkArAICCQCsAgIFBmtQcmljZQUJc2VwYXJhdG9yCQDYBAEFBW5mdElkAQpnZXRTZWxsS2V5AQVuZnRJZAkArAICCQCsAgIFBWtTZWxsBQlzZXBhcmF0b3IJANgEAQUFbmZ0SWQBDWdldEF1Y3Rpb25LZXkBBW5mdElkCQCsAgIJAKwCAgUIa0F1Y3Rpb24FCXNlcGFyYXRvcgkA2AQBBQVuZnRJZAENZ2V0VHJ1c3RlZEtleQEGaXNzdWVyCQCsAgIJAKwCAgUIa1RydXN0ZWQFCXNlcGFyYXRvcgkApQgBBQZpc3N1ZXIBCWFkZFRvTGlzdAIFYWNjdW0JbmV4dFZhbHVlCQDOCAIFBWFjY3VtCQDMCAIFCW5leHRWYWx1ZQUDbmlsAQpqb2luU3RyaW5nAQZwYXJhbXMEBmxlbmd0aAkAkAMBBQZwYXJhbXMDCQAAAgUGbGVuZ3RoAAAJAAIBAg1FbXB0eSAgcGFyYW1zAwkAAAIFBmxlbmd0aAABCQC5CQIKAAIkbAUGcGFyYW1zCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlhZGRUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDEJAQUkZjBfMgIJAQUkZjBfMQIFBSRhY2MwAAAAAQUJc2VwYXJhdG9yAwkAAAIFBmxlbmd0aAACCQC5CQIKAAIkbAUGcGFyYW1zCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlhZGRUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDIJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACBQlzZXBhcmF0b3IDCQAAAgUGbGVuZ3RoAAMJALkJAgoAAiRsBQZwYXJhbXMKAAIkcwkAkAMBBQIkbAoABSRhY2MwBQNuaWwKAQUkZjBfMQICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkBCWFkZFRvTGlzdAIFAiRhCQCRAwIFAiRsBQIkaQoBBSRmMF8yAgIkYQIkaQMJAGcCBQIkaQUCJHMFAiRhCQACAQITTGlzdCBzaXplIGV4Y2VlZHMgMwkBBSRmMF8yAgkBBSRmMF8xAgkBBSRmMF8xAgkBBSRmMF8xAgUFJGFjYzAAAAABAAIAAwUJc2VwYXJhdG9yAwkAAAIFBmxlbmd0aAAECQC5CQIKAAIkbAUGcGFyYW1zCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlhZGRUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDQJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAUJc2VwYXJhdG9yAwkAAAIFBmxlbmd0aAAFCQC5CQIKAAIkbAUGcGFyYW1zCgACJHMJAJADAQUCJGwKAAUkYWNjMAUDbmlsCgEFJGYwXzECAiRhAiRpAwkAZwIFAiRpBQIkcwUCJGEJAQlhZGRUb0xpc3QCBQIkYQkAkQMCBQIkbAUCJGkKAQUkZjBfMgICJGECJGkDCQBnAgUCJGkFAiRzBQIkYQkAAgECE0xpc3Qgc2l6ZSBleGNlZWRzIDUJAQUkZjBfMgIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIJAQUkZjBfMQIFBSRhY2MwAAAAAQACAAMABAAFBQlzZXBhcmF0b3IJAAIBAiFNYXggbnVtYmVyIG9mIHBhcmFtZXRlcnMgZXhjZWVkZWQBDnBhcnNlQXNBdWN0aW9uAQdkZXRhaWxzBANyZXMJALUJAgUHZGV0YWlscwUJc2VwYXJhdG9yCQCXCgUJARFAZXh0ck5hdGl2ZSgxMDYyKQEJAJEDAgUDcmVzAAAJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNyZXMAAQkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA3JlcwACCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUDcmVzAAMJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQNyZXMABAELcGFyc2VBc1NlbGwBB2RldGFpbHMEA3JlcwkAtQkCBQdkZXRhaWxzBQlzZXBhcmF0b3IJAJQKAgkBEUBleHRyTmF0aXZlKDEwNjIpAQkAkQMCBQNyZXMAAAkBDXBhcnNlSW50VmFsdWUBCQCRAwIFA3JlcwABAQpqb2luU3RydWN0AQZwYXJhbXMEByRtYXRjaDAFBnBhcmFtcwMJAAECBQckbWF0Y2gwAh4oQWRkcmVzcywgSW50LCBTdHJpbmcsIFN0cmluZykEB2F1Y3Rpb24FByRtYXRjaDAJAQpqb2luU3RyaW5nAQkAzAgCCQClCAEIBQdhdWN0aW9uAl8xCQDMCAIJAKQDAQgFB2F1Y3Rpb24CXzIJAMwIAggFB2F1Y3Rpb24CXzMJAMwIAggFB2F1Y3Rpb24CXzQFA25pbAMJAAECBQckbWF0Y2gwAg4oQWRkcmVzcywgSW50KQQEc2VsbAUHJG1hdGNoMAkBCmpvaW5TdHJpbmcBCQDMCAIJAKUIAQgFBHNlbGwCXzEJAMwIAgkApAMBCAUEc2VsbAJfMgUDbmlsCQACAQITV3JvbmcgcGFyYW1zIHR1cHBsZQEKc2V0QXVjdGlvbgUGc2VsbGVyBW5mdElkCnN0YXJ0UHJpY2UFc3RhcnQDZW5kCQELU3RyaW5nRW50cnkCCQENZ2V0QXVjdGlvbktleQEFBW5mdElkCQEKam9pblN0cnVjdAEJAJYKBAUGc2VsbGVyBQpzdGFydFByaWNlBQVzdGFydAUDZW5kAQdzZXRTZWxsAwVuZnRJZAZjZWxsZXIFcHJpY2UJAQtTdHJpbmdFbnRyeQIJAQpnZXRTZWxsS2V5AQUFbmZ0SWQJAQpqb2luU3RydWN0AQkAlAoCBQZjZWxsZXIFBXByaWNlAQpnZXRBdWN0aW9uAQVuZnRJZAkBBXZhbHVlAQkAnQgCBQR0aGlzCQENZ2V0QXVjdGlvbktleQEFBW5mdElkAQdnZXRTZWxsAQVuZnRJZAkBBXZhbHVlAQkAnQgCBQR0aGlzCQEKZ2V0U2VsbEtleQEFBW5mdElkARhjYWxjUHJpY2VBdEN1cnJlbnRNb21lbnQCB2Fzc2V0SWQGbW9tZW50BAdkZXRhaWxzCQEKZ2V0QXVjdGlvbgEFB2Fzc2V0SWQECyR0MDI3NTUyODU5CQEOcGFyc2VBc0F1Y3Rpb24BBQdkZXRhaWxzBAZzZWxsZXIIBQskdDAyNzU1Mjg1OQJfMQQPc3RhcnRQcmljZVZhbHVlCAULJHQwMjc1NTI4NTkCXzIEDWVuZFByaWNlVmFsdWUIBQskdDAyNzU1Mjg1OQJfMwQQc3RhcnRQZXJpb2RWYWx1ZQgFCyR0MDI3NTUyODU5Al80BA5lbmRQZXJpb2RWYWx1ZQgFCyR0MDI3NTUyODU5Al81AwkAZwIFBm1vbWVudAUOZW5kUGVyaW9kVmFsdWUJAJQKAgUGc2VsbGVyBQ1lbmRQcmljZVZhbHVlBApkZWx0YVByaWNlCQBlAgUPc3RhcnRQcmljZVZhbHVlBQ1lbmRQcmljZVZhbHVlBAZwZXJpb2QJAGUCBQ5lbmRQZXJpb2RWYWx1ZQUQc3RhcnRQZXJpb2RWYWx1ZQQHc3BlbmRlZAkAZQIFBm1vbWVudAUQc3RhcnRQZXJpb2RWYWx1ZQkAlAoCBQZzZWxsZXIJAGUCBQ9zdGFydFByaWNlVmFsdWUJAGsDBQdzcGVuZGVkBQpkZWx0YVByaWNlBQZwZXJpb2QBBWlzTmZ0AQdhc3NldElkBAckbWF0Y2gwCQDsBwEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBXRva2VuBQckbWF0Y2gwAwMJAAACCAUFdG9rZW4IZGVjaW1hbHMAAAkAAAIIBQV0b2tlbghxdWFudGl0eQABBwkAAAIIBQV0b2tlbgpyZWlzc3VhYmxlBwcHAQxpc1RydXN0ZWROZnQBB2Fzc2V0SWQEBmlzc3VlcggJAQV2YWx1ZQEJAOwHAQUHYXNzZXRJZAZpc3N1ZXIJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwkBDWdldFRydXN0ZWRLZXkBBQZpc3N1ZXIHAQtpc1NlbGxFeGlzdAEHYXNzZXRJZAkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkBCmdldFNlbGxLZXkBBQdhc3NldElkAQ5pc0F1Y3Rpb25FeGlzdAEHYXNzZXRJZAkBCWlzRGVmaW5lZAEJAJ0IAgUEdGhpcwkBDWdldEF1Y3Rpb25LZXkBBQdhc3NldElkARJpc0NvcnJlY3RTZWxsUHJpY2UBBXByaWNlCQBmAgUFcHJpY2UAAAEWaXNDb3JyZWN0QXVjdGlvblByaWNlcwIKc3RhcnRQcmljZQhlbmRQcmljZQkAZgIFCnN0YXJ0UHJpY2UFCGVuZFByaWNlAQdpc0FkbWluAQZjYWxsZXIJAAACBQZjYWxsZXIFBHRoaXMBDWlzVmFsaWRDYWxsZXICBmNhbGxlcgZzZWxsZXIDCQAAAgUGY2FsbGVyBQR0aGlzBgkAAAIFBmNhbGxlcgUGc2VsbGVyAQ5pc0F1Y3Rpb25FbmRlZAIDbm93A2VuZAkAZgIFA25vdwUDZW5kAQ1pc0Vub3VnaEZ1bmRzAgdwYXltZW50EmN1cnJlbnRNb21lbnRQcmljZQkAZwIFB3BheW1lbnQFEmN1cnJlbnRNb21lbnRQcmljZQEHaXNXYXdlcwEHYXNzZXRJZAkAAAIFB2Fzc2V0SWQFBHVuaXQBDGlzQ29ycmVjdE5mdAEFbmZ0SWQDCQEBIQEJAQVpc05mdAEFBW5mdElkCQACAQIQVG9rZW4gaXMgbm90IE5mdAMJAQtpc1NlbGxFeGlzdAEFBW5mdElkCQACAQITU2VsbCBhbHJlYWR5IGV4aXN0cwMJAQ5pc0F1Y3Rpb25FeGlzdAEFBW5mdElkCQACAQIWQXVjdGlvbiBhbHJlYWR5IGV4aXN0cwUEdW5pdAERaXNDb3JyZWN0UGF5bWVudHMDDHBheW1lbnRBc3NldA1wYXltZW50QW1vdW50BXByaWNlAwkBASEBCQEHaXNXYXdlcwEFDHBheW1lbnRBc3NldAkAAgECGFBheW1lbnQgbXVzdCBiZSBhdCBXQVZFUwMJAQEhAQkBDWlzRW5vdWdoRnVuZHMCBQ1wYXltZW50QW1vdW50BQVwcmljZQkAAgECEE5vdCBlbm91Z2ggZnVuZHMFBHVuaXQBB2NhbGNGZWUAAAABDmNhbGNUcnVzdGVkRmVlAAAAARJyZXN1bHRGdW5kc0Ftb3VudHMDCWlzVHJ1c3RlZA1wYXltZW50QW1vdW50C2FjdHVhbFByaWNlAwUJaXNUcnVzdGVkCQCUCgIJAGUCBQthY3R1YWxQcmljZQkBDmNhbGNUcnVzdGVkRmVlAAkAZQIFDXBheW1lbnRBbW91bnQFC2FjdHVhbFByaWNlCQCUCgIJAGUCBQthY3R1YWxQcmljZQkBB2NhbGNGZWUACQBlAgUNcGF5bWVudEFtb3VudAULYWN0dWFsUHJpY2UBB2dldFNsb3QBBW5mdElkAwkBC2lzU2VsbEV4aXN0AQUFbmZ0SWQJAJQKAgUFa1NlbGwJAQdnZXRTZWxsAQUFbmZ0SWQDCQEOaXNBdWN0aW9uRXhpc3QBBQVuZnRJZAkAlAoCBQhrQXVjdGlvbgkBCmdldEF1Y3Rpb24BBQVuZnRJZAkAAgECElNsb3QgZG9lc25gdCBleGlzdAAEa0J1eQIDYnV5AARrQmlkAgNiaWQADHN0YXR1c0Zvck5GVAkAlgoEAgRPUEVOAgZDTE9TRUQCCFJFV0FSREVEAghDQU5DRUxFRAALZEFwcEFkZHJlc3MBGgFUxzxRhTzn7zpFD3u1hi2wEGdc4tvmboWtCQFpAQljcmVhdGVOZnQGCG5mdF9uYW1lD25mdF9kQXBwQWRkcmVzcxFuZnRfc2VsbGluZ19wcmljZQ9uZnRfZGVzY3JpcHRpb24KbmZ0X29uU2VsbAhuZnRfZGF0YQQIbmV3VG9rZW4JAMIIBQUIbmZ0X25hbWUFD25mdF9kZXNjcmlwdGlvbgABAAAHBAdpc3N1ZUlkCQC4CAEFCG5ld1Rva2VuBAR0eElkCAUBaQ10cmFuc2FjdGlvbklkCQDMCAIFCG5ld1Rva2VuCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdpc3N1ZUlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIPbmZ0X2RBcHBBZGRyZXNzBQ9uZnRfZEFwcEFkZHJlc3MJAMwIAgkBDEludGVnZXJFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIRbmZ0X3NlbGxpbmdfcHJpY2UFEW5mdF9zZWxsaW5nX3ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIKbmZ0X29uU2VsbAUKbmZ0X29uU2VsbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCG5mdF9kYXRhBQhuZnRfZGF0YQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQR0eElkBQlzZXBhcmF0b3ICCWlzc3VlX25mdAkA2AQBBQdpc3N1ZUlkBQNuaWwBaQEHc2VsbE5GVAEFcHJpY2UEBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQECyR0MDYyNzk2MzY0CQCUCgIJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEBnRva2VuMAgFCyR0MDYyNzk2MzY0Al8xBAdhbW91bnQwCAULJHQwNjI3OTYzNjQCXzIDCQEFaXNOZnQBBQZ0b2tlbjAJAAIBAhBUb2tlbiBpcyBub3QgTkZUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgkA2AQBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAKQDAQUFcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQlzZXBhcmF0b3IFBWtTZWxsCQCsAgIJAKwCAgkA2AQBBQZ0b2tlbjAFCXNlcGFyYXRvcgkApAMBBQdhbW91bnQwBQNuaWwBaQEGYnV5TkZUAgVuZnRJRBFjdXJyZW50X25mdF9vd25lcgQHYXNzZXRJZAkA2QQBBRFjdXJyZW50X25mdF9vd25lcgQGYW1vdW50CQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQQY2hlY2tPd25lcklzU2FtZQQHJG1hdGNoMAkAnQgCBQR0aGlzCQCsAgIJAKwCAgIEbmZ0XwURY3VycmVudF9uZnRfb3duZXICBl9vd25lcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWEGBAVwcmljZQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQCsAgIJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgUFbmZ0SUQCAV8FEWN1cnJlbnRfbmZ0X293bmVyBAVvd25lcgkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQERQGV4dHJOYXRpdmUoMTA1OCkBCQCsAgIFCXNlcGFyYXRvcgIFT3duZXICCE5vIG93bmVyAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0CQACAQIMUGF5IGluIHdhdmVzAwkAAAIFEGNoZWNrT3duZXJJc1NhbWUJAKUIAQgFAWkGY2FsbGVyCQACAQIhT3duZXIgb2YgTkZUIG5vdCBhYmxlIHRvIHB1cmNoYXNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQRrQnV5CQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIFA25pbAFpAQtzZWxsYXVjdGlvbgQFc3RhcnQDZW5kCnN0YXJ0UHJpY2UIZHVyYXRpb24EBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQFbmZ0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAEHYXNzZXRJZAQFcHJpY2UJAQV2YWx1ZQEFCnN0YXJ0UHJpY2UEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQRY2hlY2tOZnRBdWN0aW9uZWQEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICCQCsAgIJAKwCAgkA2AQBBQVuZnRJZAUJc2VwYXJhdG9yAgtuZnRfc3RhdHVzXwkA2AQBBQZjYWxsZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBgcDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0CQACAQIQTkZUIG5vdCBhdHRhY2hlZAMJAAACBRFjaGVja05mdEF1Y3Rpb25lZAYJAAIBAhdBbHJlYWR5IGluIGF1Y3Rpb24gbGlzdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUEdHhJZAIYX25mdF9zdGFydF9hdWN0aW9uX2RhdGVfCQDYBAEFBmNhbGxlcgUFc3RhcnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBHR4SWQCFl9uZnRfZW5kX2F1Y3Rpb25fZGF0ZV8JANgEAQUGY2FsbGVyBQNlbmQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfbmZ0X3N0YXJ0X3ByaWNlBQpzdGFydFByaWNlCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIFBHR4SWQCE2R1cmF0aW9uX29mX2F1Y3Rpb24FCGR1cmF0aW9uCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIKX25mdF9vd25lcgkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAg9fbmZ0X29uX2F1Y3Rpb24JANgEAQUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfcHJldmlvdXNfYmlkZGVyAgRub25lCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIMX2hpZ2hlc3RfYmlkAgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIOX3dpbm5lcl9vZl9uZnQCATAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAg1fYmlkZGVyX2NvdW50AgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAILX25mdF9zdGF0dXMCBE9QRU4FA25pbAFpAQdpcXBsYWNlBAlhdWN0aW9uSWQFbmZ0SWQJbmZ0X293bmVyCWJpZF9wcmljZQQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMEB2Fzc2V0SWQJANsEAQUFbmZ0SWQED2N1cnJlbnRCaWRQcmljZQgJAJEDAggFAWkIcGF5bWVudHMAAQZhbW91bnQEFWdldExhc3RXaW5uZXJCaWRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAQYZ2V0UHJldmlvdXNCaWRkZXJBZGRyZXNzCQCdCAIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAhBfcHJldmlvdXNfYmlkZGVyBA9jdXJyZW50QmlkQ291bnQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50BBRnZXRMYXN0V2lubmVyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0BBFjaGVja05mdEF1Y3Rpb25lZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0CQACAQIMUGF5IGluIHdhdmVzAwkBAiE9AgURY2hlY2tOZnRBdWN0aW9uZWQCBE9QRU4JAAIBAhROb3Qgb3BlbiBmb3IgYXVjdGlvbgMJAGcCCQENcGFyc2VJbnRWYWx1ZQEFFWdldExhc3RXaW5uZXJCaWRQcmljZQUPY3VycmVudEJpZFByaWNlCQACAQIlQmlkIGlzIGxlc3MgdGhlbiBzdGFydGluZy9oaWdoZXN0IEJpZAMJAAACBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UCATMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAkApAMBBQ9jdXJyZW50QmlkUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgUJbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB193aW5uZXIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgdfbmZ0X2lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAg9fYmlkX2Zvcl9uZnRfYnkJANgEAQUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX2JpZF9wcmljZV9wbGFjZQUJYmlkX3ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFFGdldExhc3RXaW5uZXJBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIbX3ByZXZvaXVzX2JpZF9hbW91bnRfcmVmdW5kBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UFA25pbAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIHX25mdF9pZAkA2AQBBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQJAKQDAQUPY3VycmVudEJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIHX3dpbm5lcgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIFCW5mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCD19iaWRfZm9yX25mdF9ieQkA2AQBBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfYmlkX3ByaWNlX3BsYWNlBQliaWRfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAiZfcHJldmlvdXNfYmlkX2Ftb3VudF9yZWZ1bmRfdG9fYWRkcmVzcwUUZ2V0TGFzdFdpbm5lckFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhtfcHJldm9pdXNfYmlkX2Ftb3VudF9yZWZ1bmQFFWdldExhc3RXaW5uZXJCaWRQcmljZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUUZ2V0TGFzdFdpbm5lckFkZHJlc3MJAQ1wYXJzZUludFZhbHVlAQUVZ2V0TGFzdFdpbm5lckJpZFByaWNlBQR1bml0BQNuaWwBaQEOYWNjZXB0QmlkT2ZmZXIDCWF1Y3Rpb25JZAVuZnRJZBRiaWRfYW1vdW50X2Zyb21fdXNlcgQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMEB2Fzc2V0SWQJANkEAQUFbmZ0SWQEEmdldE5mdFdpbm5pbmdQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAQQZ2V0QXVjdGlvbldpbm5lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEFEmdldE5mdFdpbm5pbmdQcmljZQUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAILX25mdF9zdGF0dXMCCFJFV0FSREVECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAhVfYW1vdW50X3BhaWRfdG9fb3duZXIFEmdldE5mdFdpbm5pbmdQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIQX25mdF90cmFuc2Zlcl90bwUQZ2V0QXVjdGlvbldpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMCCFJFV0FSREVEBQNuaWwBaQEOY2FuY2VsMUF1Y3Rpb24BCWF1Y3Rpb25JZAQEdHhJZAkA2gQBCAUBaQ10cmFuc2FjdGlvbklkBAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMEDWF1Y3Rpb25TdGF0dXMJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAgtfbmZ0X3N0YXR1cwQNYmlkZGluZ1dpbm5lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0BAhuZnRPd25lcgkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIEBW5mdElkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIPX25mdF9vbl9hdWN0aW9uBAxiaWRkaW5nUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQDCQAAAgUNYmlkZGluZ1dpbm5lcgIBMAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUIbmZ0T3duZXIAAQkA2QQBBQVuZnRJZAUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgtfbmZ0X3N0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCJl9wcmV2aW91c19iaWRfYW1vdW50X3JlZnVuZF90b19hZGRyZXNzBQ1iaWRkaW5nV2lubmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAhtfcHJldm9pdXNfYmlkX2Ftb3VudF9yZWZ1bmQFDGJpZGRpbmdQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAghDQU5DRUxFRAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUIbmZ0T3duZXIAAQkA2QQBBQVuZnRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUNYmlkZGluZ1dpbm5lcgkBDXBhcnNlSW50VmFsdWUBBQxiaWRkaW5nUHJpY2UFBHVuaXQFA25pbAFpAQRXSVRIAQdiaWRUeElkBAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMECGJpZFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFB2JpZFR4SWQCDF9oaWdoZXN0X2JpZAQIYXNCaWRkZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUHYmlkVHhJZAIHX3dpbm5lcgQJYmlkRm9yTkZUCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFB2JpZFR4SWQCB19uZnRfaWQDCQECIT0CCQDaBAEFBmNhbGxlcgUIYXNCaWRkZXIJAAIBAgZObyBiaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdiaWRUeElkAgdfbmZ0X2lkBQliaWRGb3JORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdiaWRUeElkAhxfYmlkZGluZ19wcmljZV9yZWZ1bmRfYW1vdW50BQhiaWRQcmljZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIJAQ1wYXJzZUludFZhbHVlAQUIYmlkUHJpY2UFBHVuaXQFA25pbAFpAQd0ZXN0QmlkAQRkYXRhCQDMCAIJAQtTdHJpbmdFbnRyeQICOEU4a2tGQllDeTQ0SkphcTZwQVo2S2l6c3VSZXNpNVVLTmhiRDFXTlp3aGhZX2hpZ2hlc3RfYmlkAgEwBQNuaWwA3y7KnQ==", "height": 2376988, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: C636reYDtfQB332tA8L4yHMVV3wipw5Xs74Zr8tZoWAM Next: 3XpAqhH5GK8jeXwqGwu114pqGjbhXfV9KrCRiMa4yoYn Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
6-let b = "buy"
6+let b = "auction"
77
8-let c = "price"
8+let c = "sell"
99
10-let d = "sell"
10+let d = "trusted"
1111
12-let e = 7
12+let e = "price"
1313
14-let f = "bid"
14+func f (g,h) = ((g + a) + toBase58String(h))
1515
16-let g = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
1716
18-let h = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq'
17+func i (h) = ((e + a) + toBase58String(h))
1918
20-func i (j) = {
21- let k = assetInfo(j)
22- if ($isInstanceOf(k, "Asset"))
19+
20+func j (h) = ((c + a) + toBase58String(h))
21+
22+
23+func k (h) = ((b + a) + toBase58String(h))
24+
25+
26+func l (m) = ((d + a) + toString(m))
27+
28+
29+func n (o,p) = (o ++ [p])
30+
31+
32+func q (r) = {
33+ let s = size(r)
34+ if ((s == 0))
35+ then throw("Empty params")
36+ else if ((s == 1))
37+ then makeString({
38+ let t = r
39+ let u = size(t)
40+ let v = nil
41+ func w (x,y) = if ((y >= u))
42+ then x
43+ else n(x, t[y])
44+
45+ func z (x,y) = if ((y >= u))
46+ then x
47+ else throw("List size exceeds 1")
48+
49+ z(w(v, 0), 1)
50+ }, a)
51+ else if ((s == 2))
52+ then makeString({
53+ let t = r
54+ let u = size(t)
55+ let v = nil
56+ func w (x,y) = if ((y >= u))
57+ then x
58+ else n(x, t[y])
59+
60+ func z (x,y) = if ((y >= u))
61+ then x
62+ else throw("List size exceeds 2")
63+
64+ z(w(w(v, 0), 1), 2)
65+ }, a)
66+ else if ((s == 3))
67+ then makeString({
68+ let t = r
69+ let u = size(t)
70+ let v = nil
71+ func w (x,y) = if ((y >= u))
72+ then x
73+ else n(x, t[y])
74+
75+ func z (x,y) = if ((y >= u))
76+ then x
77+ else throw("List size exceeds 3")
78+
79+ z(w(w(w(v, 0), 1), 2), 3)
80+ }, a)
81+ else if ((s == 4))
82+ then makeString({
83+ let t = r
84+ let u = size(t)
85+ let v = nil
86+ func w (x,y) = if ((y >= u))
87+ then x
88+ else n(x, t[y])
89+
90+ func z (x,y) = if ((y >= u))
91+ then x
92+ else throw("List size exceeds 4")
93+
94+ z(w(w(w(w(v, 0), 1), 2), 3), 4)
95+ }, a)
96+ else if ((s == 5))
97+ then makeString({
98+ let t = r
99+ let u = size(t)
100+ let v = nil
101+ func w (x,y) = if ((y >= u))
102+ then x
103+ else n(x, t[y])
104+
105+ func z (x,y) = if ((y >= u))
106+ then x
107+ else throw("List size exceeds 5")
108+
109+ z(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5)
110+ }, a)
111+ else throw("Max number of parameters exceeded")
112+ }
113+
114+
115+func A (B) = {
116+ let C = split(B, a)
117+ $Tuple5(addressFromStringValue(C[0]), parseIntValue(C[1]), parseIntValue(C[2]), parseIntValue(C[3]), parseIntValue(C[4]))
118+ }
119+
120+
121+func D (B) = {
122+ let C = split(B, a)
123+ $Tuple2(addressFromStringValue(C[0]), parseIntValue(C[1]))
124+ }
125+
126+
127+func E (r) = {
128+ let F = r
129+ if ($isInstanceOf(F, "(Address, Int, String, String)"))
23130 then {
24- let l = k
25- if (if ((l.decimals == 0))
26- then (l.quantity == 1)
131+ let G = F
132+ q([toString(G._1), toString(G._2), G._3, G._4])
133+ }
134+ else if ($isInstanceOf(F, "(Address, Int)"))
135+ then {
136+ let H = F
137+ q([toString(H._1), toString(H._2)])
138+ }
139+ else throw("Wrong params tupple")
140+ }
141+
142+
143+func I (J,h,K,L,M) = StringEntry(k(h), E($Tuple4(J, K, L, M)))
144+
145+
146+func N (h,O,P) = StringEntry(j(h), E($Tuple2(O, P)))
147+
148+
149+func Q (h) = value(getString(this, k(h)))
150+
151+
152+func R (h) = value(getString(this, j(h)))
153+
154+
155+func S (T,U) = {
156+ let B = Q(T)
157+ let V = A(B)
158+ let J = V._1
159+ let W = V._2
160+ let X = V._3
161+ let Y = V._4
162+ let Z = V._5
163+ if ((U >= Z))
164+ then $Tuple2(J, X)
165+ else {
166+ let aa = (W - X)
167+ let ab = (Z - Y)
168+ let ac = (U - Y)
169+ $Tuple2(J, (W - fraction(ac, aa, ab)))
170+ }
171+ }
172+
173+
174+func ad (T) = {
175+ let F = assetInfo(T)
176+ if ($isInstanceOf(F, "Asset"))
177+ then {
178+ let ae = F
179+ if (if ((ae.decimals == 0))
180+ then (ae.quantity == 1)
27181 else false)
28- then (l.reissuable == false)
182+ then (ae.reissuable == false)
29183 else false
30184 }
31185 else false
32186 }
33187
34188
35-@Callable(m)
36-func createNft (n,o,p,q,r,s,t,u,v) = {
37- let w = Issue(n, t, 1, 0, false)
38- let x = calculateAssetId(w)
39- let y = m.transactionId
40-[w, ScriptTransfer(m.caller, 1, x), StringEntry(((toBase58String(x) + a) + "Owner"), toString(m.caller)), StringEntry(((toBase58String(x) + a) + "nft_type"), q), StringEntry(((toBase58String(x) + a) + "nft_tags"), r), StringEntry(((toBase58String(x) + a) + "nft_dAppAddress"), p), IntegerEntry(((toBase58String(x) + a) + "nft_selling_price"), s), StringEntry(((toBase58String(x) + a) + "nft_onSell"), u), StringEntry(((toBase58String(x) + a) + "nft_data"), v), StringEntry(((toBase58String(y) + a) + "issue_nft"), toBase58String(x))]
189+func af (T) = {
190+ let m = value(assetInfo(T)).issuer
191+ valueOrElse(getBoolean(this, l(m)), false)
192+ }
193+
194+
195+func ag (T) = isDefined(getString(this, j(T)))
196+
197+
198+func ah (T) = isDefined(getString(this, k(T)))
199+
200+
201+func ai (P) = (P > 0)
202+
203+
204+func aj (K,ak) = (K > ak)
205+
206+
207+func al (am) = (am == this)
208+
209+
210+func an (am,J) = if ((am == this))
211+ then true
212+ else (am == J)
213+
214+
215+func ao (ap,M) = (ap > M)
216+
217+
218+func aq (ar,as) = (ar >= as)
219+
220+
221+func at (T) = (T == unit)
222+
223+
224+func au (h) = if (!(ad(h)))
225+ then throw("Token is not Nft")
226+ else if (ag(h))
227+ then throw("Sell already exists")
228+ else if (ah(h))
229+ then throw("Auction already exists")
230+ else unit
231+
232+
233+func av (aw,ax,P) = if (!(at(aw)))
234+ then throw("Payment must be at WAVES")
235+ else if (!(aq(ax, P)))
236+ then throw("Not enough funds")
237+ else unit
238+
239+
240+func ay () = 0
241+
242+
243+func az () = 0
244+
245+
246+func aA (aB,ax,aC) = if (aB)
247+ then $Tuple2((aC - az()), (ax - aC))
248+ else $Tuple2((aC - ay()), (ax - aC))
249+
250+
251+func aD (h) = if (ag(h))
252+ then $Tuple2(c, R(h))
253+ else if (ah(h))
254+ then $Tuple2(b, Q(h))
255+ else throw("Slot doesn`t exist")
256+
257+
258+let aE = "buy"
259+
260+let aF = "bid"
261+
262+let aG = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
263+
264+let aH = base58'3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx'
265+
266+@Callable(aI)
267+func createNft (aJ,aK,aL,aM,aN,aO) = {
268+ let aP = Issue(aJ, aM, 1, 0, false)
269+ let aQ = calculateAssetId(aP)
270+ let aR = aI.transactionId
271+[aP, ScriptTransfer(aI.caller, 1, aQ), StringEntry(((toBase58String(aQ) + a) + "nft_dAppAddress"), aK), IntegerEntry(((toBase58String(aQ) + a) + "nft_selling_price"), aL), StringEntry(((toBase58String(aQ) + a) + "nft_onSell"), aN), StringEntry(((toBase58String(aQ) + a) + "nft_data"), aO), StringEntry(((toBase58String(aR) + a) + "issue_nft"), toBase58String(aQ))]
41272 }
42273
43274
44275
45-@Callable(m)
46-func sellNFT (z) = {
47- let y = m.transactionId
48- let A = m.caller.bytes
49- let B = $Tuple2(value(m.payments[0].assetId), value(m.payments[0].amount))
50- let C = B._1
51- let D = B._2
52- if (!(i(C)))
276+@Callable(aI)
277+func sellNFT (P) = {
278+ let aR = aI.transactionId
279+ let aS = $Tuple2(value(aI.payments[0].assetId), value(aI.payments[0].amount))
280+ let aT = aS._1
281+ let aU = aS._2
282+ if (ad(aT))
53283 then throw("Token is not NFT")
54- else [StringEntry(((c + a) + toBase58String(value(m.payments[0].assetId))), z), StringEntry(((toString(m.caller) + a) + d), ((toBase58String(C) + a) + toString(D)))]
284+ else [StringEntry(((e + a) + toBase58String(value(aI.payments[0].assetId))), toString(P)), StringEntry(((toString(aI.caller) + a) + c), ((toBase58String(aT) + a) + toString(aU)))]
55285 }
56286
57287
58288
59-@Callable(m)
60-func buyNFT (E,F) = {
61- let j = fromBase58String(E)
62- let G = value(m.payments[0].amount)
63- let H = {
64- let k = getString(this, (("nft_" + F) + "_owner"))
65- if ($isInstanceOf(k, "String"))
289+@Callable(aI)
290+func buyNFT (aV,aW) = {
291+ let T = fromBase58String(aW)
292+ let aX = value(aI.payments[0].amount)
293+ let aY = {
294+ let F = getString(this, (("nft_" + aW) + "_owner"))
295+ if ($isInstanceOf(F, "String"))
66296 then {
67- let I = k
68- I
297+ let aZ = F
298+ aZ
69299 }
70- else false
300+ else true
71301 }
72- let z = getStringValue(((((c + a) + E) + "_") + F))
73- if ((m.payments[0].assetId != unit))
302+ let P = getStringValue(((((e + a) + aV) + "_") + aW))
303+ let ba = valueOrErrorMessage(getStringValue((a + "Owner")), "No owner")
304+ if ((aI.payments[0].assetId != unit))
74305 then throw("Pay in waves")
75- else if ((F == toString(m.caller)))
76- then throw("current Owner of NFT not able to purchase")
77- else [ScriptTransfer(m.caller, 1, j), ScriptTransfer(Address(fromBase58String(F)), G, unit), StringEntry(((toString(m.caller) + a) + b), ((E + a) + toString(G))), DeleteEntry((("nft_" + F) + "_owner")), StringEntry((("nft_" + F) + "_owner"), toString(m.caller)), StringEntry(((E + a) + "_owner"), toString(m.caller))]
306+ else if ((aY == toString(aI.caller)))
307+ then throw("Owner of NFT not able to purchase")
308+ else [StringEntry(((toString(aI.caller) + a) + aE), (aV + a)), DeleteEntry((("nft_" + aW) + "_owner"))]
78309 }
79310
80311
81312
82-@Callable(m)
83-func addAuction (J,K,L,M) = {
84- let y = toBase58String(m.transactionId)
85- let N = value(m.payments[0].assetId)
86- let z = value(L)
87- let O = (lastBlock.height + M)
88- let P = m.caller.bytes
89- let Q = {
90- let k = getString(this, (((toBase58String(N) + a) + "nft_status_") + toBase58String(P)))
91- if ($isInstanceOf(k, "String"))
313+@Callable(aI)
314+func sellauction (L,M,K,bb) = {
315+ let aR = toBase58String(aI.transactionId)
316+ let h = value(aI.payments[1].assetId)
317+ let P = value(K)
318+ let am = aI.caller.bytes
319+ let bc = {
320+ let F = getString(this, (((toBase58String(h) + a) + "nft_status_") + toBase58String(am)))
321+ if ($isInstanceOf(F, "String"))
92322 then {
93- let I = k
323+ let aZ = F
94324 true
95325 }
96326 else false
97327 }
98- if ((m.payments[0].assetId == unit))
328+ if ((aI.payments[0].assetId == unit))
99329 then throw("NFT not attached")
100- else if ((Q == true))
330+ else if ((bc == true))
101331 then throw("Already in auction list")
102- else if ((M > e))
103- then throw(("Duration is too long. Must be less than or equal to 7 " + toString(e)))
104- else [StringEntry(((y + "_nft_start_auction_date_") + toBase58String(P)), J), StringEntry(((y + "_nft_end_auction_date_") + toBase58String(P)), K), StringEntry((y + "_nft_start_price"), L), StringEntry((y + "_nft_owner"), toString(m.caller)), StringEntry((y + "_nft_on_auction"), toBase58String(N)), StringEntry((y + "_previous_bidder"), "none"), StringEntry((y + "_highest_bid"), "0"), StringEntry((y + "_winner_of_nft"), "0"), StringEntry((y + "_bidder_count"), "0"), StringEntry((y + "_nft_status"), "OPEN")]
332+ else [StringEntry(((aR + "_nft_start_auction_date_") + toBase58String(am)), L), StringEntry(((aR + "_nft_end_auction_date_") + toBase58String(am)), M), StringEntry((aR + "_nft_start_price"), K), IntegerEntry((aR + "duration_of_auction"), bb), StringEntry((aR + "_nft_owner"), toString(aI.caller)), StringEntry((aR + "_nft_on_auction"), toBase58String(h)), StringEntry((aR + "_previous_bidder"), "none"), StringEntry((aR + "_highest_bid"), "0"), StringEntry((aR + "_winner_of_nft"), "0"), StringEntry((aR + "_bidder_count"), "0"), StringEntry((aR + "_nft_status"), "OPEN")]
105333 }
106334
107335
108336
109-@Callable(m)
110-func placeBid (R,N,o,S) = {
111- let y = toBase58String(m.transactionId)
112- let P = m.caller.bytes
113- let j = fromBase58String(N)
114- let T = m.payments[0].amount
115- let U = getStringValue(this, (R + "_highest_bid"))
116- let V = getString(this, (R + "_previous_bidder"))
117- let W = getStringValue(this, (R + "_bidder_count"))
118- let X = getStringValue(this, (R + "_winner_of_nft"))
119- let Q = getStringValue(this, (R + "_nft_status"))
120- if ((m.payments[0].assetId != unit))
337+@Callable(aI)
338+func iqplace (bd,h,be,bf) = {
339+ let aR = toBase58String(aI.transactionId)
340+ let am = aI.caller.bytes
341+ let T = fromBase64String(h)
342+ let bg = aI.payments[1].amount
343+ let bh = getStringValue(this, (bd + "_highest_bid"))
344+ let bi = getString(this, (bd + "_previous_bidder"))
345+ let bj = getStringValue(this, (bd + "_bidder_count"))
346+ let bk = getStringValue(this, (bd + "_winner_of_nft"))
347+ let bc = getStringValue(this, (bd + "_nft_status"))
348+ if ((aI.payments[0].assetId != unit))
121349 then throw("Pay in waves")
122- else if ((Q != "OPEN"))
350+ else if ((bc != "OPEN"))
123351 then throw("Not open for auction")
124- else if ((parseIntValue(U) >= T))
352+ else if ((parseIntValue(bh) >= bg))
125353 then throw("Bid is less then starting/highest Bid")
126- else if ((U == "0"))
127- then [StringEntry((R + "_highest_bid"), toString(T)), StringEntry((R + "_winner_of_nft"), toBase58String(m.caller.bytes)), StringEntry((R + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((R + "_nft_id"), toBase58String(j)), StringEntry((R + "_nft_owner"), o), StringEntry((((y + "_") + R) + "_highest_bid"), toString(T)), StringEntry((((y + "_") + R) + "_winner"), toBase58String(m.caller.bytes)), StringEntry((((y + "_") + R) + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((((y + "_") + R) + "_nft_id"), toBase58String(j)), StringEntry((((y + "_") + R) + "_nft_owner"), o), StringEntry((y + "_bid_for_nft_by"), toBase58String(P)), StringEntry((y + "_bid_price_place"), S), StringEntry((y + "_previous_bid_amount_refund_to_address"), X), StringEntry((y + "_prevoius_bid_amount_refund"), U)]
128- else [StringEntry((R + "_highest_bid"), toString(T)), StringEntry((R + "_winner_of_nft"), toBase58String(m.caller.bytes)), StringEntry((R + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((R + "_nft_id"), toBase58String(j)), StringEntry((R + "_nft_owner"), o), StringEntry((((y + "_") + R) + "_highest_bid"), toString(T)), StringEntry((((y + "_") + R) + "_winner"), toBase58String(m.caller.bytes)), StringEntry((((y + "_") + R) + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((((y + "_") + R) + "_nft_id"), toBase58String(j)), StringEntry((((y + "_") + R) + "_nft_owner"), o), StringEntry((y + "_bid_for_nft_by"), toBase58String(P)), StringEntry((y + "_bid_price_place"), S), StringEntry((y + "_previous_bid_amount_refund_to_address"), X), StringEntry((y + "_prevoius_bid_amount_refund"), U), ScriptTransfer(Address(fromBase58String(X)), parseIntValue(U), unit)]
354+ else if ((bh == "3"))
355+ then [StringEntry((bd + "_highest_bid"), toString(bg)), StringEntry((bd + "_winner_of_nft"), toBase58String(aI.caller.bytes)), StringEntry((bd + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((bd + "_nft_id"), toBase58String(T)), StringEntry((bd + "_nft_owner"), be), StringEntry((((aR + "_") + bd) + "_highest_bid"), toString(bg)), StringEntry((((aR + "_") + bd) + "_winner"), toBase58String(aI.caller.bytes)), StringEntry((((aR + "_") + bd) + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((((aR + "_") + bd) + "_nft_id"), toBase58String(T)), StringEntry((((aR + "_") + bd) + "_nft_owner"), be), StringEntry((aR + "_bid_for_nft_by"), toBase58String(am)), StringEntry((aR + "_bid_price_place"), bf), StringEntry((aR + "_previous_bid_amount_refund_to_address"), bk), StringEntry((aR + "_prevoius_bid_amount_refund"), bh)]
356+ else [StringEntry((bd + "_highest_bid"), toString(bg)), StringEntry((bd + "_winner_of_nft"), toBase58String(aI.caller.bytes)), StringEntry((bd + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((bd + "_nft_id"), toBase58String(T)), StringEntry((bd + "_nft_owner"), be), StringEntry((((aR + "_") + bd) + "_highest_bid"), toString(bg)), StringEntry((((aR + "_") + bd) + "_winner"), toBase58String(aI.caller.bytes)), StringEntry((((aR + "_") + bd) + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((((aR + "_") + bd) + "_nft_id"), toBase58String(T)), StringEntry((((aR + "_") + bd) + "_nft_owner"), be), StringEntry((aR + "_bid_for_nft_by"), toBase58String(am)), StringEntry((aR + "_bid_price_place"), bf), StringEntry((aR + "_previous_bid_amount_refund_to_address"), bk), StringEntry((aR + "_prevoius_bid_amount_refund"), bh), ScriptTransfer(Address(fromBase58String(bk)), parseIntValue(bh), unit)]
129357 }
130358
131359
132360
133-@Callable(m)
134-func acceptBidOffer (R,N,Y) = {
135- let y = toBase58String(m.transactionId)
136- let P = m.caller.bytes
137- let j = fromBase58String(N)
138- let Z = getStringValue(this, (R + "_highest_bid"))
139- let aa = getStringValue(this, (R + "_winner_of_nft"))
140-[ScriptTransfer(Address(P), parseIntValue(Z), unit), ScriptTransfer(Address(fromBase58String(aa)), 1, j), StringEntry((y + "_amount_paid_to_owner"), Z), StringEntry((y + "_nft_transfer_to"), aa), StringEntry((y + "_nft_status"), "REWARDED"), StringEntry((R + "_amount_paid_to_owner"), Z), StringEntry((R + "_nft_transfer_to"), aa), StringEntry((R + "_nft_status"), "REWARDED")]
361+@Callable(aI)
362+func acceptBidOffer (bd,h,bl) = {
363+ let aR = toBase58String(aI.transactionId)
364+ let am = aI.caller.bytes
365+ let T = fromBase58String(h)
366+ let bm = getStringValue(this, (bd + "_highest_bid"))
367+ let bn = getStringValue(this, (bd + "_winner_of_nft"))
368+[ScriptTransfer(Address(am), parseIntValue(bm), unit), StringEntry((aR + "_amount_paid_to_owner"), bm), StringEntry((aR + "_nft_status"), "REWARDED"), StringEntry((bd + "_amount_paid_to_owner"), bm), StringEntry((bd + "_nft_transfer_to"), bn), StringEntry((bd + "_nft_status"), "REWARDED")]
141369 }
142370
143371
144372
145-@Callable(m)
146-func cancelAuction (R) = {
147- let y = toBase58String(m.transactionId)
148- let P = m.caller.bytes
149- let ab = getStringValue(this, (R + "_nft_status"))
150- let ac = getStringValue(this, (R + "_winner_of_nft"))
151- let ad = getStringValue(this, (R + "_nft_owner"))
152- let N = getStringValue(this, (R + "_nft_on_auction"))
153- let ae = getStringValue(this, (R + "_highest_bid"))
154- if ((ac == "0"))
155- then [StringEntry(((y + R) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(ad)), 1, fromBase58String(N))]
156- else [StringEntry((R + "_nft_status"), "CANCELED"), StringEntry((R + "_previous_bid_amount_refund_to_address"), ac), StringEntry((R + "_prevoius_bid_amount_refund"), ae), StringEntry((y + "_nft_status"), "CANCELED"), StringEntry((y + "_previous_bid_amount_refund_to_address"), ac), StringEntry((y + "_prevoius_bid_amount_refund"), ae), ScriptTransfer(Address(fromBase58String(ad)), 1, fromBase58String(N)), ScriptTransfer(Address(fromBase58String(ac)), parseIntValue(ae), unit)]
373+@Callable(aI)
374+func cancel1Auction (bd) = {
375+ let aR = toBase64String(aI.transactionId)
376+ let am = aI.caller.bytes
377+ let bo = getStringValue(this, (bd + "_nft_status"))
378+ let bp = getStringValue(this, (bd + "_winner_of_nft"))
379+ let bq = getStringValue(this, (bd + "_nft_owner"))
380+ let h = getStringValue(this, (bd + "_nft_on_auction"))
381+ let br = getStringValue(this, (bd + "_highest_bid"))
382+ if ((bp == "0"))
383+ then [ScriptTransfer(Address(fromBase58String(bq)), 1, fromBase58String(h))]
384+ else [StringEntry((bd + "_nft_status"), "CANCELED"), StringEntry((bd + "_previous_bid_amount_refund_to_address"), bp), StringEntry((bd + "_prevoius_bid_amount_refund"), br), StringEntry((aR + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(bq)), 1, fromBase58String(h)), ScriptTransfer(Address(fromBase58String(bp)), parseIntValue(br), unit)]
157385 }
158386
159387
160388
161-@Callable(m)
162-func withdrawBid (af) = {
163- let P = m.caller.bytes
164- let ag = getStringValue(this, (af + "_highest_bid"))
165- let ah = getStringValue(this, (af + "_winner"))
166- let ai = getStringValue(this, (af + "_nft_id"))
167- if ((toBase58String(P) != ah))
389+@Callable(aI)
390+func WITH (bs) = {
391+ let am = aI.caller.bytes
392+ let bt = getStringValue(this, (bs + "_highest_bid"))
393+ let bu = getStringValue(this, (bs + "_winner"))
394+ let bv = getStringValue(this, (bs + "_nft_id"))
395+ if ((toBase64String(am) != bu))
168396 then throw("No bid")
169- else [StringEntry((af + "_nft_bid"), "WITHDRAW"), StringEntry((af + "_nft_id"), ai), StringEntry((af + "_bidding_price_refund_amount"), ag), ScriptTransfer(m.caller, parseIntValue(ag), unit)]
397+ else [StringEntry((bs + "_nft_id"), bv), StringEntry((bs + "_bidding_price_refund_amount"), bt), ScriptTransfer(aI.caller, parseIntValue(bt), unit)]
170398 }
171399
172400
173401
174-@Callable(m)
175-func testBid (aj) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
402+@Callable(aI)
403+func testBid (bw) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
176404
177405
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
6-let b = "buy"
6+let b = "auction"
77
8-let c = "price"
8+let c = "sell"
99
10-let d = "sell"
10+let d = "trusted"
1111
12-let e = 7
12+let e = "price"
1313
14-let f = "bid"
14+func f (g,h) = ((g + a) + toBase58String(h))
1515
16-let g = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
1716
18-let h = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq'
17+func i (h) = ((e + a) + toBase58String(h))
1918
20-func i (j) = {
21- let k = assetInfo(j)
22- if ($isInstanceOf(k, "Asset"))
19+
20+func j (h) = ((c + a) + toBase58String(h))
21+
22+
23+func k (h) = ((b + a) + toBase58String(h))
24+
25+
26+func l (m) = ((d + a) + toString(m))
27+
28+
29+func n (o,p) = (o ++ [p])
30+
31+
32+func q (r) = {
33+ let s = size(r)
34+ if ((s == 0))
35+ then throw("Empty params")
36+ else if ((s == 1))
37+ then makeString({
38+ let t = r
39+ let u = size(t)
40+ let v = nil
41+ func w (x,y) = if ((y >= u))
42+ then x
43+ else n(x, t[y])
44+
45+ func z (x,y) = if ((y >= u))
46+ then x
47+ else throw("List size exceeds 1")
48+
49+ z(w(v, 0), 1)
50+ }, a)
51+ else if ((s == 2))
52+ then makeString({
53+ let t = r
54+ let u = size(t)
55+ let v = nil
56+ func w (x,y) = if ((y >= u))
57+ then x
58+ else n(x, t[y])
59+
60+ func z (x,y) = if ((y >= u))
61+ then x
62+ else throw("List size exceeds 2")
63+
64+ z(w(w(v, 0), 1), 2)
65+ }, a)
66+ else if ((s == 3))
67+ then makeString({
68+ let t = r
69+ let u = size(t)
70+ let v = nil
71+ func w (x,y) = if ((y >= u))
72+ then x
73+ else n(x, t[y])
74+
75+ func z (x,y) = if ((y >= u))
76+ then x
77+ else throw("List size exceeds 3")
78+
79+ z(w(w(w(v, 0), 1), 2), 3)
80+ }, a)
81+ else if ((s == 4))
82+ then makeString({
83+ let t = r
84+ let u = size(t)
85+ let v = nil
86+ func w (x,y) = if ((y >= u))
87+ then x
88+ else n(x, t[y])
89+
90+ func z (x,y) = if ((y >= u))
91+ then x
92+ else throw("List size exceeds 4")
93+
94+ z(w(w(w(w(v, 0), 1), 2), 3), 4)
95+ }, a)
96+ else if ((s == 5))
97+ then makeString({
98+ let t = r
99+ let u = size(t)
100+ let v = nil
101+ func w (x,y) = if ((y >= u))
102+ then x
103+ else n(x, t[y])
104+
105+ func z (x,y) = if ((y >= u))
106+ then x
107+ else throw("List size exceeds 5")
108+
109+ z(w(w(w(w(w(v, 0), 1), 2), 3), 4), 5)
110+ }, a)
111+ else throw("Max number of parameters exceeded")
112+ }
113+
114+
115+func A (B) = {
116+ let C = split(B, a)
117+ $Tuple5(addressFromStringValue(C[0]), parseIntValue(C[1]), parseIntValue(C[2]), parseIntValue(C[3]), parseIntValue(C[4]))
118+ }
119+
120+
121+func D (B) = {
122+ let C = split(B, a)
123+ $Tuple2(addressFromStringValue(C[0]), parseIntValue(C[1]))
124+ }
125+
126+
127+func E (r) = {
128+ let F = r
129+ if ($isInstanceOf(F, "(Address, Int, String, String)"))
23130 then {
24- let l = k
25- if (if ((l.decimals == 0))
26- then (l.quantity == 1)
131+ let G = F
132+ q([toString(G._1), toString(G._2), G._3, G._4])
133+ }
134+ else if ($isInstanceOf(F, "(Address, Int)"))
135+ then {
136+ let H = F
137+ q([toString(H._1), toString(H._2)])
138+ }
139+ else throw("Wrong params tupple")
140+ }
141+
142+
143+func I (J,h,K,L,M) = StringEntry(k(h), E($Tuple4(J, K, L, M)))
144+
145+
146+func N (h,O,P) = StringEntry(j(h), E($Tuple2(O, P)))
147+
148+
149+func Q (h) = value(getString(this, k(h)))
150+
151+
152+func R (h) = value(getString(this, j(h)))
153+
154+
155+func S (T,U) = {
156+ let B = Q(T)
157+ let V = A(B)
158+ let J = V._1
159+ let W = V._2
160+ let X = V._3
161+ let Y = V._4
162+ let Z = V._5
163+ if ((U >= Z))
164+ then $Tuple2(J, X)
165+ else {
166+ let aa = (W - X)
167+ let ab = (Z - Y)
168+ let ac = (U - Y)
169+ $Tuple2(J, (W - fraction(ac, aa, ab)))
170+ }
171+ }
172+
173+
174+func ad (T) = {
175+ let F = assetInfo(T)
176+ if ($isInstanceOf(F, "Asset"))
177+ then {
178+ let ae = F
179+ if (if ((ae.decimals == 0))
180+ then (ae.quantity == 1)
27181 else false)
28- then (l.reissuable == false)
182+ then (ae.reissuable == false)
29183 else false
30184 }
31185 else false
32186 }
33187
34188
35-@Callable(m)
36-func createNft (n,o,p,q,r,s,t,u,v) = {
37- let w = Issue(n, t, 1, 0, false)
38- let x = calculateAssetId(w)
39- let y = m.transactionId
40-[w, ScriptTransfer(m.caller, 1, x), StringEntry(((toBase58String(x) + a) + "Owner"), toString(m.caller)), StringEntry(((toBase58String(x) + a) + "nft_type"), q), StringEntry(((toBase58String(x) + a) + "nft_tags"), r), StringEntry(((toBase58String(x) + a) + "nft_dAppAddress"), p), IntegerEntry(((toBase58String(x) + a) + "nft_selling_price"), s), StringEntry(((toBase58String(x) + a) + "nft_onSell"), u), StringEntry(((toBase58String(x) + a) + "nft_data"), v), StringEntry(((toBase58String(y) + a) + "issue_nft"), toBase58String(x))]
189+func af (T) = {
190+ let m = value(assetInfo(T)).issuer
191+ valueOrElse(getBoolean(this, l(m)), false)
192+ }
193+
194+
195+func ag (T) = isDefined(getString(this, j(T)))
196+
197+
198+func ah (T) = isDefined(getString(this, k(T)))
199+
200+
201+func ai (P) = (P > 0)
202+
203+
204+func aj (K,ak) = (K > ak)
205+
206+
207+func al (am) = (am == this)
208+
209+
210+func an (am,J) = if ((am == this))
211+ then true
212+ else (am == J)
213+
214+
215+func ao (ap,M) = (ap > M)
216+
217+
218+func aq (ar,as) = (ar >= as)
219+
220+
221+func at (T) = (T == unit)
222+
223+
224+func au (h) = if (!(ad(h)))
225+ then throw("Token is not Nft")
226+ else if (ag(h))
227+ then throw("Sell already exists")
228+ else if (ah(h))
229+ then throw("Auction already exists")
230+ else unit
231+
232+
233+func av (aw,ax,P) = if (!(at(aw)))
234+ then throw("Payment must be at WAVES")
235+ else if (!(aq(ax, P)))
236+ then throw("Not enough funds")
237+ else unit
238+
239+
240+func ay () = 0
241+
242+
243+func az () = 0
244+
245+
246+func aA (aB,ax,aC) = if (aB)
247+ then $Tuple2((aC - az()), (ax - aC))
248+ else $Tuple2((aC - ay()), (ax - aC))
249+
250+
251+func aD (h) = if (ag(h))
252+ then $Tuple2(c, R(h))
253+ else if (ah(h))
254+ then $Tuple2(b, Q(h))
255+ else throw("Slot doesn`t exist")
256+
257+
258+let aE = "buy"
259+
260+let aF = "bid"
261+
262+let aG = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
263+
264+let aH = base58'3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx'
265+
266+@Callable(aI)
267+func createNft (aJ,aK,aL,aM,aN,aO) = {
268+ let aP = Issue(aJ, aM, 1, 0, false)
269+ let aQ = calculateAssetId(aP)
270+ let aR = aI.transactionId
271+[aP, ScriptTransfer(aI.caller, 1, aQ), StringEntry(((toBase58String(aQ) + a) + "nft_dAppAddress"), aK), IntegerEntry(((toBase58String(aQ) + a) + "nft_selling_price"), aL), StringEntry(((toBase58String(aQ) + a) + "nft_onSell"), aN), StringEntry(((toBase58String(aQ) + a) + "nft_data"), aO), StringEntry(((toBase58String(aR) + a) + "issue_nft"), toBase58String(aQ))]
41272 }
42273
43274
44275
45-@Callable(m)
46-func sellNFT (z) = {
47- let y = m.transactionId
48- let A = m.caller.bytes
49- let B = $Tuple2(value(m.payments[0].assetId), value(m.payments[0].amount))
50- let C = B._1
51- let D = B._2
52- if (!(i(C)))
276+@Callable(aI)
277+func sellNFT (P) = {
278+ let aR = aI.transactionId
279+ let aS = $Tuple2(value(aI.payments[0].assetId), value(aI.payments[0].amount))
280+ let aT = aS._1
281+ let aU = aS._2
282+ if (ad(aT))
53283 then throw("Token is not NFT")
54- else [StringEntry(((c + a) + toBase58String(value(m.payments[0].assetId))), z), StringEntry(((toString(m.caller) + a) + d), ((toBase58String(C) + a) + toString(D)))]
284+ else [StringEntry(((e + a) + toBase58String(value(aI.payments[0].assetId))), toString(P)), StringEntry(((toString(aI.caller) + a) + c), ((toBase58String(aT) + a) + toString(aU)))]
55285 }
56286
57287
58288
59-@Callable(m)
60-func buyNFT (E,F) = {
61- let j = fromBase58String(E)
62- let G = value(m.payments[0].amount)
63- let H = {
64- let k = getString(this, (("nft_" + F) + "_owner"))
65- if ($isInstanceOf(k, "String"))
289+@Callable(aI)
290+func buyNFT (aV,aW) = {
291+ let T = fromBase58String(aW)
292+ let aX = value(aI.payments[0].amount)
293+ let aY = {
294+ let F = getString(this, (("nft_" + aW) + "_owner"))
295+ if ($isInstanceOf(F, "String"))
66296 then {
67- let I = k
68- I
297+ let aZ = F
298+ aZ
69299 }
70- else false
300+ else true
71301 }
72- let z = getStringValue(((((c + a) + E) + "_") + F))
73- if ((m.payments[0].assetId != unit))
302+ let P = getStringValue(((((e + a) + aV) + "_") + aW))
303+ let ba = valueOrErrorMessage(getStringValue((a + "Owner")), "No owner")
304+ if ((aI.payments[0].assetId != unit))
74305 then throw("Pay in waves")
75- else if ((F == toString(m.caller)))
76- then throw("current Owner of NFT not able to purchase")
77- else [ScriptTransfer(m.caller, 1, j), ScriptTransfer(Address(fromBase58String(F)), G, unit), StringEntry(((toString(m.caller) + a) + b), ((E + a) + toString(G))), DeleteEntry((("nft_" + F) + "_owner")), StringEntry((("nft_" + F) + "_owner"), toString(m.caller)), StringEntry(((E + a) + "_owner"), toString(m.caller))]
306+ else if ((aY == toString(aI.caller)))
307+ then throw("Owner of NFT not able to purchase")
308+ else [StringEntry(((toString(aI.caller) + a) + aE), (aV + a)), DeleteEntry((("nft_" + aW) + "_owner"))]
78309 }
79310
80311
81312
82-@Callable(m)
83-func addAuction (J,K,L,M) = {
84- let y = toBase58String(m.transactionId)
85- let N = value(m.payments[0].assetId)
86- let z = value(L)
87- let O = (lastBlock.height + M)
88- let P = m.caller.bytes
89- let Q = {
90- let k = getString(this, (((toBase58String(N) + a) + "nft_status_") + toBase58String(P)))
91- if ($isInstanceOf(k, "String"))
313+@Callable(aI)
314+func sellauction (L,M,K,bb) = {
315+ let aR = toBase58String(aI.transactionId)
316+ let h = value(aI.payments[1].assetId)
317+ let P = value(K)
318+ let am = aI.caller.bytes
319+ let bc = {
320+ let F = getString(this, (((toBase58String(h) + a) + "nft_status_") + toBase58String(am)))
321+ if ($isInstanceOf(F, "String"))
92322 then {
93- let I = k
323+ let aZ = F
94324 true
95325 }
96326 else false
97327 }
98- if ((m.payments[0].assetId == unit))
328+ if ((aI.payments[0].assetId == unit))
99329 then throw("NFT not attached")
100- else if ((Q == true))
330+ else if ((bc == true))
101331 then throw("Already in auction list")
102- else if ((M > e))
103- then throw(("Duration is too long. Must be less than or equal to 7 " + toString(e)))
104- else [StringEntry(((y + "_nft_start_auction_date_") + toBase58String(P)), J), StringEntry(((y + "_nft_end_auction_date_") + toBase58String(P)), K), StringEntry((y + "_nft_start_price"), L), StringEntry((y + "_nft_owner"), toString(m.caller)), StringEntry((y + "_nft_on_auction"), toBase58String(N)), StringEntry((y + "_previous_bidder"), "none"), StringEntry((y + "_highest_bid"), "0"), StringEntry((y + "_winner_of_nft"), "0"), StringEntry((y + "_bidder_count"), "0"), StringEntry((y + "_nft_status"), "OPEN")]
332+ else [StringEntry(((aR + "_nft_start_auction_date_") + toBase58String(am)), L), StringEntry(((aR + "_nft_end_auction_date_") + toBase58String(am)), M), StringEntry((aR + "_nft_start_price"), K), IntegerEntry((aR + "duration_of_auction"), bb), StringEntry((aR + "_nft_owner"), toString(aI.caller)), StringEntry((aR + "_nft_on_auction"), toBase58String(h)), StringEntry((aR + "_previous_bidder"), "none"), StringEntry((aR + "_highest_bid"), "0"), StringEntry((aR + "_winner_of_nft"), "0"), StringEntry((aR + "_bidder_count"), "0"), StringEntry((aR + "_nft_status"), "OPEN")]
105333 }
106334
107335
108336
109-@Callable(m)
110-func placeBid (R,N,o,S) = {
111- let y = toBase58String(m.transactionId)
112- let P = m.caller.bytes
113- let j = fromBase58String(N)
114- let T = m.payments[0].amount
115- let U = getStringValue(this, (R + "_highest_bid"))
116- let V = getString(this, (R + "_previous_bidder"))
117- let W = getStringValue(this, (R + "_bidder_count"))
118- let X = getStringValue(this, (R + "_winner_of_nft"))
119- let Q = getStringValue(this, (R + "_nft_status"))
120- if ((m.payments[0].assetId != unit))
337+@Callable(aI)
338+func iqplace (bd,h,be,bf) = {
339+ let aR = toBase58String(aI.transactionId)
340+ let am = aI.caller.bytes
341+ let T = fromBase64String(h)
342+ let bg = aI.payments[1].amount
343+ let bh = getStringValue(this, (bd + "_highest_bid"))
344+ let bi = getString(this, (bd + "_previous_bidder"))
345+ let bj = getStringValue(this, (bd + "_bidder_count"))
346+ let bk = getStringValue(this, (bd + "_winner_of_nft"))
347+ let bc = getStringValue(this, (bd + "_nft_status"))
348+ if ((aI.payments[0].assetId != unit))
121349 then throw("Pay in waves")
122- else if ((Q != "OPEN"))
350+ else if ((bc != "OPEN"))
123351 then throw("Not open for auction")
124- else if ((parseIntValue(U) >= T))
352+ else if ((parseIntValue(bh) >= bg))
125353 then throw("Bid is less then starting/highest Bid")
126- else if ((U == "0"))
127- then [StringEntry((R + "_highest_bid"), toString(T)), StringEntry((R + "_winner_of_nft"), toBase58String(m.caller.bytes)), StringEntry((R + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((R + "_nft_id"), toBase58String(j)), StringEntry((R + "_nft_owner"), o), StringEntry((((y + "_") + R) + "_highest_bid"), toString(T)), StringEntry((((y + "_") + R) + "_winner"), toBase58String(m.caller.bytes)), StringEntry((((y + "_") + R) + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((((y + "_") + R) + "_nft_id"), toBase58String(j)), StringEntry((((y + "_") + R) + "_nft_owner"), o), StringEntry((y + "_bid_for_nft_by"), toBase58String(P)), StringEntry((y + "_bid_price_place"), S), StringEntry((y + "_previous_bid_amount_refund_to_address"), X), StringEntry((y + "_prevoius_bid_amount_refund"), U)]
128- else [StringEntry((R + "_highest_bid"), toString(T)), StringEntry((R + "_winner_of_nft"), toBase58String(m.caller.bytes)), StringEntry((R + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((R + "_nft_id"), toBase58String(j)), StringEntry((R + "_nft_owner"), o), StringEntry((((y + "_") + R) + "_highest_bid"), toString(T)), StringEntry((((y + "_") + R) + "_winner"), toBase58String(m.caller.bytes)), StringEntry((((y + "_") + R) + "_bidder_count"), toString((parseIntValue(W) + 1))), StringEntry((((y + "_") + R) + "_nft_id"), toBase58String(j)), StringEntry((((y + "_") + R) + "_nft_owner"), o), StringEntry((y + "_bid_for_nft_by"), toBase58String(P)), StringEntry((y + "_bid_price_place"), S), StringEntry((y + "_previous_bid_amount_refund_to_address"), X), StringEntry((y + "_prevoius_bid_amount_refund"), U), ScriptTransfer(Address(fromBase58String(X)), parseIntValue(U), unit)]
354+ else if ((bh == "3"))
355+ then [StringEntry((bd + "_highest_bid"), toString(bg)), StringEntry((bd + "_winner_of_nft"), toBase58String(aI.caller.bytes)), StringEntry((bd + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((bd + "_nft_id"), toBase58String(T)), StringEntry((bd + "_nft_owner"), be), StringEntry((((aR + "_") + bd) + "_highest_bid"), toString(bg)), StringEntry((((aR + "_") + bd) + "_winner"), toBase58String(aI.caller.bytes)), StringEntry((((aR + "_") + bd) + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((((aR + "_") + bd) + "_nft_id"), toBase58String(T)), StringEntry((((aR + "_") + bd) + "_nft_owner"), be), StringEntry((aR + "_bid_for_nft_by"), toBase58String(am)), StringEntry((aR + "_bid_price_place"), bf), StringEntry((aR + "_previous_bid_amount_refund_to_address"), bk), StringEntry((aR + "_prevoius_bid_amount_refund"), bh)]
356+ else [StringEntry((bd + "_highest_bid"), toString(bg)), StringEntry((bd + "_winner_of_nft"), toBase58String(aI.caller.bytes)), StringEntry((bd + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((bd + "_nft_id"), toBase58String(T)), StringEntry((bd + "_nft_owner"), be), StringEntry((((aR + "_") + bd) + "_highest_bid"), toString(bg)), StringEntry((((aR + "_") + bd) + "_winner"), toBase58String(aI.caller.bytes)), StringEntry((((aR + "_") + bd) + "_bidder_count"), toString((parseIntValue(bj) + 1))), StringEntry((((aR + "_") + bd) + "_nft_id"), toBase58String(T)), StringEntry((((aR + "_") + bd) + "_nft_owner"), be), StringEntry((aR + "_bid_for_nft_by"), toBase58String(am)), StringEntry((aR + "_bid_price_place"), bf), StringEntry((aR + "_previous_bid_amount_refund_to_address"), bk), StringEntry((aR + "_prevoius_bid_amount_refund"), bh), ScriptTransfer(Address(fromBase58String(bk)), parseIntValue(bh), unit)]
129357 }
130358
131359
132360
133-@Callable(m)
134-func acceptBidOffer (R,N,Y) = {
135- let y = toBase58String(m.transactionId)
136- let P = m.caller.bytes
137- let j = fromBase58String(N)
138- let Z = getStringValue(this, (R + "_highest_bid"))
139- let aa = getStringValue(this, (R + "_winner_of_nft"))
140-[ScriptTransfer(Address(P), parseIntValue(Z), unit), ScriptTransfer(Address(fromBase58String(aa)), 1, j), StringEntry((y + "_amount_paid_to_owner"), Z), StringEntry((y + "_nft_transfer_to"), aa), StringEntry((y + "_nft_status"), "REWARDED"), StringEntry((R + "_amount_paid_to_owner"), Z), StringEntry((R + "_nft_transfer_to"), aa), StringEntry((R + "_nft_status"), "REWARDED")]
361+@Callable(aI)
362+func acceptBidOffer (bd,h,bl) = {
363+ let aR = toBase58String(aI.transactionId)
364+ let am = aI.caller.bytes
365+ let T = fromBase58String(h)
366+ let bm = getStringValue(this, (bd + "_highest_bid"))
367+ let bn = getStringValue(this, (bd + "_winner_of_nft"))
368+[ScriptTransfer(Address(am), parseIntValue(bm), unit), StringEntry((aR + "_amount_paid_to_owner"), bm), StringEntry((aR + "_nft_status"), "REWARDED"), StringEntry((bd + "_amount_paid_to_owner"), bm), StringEntry((bd + "_nft_transfer_to"), bn), StringEntry((bd + "_nft_status"), "REWARDED")]
141369 }
142370
143371
144372
145-@Callable(m)
146-func cancelAuction (R) = {
147- let y = toBase58String(m.transactionId)
148- let P = m.caller.bytes
149- let ab = getStringValue(this, (R + "_nft_status"))
150- let ac = getStringValue(this, (R + "_winner_of_nft"))
151- let ad = getStringValue(this, (R + "_nft_owner"))
152- let N = getStringValue(this, (R + "_nft_on_auction"))
153- let ae = getStringValue(this, (R + "_highest_bid"))
154- if ((ac == "0"))
155- then [StringEntry(((y + R) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(ad)), 1, fromBase58String(N))]
156- else [StringEntry((R + "_nft_status"), "CANCELED"), StringEntry((R + "_previous_bid_amount_refund_to_address"), ac), StringEntry((R + "_prevoius_bid_amount_refund"), ae), StringEntry((y + "_nft_status"), "CANCELED"), StringEntry((y + "_previous_bid_amount_refund_to_address"), ac), StringEntry((y + "_prevoius_bid_amount_refund"), ae), ScriptTransfer(Address(fromBase58String(ad)), 1, fromBase58String(N)), ScriptTransfer(Address(fromBase58String(ac)), parseIntValue(ae), unit)]
373+@Callable(aI)
374+func cancel1Auction (bd) = {
375+ let aR = toBase64String(aI.transactionId)
376+ let am = aI.caller.bytes
377+ let bo = getStringValue(this, (bd + "_nft_status"))
378+ let bp = getStringValue(this, (bd + "_winner_of_nft"))
379+ let bq = getStringValue(this, (bd + "_nft_owner"))
380+ let h = getStringValue(this, (bd + "_nft_on_auction"))
381+ let br = getStringValue(this, (bd + "_highest_bid"))
382+ if ((bp == "0"))
383+ then [ScriptTransfer(Address(fromBase58String(bq)), 1, fromBase58String(h))]
384+ else [StringEntry((bd + "_nft_status"), "CANCELED"), StringEntry((bd + "_previous_bid_amount_refund_to_address"), bp), StringEntry((bd + "_prevoius_bid_amount_refund"), br), StringEntry((aR + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(bq)), 1, fromBase58String(h)), ScriptTransfer(Address(fromBase58String(bp)), parseIntValue(br), unit)]
157385 }
158386
159387
160388
161-@Callable(m)
162-func withdrawBid (af) = {
163- let P = m.caller.bytes
164- let ag = getStringValue(this, (af + "_highest_bid"))
165- let ah = getStringValue(this, (af + "_winner"))
166- let ai = getStringValue(this, (af + "_nft_id"))
167- if ((toBase58String(P) != ah))
389+@Callable(aI)
390+func WITH (bs) = {
391+ let am = aI.caller.bytes
392+ let bt = getStringValue(this, (bs + "_highest_bid"))
393+ let bu = getStringValue(this, (bs + "_winner"))
394+ let bv = getStringValue(this, (bs + "_nft_id"))
395+ if ((toBase64String(am) != bu))
168396 then throw("No bid")
169- else [StringEntry((af + "_nft_bid"), "WITHDRAW"), StringEntry((af + "_nft_id"), ai), StringEntry((af + "_bidding_price_refund_amount"), ag), ScriptTransfer(m.caller, parseIntValue(ag), unit)]
397+ else [StringEntry((bs + "_nft_id"), bv), StringEntry((bs + "_bidding_price_refund_amount"), bt), ScriptTransfer(aI.caller, parseIntValue(bt), unit)]
170398 }
171399
172400
173401
174-@Callable(m)
175-func testBid (aj) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
402+@Callable(aI)
403+func testBid (bw) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
176404
177405

github/deemru/w8io/873ac7e 
166.77 ms