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:
Old | New | | Differences |
---|
8 | 8 | | |
---|
9 | 9 | | let d = value(addressFromString(b("conf_oracle_fee"))) |
---|
10 | 10 | | |
---|
11 | | - | let e = value(addressFromString(b("conf_users_dapp"))) |
---|
| 11 | + | let e = b("conf_fee_receiver") |
---|
12 | 12 | | |
---|
13 | | - | let f = b("conf_fee_receiver") |
---|
| 13 | + | let f = b("conf_puzzle_art_pool") |
---|
14 | 14 | | |
---|
15 | | - | let g = b("conf_puzzle_art_pool") |
---|
| 15 | + | let g = b("conf_accepted_asset_USDT_PP") |
---|
16 | 16 | | |
---|
17 | | - | let h = b("conf_accepted_asset_USDT_PP") |
---|
| 17 | + | let h = b("conf_accepted_asset_ART") |
---|
18 | 18 | | |
---|
19 | | - | let i = b("conf_accepted_asset_ART") |
---|
| 19 | + | let i = b("conf_accepted_asset_USDC_PP") |
---|
20 | 20 | | |
---|
21 | | - | let j = b("conf_accepted_asset_USDC_PP") |
---|
| 21 | + | let j = b("conf_accepted_asset_EAST") |
---|
22 | 22 | | |
---|
23 | | - | let k = b("conf_accepted_asset_EAST") |
---|
| 23 | + | let k = b("conf_accepted_asset_PUZZLE") |
---|
24 | 24 | | |
---|
25 | | - | let l = b("conf_accepted_asset_PUZZLE") |
---|
| 25 | + | let l = b("conf_accepted_asset_ETH_PP") |
---|
26 | 26 | | |
---|
27 | | - | let m = b("conf_accepted_asset_ETH_PP") |
---|
| 27 | + | let m = "WAVES" |
---|
28 | 28 | | |
---|
29 | | - | let n = "WAVES" |
---|
| 29 | + | let n = fromBase58String(g) |
---|
30 | 30 | | |
---|
31 | 31 | | let o = fromBase58String(h) |
---|
32 | 32 | | |
---|
|
38 | 38 | | |
---|
39 | 39 | | let s = fromBase58String(l) |
---|
40 | 40 | | |
---|
41 | | - | let t = fromBase58String(m) |
---|
| 41 | + | let t = base58'' |
---|
42 | 42 | | |
---|
43 | | - | let u = base58'' |
---|
| 43 | + | let u = [g, h, i, j, k, m, l] |
---|
44 | 44 | | |
---|
45 | | - | let v = [h, i, j, k, l, n, m] |
---|
| 45 | + | let v = b("conf_admin_1") |
---|
46 | 46 | | |
---|
47 | | - | let w = b("conf_admin_1") |
---|
| 47 | + | let w = 3 |
---|
48 | 48 | | |
---|
49 | | - | let x = 3 |
---|
| 49 | + | let x = "conf_dapp_is_running" |
---|
50 | 50 | | |
---|
51 | | - | let y = "conf_dapp_is_running" |
---|
| 51 | + | let y = "conf_maintenance_msg" |
---|
52 | 52 | | |
---|
53 | | - | let z = "conf_maintenance_msg" |
---|
| 53 | + | let z = valueOrElse(getBoolean(this, x), true) |
---|
54 | 54 | | |
---|
55 | | - | let A = valueOrElse(getBoolean(this, y), true) |
---|
| 55 | + | let A = valueOrElse(getString(this, y), "") |
---|
56 | 56 | | |
---|
57 | | - | let B = valueOrElse(getString(this, z), "") |
---|
| 57 | + | let B = "num_sales" |
---|
58 | 58 | | |
---|
59 | | - | let C = "num_sales" |
---|
60 | | - | |
---|
61 | | - | func D (c) = valueOrElse(getInteger(this, c), 0) |
---|
| 59 | + | func C (c) = valueOrElse(getInteger(this, c), 0) |
---|
62 | 60 | | |
---|
63 | 61 | | |
---|
64 | | - | func E (F,G,H) = ((((("sale2nd_info_" + F) + "_") + G) + "_") + H) |
---|
| 62 | + | func D (E,F,G) = ((((("sale2nd_info_" + E) + "_") + F) + "_") + G) |
---|
65 | 63 | | |
---|
66 | 64 | | |
---|
67 | | - | func I (J,G,K,L) = ((((((("offer2nd_" + J) + "_") + G) + "_") + K) + "_") + L) |
---|
| 65 | + | func H (I,F,J,K) = ((((((("offer2nd_" + I) + "_") + F) + "_") + J) + "_") + K) |
---|
68 | 66 | | |
---|
69 | 67 | | |
---|
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") |
---|
71 | 69 | | |
---|
72 | 70 | | |
---|
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) |
---|
76 | 74 | | |
---|
77 | 75 | | |
---|
78 | | - | func P (O) = if ((size(O.payments) == 0)) |
---|
| 76 | + | func O (N) = if ((size(N.payments) == 0)) |
---|
79 | 77 | | then throw("No payment attached") |
---|
80 | 78 | | 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) |
---|
84 | 82 | | } |
---|
85 | 83 | | |
---|
86 | 84 | | |
---|
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) |
---|
89 | 87 | | else false) |
---|
90 | | - | then (T.reissuable == false) |
---|
| 88 | + | then (S.reissuable == false) |
---|
91 | 89 | | else false |
---|
92 | 90 | | |
---|
93 | 91 | | |
---|
94 | | - | func U (V) = if (!(containsElement(v, V))) |
---|
| 92 | + | func T (U) = if (!(containsElement(u, U))) |
---|
95 | 93 | | then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted") |
---|
96 | 94 | | else true |
---|
97 | 95 | | |
---|
98 | 96 | | |
---|
99 | | - | func W (V) = if ((V == "WAVES")) |
---|
| 97 | + | func V (U) = if ((U == "WAVES")) |
---|
100 | 98 | | then unit |
---|
101 | | - | else fromBase58String(V) |
---|
| 99 | + | else fromBase58String(U) |
---|
102 | 100 | | |
---|
103 | 101 | | |
---|
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)) |
---|
107 | 105 | | then throw("NFT not found") |
---|
108 | 106 | | 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")) |
---|
111 | 109 | | then throw("NFT not for sale") |
---|
112 | | - | else K |
---|
| 110 | + | else J |
---|
113 | 111 | | } |
---|
114 | 112 | | } |
---|
115 | 113 | | |
---|
116 | 114 | | |
---|
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 == "")) |
---|
120 | 118 | | then throw("Offer not found") |
---|
121 | 119 | | 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) |
---|
125 | 123 | | } |
---|
126 | 124 | | } |
---|
127 | 125 | | |
---|
128 | 126 | | |
---|
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")) |
---|
132 | 130 | | then { |
---|
133 | | - | let af = ae |
---|
134 | | - | assetBalance(this, af) |
---|
| 131 | + | let ae = ad |
---|
| 132 | + | assetBalance(this, ae) |
---|
135 | 133 | | } |
---|
136 | 134 | | else wavesBalance(this).available |
---|
137 | 135 | | } |
---|
138 | 136 | | |
---|
139 | 137 | | |
---|
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)) |
---|
146 | 144 | | 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)]) |
---|
149 | 147 | | else unit |
---|
150 | | - | if ((al == al)) |
---|
| 148 | + | if ((ak == ak)) |
---|
151 | 149 | | then { |
---|
152 | | - | let am = ad(p) |
---|
153 | | - | if ((am == am)) |
---|
| 150 | + | let al = ac(o) |
---|
| 151 | + | if ((al == al)) |
---|
154 | 152 | | 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) |
---|
161 | 159 | | } |
---|
162 | 160 | | else throw("Strict value is not equal to itself.") |
---|
163 | 161 | | } |
---|
|
167 | 165 | | } |
---|
168 | 166 | | |
---|
169 | 167 | | |
---|
170 | | - | func aq (ar) = if ((0 >= ar)) |
---|
| 168 | + | func ap (aq) = if ((0 >= aq)) |
---|
171 | 169 | | then throw("Wrong minimum sell price") |
---|
172 | 170 | | else true |
---|
173 | 171 | | |
---|
174 | 172 | | |
---|
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) |
---|
183 | 181 | | } |
---|
184 | 182 | | |
---|
185 | 183 | | |
---|
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)) |
---|
189 | 187 | | } |
---|
190 | 188 | | |
---|
191 | 189 | | |
---|
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 != "") |
---|
195 | 193 | | } |
---|
196 | 194 | | |
---|
197 | 195 | | |
---|
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)) |
---|
202 | 200 | | then if (contains(c, "conf_")) |
---|
203 | | - | then [StringEntry(c, aD)] |
---|
| 201 | + | then [StringEntry(c, aC)] |
---|
204 | 202 | | else throw("Entries starting with conf_ only") |
---|
205 | 203 | | else throw("You are not allowed to change this") |
---|
206 | 204 | | } |
---|
207 | 205 | | |
---|
208 | 206 | | |
---|
209 | 207 | | |
---|
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)] |
---|
216 | 214 | | else throw("You are not allowed to change this") |
---|
217 | 215 | | } |
---|
218 | 216 | | |
---|
219 | 217 | | |
---|
220 | 218 | | |
---|
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)) |
---|
227 | 225 | | then throw("No NFT attached") |
---|
228 | 226 | | 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)) |
---|
231 | 229 | | 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)) |
---|
239 | 237 | | then throw("Not a valid nft") |
---|
240 | | - | else if (!(az(G, toString(H)))) |
---|
| 238 | + | else if (!(ay(F, toString(G)))) |
---|
241 | 239 | | then throw("No nft standard found on issuer account") |
---|
242 | | - | else if (!(U(aG))) |
---|
| 240 | + | else if (!(T(aF))) |
---|
243 | 241 | | then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted") |
---|
244 | | - | else if (!(aq(ar))) |
---|
| 242 | + | else if (!(ap(aq))) |
---|
245 | 243 | | 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)] |
---|
247 | 245 | | } |
---|
248 | 246 | | } |
---|
249 | 247 | | |
---|
250 | 248 | | |
---|
251 | 249 | | |
---|
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)) |
---|
261 | 259 | | then throw("Not a valid nft") |
---|
262 | 260 | | 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)) |
---|
265 | 263 | | then throw("You don't own this NFT") |
---|
266 | 264 | | 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")) |
---|
269 | 267 | | then throw("Sale not active") |
---|
270 | | - | else if (!(U(aG))) |
---|
| 268 | + | else if (!(T(aF))) |
---|
271 | 269 | | then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted") |
---|
272 | | - | else if (!(aq(ar))) |
---|
| 270 | + | else if (!(ap(aq))) |
---|
273 | 271 | | then throw("Wrong minimum sell price") |
---|
274 | 272 | | 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]))] |
---|
278 | 276 | | } |
---|
279 | 277 | | } |
---|
280 | 278 | | } |
---|
|
282 | 280 | | |
---|
283 | 281 | | |
---|
284 | 282 | | |
---|
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)) |
---|
295 | 293 | | then throw("You don't own this NFT") |
---|
296 | 294 | | 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")) |
---|
299 | 297 | | then throw("Sale not active") |
---|
300 | 298 | | 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))] |
---|
304 | 302 | | } |
---|
305 | 303 | | } |
---|
306 | 304 | | } |
---|
307 | 305 | | |
---|
308 | 306 | | |
---|
309 | 307 | | |
---|
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)) |
---|
319 | 317 | | then throw("Not a valid nft") |
---|
320 | 318 | | 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)) |
---|
325 | 323 | | then throw("Sale Not found!") |
---|
326 | 324 | | else { |
---|
327 | | - | let aO = split(aL, "_") |
---|
328 | | - | if ((parseInt(aO[1]) == 0)) |
---|
| 325 | + | let aN = split(aK, "_") |
---|
| 326 | + | if ((parseInt(aN[1]) == 0)) |
---|
329 | 327 | | then throw("Offer only") |
---|
330 | 328 | | 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)) |
---|
336 | 334 | | else "" |
---|
337 | | - | if (if ((aO[1] != toString(R))) |
---|
| 335 | + | if (if ((aN[1] != toString(Q))) |
---|
338 | 336 | | then true |
---|
339 | | - | else (aO[2] != aQ)) |
---|
| 337 | + | else (aN[2] != aP)) |
---|
340 | 338 | | then throw("Payment infos don't match.") |
---|
341 | 339 | | 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] |
---|
347 | 345 | | } |
---|
348 | 346 | | } |
---|
349 | 347 | | } |
---|
|
352 | 350 | | |
---|
353 | 351 | | |
---|
354 | 352 | | |
---|
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)) |
---|
364 | 362 | | then throw("Not a valid nft") |
---|
365 | 363 | | 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))) |
---|
370 | 368 | | then "WAVES" |
---|
371 | | - | else toBase58String(value(Q.assetId)) |
---|
372 | | - | if (!(U(V))) |
---|
| 369 | + | else toBase58String(value(P.assetId)) |
---|
| 370 | + | if (!(T(U))) |
---|
373 | 371 | | then throw("asset not accepted") |
---|
374 | | - | else if ((R == 0)) |
---|
| 372 | + | else if ((Q == 0)) |
---|
375 | 373 | | then throw("Offer of 0 not allowed") |
---|
376 | | - | else if (!(aq(R))) |
---|
| 374 | + | else if (!(ap(Q))) |
---|
377 | 375 | | then throw("Wrong minimum sell price") |
---|
378 | 376 | | 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))] |
---|
381 | 379 | | } |
---|
382 | 380 | | } |
---|
383 | 381 | | } |
---|
384 | 382 | | |
---|
385 | 383 | | |
---|
386 | 384 | | |
---|
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)) |
---|
396 | 394 | | then throw("Not a valid nft") |
---|
397 | 395 | | else { |
---|
398 | | - | let K = X(G) |
---|
399 | | - | if ((F != K)) |
---|
| 396 | + | let J = W(F) |
---|
| 397 | + | if ((E != J)) |
---|
400 | 398 | | then throw("Only sale owner can accept offer") |
---|
401 | 399 | | 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)) |
---|
410 | 408 | | then throw("Sale Not found!") |
---|
411 | 409 | | 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)) |
---|
419 | 417 | | 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] |
---|
421 | 419 | | } |
---|
422 | 420 | | } |
---|
423 | 421 | | } |
---|
|
425 | 423 | | |
---|
426 | 424 | | |
---|
427 | 425 | | |
---|
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) |
---|
436 | 434 | | else false) |
---|
437 | 435 | | then throw("You cannot cancel this offer.") |
---|
438 | 436 | | 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)] |
---|
445 | 443 | | } |
---|
446 | 444 | | } |
---|
447 | 445 | | |
---|
Full:
Old | New | | Differences |
---|
1 | 1 | | {-# STDLIB_VERSION 6 #-} |
---|
2 | 2 | | {-# SCRIPT_TYPE ACCOUNT #-} |
---|
3 | 3 | | {-# CONTENT_TYPE DAPP #-} |
---|
4 | 4 | | let a = "1.0.0" |
---|
5 | 5 | | |
---|
6 | 6 | | func b (c) = valueOrElse(getString(this, c), "") |
---|
7 | 7 | | |
---|
8 | 8 | | |
---|
9 | 9 | | let d = value(addressFromString(b("conf_oracle_fee"))) |
---|
10 | 10 | | |
---|
11 | | - | let e = value(addressFromString(b("conf_users_dapp"))) |
---|
| 11 | + | let e = b("conf_fee_receiver") |
---|
12 | 12 | | |
---|
13 | | - | let f = b("conf_fee_receiver") |
---|
| 13 | + | let f = b("conf_puzzle_art_pool") |
---|
14 | 14 | | |
---|
15 | | - | let g = b("conf_puzzle_art_pool") |
---|
| 15 | + | let g = b("conf_accepted_asset_USDT_PP") |
---|
16 | 16 | | |
---|
17 | | - | let h = b("conf_accepted_asset_USDT_PP") |
---|
| 17 | + | let h = b("conf_accepted_asset_ART") |
---|
18 | 18 | | |
---|
19 | | - | let i = b("conf_accepted_asset_ART") |
---|
| 19 | + | let i = b("conf_accepted_asset_USDC_PP") |
---|
20 | 20 | | |
---|
21 | | - | let j = b("conf_accepted_asset_USDC_PP") |
---|
| 21 | + | let j = b("conf_accepted_asset_EAST") |
---|
22 | 22 | | |
---|
23 | | - | let k = b("conf_accepted_asset_EAST") |
---|
| 23 | + | let k = b("conf_accepted_asset_PUZZLE") |
---|
24 | 24 | | |
---|
25 | | - | let l = b("conf_accepted_asset_PUZZLE") |
---|
| 25 | + | let l = b("conf_accepted_asset_ETH_PP") |
---|
26 | 26 | | |
---|
27 | | - | let m = b("conf_accepted_asset_ETH_PP") |
---|
| 27 | + | let m = "WAVES" |
---|
28 | 28 | | |
---|
29 | | - | let n = "WAVES" |
---|
| 29 | + | let n = fromBase58String(g) |
---|
30 | 30 | | |
---|
31 | 31 | | let o = fromBase58String(h) |
---|
32 | 32 | | |
---|
33 | 33 | | let p = fromBase58String(i) |
---|
34 | 34 | | |
---|
35 | 35 | | let q = fromBase58String(j) |
---|
36 | 36 | | |
---|
37 | 37 | | let r = fromBase58String(k) |
---|
38 | 38 | | |
---|
39 | 39 | | let s = fromBase58String(l) |
---|
40 | 40 | | |
---|
41 | | - | let t = fromBase58String(m) |
---|
| 41 | + | let t = base58'' |
---|
42 | 42 | | |
---|
43 | | - | let u = base58'' |
---|
| 43 | + | let u = [g, h, i, j, k, m, l] |
---|
44 | 44 | | |
---|
45 | | - | let v = [h, i, j, k, l, n, m] |
---|
| 45 | + | let v = b("conf_admin_1") |
---|
46 | 46 | | |
---|
47 | | - | let w = b("conf_admin_1") |
---|
| 47 | + | let w = 3 |
---|
48 | 48 | | |
---|
49 | | - | let x = 3 |
---|
| 49 | + | let x = "conf_dapp_is_running" |
---|
50 | 50 | | |
---|
51 | | - | let y = "conf_dapp_is_running" |
---|
| 51 | + | let y = "conf_maintenance_msg" |
---|
52 | 52 | | |
---|
53 | | - | let z = "conf_maintenance_msg" |
---|
| 53 | + | let z = valueOrElse(getBoolean(this, x), true) |
---|
54 | 54 | | |
---|
55 | | - | let A = valueOrElse(getBoolean(this, y), true) |
---|
| 55 | + | let A = valueOrElse(getString(this, y), "") |
---|
56 | 56 | | |
---|
57 | | - | let B = valueOrElse(getString(this, z), "") |
---|
| 57 | + | let B = "num_sales" |
---|
58 | 58 | | |
---|
59 | | - | let C = "num_sales" |
---|
60 | | - | |
---|
61 | | - | func D (c) = valueOrElse(getInteger(this, c), 0) |
---|
| 59 | + | func C (c) = valueOrElse(getInteger(this, c), 0) |
---|
62 | 60 | | |
---|
63 | 61 | | |
---|
64 | | - | func E (F,G,H) = ((((("sale2nd_info_" + F) + "_") + G) + "_") + H) |
---|
| 62 | + | func D (E,F,G) = ((((("sale2nd_info_" + E) + "_") + F) + "_") + G) |
---|
65 | 63 | | |
---|
66 | 64 | | |
---|
67 | | - | func I (J,G,K,L) = ((((((("offer2nd_" + J) + "_") + G) + "_") + K) + "_") + L) |
---|
| 65 | + | func H (I,F,J,K) = ((((((("offer2nd_" + I) + "_") + F) + "_") + J) + "_") + K) |
---|
68 | 66 | | |
---|
69 | 67 | | |
---|
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") |
---|
71 | 69 | | |
---|
72 | 70 | | |
---|
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) |
---|
76 | 74 | | |
---|
77 | 75 | | |
---|
78 | | - | func P (O) = if ((size(O.payments) == 0)) |
---|
| 76 | + | func O (N) = if ((size(N.payments) == 0)) |
---|
79 | 77 | | then throw("No payment attached") |
---|
80 | 78 | | 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) |
---|
84 | 82 | | } |
---|
85 | 83 | | |
---|
86 | 84 | | |
---|
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) |
---|
89 | 87 | | else false) |
---|
90 | | - | then (T.reissuable == false) |
---|
| 88 | + | then (S.reissuable == false) |
---|
91 | 89 | | else false |
---|
92 | 90 | | |
---|
93 | 91 | | |
---|
94 | | - | func U (V) = if (!(containsElement(v, V))) |
---|
| 92 | + | func T (U) = if (!(containsElement(u, U))) |
---|
95 | 93 | | then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted") |
---|
96 | 94 | | else true |
---|
97 | 95 | | |
---|
98 | 96 | | |
---|
99 | | - | func W (V) = if ((V == "WAVES")) |
---|
| 97 | + | func V (U) = if ((U == "WAVES")) |
---|
100 | 98 | | then unit |
---|
101 | | - | else fromBase58String(V) |
---|
| 99 | + | else fromBase58String(U) |
---|
102 | 100 | | |
---|
103 | 101 | | |
---|
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)) |
---|
107 | 105 | | then throw("NFT not found") |
---|
108 | 106 | | 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")) |
---|
111 | 109 | | then throw("NFT not for sale") |
---|
112 | | - | else K |
---|
| 110 | + | else J |
---|
113 | 111 | | } |
---|
114 | 112 | | } |
---|
115 | 113 | | |
---|
116 | 114 | | |
---|
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 == "")) |
---|
120 | 118 | | then throw("Offer not found") |
---|
121 | 119 | | 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) |
---|
125 | 123 | | } |
---|
126 | 124 | | } |
---|
127 | 125 | | |
---|
128 | 126 | | |
---|
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")) |
---|
132 | 130 | | then { |
---|
133 | | - | let af = ae |
---|
134 | | - | assetBalance(this, af) |
---|
| 131 | + | let ae = ad |
---|
| 132 | + | assetBalance(this, ae) |
---|
135 | 133 | | } |
---|
136 | 134 | | else wavesBalance(this).available |
---|
137 | 135 | | } |
---|
138 | 136 | | |
---|
139 | 137 | | |
---|
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)) |
---|
146 | 144 | | 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)]) |
---|
149 | 147 | | else unit |
---|
150 | | - | if ((al == al)) |
---|
| 148 | + | if ((ak == ak)) |
---|
151 | 149 | | then { |
---|
152 | | - | let am = ad(p) |
---|
153 | | - | if ((am == am)) |
---|
| 150 | + | let al = ac(o) |
---|
| 151 | + | if ((al == al)) |
---|
154 | 152 | | 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) |
---|
161 | 159 | | } |
---|
162 | 160 | | else throw("Strict value is not equal to itself.") |
---|
163 | 161 | | } |
---|
164 | 162 | | else throw("Strict value is not equal to itself.") |
---|
165 | 163 | | } |
---|
166 | 164 | | else throw("Strict value is not equal to itself.") |
---|
167 | 165 | | } |
---|
168 | 166 | | |
---|
169 | 167 | | |
---|
170 | | - | func aq (ar) = if ((0 >= ar)) |
---|
| 168 | + | func ap (aq) = if ((0 >= aq)) |
---|
171 | 169 | | then throw("Wrong minimum sell price") |
---|
172 | 170 | | else true |
---|
173 | 171 | | |
---|
174 | 172 | | |
---|
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) |
---|
183 | 181 | | } |
---|
184 | 182 | | |
---|
185 | 183 | | |
---|
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)) |
---|
189 | 187 | | } |
---|
190 | 188 | | |
---|
191 | 189 | | |
---|
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 != "") |
---|
195 | 193 | | } |
---|
196 | 194 | | |
---|
197 | 195 | | |
---|
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)) |
---|
202 | 200 | | then if (contains(c, "conf_")) |
---|
203 | | - | then [StringEntry(c, aD)] |
---|
| 201 | + | then [StringEntry(c, aC)] |
---|
204 | 202 | | else throw("Entries starting with conf_ only") |
---|
205 | 203 | | else throw("You are not allowed to change this") |
---|
206 | 204 | | } |
---|
207 | 205 | | |
---|
208 | 206 | | |
---|
209 | 207 | | |
---|
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)] |
---|
216 | 214 | | else throw("You are not allowed to change this") |
---|
217 | 215 | | } |
---|
218 | 216 | | |
---|
219 | 217 | | |
---|
220 | 218 | | |
---|
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)) |
---|
227 | 225 | | then throw("No NFT attached") |
---|
228 | 226 | | 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)) |
---|
231 | 229 | | 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)) |
---|
239 | 237 | | then throw("Not a valid nft") |
---|
240 | | - | else if (!(az(G, toString(H)))) |
---|
| 238 | + | else if (!(ay(F, toString(G)))) |
---|
241 | 239 | | then throw("No nft standard found on issuer account") |
---|
242 | | - | else if (!(U(aG))) |
---|
| 240 | + | else if (!(T(aF))) |
---|
243 | 241 | | then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted") |
---|
244 | | - | else if (!(aq(ar))) |
---|
| 242 | + | else if (!(ap(aq))) |
---|
245 | 243 | | 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)] |
---|
247 | 245 | | } |
---|
248 | 246 | | } |
---|
249 | 247 | | |
---|
250 | 248 | | |
---|
251 | 249 | | |
---|
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)) |
---|
261 | 259 | | then throw("Not a valid nft") |
---|
262 | 260 | | 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)) |
---|
265 | 263 | | then throw("You don't own this NFT") |
---|
266 | 264 | | 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")) |
---|
269 | 267 | | then throw("Sale not active") |
---|
270 | | - | else if (!(U(aG))) |
---|
| 268 | + | else if (!(T(aF))) |
---|
271 | 269 | | then throw("Only $ART, USDT-PP, USDC-PP, EAST, PUZZLE, ETH or WAVES accepted") |
---|
272 | | - | else if (!(aq(ar))) |
---|
| 270 | + | else if (!(ap(aq))) |
---|
273 | 271 | | then throw("Wrong minimum sell price") |
---|
274 | 272 | | 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]))] |
---|
278 | 276 | | } |
---|
279 | 277 | | } |
---|
280 | 278 | | } |
---|
281 | 279 | | } |
---|
282 | 280 | | |
---|
283 | 281 | | |
---|
284 | 282 | | |
---|
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)) |
---|
295 | 293 | | then throw("You don't own this NFT") |
---|
296 | 294 | | 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")) |
---|
299 | 297 | | then throw("Sale not active") |
---|
300 | 298 | | 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))] |
---|
304 | 302 | | } |
---|
305 | 303 | | } |
---|
306 | 304 | | } |
---|
307 | 305 | | |
---|
308 | 306 | | |
---|
309 | 307 | | |
---|
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)) |
---|
319 | 317 | | then throw("Not a valid nft") |
---|
320 | 318 | | 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)) |
---|
325 | 323 | | then throw("Sale Not found!") |
---|
326 | 324 | | else { |
---|
327 | | - | let aO = split(aL, "_") |
---|
328 | | - | if ((parseInt(aO[1]) == 0)) |
---|
| 325 | + | let aN = split(aK, "_") |
---|
| 326 | + | if ((parseInt(aN[1]) == 0)) |
---|
329 | 327 | | then throw("Offer only") |
---|
330 | 328 | | 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)) |
---|
336 | 334 | | else "" |
---|
337 | | - | if (if ((aO[1] != toString(R))) |
---|
| 335 | + | if (if ((aN[1] != toString(Q))) |
---|
338 | 336 | | then true |
---|
339 | | - | else (aO[2] != aQ)) |
---|
| 337 | + | else (aN[2] != aP)) |
---|
340 | 338 | | then throw("Payment infos don't match.") |
---|
341 | 339 | | 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] |
---|
347 | 345 | | } |
---|
348 | 346 | | } |
---|
349 | 347 | | } |
---|
350 | 348 | | } |
---|
351 | 349 | | } |
---|
352 | 350 | | |
---|
353 | 351 | | |
---|
354 | 352 | | |
---|
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)) |
---|
364 | 362 | | then throw("Not a valid nft") |
---|
365 | 363 | | 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))) |
---|
370 | 368 | | then "WAVES" |
---|
371 | | - | else toBase58String(value(Q.assetId)) |
---|
372 | | - | if (!(U(V))) |
---|
| 369 | + | else toBase58String(value(P.assetId)) |
---|
| 370 | + | if (!(T(U))) |
---|
373 | 371 | | then throw("asset not accepted") |
---|
374 | | - | else if ((R == 0)) |
---|
| 372 | + | else if ((Q == 0)) |
---|
375 | 373 | | then throw("Offer of 0 not allowed") |
---|
376 | | - | else if (!(aq(R))) |
---|
| 374 | + | else if (!(ap(Q))) |
---|
377 | 375 | | then throw("Wrong minimum sell price") |
---|
378 | 376 | | 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))] |
---|
381 | 379 | | } |
---|
382 | 380 | | } |
---|
383 | 381 | | } |
---|
384 | 382 | | |
---|
385 | 383 | | |
---|
386 | 384 | | |
---|
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)) |
---|
396 | 394 | | then throw("Not a valid nft") |
---|
397 | 395 | | else { |
---|
398 | | - | let K = X(G) |
---|
399 | | - | if ((F != K)) |
---|
| 396 | + | let J = W(F) |
---|
| 397 | + | if ((E != J)) |
---|
400 | 398 | | then throw("Only sale owner can accept offer") |
---|
401 | 399 | | 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)) |
---|
410 | 408 | | then throw("Sale Not found!") |
---|
411 | 409 | | 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)) |
---|
419 | 417 | | 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] |
---|
421 | 419 | | } |
---|
422 | 420 | | } |
---|
423 | 421 | | } |
---|
424 | 422 | | } |
---|
425 | 423 | | |
---|
426 | 424 | | |
---|
427 | 425 | | |
---|
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) |
---|
436 | 434 | | else false) |
---|
437 | 435 | | then throw("You cannot cancel this offer.") |
---|
438 | 436 | | 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)] |
---|
445 | 443 | | } |
---|
446 | 444 | | } |
---|
447 | 445 | | |
---|
448 | 446 | | |
---|