tx · pcPJvaGRsfGkPBQ7DZGoNXSecoMZFnexh6ayTHzVKqu

3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz:  -0.01300000 Waves

2023.11.14 10:58 [2842734] smart account 3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz > SELF 0.00000000 Waves

{ "type": 13, "id": "pcPJvaGRsfGkPBQ7DZGoNXSecoMZFnexh6ayTHzVKqu", "fee": 1300000, "feeAssetId": null, "timestamp": 1699948691104, "version": 2, "chainId": 84, "sender": "3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz", "senderPublicKey": "9p5EiEVtTgiMBxj67TfVfstKuQs1LHPxoZRiRhyS5oiN", "proofs": [ "5G8hLRiTWGyWGmmKDZpSmBKxNCC2N776Jymgn6QutpdJJPMwMVVGWZqsJFSDczrwwuoGafbJY7xdF8CX9j8MtPFo" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgILAAHVkVSU0lPTgIFMS4wLjABCWdldFN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAlvcmFjbGVGZWUJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECD2NvbmZfb3JhY2xlX2ZlZQALZmVlUmVjZWl2ZXIJAQlnZXRTdHJCeUsBAhFjb25mX2ZlZV9yZWNlaXZlcgAPcHV6emxlX2FydF9wb29sCQEJZ2V0U3RyQnlLAQIUY29uZl9wdXp6bGVfYXJ0X3Bvb2wAEXVzZHRQUEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIbY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUX1BQAA5hcnRBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECF2NvbmZfYWNjZXB0ZWRfYXNzZXRfQVJUABF1c2RjUFBBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEQ19QUAAPZWFzdEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIYY29uZl9hY2NlcHRlZF9hc3NldF9FQVNUABFwdXp6bGVBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECGmNvbmZfYWNjZXB0ZWRfYXNzZXRfUFVaWkxFABBldGhQUEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIaY29uZl9hY2NlcHRlZF9hc3NldF9FVEhfUFAAEHdhdmVzQXNzZXRJZF9zdHICBVdBVkVTAA11c2R0UFBBc3NldElkCQDZBAEFEXVzZHRQUEFzc2V0SWRfc3RyAAphcnRBc3NldElkCQDZBAEFDmFydEFzc2V0SWRfc3RyAA11c2RjUFBBc3NldElkCQDZBAEFEXVzZGNQUEFzc2V0SWRfc3RyAAtlYXN0QXNzZXRJZAkA2QQBBQ9lYXN0QXNzZXRJZF9zdHIADXB1enpsZUFzc2V0SWQJANkEAQURcHV6emxlQXNzZXRJZF9zdHIADGV0aFBQQXNzZXRJZAkA2QQBBRBldGhQUEFzc2V0SWRfc3RyAAx3YXZlc0Fzc2V0SWQBAAATYWxsX2FjY2VwdGVkX2Fzc2V0cwkAzAgCBRF1c2R0UFBBc3NldElkX3N0cgkAzAgCBQ5hcnRBc3NldElkX3N0cgkAzAgCBRF1c2RjUFBBc3NldElkX3N0cgkAzAgCBQ9lYXN0QXNzZXRJZF9zdHIJAMwIAgURcHV6emxlQXNzZXRJZF9zdHIJAMwIAgUQd2F2ZXNBc3NldElkX3N0cgkAzAgCBRBldGhQUEFzc2V0SWRfc3RyBQNuaWwABWNocmlzCQEJZ2V0U3RyQnlLAQIMY29uZl9hZG1pbl8xAA5jb21taXNzaW9uX2ZlZQADAA5kYXBwUnVubmluZ0tleQIUY29uZl9kYXBwX2lzX3J1bm5pbmcAEW1haW50ZW5hbmNlTVNHS2V5AhRjb25mX21haW50ZW5hbmNlX21zZwALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUOZGFwcFJ1bm5pbmdLZXkGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRFtYWludGVuYW5jZU1TR0tleQIAAAludW1TYWxlc0sCCW51bV9zYWxlcwEJZ2V0SW50QnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABCmdldFNhbGVLZXkDBmNhbGxlcgVuZnRJZAZpc3N1ZXIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1zYWxlMm5kX2luZm9fBQZjYWxsZXICAV8FBW5mdElkAgFfBQZpc3N1ZXIBCWdldEJpZEtleQQKb2ZmZXJPd25lcgVuZnRJZAlzYWxlT3duZXIHb2ZmZXJJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglvZmZlcjJuZF8FCm9mZmVyT3duZXICAV8FBW5mdElkAgFfBQlzYWxlT3duZXICAV8FB29mZmVySWQBE2dldEludEJ5S0Zyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQlpc1BheW1lbnQBAWkDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAkAlAoCBQdwYXltZW50BQZhbW91bnQBCk5GVElzVmFsaWQBDGFzc2V0RGV0YWlscwMDCQAAAggFDGFzc2V0RGV0YWlscwhxdWFudGl0eQABCQAAAggFDGFzc2V0RGV0YWlscwhkZWNpbWFscwAABwkAAAIIBQxhc3NldERldGFpbHMKcmVpc3N1YWJsZQcHARBhY2NlcHRlZEFzc2V0SWRzAQdhc3NldElkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUTYWxsX2FjY2VwdGVkX2Fzc2V0cwUHYXNzZXRJZAkAAgECQE9ubHkgJEFSVCwgVVNEVC1QUCwgVVNEQy1QUCwgRUFTVCwgUFVaWkxFLCBFVEggb3IgV0FWRVMgYWNjZXB0ZWQGAQ1nZXRCaWRBc3NldElkAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFbmZ0aWQECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0aWQDCQAAAgkAsQIBBQlzYWxlT3duZXIAAAkAAgECDU5GVCBub3QgZm91bmQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0aWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIQTkZUIG5vdCBmb3Igc2FsZQUJc2FsZU93bmVyAQpnZXRCaWREYXRhAQNrZXkEB2JpZERhdGEJAQlnZXRTdHJCeUsBCQCsAgIFA2tleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQIPT2ZmZXIgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8EB2Fzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAIJAJUKAwUKYmlkRGF0YUFycgUHYXNzZXRJZAUHYmlkRGF0YQEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDwBwIFBHRoaXMFAWIICQDvBwEFBHRoaXMJYXZhaWxhYmxlAQxzZXRUcmFuc2ZlcnMFBmFtb3VudAdhc3NldElkBW5mdGlkCXNhbGVPd25lcgZjYWxsZXIEDWFtb3VudEZvclNpZ24JAGsDBQZhbW91bnQFDmNvbW1pc3Npb25fZmVlAGQEDmFtb3VudEZvck93bmVyCQBlAgUGYW1vdW50BQ1hbW91bnRGb3JTaWduBCJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQ1hbW91bnRGb3JTaWduBBFhbW91bnRfYXJ0X2JlZm9yZQkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEWFtb3VudF9hcnRfYmVmb3JlBRFhbW91bnRfYXJ0X2JlZm9yZQQPc3dhcF9mZWVfdG9fYXJ0AwkBAiE9AgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkA/AcECQEHQWRkcmVzcwEJANkEAQUPcHV6emxlX2FydF9wb29sAgRzd2FwCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBSJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQNuaWwFBHVuaXQDCQAAAgUPc3dhcF9mZWVfdG9fYXJ0BQ9zd2FwX2ZlZV90b19hcnQEEGFtb3VudF9hcnRfYWZ0ZXIJAQpnZXRCYWxhbmNlAQUKYXJ0QXNzZXRJZAMJAAACBRBhbW91bnRfYXJ0X2FmdGVyBRBhbW91bnRfYXJ0X2FmdGVyBAtjb21taXNzaW9ucwkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyAwkAAAIFB2Fzc2V0SWQFCmFydEFzc2V0SWQFDWFtb3VudEZvclNpZ24JAGUCBRBhbW91bnRfYXJ0X2FmdGVyBRFhbW91bnRfYXJ0X2JlZm9yZQUKYXJ0QXNzZXRJZAQIb3duZXJGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQlzYWxlT3duZXIFDmFtb3VudEZvck93bmVyBQdhc3NldElkBAxjb2xsZWN0b3JORlQJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQkA2QQBBQVuZnRpZAkAlQoDBQtjb21taXNzaW9ucwUIb3duZXJGZWUFDGNvbGxlY3Rvck5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPdmFsaWRhdGVNaW5TZWxsAQVwcmljZQMJAGcCAAAFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgEPcHJvdmlkZUJhc2VEYXRhAgFpBW5mdElkBAskdDA1MDc5NTExOQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAULJHQwNTA3OTUxMTkCXzEEBmNhbGxlcggFCyR0MDUwNzk1MTE5Al8yBARkYXRlCAULJHQwNTA3OTUxMTkCXzMEDGFzc2V0RGV0YWlscwkBBXZhbHVlAQkA7AcBCQDZBAEFBW5mdElkBAppc1ZhbGlkTkZUCQEKTkZUSXNWYWxpZAEFDGFzc2V0RGV0YWlscwkAlwoFBQJpZAUGY2FsbGVyBQRkYXRlBQppc1ZhbGlkTkZUCAUMYXNzZXREZXRhaWxzBmlzc3VlcgEOdXBkYXRlTnVtU2FsZXMABAhudW1TYWxlcwkBCWdldEludEJ5SwEFCW51bVNhbGVzSwkBDEludGVnZXJFbnRyeQIFCW51bVNhbGVzSwkAZAIFCG51bVNhbGVzAAEBB2hhdmVTVEQCBmlzc3VlcgZuZGZ0SWQEBGRhdGEJAQt2YWx1ZU9yRWxzZQIJARFAZXh0ck5hdGl2ZSgxMDUzKQIJAQdBZGRyZXNzAQkA2QQBBQZpc3N1ZXIJAKwCAgkArAICAghzdGRfbmZ0XwUGbmRmdElkAglfbWV0YWRhdGECAAkBAiE9AgUEZGF0YQIACQZpbnZva2UBB3NldENvbmYCA2tleQN2YWwEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIDCQEIY29udGFpbnMCBQNrZXkCBWNvbmZfCQDMCAIJAQtTdHJpbmdFbnRyeQIFA2tleQUDdmFsBQNuaWwJAAIBAiBFbnRyaWVzIHN0YXJ0aW5nIHdpdGggY29uZl8gb25seQkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMGaW52b2tlAQphcHBSdW5uaW5nAgZpc0xpdmUHbWVzc2FnZQQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyBAJpZAkA2AQBCAUGaW52b2tlDXRyYW5zYWN0aW9uSWQDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyCQDMCAIJAQxCb29sZWFuRW50cnkCBQ5kYXBwUnVubmluZ0tleQUGaXNMaXZlCQDMCAIJAQtTdHJpbmdFbnRyeQIFEW1haW50ZW5hbmNlTVNHS2V5BQdtZXNzYWdlBQNuaWwJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzAWkBB3NlbGxORlQCBXByaWNlBWFzc2V0BAskdDA2NDYwNjQ5NgkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQskdDA2NDYwNjQ5NgJfMQQGYW1vdW50CAULJHQwNjQ2MDY0OTYCXzIDCQECIT0CBQZhbW91bnQAAQkAAgECD05vIE5GVCBhdHRhY2hlZAQFbmZ0SWQDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkCQACAQITV2F2ZXMgaXMgbm90IGEgTkZULgQLJHQwNjY4MjY3NTIJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQskdDA2NjgyNjc1MgJfMQQGY2FsbGVyCAULJHQwNjY4MjY3NTICXzIEBGRhdGUIBQskdDA2NjgyNjc1MgJfMwQKaXNWYWxpZE5GVAgFCyR0MDY2ODI2NzUyAl80BAZpc3N1ZXIIBQskdDA2NjgyNjc1MgJfNQMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAMJAQEhAQkBB2hhdmVTVEQCBQVuZnRJZAkApQgBBQZpc3N1ZXIJAAIBAidObyBuZnQgc3RhbmRhcmQgZm91bmQgb24gaXNzdWVyIGFjY291bnQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUFYXNzZXQJAAIBAkBPbmx5ICRBUlQsIFVTRFQtUFAsIFVTREMtUFAsIEVBU1QsIFBVWlpMRSwgRVRIIG9yIFdBVkVTIGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEKZ2V0U2FsZUtleQMFBmNhbGxlcgUFbmZ0SWQJAKUIAQUGaXNzdWVyAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUFcHJpY2UCAV8FBWFzc2V0AgFfBQVuZnRJZAIBXwkApQgBBQZpc3N1ZXICAV8FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAIET1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkBQZjYWxsZXIFA25pbAFpAQ91cGRhdGVTYWxlUHJpY2UDBW5mdElkBXByaWNlBWFzc2V0BAskdDA3NTQ3NzYxNwkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFCyR0MDc1NDc3NjE3Al8xBAZjYWxsZXIIBQskdDA3NTQ3NzYxNwJfMgQEZGF0ZQgFCyR0MDc1NDc3NjE3Al8zBAppc1ZhbGlkTkZUCAULJHQwNzU0Nzc2MTcCXzQEBmlzc3VlcggFCyR0MDc1NDc3NjE3Al81AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECQE9ubHkgJEFSVCwgVVNEVC1QUCwgVVNEQy1QUCwgRUFTVCwgUFVaWkxFLCBFVEggb3IgV0FWRVMgYWNjZXB0ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQHc2FsZUtleQkBCmdldFNhbGVLZXkDBQZjYWxsZXIFBW5mdElkCQClCAEFBmlzc3VlcgQIc2FsZUluZm8JALUJAgkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4CAV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzYWxlS2V5AgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFCHNhbGVJbmZvAAACAV8JAKQDAQUFcHJpY2UCAV8FBWFzc2V0AgFfCQCRAwIFCHNhbGVJbmZvAAMCAV8JAJEDAgUIc2FsZUluZm8ABAIBXwkAkQMCBQhzYWxlSW5mbwAFBQNuaWwBaQEKY2FuY2VsU2FsZQEFbmZ0SWQECyR0MDg2Njk4ODg3CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAULJHQwODY2OTg4ODcCXzEEBmNhbGxlcggFCyR0MDg2Njk4ODg3Al8yBARkYXRlCAULJHQwODY2OTg4ODcCXzMECmlzVmFsaWRORlQIBQskdDA4NjY5ODg4NwJfNAQGaXNzdWVyCAULJHQwODY2OTg4ODcCXzUECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQDCQECIT0CBQlzYWxlT3duZXIFBmNhbGxlcgkAAgECFllvdSBkb24ndCBvd24gdGhpcyBORlQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIPU2FsZSBub3QgYWN0aXZlBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQMFBmNhbGxlcgUFbmZ0SWQJAKUIAQUGaXNzdWVyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgABCQDZBAEFBW5mdElkBQNuaWwBaQEGYnV5TkZUAQVuZnRJZAQLJHQwOTcxODk3ODgJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQskdDA5NzE4OTc4OAJfMQQGY2FsbGVyCAULJHQwOTcxODk3ODgCXzIEBGRhdGUIBQskdDA5NzE4OTc4OAJfMwQKaXNWYWxpZE5GVAgFCyR0MDk3MTg5Nzg4Al80BAZpc3N1ZXIIBQskdDA5NzE4OTc4OAJfNQMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQEB3NhbGVLZXkJAQpnZXRTYWxlS2V5AwUJc2FsZU93bmVyBQVuZnRJZAkApQgBBQZpc3N1ZXIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgMJAAACCQCxAgEFCHNhbGVJbmZvAAAJAAIBAg9TYWxlIE5vdCBmb3VuZCEEDXNhbGVJbmZvQXJyYXkJALUJAgUIc2FsZUluZm8CAV8DCQAAAgkAtgkBCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQAACQACAQIKT2ZmZXIgb25seQQNJHQwMTAxODcxMDIyMwkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxMDE4NzEwMjIzAl8xBAZhbW91bnQIBQ0kdDAxMDE4NzEwMjIzAl8yBA9wYXltZW50QXNzZXRTdHIDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAgADAwkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAEJAKQDAQUGYW1vdW50BgkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAIFD3BheW1lbnRBc3NldFN0cgkAAgECGlBheW1lbnQgaW5mb3MgZG9uJ3QgbWF0Y2guBA0kdDAxMDczNzEwODQ0CQEMc2V0VHJhbnNmZXJzBQUGYW1vdW50CAUHcGF5bWVudAdhc3NldElkBQVuZnRJZAUJc2FsZU93bmVyBQZjYWxsZXIEC2NvbW1pc3Npb25zCAUNJHQwMTA3MzcxMDg0NAJfMQQIb3duZXJGZWUIBQ0kdDAxMDczNzEwODQ0Al8yBAxjb2xsZWN0b3JORlQIBQ0kdDAxMDczNzEwODQ0Al8zCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHc2FsZUtleQIBXwUCaWQCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAIBXwUGY2FsbGVyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUCQDMCAIFC2NvbW1pc3Npb25zBQNuaWwBaQEIc2V0T2ZmZXIBBW5mdElkBA0kdDAxMTI0MzExMzE3CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTEyNDMxMTMxNwJfMQQKb2ZmZXJPd25lcggFDSR0MDExMjQzMTEzMTcCXzIEBGRhdGUIBQ0kdDAxMTI0MzExMzE3Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTEyNDMxMTMxNwJfNAQGaXNzdWVyCAUNJHQwMTEyNDMxMTMxNwJfNQMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQNJHQwMTEzNzgxMTQxNAkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxMTM3ODExNDE0Al8xBAZhbW91bnQIBQ0kdDAxMTM3ODExNDE0Al8yBAdhc3NldElkAwkBASEBCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAIFV0FWRVMJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQdhc3NldElkCQACAQISYXNzZXQgbm90IGFjY2VwdGVkAwkAAAIFBmFtb3VudAAACQACAQIWT2ZmZXIgb2YgMCBub3QgYWxsb3dlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBmFtb3VudAkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQEJZ2V0QmlkS2V5BAUKb2ZmZXJPd25lcgUFbmZ0SWQFCXNhbGVPd25lcgUCaWQCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUGYW1vdW50AgFfBQdhc3NldElkAgFfBQVuZnRJZAIBXwkApQgBBQZpc3N1ZXICAV8FCm9mZmVyT3duZXICAV8FAmlkBQNuaWwBaQELYWNjZXB0T2ZmZXIDBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcgQNJHQwMTIyMDMxMjI3MwkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDEyMjAzMTIyNzMCXzEEBmNhbGxlcggFDSR0MDEyMjAzMTIyNzMCXzIEBGRhdGUIBQ0kdDAxMjIwMzEyMjczAl8zBAppc1ZhbGlkTkZUCAUNJHQwMTIyMDMxMjI3MwJfNAQGaXNzdWVyCAUNJHQwMTIyMDMxMjI3MwJfNQMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQUFbmZ0SWQDCQECIT0CBQZjYWxsZXIFCXNhbGVPd25lcgkAAgECIE9ubHkgc2FsZSBvd25lciBjYW4gYWNjZXB0IG9mZmVyBAZiaWRLZXkJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQdvZmZlcklkBA0kdDAxMjUyNzEyNTgyCQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDEyNTI3MTI1ODICXzEEB2Fzc2V0SWQIBQ0kdDAxMjUyNzEyNTgyAl8yBAdiaWREYXRhCAUNJHQwMTI1MjcxMjU4MgJfMwQHc2FsZUtleQkBCmdldFNhbGVLZXkDBQlzYWxlT3duZXIFBW5mdElkCQClCAEFBmlzc3VlcgQIc2FsZUluZm8JAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAwkAAAIJALECAQUIc2FsZUluZm8AAAkAAgECD1NhbGUgTm90IGZvdW5kIQQGYW1vdW50CQEFdmFsdWUBCQC2CQEJAJEDAgUKYmlkRGF0YUFycgABBA0kdDAxMjgxODEyOTI0CQEMc2V0VHJhbnNmZXJzBQUGYW1vdW50BQdhc3NldElkBQVuZnRJZAUJc2FsZU93bmVyCQCRAwIFCmJpZERhdGFBcnIABgQLY29tbWlzc2lvbnMIBQ0kdDAxMjgxODEyOTI0Al8xBAhvd25lckZlZQgFDSR0MDEyODE4MTI5MjQCXzIEDGNvbGxlY3Rvck5GVAgFDSR0MDEyODE4MTI5MjQCXzMECmFzc2V0SWRTdHIDCQEJaXNEZWZpbmVkAQUHYXNzZXRJZAkA2AQBCQEFdmFsdWUBBQdhc3NldElkAgVXQVZFUwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIOX0NMT1NFRC1PRkZFUl8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FCm9mZmVyT3duZXICAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkU3RyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUCQDMCAIFC2NvbW1pc3Npb25zBQNuaWwBaQELY2FuY2VsT2ZmZXIEBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcglzYWxlT3duZXIEDSR0MDEzNzEyMTM3ODYJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDEzNzEyMTM3ODYCXzEEBmNhbGxlcggFDSR0MDEzNzEyMTM3ODYCXzIEBGRhdGUIBQ0kdDAxMzcxMjEzNzg2Al8zAwMJAQIhPQIFBmNhbGxlcgUKb2ZmZXJPd25lcgkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIHCQACAQIdWW91IGNhbm5vdCBjYW5jZWwgdGhpcyBvZmZlci4EBmJpZEtleQkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFB29mZmVySWQEDSR0MDEzOTU4MTQwMTMJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMTM5NTgxNDAxMwJfMQQHYXNzZXRJZAgFDSR0MDEzOTU4MTQwMTMCXzIEB2JpZERhdGEIBQ0kdDAxMzk1ODE0MDEzAl8zCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwAout0jQ==", "height": 2842734, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9MVDuhoKEa8VzhKYBxqeLeHpAppz91D6ezQYgUdvP5aG Next: Fz1ZzMJugmfDpuHVH4HrT4u3xNTCAEYsGafV9CcHhFeH Diff:
OldNewDifferences
185185
186186
187187 func haveSTD (issuer,ndftId) = {
188- let data = valueOrElse(getString(Address(fromBase58String(issuer)), (("std_nft_" + ndftId) + "_metadata")), "")
188+ let data = valueOrElse(getStringValue(Address(fromBase58String(issuer)), (("std_nft_" + ndftId) + "_metadata")), "")
189189 (data != "")
190190 }
191191
215215
216216 @Callable(i)
217217 func sellNFT (price,asset) = {
218- let $t064546490 = isPayment(i)
219- let payment = $t064546490._1
220- let amount = $t064546490._2
218+ let $t064606496 = isPayment(i)
219+ let payment = $t064606496._1
220+ let amount = $t064606496._2
221221 if ((amount != 1))
222222 then throw("No NFT attached")
223223 else {
224224 let nftId = if (isDefined(payment.assetId))
225225 then toBase58String(value(payment.assetId))
226226 else throw("Waves is not a NFT.")
227- let $t066766746 = provideBaseData(i, nftId)
228- let id = $t066766746._1
229- let caller = $t066766746._2
230- let date = $t066766746._3
231- let isValidNFT = $t066766746._4
232- let issuer = $t066766746._5
227+ let $t066826752 = provideBaseData(i, nftId)
228+ let id = $t066826752._1
229+ let caller = $t066826752._2
230+ let date = $t066826752._3
231+ let isValidNFT = $t066826752._4
232+ let issuer = $t066826752._5
233233 if (!(isValidNFT))
234234 then throw("Not a valid nft")
235235 else if (!(haveSTD(nftId, toString(issuer))))
246246
247247 @Callable(i)
248248 func updateSalePrice (nftId,price,asset) = {
249- let $t075417611 = provideBaseData(i, nftId)
250- let id = $t075417611._1
251- let caller = $t075417611._2
252- let date = $t075417611._3
253- let isValidNFT = $t075417611._4
254- let issuer = $t075417611._5
249+ let $t075477617 = provideBaseData(i, nftId)
250+ let id = $t075477617._1
251+ let caller = $t075477617._2
252+ let date = $t075477617._3
253+ let isValidNFT = $t075477617._4
254+ let issuer = $t075477617._5
255255 if (!(isValidNFT))
256256 then throw("Not a valid nft")
257257 else {
279279
280280 @Callable(i)
281281 func cancelSale (nftId) = {
282- let $t086638881 = provideBaseData(i, nftId)
283- let id = $t086638881._1
284- let caller = $t086638881._2
285- let date = $t086638881._3
286- let isValidNFT = $t086638881._4
287- let issuer = $t086638881._5
282+ let $t086698887 = provideBaseData(i, nftId)
283+ let id = $t086698887._1
284+ let caller = $t086698887._2
285+ let date = $t086698887._3
286+ let isValidNFT = $t086698887._4
287+ let issuer = $t086698887._5
288288 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
289289 if ((saleOwner != caller))
290290 then throw("You don't own this NFT")
304304
305305 @Callable(i)
306306 func buyNFT (nftId) = {
307- let $t097129782 = provideBaseData(i, nftId)
308- let id = $t097129782._1
309- let caller = $t097129782._2
310- let date = $t097129782._3
311- let isValidNFT = $t097129782._4
312- let issuer = $t097129782._5
307+ let $t097189788 = provideBaseData(i, nftId)
308+ let id = $t097189788._1
309+ let caller = $t097189788._2
310+ let date = $t097189788._3
311+ let isValidNFT = $t097189788._4
312+ let issuer = $t097189788._5
313313 if (!(isValidNFT))
314314 then throw("Not a valid nft")
315315 else {
323323 if ((parseInt(saleInfoArray[1]) == 0))
324324 then throw("Offer only")
325325 else {
326- let $t01018110217 = isPayment(i)
327- let payment = $t01018110217._1
328- let amount = $t01018110217._2
326+ let $t01018710223 = isPayment(i)
327+ let payment = $t01018710223._1
328+ let amount = $t01018710223._2
329329 let paymentAssetStr = if (isDefined(payment.assetId))
330330 then toBase58String(value(payment.assetId))
331331 else ""
334334 else (saleInfoArray[2] != paymentAssetStr))
335335 then throw("Payment infos don't match.")
336336 else {
337- let $t01073110838 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
338- let commissions = $t01073110838._1
339- let ownerFee = $t01073110838._2
340- let collectorNFT = $t01073110838._3
337+ let $t01073710844 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
338+ let commissions = $t01073710844._1
339+ let ownerFee = $t01073710844._2
340+ let collectorNFT = $t01073710844._3
341341 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((saleInfo + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), updateNumSales(), ownerFee, collectorNFT, commissions]
342342 }
343343 }
349349
350350 @Callable(i)
351351 func setOffer (nftId) = {
352- let $t01123711311 = provideBaseData(i, nftId)
353- let id = $t01123711311._1
354- let offerOwner = $t01123711311._2
355- let date = $t01123711311._3
356- let isValidNFT = $t01123711311._4
357- let issuer = $t01123711311._5
352+ let $t01124311317 = provideBaseData(i, nftId)
353+ let id = $t01124311317._1
354+ let offerOwner = $t01124311317._2
355+ let date = $t01124311317._3
356+ let isValidNFT = $t01124311317._4
357+ let issuer = $t01124311317._5
358358 if (!(isValidNFT))
359359 then throw("Not a valid nft")
360360 else {
361- let $t01137211408 = isPayment(i)
362- let payment = $t01137211408._1
363- let amount = $t01137211408._2
361+ let $t01137811414 = isPayment(i)
362+ let payment = $t01137811414._1
363+ let amount = $t01137811414._2
364364 let assetId = if (!(isDefined(payment.assetId)))
365365 then "WAVES"
366366 else toBase58String(value(payment.assetId))
381381
382382 @Callable(i)
383383 func acceptOffer (nftId,offerId,offerOwner) = {
384- let $t01219712267 = provideBaseData(i, nftId)
385- let id = $t01219712267._1
386- let caller = $t01219712267._2
387- let date = $t01219712267._3
388- let isValidNFT = $t01219712267._4
389- let issuer = $t01219712267._5
384+ let $t01220312273 = provideBaseData(i, nftId)
385+ let id = $t01220312273._1
386+ let caller = $t01220312273._2
387+ let date = $t01220312273._3
388+ let isValidNFT = $t01220312273._4
389+ let issuer = $t01220312273._5
390390 if (!(isValidNFT))
391391 then throw("Not a valid nft")
392392 else {
395395 then throw("Only sale owner can accept offer")
396396 else {
397397 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
398- let $t01252112576 = getBidData(bidKey)
399- let bidDataArr = $t01252112576._1
400- let assetId = $t01252112576._2
401- let bidData = $t01252112576._3
398+ let $t01252712582 = getBidData(bidKey)
399+ let bidDataArr = $t01252712582._1
400+ let assetId = $t01252712582._2
401+ let bidData = $t01252712582._3
402402 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
403403 let saleInfo = getStrByK((saleKey + "_OPEN"))
404404 if ((size(saleInfo) == 0))
405405 then throw("Sale Not found!")
406406 else {
407407 let amount = value(parseInt(bidDataArr[1]))
408- let $t01281212918 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
409- let commissions = $t01281212918._1
410- let ownerFee = $t01281212918._2
411- let collectorNFT = $t01281212918._3
408+ let $t01281812924 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
409+ let commissions = $t01281812924._1
410+ let ownerFee = $t01281812924._2
411+ let collectorNFT = $t01281812924._3
412412 let assetIdStr = if (isDefined(assetId))
413413 then toBase58String(value(assetId))
414414 else "WAVES"
422422
423423 @Callable(i)
424424 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
425- let $t01370613780 = idCallerDate(i)
426- let id = $t01370613780._1
427- let caller = $t01370613780._2
428- let date = $t01370613780._3
425+ let $t01371213786 = idCallerDate(i)
426+ let id = $t01371213786._1
427+ let caller = $t01371213786._2
428+ let date = $t01371213786._3
429429 if (if ((caller != offerOwner))
430430 then (caller != saleOwner)
431431 else false)
432432 then throw("You cannot cancel this offer.")
433433 else {
434434 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
435- let $t01395214007 = getBidData(bidKey)
436- let bidDataArr = $t01395214007._1
437- let assetId = $t01395214007._2
438- let bidData = $t01395214007._3
435+ let $t01395814013 = getBidData(bidKey)
436+ let bidDataArr = $t01395814013._1
437+ let assetId = $t01395814013._2
438+ let bidData = $t01395814013._3
439439 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
440440 }
441441 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let VERSION = "1.0.0"
55
66 func getStrByK (key) = valueOrElse(getString(this, key), "")
77
88
99 let oracleFee = value(addressFromString(getStrByK("conf_oracle_fee")))
1010
1111 let feeReceiver = getStrByK("conf_fee_receiver")
1212
1313 let puzzle_art_pool = getStrByK("conf_puzzle_art_pool")
1414
1515 let usdtPPAssetId_str = getStrByK("conf_accepted_asset_USDT_PP")
1616
1717 let artAssetId_str = getStrByK("conf_accepted_asset_ART")
1818
1919 let usdcPPAssetId_str = getStrByK("conf_accepted_asset_USDC_PP")
2020
2121 let eastAssetId_str = getStrByK("conf_accepted_asset_EAST")
2222
2323 let puzzleAssetId_str = getStrByK("conf_accepted_asset_PUZZLE")
2424
2525 let ethPPAssetId_str = getStrByK("conf_accepted_asset_ETH_PP")
2626
2727 let wavesAssetId_str = "WAVES"
2828
2929 let usdtPPAssetId = fromBase58String(usdtPPAssetId_str)
3030
3131 let artAssetId = fromBase58String(artAssetId_str)
3232
3333 let usdcPPAssetId = fromBase58String(usdcPPAssetId_str)
3434
3535 let eastAssetId = fromBase58String(eastAssetId_str)
3636
3737 let puzzleAssetId = fromBase58String(puzzleAssetId_str)
3838
3939 let ethPPAssetId = fromBase58String(ethPPAssetId_str)
4040
4141 let wavesAssetId = base58''
4242
4343 let all_accepted_assets = [usdtPPAssetId_str, artAssetId_str, usdcPPAssetId_str, eastAssetId_str, puzzleAssetId_str, wavesAssetId_str, ethPPAssetId_str]
4444
4545 let chris = getStrByK("conf_admin_1")
4646
4747 let commission_fee = 3
4848
4949 let dappRunningKey = "conf_dapp_is_running"
5050
5151 let maintenanceMSGKey = "conf_maintenance_msg"
5252
5353 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
5454
5555 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
5656
5757 let numSalesK = "num_sales"
5858
5959 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
6060
6161
6262 func getSaleKey (caller,nftId,issuer) = ((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + issuer)
6363
6464
6565 func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
6666
6767
6868 func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
6969
7070
7171 func idCallerDate (i) = if (!(dappRunning))
7272 then throw(maintenanceMSG)
7373 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
7474
7575
7676 func isPayment (i) = if ((size(i.payments) == 0))
7777 then throw("No payment attached")
7878 else {
7979 let payment = value(i.payments[0])
8080 let amount = value(payment.amount)
8181 $Tuple2(payment, amount)
8282 }
8383
8484
8585 func NFTIsValid (assetDetails) = if (if ((assetDetails.quantity == 1))
8686 then (assetDetails.decimals == 0)
8787 else false)
8888 then (assetDetails.reissuable == false)
8989 else false
9090
9191
9292 func acceptedAssetIds (assetId) = if (!(containsElement(all_accepted_assets, assetId)))
9393 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
9494 else true
9595
9696
9797 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
9898 then unit
9999 else fromBase58String(assetId)
100100
101101
102102 func getSaleOwnerAndStatus (nftid) = {
103103 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
104104 if ((size(saleOwner) == 0))
105105 then throw("NFT not found")
106106 else {
107107 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
108108 if ((saleStatus != "OPEN"))
109109 then throw("NFT not for sale")
110110 else saleOwner
111111 }
112112 }
113113
114114
115115 func getBidData (key) = {
116116 let bidData = getStrByK((key + "_OPEN"))
117117 if ((bidData == ""))
118118 then throw("Offer not found")
119119 else {
120120 let bidDataArr = split(bidData, "_")
121121 let assetId = getBidAssetId(bidDataArr[2])
122122 $Tuple3(bidDataArr, assetId, bidData)
123123 }
124124 }
125125
126126
127127 func getBalance (assetId) = match assetId {
128128 case b: ByteVector =>
129129 assetBalance(this, b)
130130 case _ =>
131131 wavesBalance(this).available
132132 }
133133
134134
135135 func setTransfers (amount,assetId,nftid,saleOwner,caller) = {
136136 let amountForSign = fraction(amount, commission_fee, 100)
137137 let amountForOwner = (amount - amountForSign)
138138 let amount_commission_for_sign_to_swap = amountForSign
139139 let amount_art_before = getBalance(artAssetId)
140140 if ((amount_art_before == amount_art_before))
141141 then {
142142 let swap_fee_to_art = if ((assetId != artAssetId))
143143 then invoke(Address(fromBase58String(puzzle_art_pool)), "swap", [artAssetId_str, 1], [AttachedPayment(assetId, amount_commission_for_sign_to_swap)])
144144 else unit
145145 if ((swap_fee_to_art == swap_fee_to_art))
146146 then {
147147 let amount_art_after = getBalance(artAssetId)
148148 if ((amount_art_after == amount_art_after))
149149 then {
150150 let commissions = ScriptTransfer(Address(fromBase58String(feeReceiver)), if ((assetId == artAssetId))
151151 then amountForSign
152152 else (amount_art_after - amount_art_before), artAssetId)
153153 let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
154154 let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
155155 $Tuple3(commissions, ownerFee, collectorNFT)
156156 }
157157 else throw("Strict value is not equal to itself.")
158158 }
159159 else throw("Strict value is not equal to itself.")
160160 }
161161 else throw("Strict value is not equal to itself.")
162162 }
163163
164164
165165 func validateMinSell (price) = if ((0 >= price))
166166 then throw("Wrong minimum sell price")
167167 else true
168168
169169
170170 func provideBaseData (i,nftId) = {
171171 let $t050795119 = idCallerDate(i)
172172 let id = $t050795119._1
173173 let caller = $t050795119._2
174174 let date = $t050795119._3
175175 let assetDetails = value(assetInfo(fromBase58String(nftId)))
176176 let isValidNFT = NFTIsValid(assetDetails)
177177 $Tuple5(id, caller, date, isValidNFT, assetDetails.issuer)
178178 }
179179
180180
181181 func updateNumSales () = {
182182 let numSales = getIntByK(numSalesK)
183183 IntegerEntry(numSalesK, (numSales + 1))
184184 }
185185
186186
187187 func haveSTD (issuer,ndftId) = {
188- let data = valueOrElse(getString(Address(fromBase58String(issuer)), (("std_nft_" + ndftId) + "_metadata")), "")
188+ let data = valueOrElse(getStringValue(Address(fromBase58String(issuer)), (("std_nft_" + ndftId) + "_metadata")), "")
189189 (data != "")
190190 }
191191
192192
193193 @Callable(invoke)
194194 func setConf (key,val) = {
195195 let caller = toString(invoke.caller)
196196 if (containsElement([chris, toString(this)], caller))
197197 then if (contains(key, "conf_"))
198198 then [StringEntry(key, val)]
199199 else throw("Entries starting with conf_ only")
200200 else throw("You are not allowed to change this")
201201 }
202202
203203
204204
205205 @Callable(invoke)
206206 func appRunning (isLive,message) = {
207207 let caller = toString(invoke.caller)
208208 let id = toBase58String(invoke.transactionId)
209209 if (containsElement([chris, toString(this)], caller))
210210 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
211211 else throw("You are not allowed to change this")
212212 }
213213
214214
215215
216216 @Callable(i)
217217 func sellNFT (price,asset) = {
218- let $t064546490 = isPayment(i)
219- let payment = $t064546490._1
220- let amount = $t064546490._2
218+ let $t064606496 = isPayment(i)
219+ let payment = $t064606496._1
220+ let amount = $t064606496._2
221221 if ((amount != 1))
222222 then throw("No NFT attached")
223223 else {
224224 let nftId = if (isDefined(payment.assetId))
225225 then toBase58String(value(payment.assetId))
226226 else throw("Waves is not a NFT.")
227- let $t066766746 = provideBaseData(i, nftId)
228- let id = $t066766746._1
229- let caller = $t066766746._2
230- let date = $t066766746._3
231- let isValidNFT = $t066766746._4
232- let issuer = $t066766746._5
227+ let $t066826752 = provideBaseData(i, nftId)
228+ let id = $t066826752._1
229+ let caller = $t066826752._2
230+ let date = $t066826752._3
231+ let isValidNFT = $t066826752._4
232+ let issuer = $t066826752._5
233233 if (!(isValidNFT))
234234 then throw("Not a valid nft")
235235 else if (!(haveSTD(nftId, toString(issuer))))
236236 then throw("No nft standard found on issuer account")
237237 else if (!(acceptedAssetIds(asset)))
238238 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
239239 else if (!(validateMinSell(price)))
240240 then throw("Wrong minimum sell price")
241241 else [StringEntry((getSaleKey(caller, nftId, toString(issuer)) + "_OPEN"), ((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + toString(issuer)) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
242242 }
243243 }
244244
245245
246246
247247 @Callable(i)
248248 func updateSalePrice (nftId,price,asset) = {
249- let $t075417611 = provideBaseData(i, nftId)
250- let id = $t075417611._1
251- let caller = $t075417611._2
252- let date = $t075417611._3
253- let isValidNFT = $t075417611._4
254- let issuer = $t075417611._5
249+ let $t075477617 = provideBaseData(i, nftId)
250+ let id = $t075477617._1
251+ let caller = $t075477617._2
252+ let date = $t075477617._3
253+ let isValidNFT = $t075477617._4
254+ let issuer = $t075477617._5
255255 if (!(isValidNFT))
256256 then throw("Not a valid nft")
257257 else {
258258 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
259259 if ((saleOwner != caller))
260260 then throw("You don't own this NFT")
261261 else {
262262 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
263263 if ((saleStatus != "OPEN"))
264264 then throw("Sale not active")
265265 else if (!(acceptedAssetIds(asset)))
266266 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
267267 else if (!(validateMinSell(price)))
268268 then throw("Wrong minimum sell price")
269269 else {
270270 let saleKey = getSaleKey(caller, nftId, toString(issuer))
271271 let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
272272 [StringEntry((saleKey + "_OPEN"), ((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]))]
273273 }
274274 }
275275 }
276276 }
277277
278278
279279
280280 @Callable(i)
281281 func cancelSale (nftId) = {
282- let $t086638881 = provideBaseData(i, nftId)
283- let id = $t086638881._1
284- let caller = $t086638881._2
285- let date = $t086638881._3
286- let isValidNFT = $t086638881._4
287- let issuer = $t086638881._5
282+ let $t086698887 = provideBaseData(i, nftId)
283+ let id = $t086698887._1
284+ let caller = $t086698887._2
285+ let date = $t086698887._3
286+ let isValidNFT = $t086698887._4
287+ let issuer = $t086698887._5
288288 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
289289 if ((saleOwner != caller))
290290 then throw("You don't own this NFT")
291291 else {
292292 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
293293 if ((saleStatus != "OPEN"))
294294 then throw("Sale not active")
295295 else {
296296 let saleKey = getSaleKey(caller, nftId, toString(issuer))
297297 let saleInfo = getStrByK((saleKey + "_OPEN"))
298298 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + caller) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CANCELLED"), ((((saleInfo + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftId))]
299299 }
300300 }
301301 }
302302
303303
304304
305305 @Callable(i)
306306 func buyNFT (nftId) = {
307- let $t097129782 = provideBaseData(i, nftId)
308- let id = $t097129782._1
309- let caller = $t097129782._2
310- let date = $t097129782._3
311- let isValidNFT = $t097129782._4
312- let issuer = $t097129782._5
307+ let $t097189788 = provideBaseData(i, nftId)
308+ let id = $t097189788._1
309+ let caller = $t097189788._2
310+ let date = $t097189788._3
311+ let isValidNFT = $t097189788._4
312+ let issuer = $t097189788._5
313313 if (!(isValidNFT))
314314 then throw("Not a valid nft")
315315 else {
316316 let saleOwner = getSaleOwnerAndStatus(nftId)
317317 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
318318 let saleInfo = getStrByK((saleKey + "_OPEN"))
319319 if ((size(saleInfo) == 0))
320320 then throw("Sale Not found!")
321321 else {
322322 let saleInfoArray = split(saleInfo, "_")
323323 if ((parseInt(saleInfoArray[1]) == 0))
324324 then throw("Offer only")
325325 else {
326- let $t01018110217 = isPayment(i)
327- let payment = $t01018110217._1
328- let amount = $t01018110217._2
326+ let $t01018710223 = isPayment(i)
327+ let payment = $t01018710223._1
328+ let amount = $t01018710223._2
329329 let paymentAssetStr = if (isDefined(payment.assetId))
330330 then toBase58String(value(payment.assetId))
331331 else ""
332332 if (if ((saleInfoArray[1] != toString(amount)))
333333 then true
334334 else (saleInfoArray[2] != paymentAssetStr))
335335 then throw("Payment infos don't match.")
336336 else {
337- let $t01073110838 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
338- let commissions = $t01073110838._1
339- let ownerFee = $t01073110838._2
340- let collectorNFT = $t01073110838._3
337+ let $t01073710844 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
338+ let commissions = $t01073710844._1
339+ let ownerFee = $t01073710844._2
340+ let collectorNFT = $t01073710844._3
341341 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((saleInfo + "_CLOSED_") + toString(date)) + "_") + id) + "_") + caller)), updateNumSales(), ownerFee, collectorNFT, commissions]
342342 }
343343 }
344344 }
345345 }
346346 }
347347
348348
349349
350350 @Callable(i)
351351 func setOffer (nftId) = {
352- let $t01123711311 = provideBaseData(i, nftId)
353- let id = $t01123711311._1
354- let offerOwner = $t01123711311._2
355- let date = $t01123711311._3
356- let isValidNFT = $t01123711311._4
357- let issuer = $t01123711311._5
352+ let $t01124311317 = provideBaseData(i, nftId)
353+ let id = $t01124311317._1
354+ let offerOwner = $t01124311317._2
355+ let date = $t01124311317._3
356+ let isValidNFT = $t01124311317._4
357+ let issuer = $t01124311317._5
358358 if (!(isValidNFT))
359359 then throw("Not a valid nft")
360360 else {
361- let $t01137211408 = isPayment(i)
362- let payment = $t01137211408._1
363- let amount = $t01137211408._2
361+ let $t01137811414 = isPayment(i)
362+ let payment = $t01137811414._1
363+ let amount = $t01137811414._2
364364 let assetId = if (!(isDefined(payment.assetId)))
365365 then "WAVES"
366366 else toBase58String(value(payment.assetId))
367367 if (!(acceptedAssetIds(assetId)))
368368 then throw("asset not accepted")
369369 else if ((amount == 0))
370370 then throw("Offer of 0 not allowed")
371371 else if (!(validateMinSell(amount)))
372372 then throw("Wrong minimum sell price")
373373 else {
374374 let saleOwner = getSaleOwnerAndStatus(nftId)
375375 [StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + toString(issuer)) + "_") + offerOwner) + "_") + id))]
376376 }
377377 }
378378 }
379379
380380
381381
382382 @Callable(i)
383383 func acceptOffer (nftId,offerId,offerOwner) = {
384- let $t01219712267 = provideBaseData(i, nftId)
385- let id = $t01219712267._1
386- let caller = $t01219712267._2
387- let date = $t01219712267._3
388- let isValidNFT = $t01219712267._4
389- let issuer = $t01219712267._5
384+ let $t01220312273 = provideBaseData(i, nftId)
385+ let id = $t01220312273._1
386+ let caller = $t01220312273._2
387+ let date = $t01220312273._3
388+ let isValidNFT = $t01220312273._4
389+ let issuer = $t01220312273._5
390390 if (!(isValidNFT))
391391 then throw("Not a valid nft")
392392 else {
393393 let saleOwner = getSaleOwnerAndStatus(nftId)
394394 if ((caller != saleOwner))
395395 then throw("Only sale owner can accept offer")
396396 else {
397397 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
398- let $t01252112576 = getBidData(bidKey)
399- let bidDataArr = $t01252112576._1
400- let assetId = $t01252112576._2
401- let bidData = $t01252112576._3
398+ let $t01252712582 = getBidData(bidKey)
399+ let bidDataArr = $t01252712582._1
400+ let assetId = $t01252712582._2
401+ let bidData = $t01252712582._3
402402 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
403403 let saleInfo = getStrByK((saleKey + "_OPEN"))
404404 if ((size(saleInfo) == 0))
405405 then throw("Sale Not found!")
406406 else {
407407 let amount = value(parseInt(bidDataArr[1]))
408- let $t01281212918 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
409- let commissions = $t01281212918._1
410- let ownerFee = $t01281212918._2
411- let collectorNFT = $t01281212918._3
408+ let $t01281812924 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
409+ let commissions = $t01281812924._1
410+ let ownerFee = $t01281812924._2
411+ let collectorNFT = $t01281812924._3
412412 let assetIdStr = if (isDefined(assetId))
413413 then toBase58String(value(assetId))
414414 else "WAVES"
415415 [DeleteEntry((saleKey + "_OPEN")), DeleteEntry((bidKey + "_OPEN")), DeleteEntry(((("sale2nd_status_" + saleOwner) + "_") + nftId)), DeleteEntry(("current_owner_on_dapp_" + nftId)), StringEntry((bidKey + "_CLOSED"), ((((bidData + "_CLOSED_") + toString(date)) + "_") + id)), StringEntry((((saleKey + "_") + id) + "_CLOSED"), ((((((((((saleInfo + "_CLOSED-OFFER_") + toString(date)) + "_") + id) + "_") + offerOwner) + "_") + toString(amount)) + "_") + assetIdStr)), updateNumSales(), ownerFee, collectorNFT, commissions]
416416 }
417417 }
418418 }
419419 }
420420
421421
422422
423423 @Callable(i)
424424 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
425- let $t01370613780 = idCallerDate(i)
426- let id = $t01370613780._1
427- let caller = $t01370613780._2
428- let date = $t01370613780._3
425+ let $t01371213786 = idCallerDate(i)
426+ let id = $t01371213786._1
427+ let caller = $t01371213786._2
428+ let date = $t01371213786._3
429429 if (if ((caller != offerOwner))
430430 then (caller != saleOwner)
431431 else false)
432432 then throw("You cannot cancel this offer.")
433433 else {
434434 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
435- let $t01395214007 = getBidData(bidKey)
436- let bidDataArr = $t01395214007._1
437- let assetId = $t01395214007._2
438- let bidData = $t01395214007._3
435+ let $t01395814013 = getBidData(bidKey)
436+ let bidDataArr = $t01395814013._1
437+ let assetId = $t01395814013._2
438+ let bidData = $t01395814013._3
439439 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
440440 }
441441 }
442442
443443

github/deemru/w8io/3ef1775 
106.11 ms