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
77
88
99 let oracleFee = value(addressFromString(getStrByK("conf_oracle_fee")))
10-
11-let userDapp = value(addressFromString(getStrByK("conf_users_dapp")))
1210
1311 let feeReceiver = getStrByK("conf_fee_receiver")
1412
170168
171169
172170 func provideBaseData (i,nftId) = {
173- let $t051625202 = idCallerDate(i)
174- let id = $t051625202._1
175- let caller = $t051625202._2
176- let date = $t051625202._3
171+ let $t050795119 = idCallerDate(i)
172+ let id = $t050795119._1
173+ let caller = $t050795119._2
174+ let date = $t050795119._3
177175 let assetDetails = value(assetInfo(fromBase58String(nftId)))
178176 let isValidNFT = NFTIsValid(assetDetails)
179177 $Tuple5(id, caller, date, isValidNFT, assetDetails.issuer)
187185
188186
189187 func haveSTD (issuer,ndftId) = {
190- let data = valueOrElse(getString(addressFromStringValue(issuer), (("std_nft_" + ndftId) + "_metadata")), "")
188+ let data = valueOrElse(getString(Address(fromBase58String(issuer)), (("std_nft_" + ndftId) + "_metadata")), "")
191189 (data != "")
192190 }
193191
217215
218216 @Callable(i)
219217 func sellNFT (price,asset) = {
220- let $t065346570 = isPayment(i)
221- let payment = $t065346570._1
222- let amount = $t065346570._2
218+ let $t064546490 = isPayment(i)
219+ let payment = $t064546490._1
220+ let amount = $t064546490._2
223221 if ((amount != 1))
224222 then throw("No NFT attached")
225223 else {
226224 let nftId = if (isDefined(payment.assetId))
227225 then toBase58String(value(payment.assetId))
228226 else throw("Waves is not a NFT.")
229- let $t067566826 = provideBaseData(i, nftId)
230- let id = $t067566826._1
231- let caller = $t067566826._2
232- let date = $t067566826._3
233- let isValidNFT = $t067566826._4
234- let issuer = $t067566826._5
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
235233 if (!(isValidNFT))
236234 then throw("Not a valid nft")
237235 else if (!(haveSTD(nftId, toString(issuer))))
248246
249247 @Callable(i)
250248 func updateSalePrice (nftId,price,asset) = {
251- let $t076217691 = provideBaseData(i, nftId)
252- let id = $t076217691._1
253- let caller = $t076217691._2
254- let date = $t076217691._3
255- let isValidNFT = $t076217691._4
256- let issuer = $t076217691._5
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
257255 if (!(isValidNFT))
258256 then throw("Not a valid nft")
259257 else {
281279
282280 @Callable(i)
283281 func cancelSale (nftId) = {
284- let $t087438961 = provideBaseData(i, nftId)
285- let id = $t087438961._1
286- let caller = $t087438961._2
287- let date = $t087438961._3
288- let isValidNFT = $t087438961._4
289- let issuer = $t087438961._5
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
290288 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
291289 if ((saleOwner != caller))
292290 then throw("You don't own this NFT")
306304
307305 @Callable(i)
308306 func buyNFT (nftId) = {
309- let $t097929862 = provideBaseData(i, nftId)
310- let id = $t097929862._1
311- let caller = $t097929862._2
312- let date = $t097929862._3
313- let isValidNFT = $t097929862._4
314- let issuer = $t097929862._5
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
315313 if (!(isValidNFT))
316314 then throw("Not a valid nft")
317315 else {
325323 if ((parseInt(saleInfoArray[1]) == 0))
326324 then throw("Offer only")
327325 else {
328- let $t01026110297 = isPayment(i)
329- let payment = $t01026110297._1
330- let amount = $t01026110297._2
326+ let $t01018110217 = isPayment(i)
327+ let payment = $t01018110217._1
328+ let amount = $t01018110217._2
331329 let paymentAssetStr = if (isDefined(payment.assetId))
332330 then toBase58String(value(payment.assetId))
333331 else ""
336334 else (saleInfoArray[2] != paymentAssetStr))
337335 then throw("Payment infos don't match.")
338336 else {
339- let $t01081110918 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
340- let commissions = $t01081110918._1
341- let ownerFee = $t01081110918._2
342- let collectorNFT = $t01081110918._3
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
343341 [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]
344342 }
345343 }
351349
352350 @Callable(i)
353351 func setOffer (nftId) = {
354- let $t01131711391 = provideBaseData(i, nftId)
355- let id = $t01131711391._1
356- let offerOwner = $t01131711391._2
357- let date = $t01131711391._3
358- let isValidNFT = $t01131711391._4
359- let issuer = $t01131711391._5
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
360358 if (!(isValidNFT))
361359 then throw("Not a valid nft")
362360 else {
363- let $t01145211488 = isPayment(i)
364- let payment = $t01145211488._1
365- let amount = $t01145211488._2
361+ let $t01137211408 = isPayment(i)
362+ let payment = $t01137211408._1
363+ let amount = $t01137211408._2
366364 let assetId = if (!(isDefined(payment.assetId)))
367365 then "WAVES"
368366 else toBase58String(value(payment.assetId))
383381
384382 @Callable(i)
385383 func acceptOffer (nftId,offerId,offerOwner) = {
386- let $t01227712347 = provideBaseData(i, nftId)
387- let id = $t01227712347._1
388- let caller = $t01227712347._2
389- let date = $t01227712347._3
390- let isValidNFT = $t01227712347._4
391- let issuer = $t01227712347._5
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
392390 if (!(isValidNFT))
393391 then throw("Not a valid nft")
394392 else {
397395 then throw("Only sale owner can accept offer")
398396 else {
399397 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
400- let $t01260112656 = getBidData(bidKey)
401- let bidDataArr = $t01260112656._1
402- let assetId = $t01260112656._2
403- let bidData = $t01260112656._3
398+ let $t01252112576 = getBidData(bidKey)
399+ let bidDataArr = $t01252112576._1
400+ let assetId = $t01252112576._2
401+ let bidData = $t01252112576._3
404402 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
405403 let saleInfo = getStrByK((saleKey + "_OPEN"))
406404 if ((size(saleInfo) == 0))
407405 then throw("Sale Not found!")
408406 else {
409407 let amount = value(parseInt(bidDataArr[1]))
410- let $t01289212998 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
411- let commissions = $t01289212998._1
412- let ownerFee = $t01289212998._2
413- let collectorNFT = $t01289212998._3
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
414412 let assetIdStr = if (isDefined(assetId))
415413 then toBase58String(value(assetId))
416414 else "WAVES"
424422
425423 @Callable(i)
426424 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
427- let $t01378613860 = idCallerDate(i)
428- let id = $t01378613860._1
429- let caller = $t01378613860._2
430- let date = $t01378613860._3
425+ let $t01370613780 = idCallerDate(i)
426+ let id = $t01370613780._1
427+ let caller = $t01370613780._2
428+ let date = $t01370613780._3
431429 if (if ((caller != offerOwner))
432430 then (caller != saleOwner)
433431 else false)
434432 then throw("You cannot cancel this offer.")
435433 else {
436434 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
437- let $t01403214087 = getBidData(bidKey)
438- let bidDataArr = $t01403214087._1
439- let assetId = $t01403214087._2
440- let bidData = $t01403214087._3
435+ let $t01395214007 = getBidData(bidKey)
436+ let bidDataArr = $t01395214007._1
437+ let assetId = $t01395214007._2
438+ let bidData = $t01395214007._3
441439 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
442440 }
443441 }
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")))
10-
11-let userDapp = value(addressFromString(getStrByK("conf_users_dapp")))
1210
1311 let feeReceiver = getStrByK("conf_fee_receiver")
1412
1513 let puzzle_art_pool = getStrByK("conf_puzzle_art_pool")
1614
1715 let usdtPPAssetId_str = getStrByK("conf_accepted_asset_USDT_PP")
1816
1917 let artAssetId_str = getStrByK("conf_accepted_asset_ART")
2018
2119 let usdcPPAssetId_str = getStrByK("conf_accepted_asset_USDC_PP")
2220
2321 let eastAssetId_str = getStrByK("conf_accepted_asset_EAST")
2422
2523 let puzzleAssetId_str = getStrByK("conf_accepted_asset_PUZZLE")
2624
2725 let ethPPAssetId_str = getStrByK("conf_accepted_asset_ETH_PP")
2826
2927 let wavesAssetId_str = "WAVES"
3028
3129 let usdtPPAssetId = fromBase58String(usdtPPAssetId_str)
3230
3331 let artAssetId = fromBase58String(artAssetId_str)
3432
3533 let usdcPPAssetId = fromBase58String(usdcPPAssetId_str)
3634
3735 let eastAssetId = fromBase58String(eastAssetId_str)
3836
3937 let puzzleAssetId = fromBase58String(puzzleAssetId_str)
4038
4139 let ethPPAssetId = fromBase58String(ethPPAssetId_str)
4240
4341 let wavesAssetId = base58''
4442
4543 let all_accepted_assets = [usdtPPAssetId_str, artAssetId_str, usdcPPAssetId_str, eastAssetId_str, puzzleAssetId_str, wavesAssetId_str, ethPPAssetId_str]
4644
4745 let chris = getStrByK("conf_admin_1")
4846
4947 let commission_fee = 3
5048
5149 let dappRunningKey = "conf_dapp_is_running"
5250
5351 let maintenanceMSGKey = "conf_maintenance_msg"
5452
5553 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
5654
5755 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
5856
5957 let numSalesK = "num_sales"
6058
6159 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
6260
6361
6462 func getSaleKey (caller,nftId,issuer) = ((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + issuer)
6563
6664
6765 func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
6866
6967
7068 func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
7169
7270
7371 func idCallerDate (i) = if (!(dappRunning))
7472 then throw(maintenanceMSG)
7573 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
7674
7775
7876 func isPayment (i) = if ((size(i.payments) == 0))
7977 then throw("No payment attached")
8078 else {
8179 let payment = value(i.payments[0])
8280 let amount = value(payment.amount)
8381 $Tuple2(payment, amount)
8482 }
8583
8684
8785 func NFTIsValid (assetDetails) = if (if ((assetDetails.quantity == 1))
8886 then (assetDetails.decimals == 0)
8987 else false)
9088 then (assetDetails.reissuable == false)
9189 else false
9290
9391
9492 func acceptedAssetIds (assetId) = if (!(containsElement(all_accepted_assets, assetId)))
9593 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
9694 else true
9795
9896
9997 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
10098 then unit
10199 else fromBase58String(assetId)
102100
103101
104102 func getSaleOwnerAndStatus (nftid) = {
105103 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
106104 if ((size(saleOwner) == 0))
107105 then throw("NFT not found")
108106 else {
109107 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
110108 if ((saleStatus != "OPEN"))
111109 then throw("NFT not for sale")
112110 else saleOwner
113111 }
114112 }
115113
116114
117115 func getBidData (key) = {
118116 let bidData = getStrByK((key + "_OPEN"))
119117 if ((bidData == ""))
120118 then throw("Offer not found")
121119 else {
122120 let bidDataArr = split(bidData, "_")
123121 let assetId = getBidAssetId(bidDataArr[2])
124122 $Tuple3(bidDataArr, assetId, bidData)
125123 }
126124 }
127125
128126
129127 func getBalance (assetId) = match assetId {
130128 case b: ByteVector =>
131129 assetBalance(this, b)
132130 case _ =>
133131 wavesBalance(this).available
134132 }
135133
136134
137135 func setTransfers (amount,assetId,nftid,saleOwner,caller) = {
138136 let amountForSign = fraction(amount, commission_fee, 100)
139137 let amountForOwner = (amount - amountForSign)
140138 let amount_commission_for_sign_to_swap = amountForSign
141139 let amount_art_before = getBalance(artAssetId)
142140 if ((amount_art_before == amount_art_before))
143141 then {
144142 let swap_fee_to_art = if ((assetId != artAssetId))
145143 then invoke(Address(fromBase58String(puzzle_art_pool)), "swap", [artAssetId_str, 1], [AttachedPayment(assetId, amount_commission_for_sign_to_swap)])
146144 else unit
147145 if ((swap_fee_to_art == swap_fee_to_art))
148146 then {
149147 let amount_art_after = getBalance(artAssetId)
150148 if ((amount_art_after == amount_art_after))
151149 then {
152150 let commissions = ScriptTransfer(Address(fromBase58String(feeReceiver)), if ((assetId == artAssetId))
153151 then amountForSign
154152 else (amount_art_after - amount_art_before), artAssetId)
155153 let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
156154 let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
157155 $Tuple3(commissions, ownerFee, collectorNFT)
158156 }
159157 else throw("Strict value is not equal to itself.")
160158 }
161159 else throw("Strict value is not equal to itself.")
162160 }
163161 else throw("Strict value is not equal to itself.")
164162 }
165163
166164
167165 func validateMinSell (price) = if ((0 >= price))
168166 then throw("Wrong minimum sell price")
169167 else true
170168
171169
172170 func provideBaseData (i,nftId) = {
173- let $t051625202 = idCallerDate(i)
174- let id = $t051625202._1
175- let caller = $t051625202._2
176- let date = $t051625202._3
171+ let $t050795119 = idCallerDate(i)
172+ let id = $t050795119._1
173+ let caller = $t050795119._2
174+ let date = $t050795119._3
177175 let assetDetails = value(assetInfo(fromBase58String(nftId)))
178176 let isValidNFT = NFTIsValid(assetDetails)
179177 $Tuple5(id, caller, date, isValidNFT, assetDetails.issuer)
180178 }
181179
182180
183181 func updateNumSales () = {
184182 let numSales = getIntByK(numSalesK)
185183 IntegerEntry(numSalesK, (numSales + 1))
186184 }
187185
188186
189187 func haveSTD (issuer,ndftId) = {
190- let data = valueOrElse(getString(addressFromStringValue(issuer), (("std_nft_" + ndftId) + "_metadata")), "")
188+ let data = valueOrElse(getString(Address(fromBase58String(issuer)), (("std_nft_" + ndftId) + "_metadata")), "")
191189 (data != "")
192190 }
193191
194192
195193 @Callable(invoke)
196194 func setConf (key,val) = {
197195 let caller = toString(invoke.caller)
198196 if (containsElement([chris, toString(this)], caller))
199197 then if (contains(key, "conf_"))
200198 then [StringEntry(key, val)]
201199 else throw("Entries starting with conf_ only")
202200 else throw("You are not allowed to change this")
203201 }
204202
205203
206204
207205 @Callable(invoke)
208206 func appRunning (isLive,message) = {
209207 let caller = toString(invoke.caller)
210208 let id = toBase58String(invoke.transactionId)
211209 if (containsElement([chris, toString(this)], caller))
212210 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
213211 else throw("You are not allowed to change this")
214212 }
215213
216214
217215
218216 @Callable(i)
219217 func sellNFT (price,asset) = {
220- let $t065346570 = isPayment(i)
221- let payment = $t065346570._1
222- let amount = $t065346570._2
218+ let $t064546490 = isPayment(i)
219+ let payment = $t064546490._1
220+ let amount = $t064546490._2
223221 if ((amount != 1))
224222 then throw("No NFT attached")
225223 else {
226224 let nftId = if (isDefined(payment.assetId))
227225 then toBase58String(value(payment.assetId))
228226 else throw("Waves is not a NFT.")
229- let $t067566826 = provideBaseData(i, nftId)
230- let id = $t067566826._1
231- let caller = $t067566826._2
232- let date = $t067566826._3
233- let isValidNFT = $t067566826._4
234- let issuer = $t067566826._5
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
235233 if (!(isValidNFT))
236234 then throw("Not a valid nft")
237235 else if (!(haveSTD(nftId, toString(issuer))))
238236 then throw("No nft standard found on issuer account")
239237 else if (!(acceptedAssetIds(asset)))
240238 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
241239 else if (!(validateMinSell(price)))
242240 then throw("Wrong minimum sell price")
243241 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)]
244242 }
245243 }
246244
247245
248246
249247 @Callable(i)
250248 func updateSalePrice (nftId,price,asset) = {
251- let $t076217691 = provideBaseData(i, nftId)
252- let id = $t076217691._1
253- let caller = $t076217691._2
254- let date = $t076217691._3
255- let isValidNFT = $t076217691._4
256- let issuer = $t076217691._5
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
257255 if (!(isValidNFT))
258256 then throw("Not a valid nft")
259257 else {
260258 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
261259 if ((saleOwner != caller))
262260 then throw("You don't own this NFT")
263261 else {
264262 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
265263 if ((saleStatus != "OPEN"))
266264 then throw("Sale not active")
267265 else if (!(acceptedAssetIds(asset)))
268266 then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted")
269267 else if (!(validateMinSell(price)))
270268 then throw("Wrong minimum sell price")
271269 else {
272270 let saleKey = getSaleKey(caller, nftId, toString(issuer))
273271 let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
274272 [StringEntry((saleKey + "_OPEN"), ((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]))]
275273 }
276274 }
277275 }
278276 }
279277
280278
281279
282280 @Callable(i)
283281 func cancelSale (nftId) = {
284- let $t087438961 = provideBaseData(i, nftId)
285- let id = $t087438961._1
286- let caller = $t087438961._2
287- let date = $t087438961._3
288- let isValidNFT = $t087438961._4
289- let issuer = $t087438961._5
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
290288 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
291289 if ((saleOwner != caller))
292290 then throw("You don't own this NFT")
293291 else {
294292 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
295293 if ((saleStatus != "OPEN"))
296294 then throw("Sale not active")
297295 else {
298296 let saleKey = getSaleKey(caller, nftId, toString(issuer))
299297 let saleInfo = getStrByK((saleKey + "_OPEN"))
300298 [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))]
301299 }
302300 }
303301 }
304302
305303
306304
307305 @Callable(i)
308306 func buyNFT (nftId) = {
309- let $t097929862 = provideBaseData(i, nftId)
310- let id = $t097929862._1
311- let caller = $t097929862._2
312- let date = $t097929862._3
313- let isValidNFT = $t097929862._4
314- let issuer = $t097929862._5
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
315313 if (!(isValidNFT))
316314 then throw("Not a valid nft")
317315 else {
318316 let saleOwner = getSaleOwnerAndStatus(nftId)
319317 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
320318 let saleInfo = getStrByK((saleKey + "_OPEN"))
321319 if ((size(saleInfo) == 0))
322320 then throw("Sale Not found!")
323321 else {
324322 let saleInfoArray = split(saleInfo, "_")
325323 if ((parseInt(saleInfoArray[1]) == 0))
326324 then throw("Offer only")
327325 else {
328- let $t01026110297 = isPayment(i)
329- let payment = $t01026110297._1
330- let amount = $t01026110297._2
326+ let $t01018110217 = isPayment(i)
327+ let payment = $t01018110217._1
328+ let amount = $t01018110217._2
331329 let paymentAssetStr = if (isDefined(payment.assetId))
332330 then toBase58String(value(payment.assetId))
333331 else ""
334332 if (if ((saleInfoArray[1] != toString(amount)))
335333 then true
336334 else (saleInfoArray[2] != paymentAssetStr))
337335 then throw("Payment infos don't match.")
338336 else {
339- let $t01081110918 = setTransfers(amount, payment.assetId, nftId, saleOwner, caller)
340- let commissions = $t01081110918._1
341- let ownerFee = $t01081110918._2
342- let collectorNFT = $t01081110918._3
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
343341 [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]
344342 }
345343 }
346344 }
347345 }
348346 }
349347
350348
351349
352350 @Callable(i)
353351 func setOffer (nftId) = {
354- let $t01131711391 = provideBaseData(i, nftId)
355- let id = $t01131711391._1
356- let offerOwner = $t01131711391._2
357- let date = $t01131711391._3
358- let isValidNFT = $t01131711391._4
359- let issuer = $t01131711391._5
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
360358 if (!(isValidNFT))
361359 then throw("Not a valid nft")
362360 else {
363- let $t01145211488 = isPayment(i)
364- let payment = $t01145211488._1
365- let amount = $t01145211488._2
361+ let $t01137211408 = isPayment(i)
362+ let payment = $t01137211408._1
363+ let amount = $t01137211408._2
366364 let assetId = if (!(isDefined(payment.assetId)))
367365 then "WAVES"
368366 else toBase58String(value(payment.assetId))
369367 if (!(acceptedAssetIds(assetId)))
370368 then throw("asset not accepted")
371369 else if ((amount == 0))
372370 then throw("Offer of 0 not allowed")
373371 else if (!(validateMinSell(amount)))
374372 then throw("Wrong minimum sell price")
375373 else {
376374 let saleOwner = getSaleOwnerAndStatus(nftId)
377375 [StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + toString(issuer)) + "_") + offerOwner) + "_") + id))]
378376 }
379377 }
380378 }
381379
382380
383381
384382 @Callable(i)
385383 func acceptOffer (nftId,offerId,offerOwner) = {
386- let $t01227712347 = provideBaseData(i, nftId)
387- let id = $t01227712347._1
388- let caller = $t01227712347._2
389- let date = $t01227712347._3
390- let isValidNFT = $t01227712347._4
391- let issuer = $t01227712347._5
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
392390 if (!(isValidNFT))
393391 then throw("Not a valid nft")
394392 else {
395393 let saleOwner = getSaleOwnerAndStatus(nftId)
396394 if ((caller != saleOwner))
397395 then throw("Only sale owner can accept offer")
398396 else {
399397 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
400- let $t01260112656 = getBidData(bidKey)
401- let bidDataArr = $t01260112656._1
402- let assetId = $t01260112656._2
403- let bidData = $t01260112656._3
398+ let $t01252112576 = getBidData(bidKey)
399+ let bidDataArr = $t01252112576._1
400+ let assetId = $t01252112576._2
401+ let bidData = $t01252112576._3
404402 let saleKey = getSaleKey(saleOwner, nftId, toString(issuer))
405403 let saleInfo = getStrByK((saleKey + "_OPEN"))
406404 if ((size(saleInfo) == 0))
407405 then throw("Sale Not found!")
408406 else {
409407 let amount = value(parseInt(bidDataArr[1]))
410- let $t01289212998 = setTransfers(amount, assetId, nftId, saleOwner, bidDataArr[6])
411- let commissions = $t01289212998._1
412- let ownerFee = $t01289212998._2
413- let collectorNFT = $t01289212998._3
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
414412 let assetIdStr = if (isDefined(assetId))
415413 then toBase58String(value(assetId))
416414 else "WAVES"
417415 [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]
418416 }
419417 }
420418 }
421419 }
422420
423421
424422
425423 @Callable(i)
426424 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
427- let $t01378613860 = idCallerDate(i)
428- let id = $t01378613860._1
429- let caller = $t01378613860._2
430- let date = $t01378613860._3
425+ let $t01370613780 = idCallerDate(i)
426+ let id = $t01370613780._1
427+ let caller = $t01370613780._2
428+ let date = $t01370613780._3
431429 if (if ((caller != offerOwner))
432430 then (caller != saleOwner)
433431 else false)
434432 then throw("You cannot cancel this offer.")
435433 else {
436434 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
437- let $t01403214087 = getBidData(bidKey)
438- let bidDataArr = $t01403214087._1
439- let assetId = $t01403214087._2
440- let bidData = $t01403214087._3
435+ let $t01395214007 = getBidData(bidKey)
436+ let bidDataArr = $t01395214007._1
437+ let assetId = $t01395214007._2
438+ let bidData = $t01395214007._3
441439 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
442440 }
443441 }
444442
445443

github/deemru/w8io/3ef1775 
114.67 ms