tx · HMQpDU3s2H6G1yAmSXZdwRF3y7tucwTBCA1anaV3BS85

3MrToFL7kWPJfYn65SYNzsiZk5NfukqpyGc:  -0.01400000 Waves

2023.01.25 19:39 [2420760] smart account 3MrToFL7kWPJfYn65SYNzsiZk5NfukqpyGc > SELF 0.00000000 Waves

{ "type": 13, "id": "HMQpDU3s2H6G1yAmSXZdwRF3y7tucwTBCA1anaV3BS85", "fee": 1400000, "feeAssetId": null, "timestamp": 1674664789885, "version": 2, "chainId": 84, "sender": "3MrToFL7kWPJfYn65SYNzsiZk5NfukqpyGc", "senderPublicKey": "2CRzFM7gSbmTxT2EbR4ApdH54Sg2o8vwYG3dHKbfbwFs", "proofs": [ "5AAm2XR2CEBgPCTEStvxr2WKVg6UV4ggQyQeVnJ2xXcDua6r2bLZm2pjiRdWav2xFd7wNPtE1aNYco1r44QxexqL" ], "script": "base64:BgJLCAISCwoJCAgICAgBCAgIEgMKAQgSBAoCCAgSAwoBCBIGCgQICAgBEgYKBAgICAgSBQoDCAgBEgMKAQgSAwoBCBIECgIICBIDCgEICwAJc2VwYXJhdG9yAgFfAARrQnV5AgNidXkABmtQcmljZQIFcHJpY2UABWtTZWxsAgRzZWxsABJtYXhBdWN0aW9uRHVyYXRpb24ABwAFQXNzZXQBIAppC8GrFmb6Ii6KSWrgcuSa5rQDtofKVsUwHV7nVeByAAV3YXZlcwEAAARrQmlkAgNiaWQADHN0YXR1c0Zvck5GVAkAlgoEAgRPUEVOAgZDTE9TRUQCCFJFV0FSREVEAghDQU5DRUxFRAALZEFwcEFkZHJlc3MBGgFUSrhPbN7C2pPt9I7pSjb41U9/ldVVW12gAQVpc05mdAEHYXNzZXRJZAQHJG1hdGNoMAkA7AcBBQdhc3NldElkAwkAAQIFByRtYXRjaDACBUFzc2V0BAV0b2tlbgUHJG1hdGNoMAMDCQAAAggFBXRva2VuCGRlY2ltYWxzAAAJAAACCAUFdG9rZW4IcXVhbnRpdHkAAQcJAAACCAUFdG9rZW4KcmVpc3N1YWJsZQcHBwsBaQEJY3JlYXRlTmZ0CQhuZnRfbmFtZQluZnRfb3duZXIPbmZ0X2RBcHBBZGRyZXNzCG5mdF90eXBlCG5mdF90YWdzEW5mdF9zZWxsaW5nX3ByaWNlD25mdF9kZXNjcmlwdGlvbgpuZnRfb25TZWxsCG5mdF9kYXRhBAhuZXdUb2tlbgkAwggFBQhuZnRfbmFtZQUPbmZ0X2Rlc2NyaXB0aW9uAAEAAAcEB2lzc3VlSWQJALgIAQUIbmV3VG9rZW4EBHR4SWQIBQFpDXRyYW5zYWN0aW9uSWQJAMwIAgUIbmV3VG9rZW4JAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyAAEFB2lzc3VlSWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgVPd25lcgkApQgBCAUBaQZjYWxsZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdHlwZQUIbmZ0X3R5cGUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAghuZnRfdGFncwUIbmZ0X3RhZ3MJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAg9uZnRfZEFwcEFkZHJlc3MFD25mdF9kQXBwQWRkcmVzcwkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAhFuZnRfc2VsbGluZ19wcmljZQURbmZ0X3NlbGxpbmdfcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJANgEAQUHaXNzdWVJZAUJc2VwYXJhdG9yAgpuZnRfb25TZWxsBQpuZnRfb25TZWxsCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFB2lzc3VlSWQFCXNlcGFyYXRvcgIIbmZ0X2RhdGEFCG5mdF9kYXRhCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQDYBAEFBHR4SWQFCXNlcGFyYXRvcgIJaXNzdWVfbmZ0CQDYBAEFB2lzc3VlSWQFA25pbAFpAQdzZWxsTkZUAQVwcmljZQQEdHhJZAgFAWkNdHJhbnNhY3Rpb25JZAQGc2VsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAskdDAxODc2MTk2MQkAlAoCCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQJAQV2YWx1ZQEICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50BAZ0b2tlbjAIBQskdDAxODc2MTk2MQJfMQQHYW1vdW50MAgFCyR0MDE4NzYxOTYxAl8yAwkBASEBCQEFaXNOZnQBBQZ0b2tlbjAJAAIBAhBUb2tlbiBpcyBub3QgTkZUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQZrUHJpY2UFCXNlcGFyYXRvcgkA2AQBCQEFdmFsdWUBCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBXByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQClCAEIBQFpBmNhbGxlcgUJc2VwYXJhdG9yBQVrU2VsbAkArAICCQCsAgIJANgEAQUGdG9rZW4wBQlzZXBhcmF0b3IJAKQDAQUHYW1vdW50MAUDbmlsAWkBBmJ1eU5GVAIFbmZ0SUQRY3VycmVudF9uZnRfb3duZXIEB2Fzc2V0SWQJANkEAQUFbmZ0SUQEBmFtb3VudAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEEGNoZWNrT3duZXJJc1NhbWUEByRtYXRjaDAJAJ0IAgUEdGhpcwkArAICCQCsAgICBG5mdF8FEWN1cnJlbnRfbmZ0X293bmVyAgZfb3duZXIDCQABAgUHJG1hdGNoMAIGU3RyaW5nBAFhBQckbWF0Y2gwBQFhBwQFcHJpY2UJARFAZXh0ck5hdGl2ZSgxMDU4KQEJAKwCAgkArAICCQCsAgIJAKwCAgUGa1ByaWNlBQlzZXBhcmF0b3IFBW5mdElEAgFfBRFjdXJyZW50X25mdF9vd25lcgMJAAACBRFjdXJyZW50X25mdF9vd25lcgkApQgBCAUBaQZjYWxsZXIJAAIBAiljdXJyZW50IE93bmVyIG9mIE5GVCBub3QgYWJsZSB0byBwdXJjaGFzZQMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBUFzc2V0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMIBQFpBmNhbGxlcgABBQdhc3NldElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBRFjdXJyZW50X25mdF9vd25lcgUGYW1vdW50BQVBc3NldAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUEa0J1eQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAKQDAQUGYW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgUDbmlsAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCAUBaQZjYWxsZXIAAQUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQURY3VycmVudF9uZnRfb3duZXIFBmFtb3VudAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkApQgBCAUBaQZjYWxsZXIFCXNlcGFyYXRvcgUEa0J1eQkArAICCQCsAgIFBW5mdElEBQlzZXBhcmF0b3IJAKQDAQUGYW1vdW50CQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICAgRuZnRfBRFjdXJyZW50X25mdF9vd25lcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUFbmZ0SUQFCXNlcGFyYXRvcgIGX293bmVyCQClCAEIBQFpBmNhbGxlcgUDbmlsBQNuaWwBaQEKY2FuY2VsU2VsbAEFbmZ0SWQEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQGc2VsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkBQVuZnRJZAILX25mdF9zdGF0dXMCCENBTkNFTEVECQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUGc2VsbGVyAAEJANkEAQUFbmZ0SWQFA25pbAFpAQphZGRBdWN0aW9uBAVzdGFydANlbmQKc3RhcnRQcmljZQhkdXJhdGlvbgQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAVuZnRJZAkBBXZhbHVlAQgJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBAVwcmljZQkBBXZhbHVlAQUKc3RhcnRQcmljZQQJZW5kSGVpZ2h0CQBkAggFCWxhc3RCbG9jawZoZWlnaHQFCGR1cmF0aW9uBAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMEEWNoZWNrTmZ0QXVjdGlvbmVkBAckbWF0Y2gwCQCdCAIFBHRoaXMJAKwCAgkArAICCQCsAgIJANgEAQUFbmZ0SWQFCXNlcGFyYXRvcgILbmZ0X3N0YXR1c18JANgEAQUGY2FsbGVyAwkAAQIFByRtYXRjaDACBlN0cmluZwQBYQUHJG1hdGNoMAYHAwkAAAIFEWNoZWNrTmZ0QXVjdGlvbmVkBgkAAgECF0FscmVhZHkgaW4gYXVjdGlvbiBsaXN0AwkAZgIFCGR1cmF0aW9uBRJtYXhBdWN0aW9uRHVyYXRpb24JAAIBCQCsAgICNkR1cmF0aW9uIGlzIHRvbyBsb25nLiBNdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byA3IAkApAMBBRJtYXhBdWN0aW9uRHVyYXRpb24DCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQR1bml0CQACAQIQTkZUIG5vdCBhdHRhY2hlZAMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBUFzc2V0CQACAQIQTkZUIG5vdCBhdHRhY2hlZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgUEdHhJZAIWbmZ0X3N0YXJ0X2F1Y3Rpb25fZGF0ZQkA2AQBBQZjYWxsZXIFBXN0YXJ0CQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkAhRuZnRfZW5kX2F1Y3Rpb25fZGF0ZQkA2AQBBQZjYWxsZXIFA2VuZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9uZnRfc3RhcnRfcHJpY2UFCnN0YXJ0UHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAgpfbmZ0X293bmVyCQClCAEIBQFpBmNhbGxlcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCD19uZnRfb25fYXVjdGlvbgkA2AQBBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCEF9wcmV2aW91c19iaWRkZXICBG5vbmUJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAgxfaGlnaGVzdF9iaWQCATAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAg5fd2lubmVyX29mX25mdAIBMAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCDV9iaWRkZXJfY291bnQCATAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAgtfbmZ0X3N0YXR1cwIET1BFTgUDbmlsAWkBCHBsYWNlQmlkBAlhdWN0aW9uSWQFbmZ0SWQJbmZ0X293bmVyCWJpZF9wcmljZQQEdHhJZAkA2AQBCAUBaQ10cmFuc2FjdGlvbklkBAZjYWxsZXIICAUBaQZjYWxsZXIFYnl0ZXMEB2Fzc2V0SWQJANkEAQUFbmZ0SWQED2N1cnJlbnRCaWRQcmljZQgJAJEDAggFAWkIcGF5bWVudHMAAAZhbW91bnQEFWdldExhc3RXaW5uZXJCaWRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAQYZ2V0UHJldmlvdXNCaWRkZXJBZGRyZXNzCQCdCAIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAhBfcHJldmlvdXNfYmlkZGVyBA9jdXJyZW50QmlkQ291bnQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg1fYmlkZGVyX2NvdW50BBRnZXRMYXN0V2lubmVyQWRkcmVzcwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0BBFjaGVja05mdEF1Y3Rpb25lZAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAwkBAiE9AgURY2hlY2tOZnRBdWN0aW9uZWQCBE9QRU4JAAIBAhROb3Qgb3BlbiBmb3IgYXVjdGlvbgMJAGcCCQENcGFyc2VJbnRWYWx1ZQEFFWdldExhc3RXaW5uZXJCaWRQcmljZQUPY3VycmVudEJpZFByaWNlCQACAQIlQmlkIGlzIGxlc3MgdGhlbiBzdGFydGluZy9oaWdoZXN0IEJpZAMJAAACBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UCATAJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAkApAMBBQ9jdXJyZW50QmlkUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgUJbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB193aW5uZXIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgdfbmZ0X2lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAg9fYmlkX2Zvcl9uZnRfYnkJANgEAQUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX2JpZF9wcmljZV9wbGFjZQUJYmlkX3ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFFGdldExhc3RXaW5uZXJBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIbX3ByZXZvaXVzX2JpZF9hbW91bnRfcmVmdW5kBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UFA25pbAMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBHVuaXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAkApAMBBQ9jdXJyZW50QmlkUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgUJbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB193aW5uZXIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgdfbmZ0X2lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAg9fYmlkX2Zvcl9uZnRfYnkJANgEAQUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX2JpZF9wcmljZV9wbGFjZQUJYmlkX3ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFFGdldExhc3RXaW5uZXJBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIbX3ByZXZvaXVzX2JpZF9hbW91bnRfcmVmdW5kBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFFGdldExhc3RXaW5uZXJBZGRyZXNzCQENcGFyc2VJbnRWYWx1ZQEFFWdldExhc3RXaW5uZXJCaWRQcmljZQUEdW5pdAUDbmlsAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFQXNzZXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAkApAMBBQ9jdXJyZW50QmlkUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDl93aW5uZXJfb2ZfbmZ0CQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCB19uZnRfaWQJANgEAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgUJbmZ0X293bmVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFBHR4SWQCAV8FCWF1Y3Rpb25JZAIMX2hpZ2hlc3RfYmlkCQCkAwEFD2N1cnJlbnRCaWRQcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCB193aW5uZXIJANgEAQgIBQFpBmNhbGxlcgVieXRlcwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQR0eElkAgFfBQlhdWN0aW9uSWQCDV9iaWRkZXJfY291bnQJAKQDAQkAZAIJAQ1wYXJzZUludFZhbHVlAQUPY3VycmVudEJpZENvdW50AAEJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgdfbmZ0X2lkCQDYBAEFB2Fzc2V0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUEdHhJZAIBXwUJYXVjdGlvbklkAgpfbmZ0X293bmVyBQluZnRfb3duZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAg9fYmlkX2Zvcl9uZnRfYnkJANgEAQUGY2FsbGVyCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX2JpZF9wcmljZV9wbGFjZQUJYmlkX3ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFFGdldExhc3RXaW5uZXJBZGRyZXNzCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIbX3ByZXZvaXVzX2JpZF9hbW91bnRfcmVmdW5kBRVnZXRMYXN0V2lubmVyQmlkUHJpY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFFGdldExhc3RXaW5uZXJBZGRyZXNzCQENcGFyc2VJbnRWYWx1ZQEFFWdldExhc3RXaW5uZXJCaWRQcmljZQUFQXNzZXQFA25pbAUDbmlsAWkBDmFjY2VwdEJpZE9mZmVyAwlhdWN0aW9uSWQFbmZ0SWQUYmlkX2Ftb3VudF9mcm9tX3VzZXIEBHR4SWQJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAdhc3NldElkCQDZBAEFBW5mdElkBBJnZXROZnRXaW5uaW5nUHJpY2UJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAgxfaGlnaGVzdF9iaWQEEGdldEF1Y3Rpb25XaW5uZXIJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg5fd2lubmVyX29mX25mdAMJAAACCAkAkQMCCAUBaQhwYXltZW50cwAAB2Fzc2V0SWQFBUFzc2V0CQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEFEmdldE5mdFdpbm5pbmdQcmljZQUFQXNzZXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFEGdldEF1Y3Rpb25XaW5uZXIAAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX25mdF90cmFuc2Zlcl90bwUQZ2V0QXVjdGlvbldpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIVX2Ftb3VudF9wYWlkX3RvX293bmVyBRJnZXROZnRXaW5uaW5nUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCEF9uZnRfdHJhbnNmZXJfdG8FEGdldEF1Y3Rpb25XaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAUDbmlsAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEFBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBBRJnZXROZnRXaW5uaW5nUHJpY2UFBHVuaXQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFEGdldEF1Y3Rpb25XaW5uZXIAAQUHYXNzZXRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCFV9hbW91bnRfcGFpZF90b19vd25lcgUSZ2V0TmZ0V2lubmluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAIQX25mdF90cmFuc2Zlcl90bwUQZ2V0QXVjdGlvbldpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIVX2Ftb3VudF9wYWlkX3RvX293bmVyBRJnZXROZnRXaW5uaW5nUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCEF9uZnRfdHJhbnNmZXJfdG8FEGdldEF1Y3Rpb25XaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghSRVdBUkRFRAUDbmlsBQNuaWwBaQENY2FuY2VsQXVjdGlvbgEJYXVjdGlvbklkBAR0eElkCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQNYXVjdGlvblN0YXR1cwkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzBA1iaWRkaW5nV2lubmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIOX3dpbm5lcl9vZl9uZnQECG5mdE93bmVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFCWF1Y3Rpb25JZAIKX25mdF9vd25lcgQFbmZ0SWQJARFAZXh0ck5hdGl2ZSgxMDUzKQIFBHRoaXMJAKwCAgUJYXVjdGlvbklkAg9fbmZ0X29uX2F1Y3Rpb24EDGJpZGRpbmdQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQlhdWN0aW9uSWQCDF9oaWdoZXN0X2JpZAMJAAACBQ1iaWRkaW5nV2lubmVyAgEwCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICBQR0eElkBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghDQU5DRUxFRAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUIbmZ0T3duZXIAAQkA2QQBBQVuZnRJZAUDbmlsAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAILX25mdF9zdGF0dXMCCENBTkNFTEVECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUJYXVjdGlvbklkAiZfcHJldmlvdXNfYmlkX2Ftb3VudF9yZWZ1bmRfdG9fYWRkcmVzcwUNYmlkZGluZ1dpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAIbX3ByZXZvaXVzX2JpZF9hbW91bnRfcmVmdW5kBQxiaWRkaW5nUHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAgtfbmZ0X3N0YXR1cwIIQ0FOQ0VMRUQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAiZfcHJldmlvdXNfYmlkX2Ftb3VudF9yZWZ1bmRfdG9fYWRkcmVzcwUNYmlkZGluZ1dpbm5lcgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBHR4SWQCG19wcmV2b2l1c19iaWRfYW1vdW50X3JlZnVuZAUMYmlkZGluZ1ByaWNlCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQhuZnRPd25lcgABCQDZBAEFBW5mdElkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQ1iaWRkaW5nV2lubmVyCQENcGFyc2VJbnRWYWx1ZQEFDGJpZGRpbmdQcmljZQUEdW5pdAUDbmlsAwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUFQXNzZXQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCC19uZnRfc3RhdHVzAghDQU5DRUxFRAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFCWF1Y3Rpb25JZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFDWJpZGRpbmdXaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQlhdWN0aW9uSWQCG19wcmV2b2l1c19iaWRfYW1vdW50X3JlZnVuZAUMYmlkZGluZ1ByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAILX25mdF9zdGF0dXMCCENBTkNFTEVECQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUEdHhJZAImX3ByZXZpb3VzX2JpZF9hbW91bnRfcmVmdW5kX3RvX2FkZHJlc3MFDWJpZGRpbmdXaW5uZXIJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQR0eElkAhtfcHJldm9pdXNfYmlkX2Ftb3VudF9yZWZ1bmQFDGJpZGRpbmdQcmljZQkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUIbmZ0T3duZXIAAQkA2QQBBQVuZnRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUNYmlkZGluZ1dpbm5lcgkBDXBhcnNlSW50VmFsdWUBBQxiaWRkaW5nUHJpY2UFBUFzc2V0BQNuaWwFA25pbAFpAQt3aXRoZHJhd0JpZAEHYmlkVHhJZAQGY2FsbGVyCAgFAWkGY2FsbGVyBWJ5dGVzBAhiaWRQcmljZQkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQdiaWRUeElkAgxfaGlnaGVzdF9iaWQECGFzQmlkZGVyCQERQGV4dHJOYXRpdmUoMTA1MykCBQR0aGlzCQCsAgIFB2JpZFR4SWQCB193aW5uZXIECWJpZEZvck5GVAkBEUBleHRyTmF0aXZlKDEwNTMpAgUEdGhpcwkArAICBQdiaWRUeElkAgdfbmZ0X2lkAwkBAiE9AgkA2AQBBQZjYWxsZXIFCGFzQmlkZGVyCQACAQIGTm8gYmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHYmlkVHhJZAIIX25mdF9iaWQCCFdJVEhEUkFXCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHYmlkVHhJZAIHX25mdF9pZAUJYmlkRm9yTkZUCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUHYmlkVHhJZAIcX2JpZGRpbmdfcHJpY2VfcmVmdW5kX2Ftb3VudAUIYmlkUHJpY2UJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwgFAWkGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEFCGJpZFByaWNlBQR1bml0BQNuaWwBaQESbWFudWFsRnVuZFRyYW5zZmVyAg1yZWNlcGllbnRBZGRyB21lc3NhZ2UEBmNhbGxlcggIBQFpBmNhbGxlcgVieXRlcwQHcmVjaXZlcgkA2QQBBQ1yZWNlcGllbnRBZGRyBAZhbW91bnQICQCRAwIIBQFpCHBheW1lbnRzAAAGYW1vdW50AwkAAAIICQCRAwIIBQFpCHBheW1lbnRzAAAHYXNzZXRJZAUEdW5pdAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIJX3RyYW5zZmVyBQZhbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIMX3RyYW5zZmVyX3RvBQ1yZWNlcGllbnRBZGRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUHcmVjaXZlcgUGYW1vdW50BQR1bml0BQNuaWwDCQAAAggJAJEDAggFAWkIcGF5bWVudHMAAAdhc3NldElkBQVBc3NldAkAzAgCCQEMSW50ZWdlckVudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIJX3RyYW5zZmVyBQZhbW91bnQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQDYBAEFBmNhbGxlcgIMX3RyYW5zZmVyX3RvBQ1yZWNlcGllbnRBZGRyCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQUHcmVjaXZlcgUGYW1vdW50BQVBc3NldAUDbmlsBQNuaWwBaQEHdGVzdEJpZAEEZGF0YQkAzAgCCQELU3RyaW5nRW50cnkCAjhFOGtrRkJZQ3k0NEpKYXE2cEFaNktpenN1UmVzaTVVS05oYkQxV05ad2hoWV9oaWdoZXN0X2JpZAIBMAUDbmlsAJzm4a4=", "height": 2420760, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 6V3LJHduu5JjwN12Fojscx6w61Dmj3yAhF1fdfHn24Fw Next: HRkjZwbdHkMB2yVzSY9hFrKQ2rWhrSE7BTv3cFBFFart Diff:
OldNewDifferences
99
1010 let d = "sell"
1111
12-let e = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'
12+let e = 7
1313
14-let f = base58''
14+let f = base58'hdyr9C9udjZEX3bZwcjC2YiuWrc8LU8jfru2z2st7KF'
1515
16-let g = 7
16+let g = base58''
1717
1818 let h = "bid"
1919
4747
4848
4949 @Callable(o)
50-func addAuction (B,C,D,E) = {
50+func sellNFT (B) = {
51+ let A = o.transactionId
52+ let C = o.caller.bytes
53+ let D = $Tuple2(value(o.payments[0].assetId), value(o.payments[0].amount))
54+ let E = D._1
55+ let F = D._2
56+ if (!(k(E)))
57+ then throw("Token is not NFT")
58+ else [StringEntry(((c + a) + toBase58String(value(o.payments[0].assetId))), B), StringEntry(((toString(o.caller) + a) + d), ((toBase58String(E) + a) + toString(F)))]
59+ }
60+
61+
62+
63+@Callable(o)
64+func buyNFT (G,H) = {
65+ let l = fromBase58String(G)
66+ let I = value(o.payments[0].amount)
67+ let J = {
68+ let m = getString(this, (("nft_" + H) + "_owner"))
69+ if ($isInstanceOf(m, "String"))
70+ then {
71+ let K = m
72+ K
73+ }
74+ else false
75+ }
76+ let B = getStringValue(((((c + a) + G) + "_") + H))
77+ if ((H == toString(o.caller)))
78+ then throw("current Owner of NFT not able to purchase")
79+ else if ((o.payments[0].assetId == f))
80+ then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, f), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))]
81+ else if ((o.payments[0].assetId == unit))
82+ then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, unit), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))]
83+ else nil
84+ }
85+
86+
87+
88+@Callable(o)
89+func cancelSell (L) = {
5190 let A = toBase58String(o.transactionId)
52- let F = value(o.payments[0].assetId)
53- let G = value(D)
54- let H = (lastBlock.height + E)
55- let I = o.caller.bytes
56- let J = {
57- let m = getString(this, (((toBase58String(F) + a) + "nft_status_") + toBase58String(I)))
91+ let C = o.caller.bytes
92+[StringEntry(((A + L) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(C), 1, fromBase58String(L))]
93+ }
94+
95+
96+
97+@Callable(o)
98+func addAuction (M,N,O,P) = {
99+ let A = toBase58String(o.transactionId)
100+ let L = value(o.payments[0].assetId)
101+ let B = value(O)
102+ let Q = (lastBlock.height + P)
103+ let R = o.caller.bytes
104+ let S = {
105+ let m = getString(this, (((toBase58String(L) + a) + "nft_status_") + toBase58String(R)))
58106 if ($isInstanceOf(m, "String"))
59107 then {
60108 let K = m
62110 }
63111 else false
64112 }
65- if ((J == true))
113+ if ((S == true))
66114 then throw("Already in auction list")
67- else if ((E > g))
68- then throw(("Duration is too long. Must be less than or equal to 7 " + toString(g)))
115+ else if ((P > e))
116+ then throw(("Duration is too long. Must be less than or equal to 7 " + toString(e)))
69117 else if ((o.payments[0].assetId == unit))
70118 then throw("NFT not attached")
71- else if ((o.payments[0].assetId == e))
119+ else if ((o.payments[0].assetId == f))
72120 then throw("NFT not attached")
73- else [StringEntry(((A + "nft_start_auction_date") + toBase58String(I)), B), StringEntry(((A + "nft_end_auction_date") + toBase58String(I)), C), StringEntry((A + "_nft_start_price"), D), StringEntry((A + "_nft_owner"), toString(o.caller)), StringEntry((A + "_nft_on_auction"), toBase58String(F)), StringEntry((A + "_previous_bidder"), "none"), StringEntry((A + "_highest_bid"), "0"), StringEntry((A + "_winner_of_nft"), "0"), StringEntry((A + "_bidder_count"), "0"), StringEntry((A + "_nft_status"), "OPEN")]
121+ else [StringEntry(((A + "nft_start_auction_date") + toBase58String(R)), M), StringEntry(((A + "nft_end_auction_date") + toBase58String(R)), N), StringEntry((A + "_nft_start_price"), O), StringEntry((A + "_nft_owner"), toString(o.caller)), StringEntry((A + "_nft_on_auction"), toBase58String(L)), StringEntry((A + "_previous_bidder"), "none"), StringEntry((A + "_highest_bid"), "0"), StringEntry((A + "_winner_of_nft"), "0"), StringEntry((A + "_bidder_count"), "0"), StringEntry((A + "_nft_status"), "OPEN")]
74122 }
75123
76124
77125
78126 @Callable(o)
79-func placeBid (L,F,q,M) = {
127+func placeBid (T,L,q,U) = {
80128 let A = toBase58String(o.transactionId)
81- let I = o.caller.bytes
82- let l = fromBase58String(F)
83- let N = o.payments[0].amount
84- let O = getStringValue(this, (L + "_highest_bid"))
85- let P = getString(this, (L + "_previous_bidder"))
86- let Q = getStringValue(this, (L + "_bidder_count"))
87- let R = getStringValue(this, (L + "_winner_of_nft"))
88- let J = getStringValue(this, (L + "_nft_status"))
89- if ((J != "OPEN"))
129+ let R = o.caller.bytes
130+ let l = fromBase58String(L)
131+ let V = o.payments[0].amount
132+ let W = getStringValue(this, (T + "_highest_bid"))
133+ let X = getString(this, (T + "_previous_bidder"))
134+ let Y = getStringValue(this, (T + "_bidder_count"))
135+ let Z = getStringValue(this, (T + "_winner_of_nft"))
136+ let S = getStringValue(this, (T + "_nft_status"))
137+ if ((S != "OPEN"))
90138 then throw("Not open for auction")
91- else if ((parseIntValue(O) >= N))
139+ else if ((parseIntValue(W) >= V))
92140 then throw("Bid is less then starting/highest Bid")
93- else if ((O == "0"))
94- then [StringEntry((L + "_highest_bid"), toString(N)), StringEntry((L + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((L + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((L + "_nft_id"), toBase58String(l)), StringEntry((L + "_nft_owner"), q), StringEntry((((A + "_") + L) + "_highest_bid"), toString(N)), StringEntry((((A + "_") + L) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + L) + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((((A + "_") + L) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + L) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(I)), StringEntry((A + "_bid_price_place"), M), StringEntry((A + "_previous_bid_amount_refund_to_address"), R), StringEntry((A + "_prevoius_bid_amount_refund"), O)]
141+ else if ((W == "0"))
142+ then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W)]
95143 else if ((o.payments[0].assetId == unit))
96- then [StringEntry((L + "_highest_bid"), toString(N)), StringEntry((L + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((L + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((L + "_nft_id"), toBase58String(l)), StringEntry((L + "_nft_owner"), q), StringEntry((((A + "_") + L) + "_highest_bid"), toString(N)), StringEntry((((A + "_") + L) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + L) + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((((A + "_") + L) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + L) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(I)), StringEntry((A + "_bid_price_place"), M), StringEntry((A + "_previous_bid_amount_refund_to_address"), R), StringEntry((A + "_prevoius_bid_amount_refund"), O), ScriptTransfer(Address(fromBase58String(R)), parseIntValue(O), unit)]
97- else if ((o.payments[0].assetId == e))
98- then [StringEntry((L + "_highest_bid"), toString(N)), StringEntry((L + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((L + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((L + "_nft_id"), toBase58String(l)), StringEntry((L + "_nft_owner"), q), StringEntry((((A + "_") + L) + "_highest_bid"), toString(N)), StringEntry((((A + "_") + L) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + L) + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((((A + "_") + L) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + L) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(I)), StringEntry((A + "_bid_price_place"), M), StringEntry((A + "_previous_bid_amount_refund_to_address"), R), StringEntry((A + "_prevoius_bid_amount_refund"), O), ScriptTransfer(Address(fromBase58String(R)), parseIntValue(O), e)]
144+ then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W), ScriptTransfer(Address(fromBase58String(Z)), parseIntValue(W), unit)]
145+ else if ((o.payments[0].assetId == f))
146+ then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W), ScriptTransfer(Address(fromBase58String(Z)), parseIntValue(W), f)]
99147 else nil
100148 }
101149
102150
103151
104152 @Callable(o)
105-func acceptBidOffer (L,F,S) = {
153+func acceptBidOffer (T,L,aa) = {
106154 let A = toBase58String(o.transactionId)
107- let I = o.caller.bytes
108- let l = fromBase58String(F)
109- let T = getStringValue(this, (L + "_highest_bid"))
110- let U = getStringValue(this, (L + "_winner_of_nft"))
111- if ((o.payments[0].assetId == e))
112- then [ScriptTransfer(Address(I), parseIntValue(T), e), ScriptTransfer(Address(fromBase58String(U)), 1, l), StringEntry((A + "_amount_paid_to_owner"), T), StringEntry((A + "_nft_transfer_to"), U), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((L + "_amount_paid_to_owner"), T), StringEntry((L + "_nft_transfer_to"), U), StringEntry((L + "_nft_status"), "REWARDED")]
155+ let R = o.caller.bytes
156+ let l = fromBase58String(L)
157+ let ab = getStringValue(this, (T + "_highest_bid"))
158+ let ac = getStringValue(this, (T + "_winner_of_nft"))
159+ if ((o.payments[0].assetId == f))
160+ then [ScriptTransfer(Address(R), parseIntValue(ab), f), ScriptTransfer(Address(fromBase58String(ac)), 1, l), StringEntry((A + "_amount_paid_to_owner"), ab), StringEntry((A + "_nft_transfer_to"), ac), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((T + "_amount_paid_to_owner"), ab), StringEntry((T + "_nft_transfer_to"), ac), StringEntry((T + "_nft_status"), "REWARDED")]
113161 else if ((o.payments[0].assetId == unit))
114- then [ScriptTransfer(Address(I), parseIntValue(T), unit), ScriptTransfer(Address(fromBase58String(U)), 1, l), StringEntry((A + "_amount_paid_to_owner"), T), StringEntry((A + "_nft_transfer_to"), U), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((L + "_amount_paid_to_owner"), T), StringEntry((L + "_nft_transfer_to"), U), StringEntry((L + "_nft_status"), "REWARDED")]
162+ then [ScriptTransfer(Address(R), parseIntValue(ab), unit), ScriptTransfer(Address(fromBase58String(ac)), 1, l), StringEntry((A + "_amount_paid_to_owner"), ab), StringEntry((A + "_nft_transfer_to"), ac), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((T + "_amount_paid_to_owner"), ab), StringEntry((T + "_nft_transfer_to"), ac), StringEntry((T + "_nft_status"), "REWARDED")]
115163 else nil
116164 }
117165
118166
119167
120168 @Callable(o)
121-func cancelAuction (L) = {
169+func cancelAuction (T) = {
122170 let A = toBase58String(o.transactionId)
123- let I = o.caller.bytes
124- let V = getStringValue(this, (L + "_nft_status"))
125- let W = getStringValue(this, (L + "_winner_of_nft"))
126- let X = getStringValue(this, (L + "_nft_owner"))
127- let F = getStringValue(this, (L + "_nft_on_auction"))
128- let Y = getStringValue(this, (L + "_highest_bid"))
129- if ((W == "0"))
130- then [StringEntry(((A + L) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(X)), 1, fromBase58String(F))]
171+ let R = o.caller.bytes
172+ let ad = getStringValue(this, (T + "_nft_status"))
173+ let ae = getStringValue(this, (T + "_winner_of_nft"))
174+ let af = getStringValue(this, (T + "_nft_owner"))
175+ let L = getStringValue(this, (T + "_nft_on_auction"))
176+ let ag = getStringValue(this, (T + "_highest_bid"))
177+ if ((ae == "0"))
178+ then [StringEntry(((A + T) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L))]
131179 else if ((o.payments[0].assetId == unit))
132- then [StringEntry((L + "_nft_status"), "CANCELED"), StringEntry((L + "_previous_bid_amount_refund_to_address"), W), StringEntry((L + "_prevoius_bid_amount_refund"), Y), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), W), StringEntry((A + "_prevoius_bid_amount_refund"), Y), ScriptTransfer(Address(fromBase58String(X)), 1, fromBase58String(F)), ScriptTransfer(Address(fromBase58String(W)), parseIntValue(Y), unit)]
133- else if ((o.payments[0].assetId == e))
134- then [StringEntry((L + "_nft_status"), "CANCELED"), StringEntry((L + "_previous_bid_amount_refund_to_address"), W), StringEntry((L + "_prevoius_bid_amount_refund"), Y), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), W), StringEntry((A + "_prevoius_bid_amount_refund"), Y), ScriptTransfer(Address(fromBase58String(X)), 1, fromBase58String(F)), ScriptTransfer(Address(fromBase58String(W)), parseIntValue(Y), e)]
180+ then [StringEntry((T + "_nft_status"), "CANCELED"), StringEntry((T + "_previous_bid_amount_refund_to_address"), ae), StringEntry((T + "_prevoius_bid_amount_refund"), ag), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), ae), StringEntry((A + "_prevoius_bid_amount_refund"), ag), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L)), ScriptTransfer(Address(fromBase58String(ae)), parseIntValue(ag), unit)]
181+ else if ((o.payments[0].assetId == f))
182+ then [StringEntry((T + "_nft_status"), "CANCELED"), StringEntry((T + "_previous_bid_amount_refund_to_address"), ae), StringEntry((T + "_prevoius_bid_amount_refund"), ag), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), ae), StringEntry((A + "_prevoius_bid_amount_refund"), ag), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L)), ScriptTransfer(Address(fromBase58String(ae)), parseIntValue(ag), f)]
135183 else nil
136184 }
185+
186+
187+
188+@Callable(o)
189+func withdrawBid (ah) = {
190+ let R = o.caller.bytes
191+ let ai = getStringValue(this, (ah + "_highest_bid"))
192+ let aj = getStringValue(this, (ah + "_winner"))
193+ let ak = getStringValue(this, (ah + "_nft_id"))
194+ if ((toBase58String(R) != aj))
195+ then throw("No bid")
196+ else [StringEntry((ah + "_nft_bid"), "WITHDRAW"), StringEntry((ah + "_nft_id"), ak), StringEntry((ah + "_bidding_price_refund_amount"), ai), ScriptTransfer(o.caller, parseIntValue(ai), unit)]
197+ }
198+
199+
200+
201+@Callable(o)
202+func manualFundTransfer (al,am) = {
203+ let R = o.caller.bytes
204+ let an = fromBase58String(al)
205+ let I = o.payments[0].amount
206+ if ((o.payments[0].assetId == unit))
207+ then [IntegerEntry((toBase58String(R) + "_transfer"), I), StringEntry((toBase58String(R) + "_transfer_to"), al), ScriptTransfer(Address(an), I, unit)]
208+ else if ((o.payments[0].assetId == f))
209+ then [IntegerEntry((toBase58String(R) + "_transfer"), I), StringEntry((toBase58String(R) + "_transfer_to"), al), ScriptTransfer(Address(an), I, f)]
210+ else nil
211+ }
212+
213+
214+
215+@Callable(o)
216+func testBid (ao) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
137217
138218
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "_"
55
66 let b = "buy"
77
88 let c = "price"
99
1010 let d = "sell"
1111
12-let e = base58'9yhJDfWjPpv6tFjWRD1AJyBQwausJf2ZdxzLn86Uknnq'
12+let e = 7
1313
14-let f = base58''
14+let f = base58'hdyr9C9udjZEX3bZwcjC2YiuWrc8LU8jfru2z2st7KF'
1515
16-let g = 7
16+let g = base58''
1717
1818 let h = "bid"
1919
2020 let i = $Tuple4("OPEN", "CLOSED", "REWARDED", "CANCELED")
2121
2222 let j = base58'3MvjAaDYHpS4A5K4CV3kZMMEH9m9JdBSvbq'
2323
2424 func k (l) = {
2525 let m = assetInfo(l)
2626 if ($isInstanceOf(m, "Asset"))
2727 then {
2828 let n = m
2929 if (if ((n.decimals == 0))
3030 then (n.quantity == 1)
3131 else false)
3232 then (n.reissuable == false)
3333 else false
3434 }
3535 else false
3636 }
3737
3838
3939 @Callable(o)
4040 func createNft (p,q,r,s,t,u,v,w,x) = {
4141 let y = Issue(p, v, 1, 0, false)
4242 let z = calculateAssetId(y)
4343 let A = o.transactionId
4444 [y, ScriptTransfer(o.caller, 1, z), StringEntry(((toBase58String(z) + a) + "Owner"), toString(o.caller)), StringEntry(((toBase58String(z) + a) + "nft_type"), s), StringEntry(((toBase58String(z) + a) + "nft_tags"), t), StringEntry(((toBase58String(z) + a) + "nft_dAppAddress"), r), IntegerEntry(((toBase58String(z) + a) + "nft_selling_price"), u), StringEntry(((toBase58String(z) + a) + "nft_onSell"), w), StringEntry(((toBase58String(z) + a) + "nft_data"), x), StringEntry(((toBase58String(A) + a) + "issue_nft"), toBase58String(z))]
4545 }
4646
4747
4848
4949 @Callable(o)
50-func addAuction (B,C,D,E) = {
50+func sellNFT (B) = {
51+ let A = o.transactionId
52+ let C = o.caller.bytes
53+ let D = $Tuple2(value(o.payments[0].assetId), value(o.payments[0].amount))
54+ let E = D._1
55+ let F = D._2
56+ if (!(k(E)))
57+ then throw("Token is not NFT")
58+ else [StringEntry(((c + a) + toBase58String(value(o.payments[0].assetId))), B), StringEntry(((toString(o.caller) + a) + d), ((toBase58String(E) + a) + toString(F)))]
59+ }
60+
61+
62+
63+@Callable(o)
64+func buyNFT (G,H) = {
65+ let l = fromBase58String(G)
66+ let I = value(o.payments[0].amount)
67+ let J = {
68+ let m = getString(this, (("nft_" + H) + "_owner"))
69+ if ($isInstanceOf(m, "String"))
70+ then {
71+ let K = m
72+ K
73+ }
74+ else false
75+ }
76+ let B = getStringValue(((((c + a) + G) + "_") + H))
77+ if ((H == toString(o.caller)))
78+ then throw("current Owner of NFT not able to purchase")
79+ else if ((o.payments[0].assetId == f))
80+ then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, f), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))]
81+ else if ((o.payments[0].assetId == unit))
82+ then [ScriptTransfer(o.caller, 1, l), ScriptTransfer(Address(fromBase58String(H)), I, unit), StringEntry(((toString(o.caller) + a) + b), ((G + a) + toString(I))), DeleteEntry((("nft_" + H) + "_owner")), StringEntry((("nft_" + H) + "_owner"), toString(o.caller)), StringEntry(((G + a) + "_owner"), toString(o.caller))]
83+ else nil
84+ }
85+
86+
87+
88+@Callable(o)
89+func cancelSell (L) = {
5190 let A = toBase58String(o.transactionId)
52- let F = value(o.payments[0].assetId)
53- let G = value(D)
54- let H = (lastBlock.height + E)
55- let I = o.caller.bytes
56- let J = {
57- let m = getString(this, (((toBase58String(F) + a) + "nft_status_") + toBase58String(I)))
91+ let C = o.caller.bytes
92+[StringEntry(((A + L) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(C), 1, fromBase58String(L))]
93+ }
94+
95+
96+
97+@Callable(o)
98+func addAuction (M,N,O,P) = {
99+ let A = toBase58String(o.transactionId)
100+ let L = value(o.payments[0].assetId)
101+ let B = value(O)
102+ let Q = (lastBlock.height + P)
103+ let R = o.caller.bytes
104+ let S = {
105+ let m = getString(this, (((toBase58String(L) + a) + "nft_status_") + toBase58String(R)))
58106 if ($isInstanceOf(m, "String"))
59107 then {
60108 let K = m
61109 true
62110 }
63111 else false
64112 }
65- if ((J == true))
113+ if ((S == true))
66114 then throw("Already in auction list")
67- else if ((E > g))
68- then throw(("Duration is too long. Must be less than or equal to 7 " + toString(g)))
115+ else if ((P > e))
116+ then throw(("Duration is too long. Must be less than or equal to 7 " + toString(e)))
69117 else if ((o.payments[0].assetId == unit))
70118 then throw("NFT not attached")
71- else if ((o.payments[0].assetId == e))
119+ else if ((o.payments[0].assetId == f))
72120 then throw("NFT not attached")
73- else [StringEntry(((A + "nft_start_auction_date") + toBase58String(I)), B), StringEntry(((A + "nft_end_auction_date") + toBase58String(I)), C), StringEntry((A + "_nft_start_price"), D), StringEntry((A + "_nft_owner"), toString(o.caller)), StringEntry((A + "_nft_on_auction"), toBase58String(F)), StringEntry((A + "_previous_bidder"), "none"), StringEntry((A + "_highest_bid"), "0"), StringEntry((A + "_winner_of_nft"), "0"), StringEntry((A + "_bidder_count"), "0"), StringEntry((A + "_nft_status"), "OPEN")]
121+ else [StringEntry(((A + "nft_start_auction_date") + toBase58String(R)), M), StringEntry(((A + "nft_end_auction_date") + toBase58String(R)), N), StringEntry((A + "_nft_start_price"), O), StringEntry((A + "_nft_owner"), toString(o.caller)), StringEntry((A + "_nft_on_auction"), toBase58String(L)), StringEntry((A + "_previous_bidder"), "none"), StringEntry((A + "_highest_bid"), "0"), StringEntry((A + "_winner_of_nft"), "0"), StringEntry((A + "_bidder_count"), "0"), StringEntry((A + "_nft_status"), "OPEN")]
74122 }
75123
76124
77125
78126 @Callable(o)
79-func placeBid (L,F,q,M) = {
127+func placeBid (T,L,q,U) = {
80128 let A = toBase58String(o.transactionId)
81- let I = o.caller.bytes
82- let l = fromBase58String(F)
83- let N = o.payments[0].amount
84- let O = getStringValue(this, (L + "_highest_bid"))
85- let P = getString(this, (L + "_previous_bidder"))
86- let Q = getStringValue(this, (L + "_bidder_count"))
87- let R = getStringValue(this, (L + "_winner_of_nft"))
88- let J = getStringValue(this, (L + "_nft_status"))
89- if ((J != "OPEN"))
129+ let R = o.caller.bytes
130+ let l = fromBase58String(L)
131+ let V = o.payments[0].amount
132+ let W = getStringValue(this, (T + "_highest_bid"))
133+ let X = getString(this, (T + "_previous_bidder"))
134+ let Y = getStringValue(this, (T + "_bidder_count"))
135+ let Z = getStringValue(this, (T + "_winner_of_nft"))
136+ let S = getStringValue(this, (T + "_nft_status"))
137+ if ((S != "OPEN"))
90138 then throw("Not open for auction")
91- else if ((parseIntValue(O) >= N))
139+ else if ((parseIntValue(W) >= V))
92140 then throw("Bid is less then starting/highest Bid")
93- else if ((O == "0"))
94- then [StringEntry((L + "_highest_bid"), toString(N)), StringEntry((L + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((L + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((L + "_nft_id"), toBase58String(l)), StringEntry((L + "_nft_owner"), q), StringEntry((((A + "_") + L) + "_highest_bid"), toString(N)), StringEntry((((A + "_") + L) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + L) + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((((A + "_") + L) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + L) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(I)), StringEntry((A + "_bid_price_place"), M), StringEntry((A + "_previous_bid_amount_refund_to_address"), R), StringEntry((A + "_prevoius_bid_amount_refund"), O)]
141+ else if ((W == "0"))
142+ then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W)]
95143 else if ((o.payments[0].assetId == unit))
96- then [StringEntry((L + "_highest_bid"), toString(N)), StringEntry((L + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((L + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((L + "_nft_id"), toBase58String(l)), StringEntry((L + "_nft_owner"), q), StringEntry((((A + "_") + L) + "_highest_bid"), toString(N)), StringEntry((((A + "_") + L) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + L) + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((((A + "_") + L) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + L) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(I)), StringEntry((A + "_bid_price_place"), M), StringEntry((A + "_previous_bid_amount_refund_to_address"), R), StringEntry((A + "_prevoius_bid_amount_refund"), O), ScriptTransfer(Address(fromBase58String(R)), parseIntValue(O), unit)]
97- else if ((o.payments[0].assetId == e))
98- then [StringEntry((L + "_highest_bid"), toString(N)), StringEntry((L + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((L + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((L + "_nft_id"), toBase58String(l)), StringEntry((L + "_nft_owner"), q), StringEntry((((A + "_") + L) + "_highest_bid"), toString(N)), StringEntry((((A + "_") + L) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + L) + "_bidder_count"), toString((parseIntValue(Q) + 1))), StringEntry((((A + "_") + L) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + L) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(I)), StringEntry((A + "_bid_price_place"), M), StringEntry((A + "_previous_bid_amount_refund_to_address"), R), StringEntry((A + "_prevoius_bid_amount_refund"), O), ScriptTransfer(Address(fromBase58String(R)), parseIntValue(O), e)]
144+ then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W), ScriptTransfer(Address(fromBase58String(Z)), parseIntValue(W), unit)]
145+ else if ((o.payments[0].assetId == f))
146+ then [StringEntry((T + "_highest_bid"), toString(V)), StringEntry((T + "_winner_of_nft"), toBase58String(o.caller.bytes)), StringEntry((T + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((T + "_nft_id"), toBase58String(l)), StringEntry((T + "_nft_owner"), q), StringEntry((((A + "_") + T) + "_highest_bid"), toString(V)), StringEntry((((A + "_") + T) + "_winner"), toBase58String(o.caller.bytes)), StringEntry((((A + "_") + T) + "_bidder_count"), toString((parseIntValue(Y) + 1))), StringEntry((((A + "_") + T) + "_nft_id"), toBase58String(l)), StringEntry((((A + "_") + T) + "_nft_owner"), q), StringEntry((A + "_bid_for_nft_by"), toBase58String(R)), StringEntry((A + "_bid_price_place"), U), StringEntry((A + "_previous_bid_amount_refund_to_address"), Z), StringEntry((A + "_prevoius_bid_amount_refund"), W), ScriptTransfer(Address(fromBase58String(Z)), parseIntValue(W), f)]
99147 else nil
100148 }
101149
102150
103151
104152 @Callable(o)
105-func acceptBidOffer (L,F,S) = {
153+func acceptBidOffer (T,L,aa) = {
106154 let A = toBase58String(o.transactionId)
107- let I = o.caller.bytes
108- let l = fromBase58String(F)
109- let T = getStringValue(this, (L + "_highest_bid"))
110- let U = getStringValue(this, (L + "_winner_of_nft"))
111- if ((o.payments[0].assetId == e))
112- then [ScriptTransfer(Address(I), parseIntValue(T), e), ScriptTransfer(Address(fromBase58String(U)), 1, l), StringEntry((A + "_amount_paid_to_owner"), T), StringEntry((A + "_nft_transfer_to"), U), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((L + "_amount_paid_to_owner"), T), StringEntry((L + "_nft_transfer_to"), U), StringEntry((L + "_nft_status"), "REWARDED")]
155+ let R = o.caller.bytes
156+ let l = fromBase58String(L)
157+ let ab = getStringValue(this, (T + "_highest_bid"))
158+ let ac = getStringValue(this, (T + "_winner_of_nft"))
159+ if ((o.payments[0].assetId == f))
160+ then [ScriptTransfer(Address(R), parseIntValue(ab), f), ScriptTransfer(Address(fromBase58String(ac)), 1, l), StringEntry((A + "_amount_paid_to_owner"), ab), StringEntry((A + "_nft_transfer_to"), ac), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((T + "_amount_paid_to_owner"), ab), StringEntry((T + "_nft_transfer_to"), ac), StringEntry((T + "_nft_status"), "REWARDED")]
113161 else if ((o.payments[0].assetId == unit))
114- then [ScriptTransfer(Address(I), parseIntValue(T), unit), ScriptTransfer(Address(fromBase58String(U)), 1, l), StringEntry((A + "_amount_paid_to_owner"), T), StringEntry((A + "_nft_transfer_to"), U), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((L + "_amount_paid_to_owner"), T), StringEntry((L + "_nft_transfer_to"), U), StringEntry((L + "_nft_status"), "REWARDED")]
162+ then [ScriptTransfer(Address(R), parseIntValue(ab), unit), ScriptTransfer(Address(fromBase58String(ac)), 1, l), StringEntry((A + "_amount_paid_to_owner"), ab), StringEntry((A + "_nft_transfer_to"), ac), StringEntry((A + "_nft_status"), "REWARDED"), StringEntry((T + "_amount_paid_to_owner"), ab), StringEntry((T + "_nft_transfer_to"), ac), StringEntry((T + "_nft_status"), "REWARDED")]
115163 else nil
116164 }
117165
118166
119167
120168 @Callable(o)
121-func cancelAuction (L) = {
169+func cancelAuction (T) = {
122170 let A = toBase58String(o.transactionId)
123- let I = o.caller.bytes
124- let V = getStringValue(this, (L + "_nft_status"))
125- let W = getStringValue(this, (L + "_winner_of_nft"))
126- let X = getStringValue(this, (L + "_nft_owner"))
127- let F = getStringValue(this, (L + "_nft_on_auction"))
128- let Y = getStringValue(this, (L + "_highest_bid"))
129- if ((W == "0"))
130- then [StringEntry(((A + L) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(X)), 1, fromBase58String(F))]
171+ let R = o.caller.bytes
172+ let ad = getStringValue(this, (T + "_nft_status"))
173+ let ae = getStringValue(this, (T + "_winner_of_nft"))
174+ let af = getStringValue(this, (T + "_nft_owner"))
175+ let L = getStringValue(this, (T + "_nft_on_auction"))
176+ let ag = getStringValue(this, (T + "_highest_bid"))
177+ if ((ae == "0"))
178+ then [StringEntry(((A + T) + "_nft_status"), "CANCELED"), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L))]
131179 else if ((o.payments[0].assetId == unit))
132- then [StringEntry((L + "_nft_status"), "CANCELED"), StringEntry((L + "_previous_bid_amount_refund_to_address"), W), StringEntry((L + "_prevoius_bid_amount_refund"), Y), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), W), StringEntry((A + "_prevoius_bid_amount_refund"), Y), ScriptTransfer(Address(fromBase58String(X)), 1, fromBase58String(F)), ScriptTransfer(Address(fromBase58String(W)), parseIntValue(Y), unit)]
133- else if ((o.payments[0].assetId == e))
134- then [StringEntry((L + "_nft_status"), "CANCELED"), StringEntry((L + "_previous_bid_amount_refund_to_address"), W), StringEntry((L + "_prevoius_bid_amount_refund"), Y), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), W), StringEntry((A + "_prevoius_bid_amount_refund"), Y), ScriptTransfer(Address(fromBase58String(X)), 1, fromBase58String(F)), ScriptTransfer(Address(fromBase58String(W)), parseIntValue(Y), e)]
180+ then [StringEntry((T + "_nft_status"), "CANCELED"), StringEntry((T + "_previous_bid_amount_refund_to_address"), ae), StringEntry((T + "_prevoius_bid_amount_refund"), ag), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), ae), StringEntry((A + "_prevoius_bid_amount_refund"), ag), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L)), ScriptTransfer(Address(fromBase58String(ae)), parseIntValue(ag), unit)]
181+ else if ((o.payments[0].assetId == f))
182+ then [StringEntry((T + "_nft_status"), "CANCELED"), StringEntry((T + "_previous_bid_amount_refund_to_address"), ae), StringEntry((T + "_prevoius_bid_amount_refund"), ag), StringEntry((A + "_nft_status"), "CANCELED"), StringEntry((A + "_previous_bid_amount_refund_to_address"), ae), StringEntry((A + "_prevoius_bid_amount_refund"), ag), ScriptTransfer(Address(fromBase58String(af)), 1, fromBase58String(L)), ScriptTransfer(Address(fromBase58String(ae)), parseIntValue(ag), f)]
135183 else nil
136184 }
185+
186+
187+
188+@Callable(o)
189+func withdrawBid (ah) = {
190+ let R = o.caller.bytes
191+ let ai = getStringValue(this, (ah + "_highest_bid"))
192+ let aj = getStringValue(this, (ah + "_winner"))
193+ let ak = getStringValue(this, (ah + "_nft_id"))
194+ if ((toBase58String(R) != aj))
195+ then throw("No bid")
196+ else [StringEntry((ah + "_nft_bid"), "WITHDRAW"), StringEntry((ah + "_nft_id"), ak), StringEntry((ah + "_bidding_price_refund_amount"), ai), ScriptTransfer(o.caller, parseIntValue(ai), unit)]
197+ }
198+
199+
200+
201+@Callable(o)
202+func manualFundTransfer (al,am) = {
203+ let R = o.caller.bytes
204+ let an = fromBase58String(al)
205+ let I = o.payments[0].amount
206+ if ((o.payments[0].assetId == unit))
207+ then [IntegerEntry((toBase58String(R) + "_transfer"), I), StringEntry((toBase58String(R) + "_transfer_to"), al), ScriptTransfer(Address(an), I, unit)]
208+ else if ((o.payments[0].assetId == f))
209+ then [IntegerEntry((toBase58String(R) + "_transfer"), I), StringEntry((toBase58String(R) + "_transfer_to"), al), ScriptTransfer(Address(an), I, f)]
210+ else nil
211+ }
212+
213+
214+
215+@Callable(o)
216+func testBid (ao) = [StringEntry("E8kkFBYCy44JJaq6pAZ6KizsuResi5UKNhbD1WNZwhhY_highest_bid", "0")]
137217
138218

github/deemru/w8io/169f3d6 
118.97 ms