tx · 3XpAqhH5GK8jeXwqGwu114pqGjbhXfV9KrCRiMa4yoYn

3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx:  -0.01000000 Waves

2023.01.05 08:58 [2391264] smart account 3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx > SELF 0.00000000 Waves

{ "type": 13, "id": "3XpAqhH5GK8jeXwqGwu114pqGjbhXfV9KrCRiMa4yoYn", "fee": 1000000, "feeAssetId": null, "timestamp": 1672898365658, "version": 2, "chainId": 84, "sender": "3N85YW6NZ9pLYvSdt1ASMQTGxvncnU1vUNx", "senderPublicKey": "EKZmHJ5bK3qKKgRdq8rAamt9qrDbVMLARzRqXoQW258v", "proofs": [ "2nAeMK8JhmF9SUNp3KG8AA9V7Q66QvNkHh7hBG2aCWZ1Tc1aC2dwKteH9o2KfP84bDBYG3o48XVEFfQSSkLrNYHD" ], "script": "base64:BgJACAISCwoJCAgICAgBCAgIEgMKAQgSBAoCCAgSBgoECAgIARIGCgQICAgIEgUKAwgIARIDCgEIEgMKAQgSAwoBCAkACXNlcGFyYXRvcgIBXwAEa0J1eQIDYnV5AAZrUHJpY2UCBXByaWNlAAVrU2VsbAIEc2VsbAASbWF4QXVjdGlvbkR1cmF0aW9uAAcABGtCaWQCA2JpZAAMc3RhdHVzRm9yTkZUCQCWCgQCBE9QRU4CBkNMT1NFRAIIUkVXQVJERUQCCENBTkNFTEVEAAtkQXBwQWRkcmVzcwEaAVRKuE9s3sLak+30julKNvjVT3+V1VVbXaABBWlzTmZ0AQdhc3NldElkBAckbWF0Y2gwCQDsBwEFB2Fzc2V0SWQDCQABAgUHJG1hdGNoMAIFQXNzZXQEBXRva2VuBQckbWF0Y2gwAwMJAAACCAUFdG9rZW4IZGVjaW1hbHMAAAkAAAIIBQV0b2tlbghxdWFudGl0eQABBwkAAAIIBQV0b2tlbgpyZWlzc3VhYmxlBwcHCQFpAQljcmVhdGVOZnQJCG5mdF9uYW1lCW5mdF9vd25lcg9uZnRfZEFwcEFkZHJlc3MIbmZ0X3R5cGUIbmZ0X3RhZ3MRbmZ0X3NlbGxpbmdfcHJpY2UPbmZ0X2Rlc2NyaXB0aW9uCm5mdF9vblNlbGwIbmZ0X2RhdGEECG5ld1Rva2VuCQDCCAUFCG5mdF9uYW1lBQ9uZnRfZGVzY3JpcHRpb24AAQAABwQHaXNzdWVJZAkAuAgBBQhuZXdUb2tlbgQEdHhJZAgFAWkNdHJhbnNhY3Rpb25JZAkAzAgCBQhuZXdUb2tlbgkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHaXNzdWVJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICBU93bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCG5mdF90eXBlBQhuZnRfdHlwZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCG5mdF90YWdzBQhuZnRfdGFncwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICD25mdF9kQXBwQWRkcmVzcwUPbmZ0X2RBcHBBZGRyZXNzCQDMCAIJAQxJbnRlZ2VyRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICEW5mdF9zZWxsaW5nX3ByaWNlBRFuZnRfc2VsbGluZ19wcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkA2AQBBQdpc3N1ZUlkBQlzZXBhcmF0b3ICCm5mdF9vblNlbGwFCm5mdF9vblNlbGwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfZGF0YQUIbmZ0X2RhdGEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUEdHhJZAUJc2VwYXJhdG9yAglpc3N1ZV9uZnQJANgEAQUHaXNzdWVJZAUDbmlsAWkBB3NlbGxORlQBBXByaWNlBAR0eElkCAUBaQ10cmFuc2FjdGlvbklkBAZzZWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMECyR0MDE3OTIxODc3CQCUCgIJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEBnRva2VuMAgFCyR0MDE3OTIxODc3Al8xBAdhbW91bnQwCAULJHQwMTc5MjE4NzcCXzIDCQEBIQEJAQVpc05mdAEFBnRva2VuMAkAAgECEFRva2VuIGlzIG5vdCBORlQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBmtQcmljZQUJc2VwYXJhdG9yCQDYBAEJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKUIAQgFAWkGY2FsbGVyBQlzZXBhcmF0b3IFBWtTZWxsCQCsAgIJAKwCAgkA2AQBBQZ0b2tlbjAFCXNlcGFyYXRvcgkApAMBBQdhbW91bnQwBQNuaWwBaQEGYnV5TkZUAgVuZnRJRBFjdXJyZW50X25mdF9vd25lcgQHYXNzZXRJZAkA2QQBBQVuZnRJRAQGYW1vdW50CQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQQY2hlY2tPd25lcklzU2FtZQQHJG1hdGNoMAkAnQgCBQR0aGlzCQCsAgIJAKwCAgIEbmZ0XwURY3VycmVudF9uZnRfb3duZXICBl9vd25lcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAFAWEHBAVwcmljZQkBEUBleHRyTmF0aXZlKDEwNTgpAQkArAICCQCsAgIJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgUFbmZ0SUQCAV8FEWN1cnJlbnRfbmZ0X293bmVyAwkBAiE9AggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0CQACAQIMUGF5IGluIHdhdmVzAwkAAAIFEWN1cnJlbnRfbmZ0X293bmVyCQClCAEIBQFpBmNhbGxlcgkAAgECKWN1cnJlbnQgT3duZXIgb2YgTkZUIG5vdCBhYmxlIHRvIHB1cmNoYXNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRFjdXJyZW50X25mdF9vd25lcgUGYW1vdW50BQR1bml0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQRrQnV5CQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgkApAMBBQZhbW91bnQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQVuZnRJRAUJc2VwYXJhdG9yAgZfb3duZXIJAKUIAQgFAWkGY2FsbGVyBQNuaWwBaQEKYWRkQXVjdGlvbgQFc3RhcnQDZW5kCnN0YXJ0UHJpY2UIZHVyYXRpb24EBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQFbmZ0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAQFcHJpY2UJAQV2YWx1ZQEFCnN0YXJ0UHJpY2UECWVuZEhlaWdodAkAZAIIBQlsYXN0QmxvY2sGaGVpZ2h0BQhkdXJhdGlvbgQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBBFjaGVja05mdEF1Y3Rpb25lZAQHJG1hdGNoMAkAnQgCBQR0aGlzCQCsAgIJAKwCAgkArAICCQDYBAEFBW5mdElkBQlzZXBhcmF0b3ICC25mdF9zdGF0dXNfCQDYBAEFBmNhbGxlcgMJAAECBQckbWF0Y2gwAgZTdHJpbmcEAWEFByRtYXRjaDAGBwMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAAIBAhBORlQgbm90IGF0dGFjaGVkAwkAAAIFEWNoZWNrTmZ0QXVjdGlvbmVkBgkAAgECF0FscmVhZHkgaW4gYXVjdGlvbiBsaXN0AwkAZgIFCGR1cmF0aW9uBRJtYXhBdWN0aW9uRHVyYXRpb24JAAIBCQCsAgICNkR1cmF0aW9uIGlzIHRvbyBsb25nLiBNdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA3IAkApAMBBRJtYXhBdWN0aW9uRHVyYXRpb24JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBHR4SWQCGF9uZnRfc3RhcnRfYXVjdGlvbl9kYXRlXwkA2AQBBQZjYWxsZXIFBXN0YXJ0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkAhZfbmZ0X2VuZF9hdWN0aW9uX2RhdGVfCQDYBAEFBmNhbGxlcgUDZW5kCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX25mdF9zdGFydF9wcmljZQUKc3RhcnRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCCl9uZnRfb3duZXIJAKUIAQgFAWkGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIPX25mdF9vbl9hdWN0aW9uCQDYBAEFBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX3ByZXZpb3VzX2JpZGRlcgIEbm9uZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCDF9oaWdoZXN0X2JpZAIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCDl93aW5uZXJfb2ZfbmZ0AgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAINX2JpZGRlcl9jb3VudAIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAgRPUEVOBQNuaWwBaQEIcGxhY2VCaWQECWF1Y3Rpb25JZAVuZnRJZAluZnRfb3duZXIJYmlkX3ByaWNlBAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQHYXNzZXRJZAkA2QQBBQVuZnRJZAQPY3VycmVudEJpZFByaWNlCAkAkQMCCAUBaQhwYXltZW50cwAABmFtb3VudAQVZ2V0TGFzdFdpbm5lckJpZFByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkBBhnZXRQcmV2aW91c0JpZGRlckFkZHJlc3MJAJ0IAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCEF9wcmV2aW91c19iaWRkZXIED2N1cnJlbnRCaWRDb3VudAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQEFGdldExhc3RXaW5uZXJBZGRyZXNzCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQEEWNoZWNrTmZ0QXVjdGlvbmVkCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMDCQECIT0CCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAAIBAgxQYXkgaW4gd2F2ZXMDCQECIT0CBRFjaGVja05mdEF1Y3Rpb25lZAIET1BFTgkAAgECFE5vdCBvcGVuIGZvciBhdWN0aW9uAwkAZwIJAQ1wYXJzZUludFZhbHVlAQUVZ2V0TGFzdFdpbm5lckJpZFByaWNlBQ9jdXJyZW50QmlkUHJpY2UJAAIBAiVCaWQgaXMgbGVzcyB0aGVuIHN0YXJ0aW5nL2hpZ2hlc3QgQmlkAwkAAAIFFWdldExhc3RXaW5uZXJCaWRQcmljZQIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIHX25mdF9pZAkA2AQBBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQJAKQDAQUPY3VycmVudEJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIHX3dpbm5lcgkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAINX2JpZGRlcl9jb3VudAkApAMBCQBkAgkBDXBhcnNlSW50VmFsdWUBBQ9jdXJyZW50QmlkQ291bnQAAQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIFCW5mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCD19iaWRfZm9yX25mdF9ieQkA2AQBBQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhBfYmlkX3ByaWNlX3BsYWNlBQliaWRfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAiZfcHJldmlvdXNfYmlkX2Ftb3VudF9yZWZ1bmRfdG9fYWRkcmVzcwUUZ2V0TGFzdFdpbm5lckFkZHJlc3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhtfcHJldm9pdXNfYmlkX2Ftb3VudF9yZWZ1bmQFFWdldExhc3RXaW5uZXJCaWRQcmljZQUDbmlsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQJAKQDAQUPY3VycmVudEJpZFByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAg5fd2lubmVyX29mX25mdAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD2N1cnJlbnRCaWRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgdfbmZ0X2lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCCl9uZnRfb3duZXIFCW5mdF9vd25lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAkApAMBBQ9jdXJyZW50QmlkUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgdfd2lubmVyCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50CQCkAwEJAGQCCQENcGFyc2VJbnRWYWx1ZQEFD2N1cnJlbnRCaWRDb3VudAABCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIHX25mdF9pZAkA2AQBBQdhc3NldElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIKX25mdF9vd25lcgUJbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIPX2JpZF9mb3JfbmZ0X2J5CQDYBAEFBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9iaWRfcHJpY2VfcGxhY2UFCWJpZF9wcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCJl9wcmV2aW91c19iaWRfYW1vdW50X3JlZnVuZF90b19hZGRyZXNzBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCG19wcmV2b2l1c19iaWRfYW1vdW50X3JlZnVuZAUVZ2V0TGFzdFdpbm5lckJpZFByaWNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRRnZXRMYXN0V2lubmVyQWRkcmVzcwkBDXBhcnNlSW50VmFsdWUBBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UFBHVuaXQFA25pbAFpAQ5hY2NlcHRCaWRPZmZlcgMJYXVjdGlvbklkBW5mdElkFGJpZF9hbW91bnRfZnJvbV91c2VyBAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQHYXNzZXRJZAkA2QQBBQVuZnRJZAQSZ2V0TmZ0V2lubmluZ1ByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkBBBnZXRBdWN0aW9uV2lubmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBBQZjYWxsZXIJAQ1wYXJzZUludFZhbHVlAQUSZ2V0TmZ0V2lubmluZ1ByaWNlBQR1bml0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRBnZXRBdWN0aW9uV2lubmVyAAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhVfYW1vdW50X3BhaWRfdG9fb3duZXIFEmdldE5mdFdpbm5pbmdQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9uZnRfdHJhbnNmZXJfdG8FEGdldEF1Y3Rpb25XaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAgtfbmZ0X3N0YXR1cwIIUkVXQVJERUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAhBfbmZ0X3RyYW5zZmVyX3RvBRBnZXRBdWN0aW9uV2lubmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAgtfbmZ0X3N0YXR1cwIIUkVXQVJERUQFA25pbAFpAQ1jYW5jZWxBdWN0aW9uAQlhdWN0aW9uSWQEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBA1hdWN0aW9uU3RhdHVzCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMEDWJpZGRpbmdXaW5uZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg5fd2lubmVyX29mX25mdAQIbmZ0T3duZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAgpfbmZ0X293bmVyBAVuZnRJZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCD19uZnRfb25fYXVjdGlvbgQMYmlkZGluZ1ByaWNlCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkAwkAAAIFDWJpZGRpbmdXaW5uZXICATAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIFBHR4SWQFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMCCENBTkNFTEVECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQhuZnRPd25lcgABCQDZBAEFBW5mdElkBQNuaWwJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghDQU5DRUxFRAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFDWJpZGRpbmdXaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCG19wcmV2b2l1c19iaWRfYW1vdW50X3JlZnVuZAUMYmlkZGluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAILX25mdF9zdGF0dXMCCENBTkNFTEVECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFDWJpZGRpbmdXaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhtfcHJldm9pdXNfYmlkX2Ftb3VudF9yZWZ1bmQFDGJpZGRpbmdQcmljZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUIbmZ0T3duZXIAAQkA2QQBBQVuZnRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUNYmlkZGluZ1dpbm5lcgkBDXBhcnNlSW50VmFsdWUBBQxiaWRkaW5nUHJpY2UFBHVuaXQFA25pbAFpAQt3aXRoZHJhd0JpZAEHYmlkVHhJZAQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAhiaWRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQdiaWRUeElkAgxfaGlnaGVzdF9iaWQECGFzQmlkZGVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFB2JpZFR4SWQCB193aW5uZXIECWJpZEZvck5GVAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQdiaWRUeElkAgdfbmZ0X2lkAwkBAiE9AgkA2AQBBQZjYWxsZXIFCGFzQmlkZGVyCQACAQIGTm8gYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHYmlkVHhJZAIIX25mdF9iaWQCCFdJVEhEUkFXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHYmlkVHhJZAIHX25mdF9pZAUJYmlkRm9yTkZUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHYmlkVHhJZAIcX2JpZGRpbmdfcHJpY2VfcmVmdW5kX2Ftb3VudAUIYmlkUHJpY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEFCGJpZFByaWNlBQR1bml0BQNuaWwBaQEHdGVzdEJpZAEEZGF0YQkAzAgCCQELU3RyaW5nRW50cnkCAjhFOGtrRkJZQ3k0NEpKYXE2cEFaNktpenN1UmVzaTVVS05oYkQxV05ad2hoWV9oaWdoZXN0X2JpZAIBMAUDbmlsAHva3W8=", "height": 2391264, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: HdkmyngesycDaLJw2uAZkdgF1MFAXHCjDEo7B938N63H Next: BZaLPBEPKS3bH7CUbYfFz15pNmLHgeK4Bcy26Nq4sArV Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
6-let b = "auction"
6+let b = "buy"
77
8-let c = "sell"
8+let c = "price"
99
10-let d = "trusted"
10+let d = "sell"
1111
12-let e = "price"
12+let e = 7
1313
14-func f (g,h) = ((g + a) + toBase58String(h))
14+let f = "bid"
1515
16+let g = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
1617
17-func i (h) = ((e + a) + toBase58String(h))
18+let h = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq'
1819
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)"))
20+func i (j) = {
21+ let k = assetInfo(j)
22+ if ($isInstanceOf(k, "Asset"))
13023 then {
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)
24+ let l = k
25+ if (if ((l.decimals == 0))
26+ then (l.quantity == 1)
18127 else false)
182- then (ae.reissuable == false)
28+ then (l.reissuable == false)
18329 else false
18430 }
18531 else false
18632 }
18733
18834
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))]
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))]
27241 }
27342
27443
27544
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))
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)))
28353 then throw("Token is not NFT")
284- else [StringEntry(((e + a) + toBase58String(value(aI.payments[0].assetId))), toString(P)), StringEntry(((toString(aI.caller) + a) + c), ((toBase58String(aT) + a) + toString(aU)))]
54+ else [StringEntry(((c + a) + toBase58String(value(m.payments[0].assetId))), z), StringEntry(((toString(m.caller) + a) + d), ((toBase58String(C) + a) + toString(D)))]
28555 }
28656
28757
28858
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"))
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"))
29666 then {
297- let aZ = F
298- aZ
67+ let I = k
68+ I
29969 }
300- else true
70+ else false
30171 }
302- let P = getStringValue(((((e + a) + aV) + "_") + aW))
303- let ba = valueOrErrorMessage(getStringValue((a + "Owner")), "No owner")
304- if ((aI.payments[0].assetId != unit))
72+ let z = getStringValue(((((c + a) + E) + "_") + F))
73+ if ((m.payments[0].assetId != unit))
30574 then throw("Pay in waves")
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"))]
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))]
30978 }
31079
31180
31281
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"))
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"))
32292 then {
323- let aZ = F
93+ let I = k
32494 true
32595 }
32696 else false
32797 }
328- if ((aI.payments[0].assetId == unit))
98+ if ((m.payments[0].assetId == unit))
32999 then throw("NFT not attached")
330- else if ((bc == true))
100+ else if ((Q == true))
331101 then throw("Already in auction list")
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")]
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")]
333105 }
334106
335107
336108
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))
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))
349121 then throw("Pay in waves")
350- else if ((bc != "OPEN"))
122+ else if ((Q != "OPEN"))
351123 then throw("Not open for auction")
352- else if ((parseIntValue(bh) >= bg))
124+ else if ((parseIntValue(U) >= T))
353125 then throw("Bid is less then starting/highest Bid")
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)]
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)]
357129 }
358130
359131
360132
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")]
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")]
369141 }
370142
371143
372144
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)]
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)]
385157 }
386158
387159
388160
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))
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))
396168 then throw("No bid")
397- else [StringEntry((bs + "_nft_id"), bv), StringEntry((bs + "_bidding_price_refund_amount"), bt), ScriptTransfer(aI.caller, parseIntValue(bt), unit)]
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)]
398170 }
399171
400172
401173
402-@Callable(aI)
403-func testBid (bw) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
174+@Callable(m)
175+func testBid (aj) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
404176
405177
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
6-let b = "auction"
6+let b = "buy"
77
8-let c = "sell"
8+let c = "price"
99
10-let d = "trusted"
10+let d = "sell"
1111
12-let e = "price"
12+let e = 7
1313
14-func f (g,h) = ((g + a) + toBase58String(h))
14+let f = "bid"
1515
16+let g = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
1617
17-func i (h) = ((e + a) + toBase58String(h))
18+let h = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq'
1819
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)"))
20+func i (j) = {
21+ let k = assetInfo(j)
22+ if ($isInstanceOf(k, "Asset"))
13023 then {
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)
24+ let l = k
25+ if (if ((l.decimals == 0))
26+ then (l.quantity == 1)
18127 else false)
182- then (ae.reissuable == false)
28+ then (l.reissuable == false)
18329 else false
18430 }
18531 else false
18632 }
18733
18834
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))]
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))]
27241 }
27342
27443
27544
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))
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)))
28353 then throw("Token is not NFT")
284- else [StringEntry(((e + a) + toBase58String(value(aI.payments[0].assetId))), toString(P)), StringEntry(((toString(aI.caller) + a) + c), ((toBase58String(aT) + a) + toString(aU)))]
54+ else [StringEntry(((c + a) + toBase58String(value(m.payments[0].assetId))), z), StringEntry(((toString(m.caller) + a) + d), ((toBase58String(C) + a) + toString(D)))]
28555 }
28656
28757
28858
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"))
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"))
29666 then {
297- let aZ = F
298- aZ
67+ let I = k
68+ I
29969 }
300- else true
70+ else false
30171 }
302- let P = getStringValue(((((e + a) + aV) + "_") + aW))
303- let ba = valueOrErrorMessage(getStringValue((a + "Owner")), "No owner")
304- if ((aI.payments[0].assetId != unit))
72+ let z = getStringValue(((((c + a) + E) + "_") + F))
73+ if ((m.payments[0].assetId != unit))
30574 then throw("Pay in waves")
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"))]
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))]
30978 }
31079
31180
31281
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"))
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"))
32292 then {
323- let aZ = F
93+ let I = k
32494 true
32595 }
32696 else false
32797 }
328- if ((aI.payments[0].assetId == unit))
98+ if ((m.payments[0].assetId == unit))
32999 then throw("NFT not attached")
330- else if ((bc == true))
100+ else if ((Q == true))
331101 then throw("Already in auction list")
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")]
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")]
333105 }
334106
335107
336108
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))
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))
349121 then throw("Pay in waves")
350- else if ((bc != "OPEN"))
122+ else if ((Q != "OPEN"))
351123 then throw("Not open for auction")
352- else if ((parseIntValue(bh) >= bg))
124+ else if ((parseIntValue(U) >= T))
353125 then throw("Bid is less then starting/highest Bid")
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)]
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)]
357129 }
358130
359131
360132
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")]
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")]
369141 }
370142
371143
372144
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)]
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)]
385157 }
386158
387159
388160
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))
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))
396168 then throw("No bid")
397- else [StringEntry((bs + "_nft_id"), bv), StringEntry((bs + "_bidding_price_refund_amount"), bt), ScriptTransfer(aI.caller, parseIntValue(bt), unit)]
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)]
398170 }
399171
400172
401173
402-@Callable(aI)
403-func testBid (bw) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
174+@Callable(m)
175+func testBid (aj) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
404176
405177

github/deemru/w8io/873ac7e 
132.24 ms