tx · 9MVDuhoKEa8VzhKYBxqeLeHpAppz91D6ezQYgUdvP5aG

3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz:  -0.01300000 Waves

2023.11.14 10:55 [2842731] smart account 3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz > SELF 0.00000000 Waves

{ "type": 13, "id": "9MVDuhoKEa8VzhKYBxqeLeHpAppz91D6ezQYgUdvP5aG", "fee": 1300000, "feeAssetId": null, "timestamp": 1699948538717, "version": 2, "chainId": 84, "sender": "3N4ishKFoRooDxWoaCWSp3CUEoDmVepA1bz", "senderPublicKey": "9p5EiEVtTgiMBxj67TfVfstKuQs1LHPxoZRiRhyS5oiN", "proofs": [ "3iQJviKRRXhAa9dLFSwPavthZDMpMryW1Hazz5KAXhRANZRiViqEiPY83AtVBbvj43UYBEEs1x98jMEN683gNx3S" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgILAAHVkVSU0lPTgIFMS4wLjABCWdldFN0ckJ5SwEDa2V5CQELdmFsdWVPckVsc2UCCQCdCAIFBHRoaXMFA2tleQIAAAlvcmFjbGVGZWUJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECD2NvbmZfb3JhY2xlX2ZlZQALZmVlUmVjZWl2ZXIJAQlnZXRTdHJCeUsBAhFjb25mX2ZlZV9yZWNlaXZlcgAPcHV6emxlX2FydF9wb29sCQEJZ2V0U3RyQnlLAQIUY29uZl9wdXp6bGVfYXJ0X3Bvb2wAEXVzZHRQUEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIbY29uZl9hY2NlcHRlZF9hc3NldF9VU0RUX1BQAA5hcnRBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECF2NvbmZfYWNjZXB0ZWRfYXNzZXRfQVJUABF1c2RjUFBBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECG2NvbmZfYWNjZXB0ZWRfYXNzZXRfVVNEQ19QUAAPZWFzdEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIYY29uZl9hY2NlcHRlZF9hc3NldF9FQVNUABFwdXp6bGVBc3NldElkX3N0cgkBCWdldFN0ckJ5SwECGmNvbmZfYWNjZXB0ZWRfYXNzZXRfUFVaWkxFABBldGhQUEFzc2V0SWRfc3RyCQEJZ2V0U3RyQnlLAQIaY29uZl9hY2NlcHRlZF9hc3NldF9FVEhfUFAAEHdhdmVzQXNzZXRJZF9zdHICBVdBVkVTAA11c2R0UFBBc3NldElkCQDZBAEFEXVzZHRQUEFzc2V0SWRfc3RyAAphcnRBc3NldElkCQDZBAEFDmFydEFzc2V0SWRfc3RyAA11c2RjUFBBc3NldElkCQDZBAEFEXVzZGNQUEFzc2V0SWRfc3RyAAtlYXN0QXNzZXRJZAkA2QQBBQ9lYXN0QXNzZXRJZF9zdHIADXB1enpsZUFzc2V0SWQJANkEAQURcHV6emxlQXNzZXRJZF9zdHIADGV0aFBQQXNzZXRJZAkA2QQBBRBldGhQUEFzc2V0SWRfc3RyAAx3YXZlc0Fzc2V0SWQBAAATYWxsX2FjY2VwdGVkX2Fzc2V0cwkAzAgCBRF1c2R0UFBBc3NldElkX3N0cgkAzAgCBQ5hcnRBc3NldElkX3N0cgkAzAgCBRF1c2RjUFBBc3NldElkX3N0cgkAzAgCBQ9lYXN0QXNzZXRJZF9zdHIJAMwIAgURcHV6emxlQXNzZXRJZF9zdHIJAMwIAgUQd2F2ZXNBc3NldElkX3N0cgkAzAgCBRBldGhQUEFzc2V0SWRfc3RyBQNuaWwABWNocmlzCQEJZ2V0U3RyQnlLAQIMY29uZl9hZG1pbl8xAA5jb21taXNzaW9uX2ZlZQADAA5kYXBwUnVubmluZ0tleQIUY29uZl9kYXBwX2lzX3J1bm5pbmcAEW1haW50ZW5hbmNlTVNHS2V5AhRjb25mX21haW50ZW5hbmNlX21zZwALZGFwcFJ1bm5pbmcJAQt2YWx1ZU9yRWxzZQIJAJsIAgUEdGhpcwUOZGFwcFJ1bm5pbmdLZXkGAA5tYWludGVuYW5jZU1TRwkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBRFtYWludGVuYW5jZU1TR0tleQIAAAludW1TYWxlc0sCCW51bV9zYWxlcwEJZ2V0SW50QnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABCmdldFNhbGVLZXkDBmNhbGxlcgVuZnRJZAZpc3N1ZXIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1zYWxlMm5kX2luZm9fBQZjYWxsZXICAV8FBW5mdElkAgFfBQZpc3N1ZXIBCWdldEJpZEtleQQKb2ZmZXJPd25lcgVuZnRJZAlzYWxlT3duZXIHb2ZmZXJJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglvZmZlcjJuZF8FCm9mZmVyT3duZXICAV8FBW5mdElkAgFfBQlzYWxlT3duZXICAV8FB29mZmVySWQBE2dldEludEJ5S0Zyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQlpc1BheW1lbnQBAWkDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAkAlAoCBQdwYXltZW50BQZhbW91bnQBCk5GVElzVmFsaWQBDGFzc2V0RGV0YWlscwMDCQAAAggFDGFzc2V0RGV0YWlscwhxdWFudGl0eQABCQAAAggFDGFzc2V0RGV0YWlscwhkZWNpbWFscwAABwkAAAIIBQxhc3NldERldGFpbHMKcmVpc3N1YWJsZQcHARBhY2NlcHRlZEFzc2V0SWRzAQdhc3NldElkAwkBASEBCQEPY29udGFpbnNFbGVtZW50AgUTYWxsX2FjY2VwdGVkX2Fzc2V0cwUHYXNzZXRJZAkAAgECQE9ubHkgJEFSVCwgVVNEVC1QUCwgVVNEQy1QUCwgRUFTVCwgUFVaWkxFLCBFVEggb3IgV0FWRVMgYWNjZXB0ZWQGAQ1nZXRCaWRBc3NldElkAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFbmZ0aWQECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0aWQDCQAAAgkAsQIBBQlzYWxlT3duZXIAAAkAAgECDU5GVCBub3QgZm91bmQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0aWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIQTkZUIG5vdCBmb3Igc2FsZQUJc2FsZU93bmVyAQpnZXRCaWREYXRhAQNrZXkEB2JpZERhdGEJAQlnZXRTdHJCeUsBCQCsAgIFA2tleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQIPT2ZmZXIgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8EB2Fzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAIJAJUKAwUKYmlkRGF0YUFycgUHYXNzZXRJZAUHYmlkRGF0YQEKZ2V0QmFsYW5jZQEHYXNzZXRJZAQHJG1hdGNoMAUHYXNzZXRJZAMJAAECBQckbWF0Y2gwAgpCeXRlVmVjdG9yBAFiBQckbWF0Y2gwCQDwBwIFBHRoaXMFAWIICQDvBwEFBHRoaXMJYXZhaWxhYmxlAQxzZXRUcmFuc2ZlcnMFBmFtb3VudAdhc3NldElkBW5mdGlkCXNhbGVPd25lcgZjYWxsZXIEDWFtb3VudEZvclNpZ24JAGsDBQZhbW91bnQFDmNvbW1pc3Npb25fZmVlAGQEDmFtb3VudEZvck93bmVyCQBlAgUGYW1vdW50BQ1hbW91bnRGb3JTaWduBCJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQ1hbW91bnRGb3JTaWduBBFhbW91bnRfYXJ0X2JlZm9yZQkBCmdldEJhbGFuY2UBBQphcnRBc3NldElkAwkAAAIFEWFtb3VudF9hcnRfYmVmb3JlBRFhbW91bnRfYXJ0X2JlZm9yZQQPc3dhcF9mZWVfdG9fYXJ0AwkBAiE9AgUHYXNzZXRJZAUKYXJ0QXNzZXRJZAkA/AcECQEHQWRkcmVzcwEJANkEAQUPcHV6emxlX2FydF9wb29sAgRzd2FwCQDMCAIFDmFydEFzc2V0SWRfc3RyCQDMCAIAAQUDbmlsCQDMCAIJAQ9BdHRhY2hlZFBheW1lbnQCBQdhc3NldElkBSJhbW91bnRfY29tbWlzc2lvbl9mb3Jfc2lnbl90b19zd2FwBQNuaWwFBHVuaXQDCQAAAgUPc3dhcF9mZWVfdG9fYXJ0BQ9zd2FwX2ZlZV90b19hcnQEEGFtb3VudF9hcnRfYWZ0ZXIJAQpnZXRCYWxhbmNlAQUKYXJ0QXNzZXRJZAMJAAACBRBhbW91bnRfYXJ0X2FmdGVyBRBhbW91bnRfYXJ0X2FmdGVyBAtjb21taXNzaW9ucwkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyAwkAAAIFB2Fzc2V0SWQFCmFydEFzc2V0SWQFDWFtb3VudEZvclNpZ24JAGUCBRBhbW91bnRfYXJ0X2FmdGVyBRFhbW91bnRfYXJ0X2JlZm9yZQUKYXJ0QXNzZXRJZAQIb3duZXJGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQlzYWxlT3duZXIFDmFtb3VudEZvck93bmVyBQdhc3NldElkBAxjb2xsZWN0b3JORlQJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQkA2QQBBQVuZnRpZAkAlQoDBQtjb21taXNzaW9ucwUIb3duZXJGZWUFDGNvbGxlY3Rvck5GVAkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgkAAgECJFN0cmljdCB2YWx1ZSBpcyBub3QgZXF1YWwgdG8gaXRzZWxmLgEPdmFsaWRhdGVNaW5TZWxsAQVwcmljZQMJAGcCAAAFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBgEPcHJvdmlkZUJhc2VEYXRhAgFpBW5mdElkBAskdDA1MDc5NTExOQkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAULJHQwNTA3OTUxMTkCXzEEBmNhbGxlcggFCyR0MDUwNzk1MTE5Al8yBARkYXRlCAULJHQwNTA3OTUxMTkCXzMEDGFzc2V0RGV0YWlscwkBBXZhbHVlAQkA7AcBCQDZBAEFBW5mdElkBAppc1ZhbGlkTkZUCQEKTkZUSXNWYWxpZAEFDGFzc2V0RGV0YWlscwkAlwoFBQJpZAUGY2FsbGVyBQRkYXRlBQppc1ZhbGlkTkZUCAUMYXNzZXREZXRhaWxzBmlzc3VlcgEOdXBkYXRlTnVtU2FsZXMABAhudW1TYWxlcwkBCWdldEludEJ5SwEFCW51bVNhbGVzSwkBDEludGVnZXJFbnRyeQIFCW51bVNhbGVzSwkAZAIFCG51bVNhbGVzAAEBB2hhdmVTVEQCBmlzc3VlcgZuZGZ0SWQEBGRhdGEJAQt2YWx1ZU9yRWxzZQIJAJ0IAgkBB0FkZHJlc3MBCQDZBAEFBmlzc3VlcgkArAICCQCsAgICCHN0ZF9uZnRfBQZuZGZ0SWQCCV9tZXRhZGF0YQIACQECIT0CBQRkYXRhAgAJBmludm9rZQEHc2V0Q29uZgIDa2V5A3ZhbAQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQhjb250YWlucwIFA2tleQIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBCmFwcFJ1bm5pbmcCBmlzTGl2ZQdtZXNzYWdlBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEAmlkCQDYBAEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDmRhcHBSdW5uaW5nS2V5BQZpc0xpdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgURbWFpbnRlbmFuY2VNU0dLZXkFB21lc3NhZ2UFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEHc2VsbE5GVAIFcHJpY2UFYXNzZXQECyR0MDY0NTQ2NDkwCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFCyR0MDY0NTQ2NDkwAl8xBAZhbW91bnQIBQskdDA2NDU0NjQ5MAJfMgMJAQIhPQIFBmFtb3VudAABCQACAQIPTm8gTkZUIGF0dGFjaGVkBAVuZnRJZAMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhNXYXZlcyBpcyBub3QgYSBORlQuBAskdDA2Njc2Njc0NgkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFCyR0MDY2NzY2NzQ2Al8xBAZjYWxsZXIIBQskdDA2Njc2Njc0NgJfMgQEZGF0ZQgFCyR0MDY2NzY2NzQ2Al8zBAppc1ZhbGlkTkZUCAULJHQwNjY3NjY3NDYCXzQEBmlzc3VlcggFCyR0MDY2NzY2NzQ2Al81AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0AwkBASEBCQEHaGF2ZVNURAIFBW5mdElkCQClCAEFBmlzc3VlcgkAAgECJ05vIG5mdCBzdGFuZGFyZCBmb3VuZCBvbiBpc3N1ZXIgYWNjb3VudAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECQE9ubHkgJEFSVCwgVVNEVC1QUCwgVVNEQy1QUCwgRUFTVCwgUFVaWkxFLCBFVEggb3IgV0FWRVMgYWNjZXB0ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwBBQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQpnZXRTYWxlS2V5AwUGY2FsbGVyBQVuZnRJZAkApQgBBQZpc3N1ZXICBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUEZGF0ZQIBXwkApAMBBQVwcmljZQIBXwUFYXNzZXQCAV8FBW5mdElkAgFfCQClCAEFBmlzc3VlcgIBXwUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAgRPUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQFBmNhbGxlcgUDbmlsAWkBD3VwZGF0ZVNhbGVQcmljZQMFbmZ0SWQFcHJpY2UFYXNzZXQECyR0MDc1NDE3NjExCQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAULJHQwNzU0MTc2MTECXzEEBmNhbGxlcggFCyR0MDc1NDE3NjExAl8yBARkYXRlCAULJHQwNzU0MTc2MTECXzMECmlzVmFsaWRORlQIBQskdDA3NTQxNzYxMQJfNAQGaXNzdWVyCAULJHQwNzU0MTc2MTECXzUDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQDCQECIT0CBQlzYWxlT3duZXIFBmNhbGxlcgkAAgECFllvdSBkb24ndCBvd24gdGhpcyBORlQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIPU2FsZSBub3QgYWN0aXZlAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFBWFzc2V0CQACAQJAT25seSAkQVJULCBVU0RULVBQLCBVU0RDLVBQLCBFQVNULCBQVVpaTEUsIEVUSCBvciBXQVZFUyBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAEFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQMFBmNhbGxlcgUFbmZ0SWQJAKUIAQUGaXNzdWVyBAhzYWxlSW5mbwkAtQkCCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgIBXwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAJEDAgUIc2FsZUluZm8AAAIBXwkApAMBBQVwcmljZQIBXwUFYXNzZXQCAV8JAJEDAgUIc2FsZUluZm8AAwIBXwkAkQMCBQhzYWxlSW5mbwAEAgFfCQCRAwIFCHNhbGVJbmZvAAUFA25pbAFpAQpjYW5jZWxTYWxlAQVuZnRJZAQLJHQwODY2Mzg4ODEJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQskdDA4NjYzODg4MQJfMQQGY2FsbGVyCAULJHQwODY2Mzg4ODECXzIEBGRhdGUIBQskdDA4NjYzODg4MQJfMwQKaXNWYWxpZE5GVAgFCyR0MDg2NjM4ODgxAl80BAZpc3N1ZXIIBQskdDA4NjYzODg4MQJfNQQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAMJAQIhPQIFCXNhbGVPd25lcgUGY2FsbGVyCQACAQIWWW91IGRvbid0IG93biB0aGlzIE5GVAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAg9TYWxlIG5vdCBhY3RpdmUEB3NhbGVLZXkJAQpnZXRTYWxlS2V5AwUGY2FsbGVyBQVuZnRJZAkApQgBBQZpc3N1ZXIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgpfQ0FOQ0VMTEVECQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEJANkEAQUFbmZ0SWQFA25pbAFpAQZidXlORlQBBW5mdElkBAskdDA5NzEyOTc4MgkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFCyR0MDk3MTI5NzgyAl8xBAZjYWxsZXIIBQskdDA5NzEyOTc4MgJfMgQEZGF0ZQgFCyR0MDk3MTI5NzgyAl8zBAppc1ZhbGlkTkZUCAULJHQwOTcxMjk3ODICXzQEBmlzc3VlcggFCyR0MDk3MTI5NzgyAl81AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAQHc2FsZUtleQkBCmdldFNhbGVLZXkDBQlzYWxlT3duZXIFBW5mdElkCQClCAEFBmlzc3VlcgQIc2FsZUluZm8JAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAwkAAAIJALECAQUIc2FsZUluZm8AAAkAAgECD1NhbGUgTm90IGZvdW5kIQQNc2FsZUluZm9BcnJheQkAtQkCBQhzYWxlSW5mbwIBXwMJAAACCQC2CQEJAJEDAgUNc2FsZUluZm9BcnJheQABAAAJAAIBAgpPZmZlciBvbmx5BA0kdDAxMDE4MTEwMjE3CQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDEwMTgxMTAyMTcCXzEEBmFtb3VudAgFDSR0MDEwMTgxMTAyMTcCXzIED3BheW1lbnRBc3NldFN0cgMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQCAAMDCQECIT0CCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQkApAMBBQZhbW91bnQGCQECIT0CCQCRAwIFDXNhbGVJbmZvQXJyYXkAAgUPcGF5bWVudEFzc2V0U3RyCQACAQIaUGF5bWVudCBpbmZvcyBkb24ndCBtYXRjaC4EDSR0MDEwNzMxMTA4MzgJAQxzZXRUcmFuc2ZlcnMFBQZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQFBW5mdElkBQlzYWxlT3duZXIFBmNhbGxlcgQLY29tbWlzc2lvbnMIBQ0kdDAxMDczMTEwODM4Al8xBAhvd25lckZlZQgFDSR0MDEwNzMxMTA4MzgCXzIEDGNvbGxlY3Rvck5GVAgFDSR0MDEwNzMxMTA4MzgCXzMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUIc2FsZUluZm8CCF9DTE9TRURfCQCkAwEFBGRhdGUCAV8FAmlkAgFfBQZjYWxsZXIJAMwIAgkBDnVwZGF0ZU51bVNhbGVzAAkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQJAMwIAgULY29tbWlzc2lvbnMFA25pbAFpAQhzZXRPZmZlcgEFbmZ0SWQEDSR0MDExMjM3MTEzMTEJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMTIzNzExMzExAl8xBApvZmZlck93bmVyCAUNJHQwMTEyMzcxMTMxMQJfMgQEZGF0ZQgFDSR0MDExMjM3MTEzMTECXzMECmlzVmFsaWRORlQIBQ0kdDAxMTIzNzExMzExAl80BAZpc3N1ZXIIBQ0kdDAxMTIzNzExMzExAl81AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BA0kdDAxMTM3MjExNDA4CQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDExMzcyMTE0MDgCXzEEBmFtb3VudAgFDSR0MDExMzcyMTE0MDgCXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFB2Fzc2V0SWQJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQAAAgUGYW1vdW50AAAJAAIBAhZPZmZlciBvZiAwIG5vdCBhbGxvd2VkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAQUGYW1vdW50CQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUEZGF0ZQIBXwkApAMBBQZhbW91bnQCAV8FB2Fzc2V0SWQCAV8FBW5mdElkAgFfCQClCAEFBmlzc3VlcgIBXwUKb2ZmZXJPd25lcgIBXwUCaWQFA25pbAFpAQthY2NlcHRPZmZlcgMFbmZ0SWQHb2ZmZXJJZApvZmZlck93bmVyBA0kdDAxMjE5NzEyMjY3CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTIxOTcxMjI2NwJfMQQGY2FsbGVyCAUNJHQwMTIxOTcxMjI2NwJfMgQEZGF0ZQgFDSR0MDEyMTk3MTIyNjcCXzMECmlzVmFsaWRORlQIBQ0kdDAxMjE5NzEyMjY3Al80BAZpc3N1ZXIIBQ0kdDAxMjE5NzEyMjY3Al81AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAMJAQIhPQIFBmNhbGxlcgUJc2FsZU93bmVyCQACAQIgT25seSBzYWxlIG93bmVyIGNhbiBhY2NlcHQgb2ZmZXIEBmJpZEtleQkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFB29mZmVySWQEDSR0MDEyNTIxMTI1NzYJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMTI1MjExMjU3NgJfMQQHYXNzZXRJZAgFDSR0MDEyNTIxMTI1NzYCXzIEB2JpZERhdGEIBQ0kdDAxMjUyMTEyNTc2Al8zBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQMFCXNhbGVPd25lcgUFbmZ0SWQJAKUIAQUGaXNzdWVyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4DCQAAAgkAsQIBBQhzYWxlSW5mbwAACQACAQIPU2FsZSBOb3QgZm91bmQhBAZhbW91bnQJAQV2YWx1ZQEJALYJAQkAkQMCBQpiaWREYXRhQXJyAAEEDSR0MDEyODEyMTI5MTgJAQxzZXRUcmFuc2ZlcnMFBQZhbW91bnQFB2Fzc2V0SWQFBW5mdElkBQlzYWxlT3duZXIJAJEDAgUKYmlkRGF0YUFycgAGBAtjb21taXNzaW9ucwgFDSR0MDEyODEyMTI5MTgCXzEECG93bmVyRmVlCAUNJHQwMTI4MTIxMjkxOAJfMgQMY29sbGVjdG9yTkZUCAUNJHQwMTI4MTIxMjkxOAJfMwQKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQdhc3NldElkCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQCBVdBVkVTCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQZiaWRLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGYmlkS2V5AgdfQ0xPU0VECQCsAgIJAKwCAgkArAICCQCsAgIFB2JpZERhdGECCF9DTE9TRURfCQCkAwEFBGRhdGUCAV8FAmlkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgdfQ0xPU0VECQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAg5fQ0xPU0VELU9GRkVSXwkApAMBBQRkYXRlAgFfBQJpZAIBXwUKb2ZmZXJPd25lcgIBXwkApAMBBQZhbW91bnQCAV8FCmFzc2V0SWRTdHIJAMwIAgkBDnVwZGF0ZU51bVNhbGVzAAkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQJAMwIAgULY29tbWlzc2lvbnMFA25pbAFpAQtjYW5jZWxPZmZlcgQFbmZ0SWQHb2ZmZXJJZApvZmZlck93bmVyCXNhbGVPd25lcgQNJHQwMTM3MDYxMzc4MAkBDGlkQ2FsbGVyRGF0ZQEFAWkEAmlkCAUNJHQwMTM3MDYxMzc4MAJfMQQGY2FsbGVyCAUNJHQwMTM3MDYxMzc4MAJfMgQEZGF0ZQgFDSR0MDEzNzA2MTM3ODACXzMDAwkBAiE9AgUGY2FsbGVyBQpvZmZlck93bmVyCQECIT0CBQZjYWxsZXIFCXNhbGVPd25lcgcJAAIBAh1Zb3UgY2Fubm90IGNhbmNlbCB0aGlzIG9mZmVyLgQGYmlkS2V5CQEJZ2V0QmlkS2V5BAUKb2ZmZXJPd25lcgUFbmZ0SWQFCXNhbGVPd25lcgUHb2ZmZXJJZAQNJHQwMTM5NTIxNDAwNwkBCmdldEJpZERhdGEBBQZiaWRLZXkECmJpZERhdGFBcnIIBQ0kdDAxMzk1MjE0MDA3Al8xBAdhc3NldElkCAUNJHQwMTM5NTIxNDAwNwJfMgQHYmlkRGF0YQgFDSR0MDEzOTUyMTQwMDcCXzMJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQZiaWRLZXkCBV9PUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgUGYmlkS2V5AgpfQ0FOQ0VMTEVECQCsAgIJAKwCAgkArAICCQCsAgIFB2JpZERhdGECC19DQU5DRUxMRURfCQCkAwEFBGRhdGUCAV8FAmlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIJAQ1wYXJzZUludFZhbHVlAQkAkQMCBQpiaWREYXRhQXJyAAEFB2Fzc2V0SWQFA25pbADIeDzC", "height": 2842731, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 48UeP9bBswD4NPobUyZXZXqQLTAWVw8tYF55NGKBiUQ4 Next: pcPJvaGRsfGkPBQ7DZGoNXSecoMZFnexh6ayTHzVKqu Diff:
OldNewDifferences
88
99 let d = value(addressFromString(b("conf_oracle_fee")))
1010
11-let e = value(addressFromString(b("conf_users_dapp")))
11+let e = b("conf_fee_receiver")
1212
13-let f = b("conf_fee_receiver")
13+let f = b("conf_puzzle_art_pool")
1414
15-let g = b("conf_puzzle_art_pool")
15+let g = b("conf_accepted_asset_USDT_PP")
1616
17-let h = b("conf_accepted_asset_USDT_PP")
17+let h = b("conf_accepted_asset_ART")
1818
19-let i = b("conf_accepted_asset_ART")
19+let i = b("conf_accepted_asset_USDC_PP")
2020
21-let j = b("conf_accepted_asset_USDC_PP")
21+let j = b("conf_accepted_asset_EAST")
2222
23-let k = b("conf_accepted_asset_EAST")
23+let k = b("conf_accepted_asset_PUZZLE")
2424
25-let l = b("conf_accepted_asset_PUZZLE")
25+let l = b("conf_accepted_asset_ETH_PP")
2626
27-let m = b("conf_accepted_asset_ETH_PP")
27+let m = "WAVES"
2828
29-let n = "WAVES"
29+let n = fromBase58String(g)
3030
3131 let o = fromBase58String(h)
3232
3838
3939 let s = fromBase58String(l)
4040
41-let t = fromBase58String(m)
41+let t = base58''
4242
43-let u = base58''
43+let u = [g, h, i, j, k, m, l]
4444
45-let v = [h, i, j, k, l, n, m]
45+let v = b("conf_admin_1")
4646
47-let w = b("conf_admin_1")
47+let w = 3
4848
49-let x = 3
49+let x = "conf_dapp_is_running"
5050
51-let y = "conf_dapp_is_running"
51+let y = "conf_maintenance_msg"
5252
53-let z = "conf_maintenance_msg"
53+let z = valueOrElse(getBoolean(this, x), true)
5454
55-let A = valueOrElse(getBoolean(this, y), true)
55+let A = valueOrElse(getString(this, y), "")
5656
57-let B = valueOrElse(getString(this, z), "")
57+let B = "num_sales"
5858
59-let C = "num_sales"
60-
61-func D (c) = valueOrElse(getInteger(this, c), 0)
59+func C (c) = valueOrElse(getInteger(this, c), 0)
6260
6361
64-func E (F,G,H) = ((((("sale2nd_info_" + F) + "_") + G) + "_") + H)
62+func D (E,F,G) = ((((("sale2nd_info_" + E) + "_") + F) + "_") + G)
6563
6664
67-func I (J,G,K,L) = ((((((("offer2nd_" + J) + "_") + G) + "_") + K) + "_") + L)
65+func H (I,F,J,K) = ((((((("offer2nd_" + I) + "_") + F) + "_") + J) + "_") + K)
6866
6967
70-func M (c) = valueOrErrorMessage(getInteger(d, c), "Integer undefine or 0 in oracle")
68+func L (c) = valueOrErrorMessage(getInteger(d, c), "Integer undefine or 0 in oracle")
7169
7270
73-func N (O) = if (!(A))
74- then throw(B)
75- else $Tuple3(toBase58String(O.transactionId), toBase58String(O.caller.bytes), lastBlock.timestamp)
71+func M (N) = if (!(z))
72+ then throw(A)
73+ else $Tuple3(toBase58String(N.transactionId), toBase58String(N.caller.bytes), lastBlock.timestamp)
7674
7775
78-func P (O) = if ((size(O.payments) == 0))
76+func O (N) = if ((size(N.payments) == 0))
7977 then throw("No payment attached")
8078 else {
81- let Q = value(O.payments[0])
82- let R = value(Q.amount)
83- $Tuple2(Q, R)
79+ let P = value(N.payments[0])
80+ let Q = value(P.amount)
81+ $Tuple2(P, Q)
8482 }
8583
8684
87-func S (T) = if (if ((T.quantity == 1))
88- then (T.decimals == 0)
85+func R (S) = if (if ((S.quantity == 1))
86+ then (S.decimals == 0)
8987 else false)
90- then (T.reissuable == false)
88+ then (S.reissuable == false)
9189 else false
9290
9391
94-func U (V) = if (!(containsElement(v, V)))
92+func T (U) = if (!(containsElement(u, U)))
9593 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
9694 else true
9795
9896
99-func W (V) = if ((V == "WAVES"))
97+func V (U) = if ((U == "WAVES"))
10098 then unit
101- else fromBase58String(V)
99+ else fromBase58String(U)
102100
103101
104-func X (Y) = {
105- let K = b(("current_owner_on_dapp_" + Y))
106- if ((size(K) == 0))
102+func W (X) = {
103+ let J = b(("current_owner_on_dapp_" + X))
104+ if ((size(J) == 0))
107105 then throw("NFT not found")
108106 else {
109- let Z = b(((("sale2nd_status_" + K) + "_") + Y))
110- if ((Z != "OPEN"))
107+ let Y = b(((("sale2nd_status_" + J) + "_") + X))
108+ if ((Y != "OPEN"))
111109 then throw("NFT not for sale")
112- else K
110+ else J
113111 }
114112 }
115113
116114
117-func aa (c) = {
118- let ab = b((c + "_OPEN"))
119- if ((ab == ""))
115+func Z (c) = {
116+ let aa = b((c + "_OPEN"))
117+ if ((aa == ""))
120118 then throw("Offer not found")
121119 else {
122- let ac = split(ab, "_")
123- let V = W(ac[2])
124- $Tuple3(ac, V, ab)
120+ let ab = split(aa, "_")
121+ let U = V(ab[2])
122+ $Tuple3(ab, U, aa)
125123 }
126124 }
127125
128126
129-func ad (V) = {
130- let ae = V
131- if ($isInstanceOf(ae, "ByteVector"))
127+func ac (U) = {
128+ let ad = U
129+ if ($isInstanceOf(ad, "ByteVector"))
132130 then {
133- let af = ae
134- assetBalance(this, af)
131+ let ae = ad
132+ assetBalance(this, ae)
135133 }
136134 else wavesBalance(this).available
137135 }
138136
139137
140-func ag (R,V,Y,K,F) = {
141- let ah = fraction(R, x, 100)
142- let ai = (R - ah)
143- let aj = ah
144- let ak = ad(p)
145- if ((ak == ak))
138+func af (Q,U,X,J,E) = {
139+ let ag = fraction(Q, w, 100)
140+ let ah = (Q - ag)
141+ let ai = ag
142+ let aj = ac(o)
143+ if ((aj == aj))
146144 then {
147- let al = if ((V != p))
148- then invoke(Address(fromBase58String(g)), "swap", [i, 1], [AttachedPayment(V, aj)])
145+ let ak = if ((U != o))
146+ then invoke(Address(fromBase58String(f)), "swap", [h, 1], [AttachedPayment(U, ai)])
149147 else unit
150- if ((al == al))
148+ if ((ak == ak))
151149 then {
152- let am = ad(p)
153- if ((am == am))
150+ let al = ac(o)
151+ if ((al == al))
154152 then {
155- let an = ScriptTransfer(Address(fromBase58String(f)), if ((V == p))
156- then ah
157- else (am - ak), p)
158- let ao = ScriptTransfer(Address(fromBase58String(K)), ai, V)
159- let ap = ScriptTransfer(Address(fromBase58String(F)), 1, fromBase58String(Y))
160- $Tuple3(an, ao, ap)
153+ let am = ScriptTransfer(Address(fromBase58String(e)), if ((U == o))
154+ then ag
155+ else (al - aj), o)
156+ let an = ScriptTransfer(Address(fromBase58String(J)), ah, U)
157+ let ao = ScriptTransfer(Address(fromBase58String(E)), 1, fromBase58String(X))
158+ $Tuple3(am, an, ao)
161159 }
162160 else throw("Strict value is not equal to itself.")
163161 }
167165 }
168166
169167
170-func aq (ar) = if ((0 >= ar))
168+func ap (aq) = if ((0 >= aq))
171169 then throw("Wrong minimum sell price")
172170 else true
173171
174172
175-func as (O,G) = {
176- let at = N(O)
177- let au = at._1
178- let F = at._2
179- let av = at._3
180- let T = value(assetInfo(fromBase58String(G)))
181- let aw = S(T)
182- $Tuple5(au, F, av, aw, T.issuer)
173+func ar (N,F) = {
174+ let as = M(N)
175+ let at = as._1
176+ let E = as._2
177+ let au = as._3
178+ let S = value(assetInfo(fromBase58String(F)))
179+ let av = R(S)
180+ $Tuple5(at, E, au, av, S.issuer)
183181 }
184182
185183
186-func ax () = {
187- let ay = D(C)
188- IntegerEntry(C, (ay + 1))
184+func aw () = {
185+ let ax = C(B)
186+ IntegerEntry(B, (ax + 1))
189187 }
190188
191189
192-func az (H,aA) = {
193- let aB = valueOrElse(getString(addressFromStringValue(H), (("std_nft_" + aA) + "_metadata")), "")
194- (aB != "")
190+func ay (G,az) = {
191+ let aA = valueOrElse(getString(Address(fromBase58String(G)), (("std_nft_" + az) + "_metadata")), "")
192+ (aA != "")
195193 }
196194
197195
198-@Callable(aC)
199-func setConf (c,aD) = {
200- let F = toString(aC.caller)
201- if (containsElement([w, toString(this)], F))
196+@Callable(aB)
197+func setConf (c,aC) = {
198+ let E = toString(aB.caller)
199+ if (containsElement([v, toString(this)], E))
202200 then if (contains(c, "conf_"))
203- then [StringEntry(c, aD)]
201+ then [StringEntry(c, aC)]
204202 else throw("Entries starting with conf_ only")
205203 else throw("You are not allowed to change this")
206204 }
207205
208206
209207
210-@Callable(aC)
211-func appRunning (aE,aF) = {
212- let F = toString(aC.caller)
213- let au = toBase58String(aC.transactionId)
214- if (containsElement([w, toString(this)], F))
215- then [BooleanEntry(y, aE), StringEntry(z, aF)]
208+@Callable(aB)
209+func appRunning (aD,aE) = {
210+ let E = toString(aB.caller)
211+ let at = toBase58String(aB.transactionId)
212+ if (containsElement([v, toString(this)], E))
213+ then [BooleanEntry(x, aD), StringEntry(y, aE)]
216214 else throw("You are not allowed to change this")
217215 }
218216
219217
220218
221-@Callable(O)
222-func sellNFT (ar,aG) = {
223- let aH = P(O)
224- let Q = aH._1
225- let R = aH._2
226- if ((R != 1))
219+@Callable(N)
220+func sellNFT (aq,aF) = {
221+ let aG = O(N)
222+ let P = aG._1
223+ let Q = aG._2
224+ if ((Q != 1))
227225 then throw("No NFT attached")
228226 else {
229- let G = if (isDefined(Q.assetId))
230- then toBase58String(value(Q.assetId))
227+ let F = if (isDefined(P.assetId))
228+ then toBase58String(value(P.assetId))
231229 else throw("Waves is not a NFT.")
232- let aI = as(O, G)
233- let au = aI._1
234- let F = aI._2
235- let av = aI._3
236- let aw = aI._4
237- let H = aI._5
238- if (!(aw))
230+ let aH = ar(N, F)
231+ let at = aH._1
232+ let E = aH._2
233+ let au = aH._3
234+ let av = aH._4
235+ let G = aH._5
236+ if (!(av))
239237 then throw("Not a valid nft")
240- else if (!(az(G, toString(H))))
238+ else if (!(ay(F, toString(G))))
241239 then throw("No nft standard found on issuer account")
242- else if (!(U(aG)))
240+ else if (!(T(aF)))
243241 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
244- else if (!(aq(ar)))
242+ else if (!(ap(aq)))
245243 then throw("Wrong minimum sell price")
246- else [StringEntry((E(F, G, toString(H)) + "_OPEN"), ((((((((((toString(av) + "_") + toString(ar)) + "_") + aG) + "_") + G) + "_") + toString(H)) + "_") + au)), StringEntry(((("sale2nd_status_" + F) + "_") + G), "OPEN"), StringEntry(("current_owner_on_dapp_" + G), F)]
244+ else [StringEntry((D(E, F, toString(G)) + "_OPEN"), ((((((((((toString(au) + "_") + toString(aq)) + "_") + aF) + "_") + F) + "_") + toString(G)) + "_") + at)), StringEntry(((("sale2nd_status_" + E) + "_") + F), "OPEN"), StringEntry(("current_owner_on_dapp_" + F), E)]
247245 }
248246 }
249247
250248
251249
252-@Callable(O)
253-func updateSalePrice (G,ar,aG) = {
254- let aJ = as(O, G)
255- let au = aJ._1
256- let F = aJ._2
257- let av = aJ._3
258- let aw = aJ._4
259- let H = aJ._5
260- if (!(aw))
250+@Callable(N)
251+func updateSalePrice (F,aq,aF) = {
252+ let aI = ar(N, F)
253+ let at = aI._1
254+ let E = aI._2
255+ let au = aI._3
256+ let av = aI._4
257+ let G = aI._5
258+ if (!(av))
261259 then throw("Not a valid nft")
262260 else {
263- let K = b(("current_owner_on_dapp_" + G))
264- if ((K != F))
261+ let J = b(("current_owner_on_dapp_" + F))
262+ if ((J != E))
265263 then throw("You don't own this NFT")
266264 else {
267- let Z = b(((("sale2nd_status_" + F) + "_") + G))
268- if ((Z != "OPEN"))
265+ let Y = b(((("sale2nd_status_" + E) + "_") + F))
266+ if ((Y != "OPEN"))
269267 then throw("Sale not active")
270- else if (!(U(aG)))
268+ else if (!(T(aF)))
271269 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
272- else if (!(aq(ar)))
270+ else if (!(ap(aq)))
273271 then throw("Wrong minimum sell price")
274272 else {
275- let aK = E(F, G, toString(H))
276- let aL = split(b((aK + "_OPEN")), "_")
277-[StringEntry((aK + "_OPEN"), ((((((((((aL[0] + "_") + toString(ar)) + "_") + aG) + "_") + aL[3]) + "_") + aL[4]) + "_") + aL[5]))]
273+ let aJ = D(E, F, toString(G))
274+ let aK = split(b((aJ + "_OPEN")), "_")
275+[StringEntry((aJ + "_OPEN"), ((((((((((aK[0] + "_") + toString(aq)) + "_") + aF) + "_") + aK[3]) + "_") + aK[4]) + "_") + aK[5]))]
278276 }
279277 }
280278 }
282280
283281
284282
285-@Callable(O)
286-func cancelSale (G) = {
287- let aM = as(O, G)
288- let au = aM._1
289- let F = aM._2
290- let av = aM._3
291- let aw = aM._4
292- let H = aM._5
293- let K = b(("current_owner_on_dapp_" + G))
294- if ((K != F))
283+@Callable(N)
284+func cancelSale (F) = {
285+ let aL = ar(N, F)
286+ let at = aL._1
287+ let E = aL._2
288+ let au = aL._3
289+ let av = aL._4
290+ let G = aL._5
291+ let J = b(("current_owner_on_dapp_" + F))
292+ if ((J != E))
295293 then throw("You don't own this NFT")
296294 else {
297- let Z = b(((("sale2nd_status_" + F) + "_") + G))
298- if ((Z != "OPEN"))
295+ let Y = b(((("sale2nd_status_" + E) + "_") + F))
296+ if ((Y != "OPEN"))
299297 then throw("Sale not active")
300298 else {
301- let aK = E(F, G, toString(H))
302- let aL = b((aK + "_OPEN"))
303-[DeleteEntry((aK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + F) + "_") + G)), DeleteEntry(("current_owner_on_dapp_" + G)), StringEntry((((aK + "_") + au) + "_CANCELLED"), ((((aL + "_CANCELLED_") + toString(av)) + "_") + au)), ScriptTransfer(Address(fromBase58String(F)), 1, fromBase58String(G))]
299+ let aJ = D(E, F, toString(G))
300+ let aK = b((aJ + "_OPEN"))
301+[DeleteEntry((aJ + "_OPEN")), DeleteEntry(((("sale2nd_status_" + E) + "_") + F)), DeleteEntry(("current_owner_on_dapp_" + F)), StringEntry((((aJ + "_") + at) + "_CANCELLED"), ((((aK + "_CANCELLED_") + toString(au)) + "_") + at)), ScriptTransfer(Address(fromBase58String(E)), 1, fromBase58String(F))]
304302 }
305303 }
306304 }
307305
308306
309307
310-@Callable(O)
311-func buyNFT (G) = {
312- let aN = as(O, G)
313- let au = aN._1
314- let F = aN._2
315- let av = aN._3
316- let aw = aN._4
317- let H = aN._5
318- if (!(aw))
308+@Callable(N)
309+func buyNFT (F) = {
310+ let aM = ar(N, F)
311+ let at = aM._1
312+ let E = aM._2
313+ let au = aM._3
314+ let av = aM._4
315+ let G = aM._5
316+ if (!(av))
319317 then throw("Not a valid nft")
320318 else {
321- let K = X(G)
322- let aK = E(K, G, toString(H))
323- let aL = b((aK + "_OPEN"))
324- if ((size(aL) == 0))
319+ let J = W(F)
320+ let aJ = D(J, F, toString(G))
321+ let aK = b((aJ + "_OPEN"))
322+ if ((size(aK) == 0))
325323 then throw("Sale Not found!")
326324 else {
327- let aO = split(aL, "_")
328- if ((parseInt(aO[1]) == 0))
325+ let aN = split(aK, "_")
326+ if ((parseInt(aN[1]) == 0))
329327 then throw("Offer only")
330328 else {
331- let aP = P(O)
332- let Q = aP._1
333- let R = aP._2
334- let aQ = if (isDefined(Q.assetId))
335- then toBase58String(value(Q.assetId))
329+ let aO = O(N)
330+ let P = aO._1
331+ let Q = aO._2
332+ let aP = if (isDefined(P.assetId))
333+ then toBase58String(value(P.assetId))
336334 else ""
337- if (if ((aO[1] != toString(R)))
335+ if (if ((aN[1] != toString(Q)))
338336 then true
339- else (aO[2] != aQ))
337+ else (aN[2] != aP))
340338 then throw("Payment infos don't match.")
341339 else {
342- let aR = ag(R, Q.assetId, G, K, F)
343- let an = aR._1
344- let ao = aR._2
345- let ap = aR._3
346-[DeleteEntry((aK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + K) + "_") + G)), DeleteEntry(("current_owner_on_dapp_" + G)), StringEntry((((aK + "_") + au) + "_CLOSED"), ((((((aL + "_CLOSED_") + toString(av)) + "_") + au) + "_") + F)), ax(), ao, ap, an]
340+ let aQ = af(Q, P.assetId, F, J, E)
341+ let am = aQ._1
342+ let an = aQ._2
343+ let ao = aQ._3
344+[DeleteEntry((aJ + "_OPEN")), DeleteEntry(((("sale2nd_status_" + J) + "_") + F)), DeleteEntry(("current_owner_on_dapp_" + F)), StringEntry((((aJ + "_") + at) + "_CLOSED"), ((((((aK + "_CLOSED_") + toString(au)) + "_") + at) + "_") + E)), aw(), an, ao, am]
347345 }
348346 }
349347 }
352350
353351
354352
355-@Callable(O)
356-func setOffer (G) = {
357- let aS = as(O, G)
358- let au = aS._1
359- let J = aS._2
360- let av = aS._3
361- let aw = aS._4
362- let H = aS._5
363- if (!(aw))
353+@Callable(N)
354+func setOffer (F) = {
355+ let aR = ar(N, F)
356+ let at = aR._1
357+ let I = aR._2
358+ let au = aR._3
359+ let av = aR._4
360+ let G = aR._5
361+ if (!(av))
364362 then throw("Not a valid nft")
365363 else {
366- let aT = P(O)
367- let Q = aT._1
368- let R = aT._2
369- let V = if (!(isDefined(Q.assetId)))
364+ let aS = O(N)
365+ let P = aS._1
366+ let Q = aS._2
367+ let U = if (!(isDefined(P.assetId)))
370368 then "WAVES"
371- else toBase58String(value(Q.assetId))
372- if (!(U(V)))
369+ else toBase58String(value(P.assetId))
370+ if (!(T(U)))
373371 then throw("asset not accepted")
374- else if ((R == 0))
372+ else if ((Q == 0))
375373 then throw("Offer of 0 not allowed")
376- else if (!(aq(R)))
374+ else if (!(ap(Q)))
377375 then throw("Wrong minimum sell price")
378376 else {
379- let K = X(G)
380-[StringEntry((I(J, G, K, au) + "_OPEN"), ((((((((((((toString(av) + "_") + toString(R)) + "_") + V) + "_") + G) + "_") + toString(H)) + "_") + J) + "_") + au))]
377+ let J = W(F)
378+[StringEntry((H(I, F, J, at) + "_OPEN"), ((((((((((((toString(au) + "_") + toString(Q)) + "_") + U) + "_") + F) + "_") + toString(G)) + "_") + I) + "_") + at))]
381379 }
382380 }
383381 }
384382
385383
386384
387-@Callable(O)
388-func acceptOffer (G,L,J) = {
389- let aU = as(O, G)
390- let au = aU._1
391- let F = aU._2
392- let av = aU._3
393- let aw = aU._4
394- let H = aU._5
395- if (!(aw))
385+@Callable(N)
386+func acceptOffer (F,K,I) = {
387+ let aT = ar(N, F)
388+ let at = aT._1
389+ let E = aT._2
390+ let au = aT._3
391+ let av = aT._4
392+ let G = aT._5
393+ if (!(av))
396394 then throw("Not a valid nft")
397395 else {
398- let K = X(G)
399- if ((F != K))
396+ let J = W(F)
397+ if ((E != J))
400398 then throw("Only sale owner can accept offer")
401399 else {
402- let aV = I(J, G, K, L)
403- let aW = aa(aV)
404- let ac = aW._1
405- let V = aW._2
406- let ab = aW._3
407- let aK = E(K, G, toString(H))
408- let aL = b((aK + "_OPEN"))
409- if ((size(aL) == 0))
400+ let aU = H(I, F, J, K)
401+ let aV = Z(aU)
402+ let ab = aV._1
403+ let U = aV._2
404+ let aa = aV._3
405+ let aJ = D(J, F, toString(G))
406+ let aK = b((aJ + "_OPEN"))
407+ if ((size(aK) == 0))
410408 then throw("Sale Not found!")
411409 else {
412- let R = value(parseInt(ac[1]))
413- let aX = ag(R, V, G, K, ac[6])
414- let an = aX._1
415- let ao = aX._2
416- let ap = aX._3
417- let aY = if (isDefined(V))
418- then toBase58String(value(V))
410+ let Q = value(parseInt(ab[1]))
411+ let aW = af(Q, U, F, J, ab[6])
412+ let am = aW._1
413+ let an = aW._2
414+ let ao = aW._3
415+ let aX = if (isDefined(U))
416+ then toBase58String(value(U))
419417 else "WAVES"
420-[DeleteEntry((aK + "_OPEN")), DeleteEntry((aV + "_OPEN")), DeleteEntry(((("sale2nd_status_" + K) + "_") + G)), DeleteEntry(("current_owner_on_dapp_" + G)), StringEntry((aV + "_CLOSED"), ((((ab + "_CLOSED_") + toString(av)) + "_") + au)), StringEntry((((aK + "_") + au) + "_CLOSED"), ((((((((((aL + "_CLOSED-OFFER_") + toString(av)) + "_") + au) + "_") + J) + "_") + toString(R)) + "_") + aY)), ax(), ao, ap, an]
418+[DeleteEntry((aJ + "_OPEN")), DeleteEntry((aU + "_OPEN")), DeleteEntry(((("sale2nd_status_" + J) + "_") + F)), DeleteEntry(("current_owner_on_dapp_" + F)), StringEntry((aU + "_CLOSED"), ((((aa + "_CLOSED_") + toString(au)) + "_") + at)), StringEntry((((aJ + "_") + at) + "_CLOSED"), ((((((((((aK + "_CLOSED-OFFER_") + toString(au)) + "_") + at) + "_") + I) + "_") + toString(Q)) + "_") + aX)), aw(), an, ao, am]
421419 }
422420 }
423421 }
425423
426424
427425
428-@Callable(O)
429-func cancelOffer (G,L,J,K) = {
430- let aZ = N(O)
431- let au = aZ._1
432- let F = aZ._2
433- let av = aZ._3
434- if (if ((F != J))
435- then (F != K)
426+@Callable(N)
427+func cancelOffer (F,K,I,J) = {
428+ let aY = M(N)
429+ let at = aY._1
430+ let E = aY._2
431+ let au = aY._3
432+ if (if ((E != I))
433+ then (E != J)
436434 else false)
437435 then throw("You cannot cancel this offer.")
438436 else {
439- let aV = I(J, G, K, L)
440- let ba = aa(aV)
441- let ac = ba._1
442- let V = ba._2
443- let ab = ba._3
444-[DeleteEntry((aV + "_OPEN")), StringEntry((aV + "_CANCELLED"), ((((ab + "_CANCELLED_") + toString(av)) + "_") + au)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(ac[1]), V)]
437+ let aU = H(I, F, J, K)
438+ let aZ = Z(aU)
439+ let ab = aZ._1
440+ let U = aZ._2
441+ let aa = aZ._3
442+[DeleteEntry((aU + "_OPEN")), StringEntry((aU + "_CANCELLED"), ((((aa + "_CANCELLED_") + toString(au)) + "_") + at)), ScriptTransfer(Address(fromBase58String(E)), parseIntValue(ab[1]), U)]
445443 }
446444 }
447445
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "1.0.0"
55
66 func b (c) = valueOrElse(getString(this, c), "")
77
88
99 let d = value(addressFromString(b("conf_oracle_fee")))
1010
11-let e = value(addressFromString(b("conf_users_dapp")))
11+let e = b("conf_fee_receiver")
1212
13-let f = b("conf_fee_receiver")
13+let f = b("conf_puzzle_art_pool")
1414
15-let g = b("conf_puzzle_art_pool")
15+let g = b("conf_accepted_asset_USDT_PP")
1616
17-let h = b("conf_accepted_asset_USDT_PP")
17+let h = b("conf_accepted_asset_ART")
1818
19-let i = b("conf_accepted_asset_ART")
19+let i = b("conf_accepted_asset_USDC_PP")
2020
21-let j = b("conf_accepted_asset_USDC_PP")
21+let j = b("conf_accepted_asset_EAST")
2222
23-let k = b("conf_accepted_asset_EAST")
23+let k = b("conf_accepted_asset_PUZZLE")
2424
25-let l = b("conf_accepted_asset_PUZZLE")
25+let l = b("conf_accepted_asset_ETH_PP")
2626
27-let m = b("conf_accepted_asset_ETH_PP")
27+let m = "WAVES"
2828
29-let n = "WAVES"
29+let n = fromBase58String(g)
3030
3131 let o = fromBase58String(h)
3232
3333 let p = fromBase58String(i)
3434
3535 let q = fromBase58String(j)
3636
3737 let r = fromBase58String(k)
3838
3939 let s = fromBase58String(l)
4040
41-let t = fromBase58String(m)
41+let t = base58''
4242
43-let u = base58''
43+let u = [g, h, i, j, k, m, l]
4444
45-let v = [h, i, j, k, l, n, m]
45+let v = b("conf_admin_1")
4646
47-let w = b("conf_admin_1")
47+let w = 3
4848
49-let x = 3
49+let x = "conf_dapp_is_running"
5050
51-let y = "conf_dapp_is_running"
51+let y = "conf_maintenance_msg"
5252
53-let z = "conf_maintenance_msg"
53+let z = valueOrElse(getBoolean(this, x), true)
5454
55-let A = valueOrElse(getBoolean(this, y), true)
55+let A = valueOrElse(getString(this, y), "")
5656
57-let B = valueOrElse(getString(this, z), "")
57+let B = "num_sales"
5858
59-let C = "num_sales"
60-
61-func D (c) = valueOrElse(getInteger(this, c), 0)
59+func C (c) = valueOrElse(getInteger(this, c), 0)
6260
6361
64-func E (F,G,H) = ((((("sale2nd_info_" + F) + "_") + G) + "_") + H)
62+func D (E,F,G) = ((((("sale2nd_info_" + E) + "_") + F) + "_") + G)
6563
6664
67-func I (J,G,K,L) = ((((((("offer2nd_" + J) + "_") + G) + "_") + K) + "_") + L)
65+func H (I,F,J,K) = ((((((("offer2nd_" + I) + "_") + F) + "_") + J) + "_") + K)
6866
6967
70-func M (c) = valueOrErrorMessage(getInteger(d, c), "Integer undefine or 0 in oracle")
68+func L (c) = valueOrErrorMessage(getInteger(d, c), "Integer undefine or 0 in oracle")
7169
7270
73-func N (O) = if (!(A))
74- then throw(B)
75- else $Tuple3(toBase58String(O.transactionId), toBase58String(O.caller.bytes), lastBlock.timestamp)
71+func M (N) = if (!(z))
72+ then throw(A)
73+ else $Tuple3(toBase58String(N.transactionId), toBase58String(N.caller.bytes), lastBlock.timestamp)
7674
7775
78-func P (O) = if ((size(O.payments) == 0))
76+func O (N) = if ((size(N.payments) == 0))
7977 then throw("No payment attached")
8078 else {
81- let Q = value(O.payments[0])
82- let R = value(Q.amount)
83- $Tuple2(Q, R)
79+ let P = value(N.payments[0])
80+ let Q = value(P.amount)
81+ $Tuple2(P, Q)
8482 }
8583
8684
87-func S (T) = if (if ((T.quantity == 1))
88- then (T.decimals == 0)
85+func R (S) = if (if ((S.quantity == 1))
86+ then (S.decimals == 0)
8987 else false)
90- then (T.reissuable == false)
88+ then (S.reissuable == false)
9189 else false
9290
9391
94-func U (V) = if (!(containsElement(v, V)))
92+func T (U) = if (!(containsElement(u, U)))
9593 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
9694 else true
9795
9896
99-func W (V) = if ((V == "WAVES"))
97+func V (U) = if ((U == "WAVES"))
10098 then unit
101- else fromBase58String(V)
99+ else fromBase58String(U)
102100
103101
104-func X (Y) = {
105- let K = b(("current_owner_on_dapp_" + Y))
106- if ((size(K) == 0))
102+func W (X) = {
103+ let J = b(("current_owner_on_dapp_" + X))
104+ if ((size(J) == 0))
107105 then throw("NFT not found")
108106 else {
109- let Z = b(((("sale2nd_status_" + K) + "_") + Y))
110- if ((Z != "OPEN"))
107+ let Y = b(((("sale2nd_status_" + J) + "_") + X))
108+ if ((Y != "OPEN"))
111109 then throw("NFT not for sale")
112- else K
110+ else J
113111 }
114112 }
115113
116114
117-func aa (c) = {
118- let ab = b((c + "_OPEN"))
119- if ((ab == ""))
115+func Z (c) = {
116+ let aa = b((c + "_OPEN"))
117+ if ((aa == ""))
120118 then throw("Offer not found")
121119 else {
122- let ac = split(ab, "_")
123- let V = W(ac[2])
124- $Tuple3(ac, V, ab)
120+ let ab = split(aa, "_")
121+ let U = V(ab[2])
122+ $Tuple3(ab, U, aa)
125123 }
126124 }
127125
128126
129-func ad (V) = {
130- let ae = V
131- if ($isInstanceOf(ae, "ByteVector"))
127+func ac (U) = {
128+ let ad = U
129+ if ($isInstanceOf(ad, "ByteVector"))
132130 then {
133- let af = ae
134- assetBalance(this, af)
131+ let ae = ad
132+ assetBalance(this, ae)
135133 }
136134 else wavesBalance(this).available
137135 }
138136
139137
140-func ag (R,V,Y,K,F) = {
141- let ah = fraction(R, x, 100)
142- let ai = (R - ah)
143- let aj = ah
144- let ak = ad(p)
145- if ((ak == ak))
138+func af (Q,U,X,J,E) = {
139+ let ag = fraction(Q, w, 100)
140+ let ah = (Q - ag)
141+ let ai = ag
142+ let aj = ac(o)
143+ if ((aj == aj))
146144 then {
147- let al = if ((V != p))
148- then invoke(Address(fromBase58String(g)), "swap", [i, 1], [AttachedPayment(V, aj)])
145+ let ak = if ((U != o))
146+ then invoke(Address(fromBase58String(f)), "swap", [h, 1], [AttachedPayment(U, ai)])
149147 else unit
150- if ((al == al))
148+ if ((ak == ak))
151149 then {
152- let am = ad(p)
153- if ((am == am))
150+ let al = ac(o)
151+ if ((al == al))
154152 then {
155- let an = ScriptTransfer(Address(fromBase58String(f)), if ((V == p))
156- then ah
157- else (am - ak), p)
158- let ao = ScriptTransfer(Address(fromBase58String(K)), ai, V)
159- let ap = ScriptTransfer(Address(fromBase58String(F)), 1, fromBase58String(Y))
160- $Tuple3(an, ao, ap)
153+ let am = ScriptTransfer(Address(fromBase58String(e)), if ((U == o))
154+ then ag
155+ else (al - aj), o)
156+ let an = ScriptTransfer(Address(fromBase58String(J)), ah, U)
157+ let ao = ScriptTransfer(Address(fromBase58String(E)), 1, fromBase58String(X))
158+ $Tuple3(am, an, ao)
161159 }
162160 else throw("Strict value is not equal to itself.")
163161 }
164162 else throw("Strict value is not equal to itself.")
165163 }
166164 else throw("Strict value is not equal to itself.")
167165 }
168166
169167
170-func aq (ar) = if ((0 >= ar))
168+func ap (aq) = if ((0 >= aq))
171169 then throw("Wrong minimum sell price")
172170 else true
173171
174172
175-func as (O,G) = {
176- let at = N(O)
177- let au = at._1
178- let F = at._2
179- let av = at._3
180- let T = value(assetInfo(fromBase58String(G)))
181- let aw = S(T)
182- $Tuple5(au, F, av, aw, T.issuer)
173+func ar (N,F) = {
174+ let as = M(N)
175+ let at = as._1
176+ let E = as._2
177+ let au = as._3
178+ let S = value(assetInfo(fromBase58String(F)))
179+ let av = R(S)
180+ $Tuple5(at, E, au, av, S.issuer)
183181 }
184182
185183
186-func ax () = {
187- let ay = D(C)
188- IntegerEntry(C, (ay + 1))
184+func aw () = {
185+ let ax = C(B)
186+ IntegerEntry(B, (ax + 1))
189187 }
190188
191189
192-func az (H,aA) = {
193- let aB = valueOrElse(getString(addressFromStringValue(H), (("std_nft_" + aA) + "_metadata")), "")
194- (aB != "")
190+func ay (G,az) = {
191+ let aA = valueOrElse(getString(Address(fromBase58String(G)), (("std_nft_" + az) + "_metadata")), "")
192+ (aA != "")
195193 }
196194
197195
198-@Callable(aC)
199-func setConf (c,aD) = {
200- let F = toString(aC.caller)
201- if (containsElement([w, toString(this)], F))
196+@Callable(aB)
197+func setConf (c,aC) = {
198+ let E = toString(aB.caller)
199+ if (containsElement([v, toString(this)], E))
202200 then if (contains(c, "conf_"))
203- then [StringEntry(c, aD)]
201+ then [StringEntry(c, aC)]
204202 else throw("Entries starting with conf_ only")
205203 else throw("You are not allowed to change this")
206204 }
207205
208206
209207
210-@Callable(aC)
211-func appRunning (aE,aF) = {
212- let F = toString(aC.caller)
213- let au = toBase58String(aC.transactionId)
214- if (containsElement([w, toString(this)], F))
215- then [BooleanEntry(y, aE), StringEntry(z, aF)]
208+@Callable(aB)
209+func appRunning (aD,aE) = {
210+ let E = toString(aB.caller)
211+ let at = toBase58String(aB.transactionId)
212+ if (containsElement([v, toString(this)], E))
213+ then [BooleanEntry(x, aD), StringEntry(y, aE)]
216214 else throw("You are not allowed to change this")
217215 }
218216
219217
220218
221-@Callable(O)
222-func sellNFT (ar,aG) = {
223- let aH = P(O)
224- let Q = aH._1
225- let R = aH._2
226- if ((R != 1))
219+@Callable(N)
220+func sellNFT (aq,aF) = {
221+ let aG = O(N)
222+ let P = aG._1
223+ let Q = aG._2
224+ if ((Q != 1))
227225 then throw("No NFT attached")
228226 else {
229- let G = if (isDefined(Q.assetId))
230- then toBase58String(value(Q.assetId))
227+ let F = if (isDefined(P.assetId))
228+ then toBase58String(value(P.assetId))
231229 else throw("Waves is not a NFT.")
232- let aI = as(O, G)
233- let au = aI._1
234- let F = aI._2
235- let av = aI._3
236- let aw = aI._4
237- let H = aI._5
238- if (!(aw))
230+ let aH = ar(N, F)
231+ let at = aH._1
232+ let E = aH._2
233+ let au = aH._3
234+ let av = aH._4
235+ let G = aH._5
236+ if (!(av))
239237 then throw("Not a valid nft")
240- else if (!(az(G, toString(H))))
238+ else if (!(ay(F, toString(G))))
241239 then throw("No nft standard found on issuer account")
242- else if (!(U(aG)))
240+ else if (!(T(aF)))
243241 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
244- else if (!(aq(ar)))
242+ else if (!(ap(aq)))
245243 then throw("Wrong minimum sell price")
246- else [StringEntry((E(F, G, toString(H)) + "_OPEN"), ((((((((((toString(av) + "_") + toString(ar)) + "_") + aG) + "_") + G) + "_") + toString(H)) + "_") + au)), StringEntry(((("sale2nd_status_" + F) + "_") + G), "OPEN"), StringEntry(("current_owner_on_dapp_" + G), F)]
244+ else [StringEntry((D(E, F, toString(G)) + "_OPEN"), ((((((((((toString(au) + "_") + toString(aq)) + "_") + aF) + "_") + F) + "_") + toString(G)) + "_") + at)), StringEntry(((("sale2nd_status_" + E) + "_") + F), "OPEN"), StringEntry(("current_owner_on_dapp_" + F), E)]
247245 }
248246 }
249247
250248
251249
252-@Callable(O)
253-func updateSalePrice (G,ar,aG) = {
254- let aJ = as(O, G)
255- let au = aJ._1
256- let F = aJ._2
257- let av = aJ._3
258- let aw = aJ._4
259- let H = aJ._5
260- if (!(aw))
250+@Callable(N)
251+func updateSalePrice (F,aq,aF) = {
252+ let aI = ar(N, F)
253+ let at = aI._1
254+ let E = aI._2
255+ let au = aI._3
256+ let av = aI._4
257+ let G = aI._5
258+ if (!(av))
261259 then throw("Not a valid nft")
262260 else {
263- let K = b(("current_owner_on_dapp_" + G))
264- if ((K != F))
261+ let J = b(("current_owner_on_dapp_" + F))
262+ if ((J != E))
265263 then throw("You don't own this NFT")
266264 else {
267- let Z = b(((("sale2nd_status_" + F) + "_") + G))
268- if ((Z != "OPEN"))
265+ let Y = b(((("sale2nd_status_" + E) + "_") + F))
266+ if ((Y != "OPEN"))
269267 then throw("Sale not active")
270- else if (!(U(aG)))
268+ else if (!(T(aF)))
271269 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
272- else if (!(aq(ar)))
270+ else if (!(ap(aq)))
273271 then throw("Wrong minimum sell price")
274272 else {
275- let aK = E(F, G, toString(H))
276- let aL = split(b((aK + "_OPEN")), "_")
277-[StringEntry((aK + "_OPEN"), ((((((((((aL[0] + "_") + toString(ar)) + "_") + aG) + "_") + aL[3]) + "_") + aL[4]) + "_") + aL[5]))]
273+ let aJ = D(E, F, toString(G))
274+ let aK = split(b((aJ + "_OPEN")), "_")
275+[StringEntry((aJ + "_OPEN"), ((((((((((aK[0] + "_") + toString(aq)) + "_") + aF) + "_") + aK[3]) + "_") + aK[4]) + "_") + aK[5]))]
278276 }
279277 }
280278 }
281279 }
282280
283281
284282
285-@Callable(O)
286-func cancelSale (G) = {
287- let aM = as(O, G)
288- let au = aM._1
289- let F = aM._2
290- let av = aM._3
291- let aw = aM._4
292- let H = aM._5
293- let K = b(("current_owner_on_dapp_" + G))
294- if ((K != F))
283+@Callable(N)
284+func cancelSale (F) = {
285+ let aL = ar(N, F)
286+ let at = aL._1
287+ let E = aL._2
288+ let au = aL._3
289+ let av = aL._4
290+ let G = aL._5
291+ let J = b(("current_owner_on_dapp_" + F))
292+ if ((J != E))
295293 then throw("You don't own this NFT")
296294 else {
297- let Z = b(((("sale2nd_status_" + F) + "_") + G))
298- if ((Z != "OPEN"))
295+ let Y = b(((("sale2nd_status_" + E) + "_") + F))
296+ if ((Y != "OPEN"))
299297 then throw("Sale not active")
300298 else {
301- let aK = E(F, G, toString(H))
302- let aL = b((aK + "_OPEN"))
303-[DeleteEntry((aK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + F) + "_") + G)), DeleteEntry(("current_owner_on_dapp_" + G)), StringEntry((((aK + "_") + au) + "_CANCELLED"), ((((aL + "_CANCELLED_") + toString(av)) + "_") + au)), ScriptTransfer(Address(fromBase58String(F)), 1, fromBase58String(G))]
299+ let aJ = D(E, F, toString(G))
300+ let aK = b((aJ + "_OPEN"))
301+[DeleteEntry((aJ + "_OPEN")), DeleteEntry(((("sale2nd_status_" + E) + "_") + F)), DeleteEntry(("current_owner_on_dapp_" + F)), StringEntry((((aJ + "_") + at) + "_CANCELLED"), ((((aK + "_CANCELLED_") + toString(au)) + "_") + at)), ScriptTransfer(Address(fromBase58String(E)), 1, fromBase58String(F))]
304302 }
305303 }
306304 }
307305
308306
309307
310-@Callable(O)
311-func buyNFT (G) = {
312- let aN = as(O, G)
313- let au = aN._1
314- let F = aN._2
315- let av = aN._3
316- let aw = aN._4
317- let H = aN._5
318- if (!(aw))
308+@Callable(N)
309+func buyNFT (F) = {
310+ let aM = ar(N, F)
311+ let at = aM._1
312+ let E = aM._2
313+ let au = aM._3
314+ let av = aM._4
315+ let G = aM._5
316+ if (!(av))
319317 then throw("Not a valid nft")
320318 else {
321- let K = X(G)
322- let aK = E(K, G, toString(H))
323- let aL = b((aK + "_OPEN"))
324- if ((size(aL) == 0))
319+ let J = W(F)
320+ let aJ = D(J, F, toString(G))
321+ let aK = b((aJ + "_OPEN"))
322+ if ((size(aK) == 0))
325323 then throw("Sale Not found!")
326324 else {
327- let aO = split(aL, "_")
328- if ((parseInt(aO[1]) == 0))
325+ let aN = split(aK, "_")
326+ if ((parseInt(aN[1]) == 0))
329327 then throw("Offer only")
330328 else {
331- let aP = P(O)
332- let Q = aP._1
333- let R = aP._2
334- let aQ = if (isDefined(Q.assetId))
335- then toBase58String(value(Q.assetId))
329+ let aO = O(N)
330+ let P = aO._1
331+ let Q = aO._2
332+ let aP = if (isDefined(P.assetId))
333+ then toBase58String(value(P.assetId))
336334 else ""
337- if (if ((aO[1] != toString(R)))
335+ if (if ((aN[1] != toString(Q)))
338336 then true
339- else (aO[2] != aQ))
337+ else (aN[2] != aP))
340338 then throw("Payment infos don't match.")
341339 else {
342- let aR = ag(R, Q.assetId, G, K, F)
343- let an = aR._1
344- let ao = aR._2
345- let ap = aR._3
346-[DeleteEntry((aK + "_OPEN")), DeleteEntry(((("sale2nd_status_" + K) + "_") + G)), DeleteEntry(("current_owner_on_dapp_" + G)), StringEntry((((aK + "_") + au) + "_CLOSED"), ((((((aL + "_CLOSED_") + toString(av)) + "_") + au) + "_") + F)), ax(), ao, ap, an]
340+ let aQ = af(Q, P.assetId, F, J, E)
341+ let am = aQ._1
342+ let an = aQ._2
343+ let ao = aQ._3
344+[DeleteEntry((aJ + "_OPEN")), DeleteEntry(((("sale2nd_status_" + J) + "_") + F)), DeleteEntry(("current_owner_on_dapp_" + F)), StringEntry((((aJ + "_") + at) + "_CLOSED"), ((((((aK + "_CLOSED_") + toString(au)) + "_") + at) + "_") + E)), aw(), an, ao, am]
347345 }
348346 }
349347 }
350348 }
351349 }
352350
353351
354352
355-@Callable(O)
356-func setOffer (G) = {
357- let aS = as(O, G)
358- let au = aS._1
359- let J = aS._2
360- let av = aS._3
361- let aw = aS._4
362- let H = aS._5
363- if (!(aw))
353+@Callable(N)
354+func setOffer (F) = {
355+ let aR = ar(N, F)
356+ let at = aR._1
357+ let I = aR._2
358+ let au = aR._3
359+ let av = aR._4
360+ let G = aR._5
361+ if (!(av))
364362 then throw("Not a valid nft")
365363 else {
366- let aT = P(O)
367- let Q = aT._1
368- let R = aT._2
369- let V = if (!(isDefined(Q.assetId)))
364+ let aS = O(N)
365+ let P = aS._1
366+ let Q = aS._2
367+ let U = if (!(isDefined(P.assetId)))
370368 then "WAVES"
371- else toBase58String(value(Q.assetId))
372- if (!(U(V)))
369+ else toBase58String(value(P.assetId))
370+ if (!(T(U)))
373371 then throw("asset not accepted")
374- else if ((R == 0))
372+ else if ((Q == 0))
375373 then throw("Offer of 0 not allowed")
376- else if (!(aq(R)))
374+ else if (!(ap(Q)))
377375 then throw("Wrong minimum sell price")
378376 else {
379- let K = X(G)
380-[StringEntry((I(J, G, K, au) + "_OPEN"), ((((((((((((toString(av) + "_") + toString(R)) + "_") + V) + "_") + G) + "_") + toString(H)) + "_") + J) + "_") + au))]
377+ let J = W(F)
378+[StringEntry((H(I, F, J, at) + "_OPEN"), ((((((((((((toString(au) + "_") + toString(Q)) + "_") + U) + "_") + F) + "_") + toString(G)) + "_") + I) + "_") + at))]
381379 }
382380 }
383381 }
384382
385383
386384
387-@Callable(O)
388-func acceptOffer (G,L,J) = {
389- let aU = as(O, G)
390- let au = aU._1
391- let F = aU._2
392- let av = aU._3
393- let aw = aU._4
394- let H = aU._5
395- if (!(aw))
385+@Callable(N)
386+func acceptOffer (F,K,I) = {
387+ let aT = ar(N, F)
388+ let at = aT._1
389+ let E = aT._2
390+ let au = aT._3
391+ let av = aT._4
392+ let G = aT._5
393+ if (!(av))
396394 then throw("Not a valid nft")
397395 else {
398- let K = X(G)
399- if ((F != K))
396+ let J = W(F)
397+ if ((E != J))
400398 then throw("Only sale owner can accept offer")
401399 else {
402- let aV = I(J, G, K, L)
403- let aW = aa(aV)
404- let ac = aW._1
405- let V = aW._2
406- let ab = aW._3
407- let aK = E(K, G, toString(H))
408- let aL = b((aK + "_OPEN"))
409- if ((size(aL) == 0))
400+ let aU = H(I, F, J, K)
401+ let aV = Z(aU)
402+ let ab = aV._1
403+ let U = aV._2
404+ let aa = aV._3
405+ let aJ = D(J, F, toString(G))
406+ let aK = b((aJ + "_OPEN"))
407+ if ((size(aK) == 0))
410408 then throw("Sale Not found!")
411409 else {
412- let R = value(parseInt(ac[1]))
413- let aX = ag(R, V, G, K, ac[6])
414- let an = aX._1
415- let ao = aX._2
416- let ap = aX._3
417- let aY = if (isDefined(V))
418- then toBase58String(value(V))
410+ let Q = value(parseInt(ab[1]))
411+ let aW = af(Q, U, F, J, ab[6])
412+ let am = aW._1
413+ let an = aW._2
414+ let ao = aW._3
415+ let aX = if (isDefined(U))
416+ then toBase58String(value(U))
419417 else "WAVES"
420-[DeleteEntry((aK + "_OPEN")), DeleteEntry((aV + "_OPEN")), DeleteEntry(((("sale2nd_status_" + K) + "_") + G)), DeleteEntry(("current_owner_on_dapp_" + G)), StringEntry((aV + "_CLOSED"), ((((ab + "_CLOSED_") + toString(av)) + "_") + au)), StringEntry((((aK + "_") + au) + "_CLOSED"), ((((((((((aL + "_CLOSED-OFFER_") + toString(av)) + "_") + au) + "_") + J) + "_") + toString(R)) + "_") + aY)), ax(), ao, ap, an]
418+[DeleteEntry((aJ + "_OPEN")), DeleteEntry((aU + "_OPEN")), DeleteEntry(((("sale2nd_status_" + J) + "_") + F)), DeleteEntry(("current_owner_on_dapp_" + F)), StringEntry((aU + "_CLOSED"), ((((aa + "_CLOSED_") + toString(au)) + "_") + at)), StringEntry((((aJ + "_") + at) + "_CLOSED"), ((((((((((aK + "_CLOSED-OFFER_") + toString(au)) + "_") + at) + "_") + I) + "_") + toString(Q)) + "_") + aX)), aw(), an, ao, am]
421419 }
422420 }
423421 }
424422 }
425423
426424
427425
428-@Callable(O)
429-func cancelOffer (G,L,J,K) = {
430- let aZ = N(O)
431- let au = aZ._1
432- let F = aZ._2
433- let av = aZ._3
434- if (if ((F != J))
435- then (F != K)
426+@Callable(N)
427+func cancelOffer (F,K,I,J) = {
428+ let aY = M(N)
429+ let at = aY._1
430+ let E = aY._2
431+ let au = aY._3
432+ if (if ((E != I))
433+ then (E != J)
436434 else false)
437435 then throw("You cannot cancel this offer.")
438436 else {
439- let aV = I(J, G, K, L)
440- let ba = aa(aV)
441- let ac = ba._1
442- let V = ba._2
443- let ab = ba._3
444-[DeleteEntry((aV + "_OPEN")), StringEntry((aV + "_CANCELLED"), ((((ab + "_CANCELLED_") + toString(av)) + "_") + au)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(ac[1]), V)]
437+ let aU = H(I, F, J, K)
438+ let aZ = Z(aU)
439+ let ab = aZ._1
440+ let U = aZ._2
441+ let aa = aZ._3
442+[DeleteEntry((aU + "_OPEN")), StringEntry((aU + "_CANCELLED"), ((((aa + "_CANCELLED_") + toString(au)) + "_") + at)), ScriptTransfer(Address(fromBase58String(E)), parseIntValue(ab[1]), U)]
445443 }
446444 }
447445
448446

github/deemru/w8io/169f3d6 
222.28 ms