tx · 4CJtpADESBy9AqfrcAqKgRsZonsyqcpsvw5wzRrvf8uw

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01500000 Waves

2022.07.14 12:11 [2139196] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "4CJtpADESBy9AqfrcAqKgRsZonsyqcpsvw5wzRrvf8uw", "fee": 1500000, "feeAssetId": null, "timestamp": 1657789889073, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "4gJeHn18sFXRrAFS5PtdhCC69ZYhnB6aZ1gQ3QLZysuYsf84dkdEMdUpAJdsfEpw5BEeoXWE2hFHyz9FsKWmsHce" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgINgAHVkVSU0lPTgBvAQlnZXRTdHJCeUsBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQR0aGlzBQNrZXkCAAAIdW5pdFRlc3QHAAlvcmFjbGVGZWUJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECD2NvbmZfb3JhY2xlX2ZlZQAIc2lnbkRhcHAJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECEWNvbmZfc2lnbndlYl9kYXBwAAtmZWVSZWNlaXZlcgkBCWdldFN0ckJ5SwECEWNvbmZfZmVlX3JlY2VpdmVyAAxhcnR3b3Jrc0RhcHAJAQV2YWx1ZQEJAKYIAQkBCWdldFN0ckJ5SwECEmNvbmZfYXJ0d29ya3NfZGFwcAAIdXNlckRhcHADBQh1bml0VGVzdAkBBXZhbHVlAQkApggBAiMzTXQ0UkdNRXlqU1dZQW9jVFBxZDU1d2RIUVFCM1BVMlVDbQkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQIPY29uZl91c2Vyc19kYXBwAA13aGl0ZWxpc3REYXBwCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAhNjb25mX3doaXRlbGlzdF9kYXBwAAtzaWduQXNzZXRJZAkA2QQBCQEJZ2V0U3RyQnlLAQIYY29uZl9hY2NlcHRlZF9hc3NldF9TSUdOAAt1c2RuQXNzZXRJZAkA2QQBCQEJZ2V0U3RyQnlLAQIYY29uZl9hY2NlcHRlZF9hc3NldF9VU0ROAAx3YXZlc0Fzc2V0SWQBAAAFY2hyaXMJAQlnZXRTdHJCeUsBAgxjb25mX2FkbWluXzEAB3NpZ25DdXQAAwAKY3JlYXRvckN1dAAKAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEAAphcnRJbGxlZ2FsAgdJTExFR0FMAAxhcnRTdXNwZW5kZWQCCVNVU1BFTkRFRAAOZGFwcFJ1bm5pbmdLZXkCFGNvbmZfZGFwcF9pc19ydW5uaW5nABFtYWludGVuYW5jZU1TR0tleQIUY29uZl9tYWludGVuYW5jZV9tc2cAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDmRhcHBSdW5uaW5nS2V5BgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwURbWFpbnRlbmFuY2VNU0dLZXkCAAAJbnVtU2FsZXNLAgludW1fc2FsZXMBDWdldFVzZXJTdHJCeUsBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAUDa2V5AgVFcnJvcgEMZ2V0QXJ0U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUMYXJ0d29ya3NEYXBwBQNrZXkCAAEJZ2V0SW50QnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABDWtleVVzZXJTdGF0dXMBBGFkZHIJAKwCAgIMdXNlcl9zdGF0dXNfBQRhZGRyAQlrZXlTaWduSUQCCmFydGlzdEFkZHIFYXJ0SWQJAKwCAgkArAICCQCsAgICC2FydF9zaWduaWRfBQVhcnRJZAIBXwUKYXJ0aXN0QWRkcgEHa2V5RmxhZwIKYXJ0aXN0QWRkcgVhcnRJZAkArAICCQCsAgIJAKwCAgIJYXJ0X2ZsYWdfBQVhcnRJZAIBXwUKYXJ0aXN0QWRkcgEKa2V5TkZURGF0YQECaWQJAKwCAgIEbmZ0XwUCaWQBCmdldFNhbGVLZXkEBmNhbGxlcgVuZnRJZAVhcnRJZAtjcmVhdG9yQWRkcgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAg1zYWxlMm5kX2luZm9fBQZjYWxsZXICAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHIBCWdldEJpZEtleQQKb2ZmZXJPd25lcgVuZnRJZAlzYWxlT3duZXIHb2ZmZXJJZAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICAglvZmZlcjJuZF8FCm9mZmVyT3duZXICAV8FBW5mdElkAgFfBQlzYWxlT3duZXICAV8FB29mZmVySWQBE2dldEludEJ5S0Zyb21PcmFjbGUBA2tleQkBE3ZhbHVlT3JFcnJvck1lc3NhZ2UCCQCaCAIFCW9yYWNsZUZlZQUDa2V5Ah9JbnRlZ2VyIHVuZGVmaW5lIG9yIDAgaW4gb3JhY2xlABljdXJyZW50Q2VydGlmaWNhdGlvblByaWNlCQETZ2V0SW50QnlLRnJvbU9yYWNsZQEJAKwCAgISY2VydGlmaWNhdGlvbl9mZWVfCQDYBAEFC3NpZ25Bc3NldElkARJrZXlBcnRpc3RBZ2VudEFkZHIBCmFydGlzdEFkZHIJAKwCAgINYXJ0aXN0X2FnZW50XwUKYXJ0aXN0QWRkcgERa2V5U2Vjb25kYXJ5U2hhcmUBCmFydGlzdEFkZHIJAKwCAgIXYXJ0aXN0X2FnZW50X3NlY29uZGFyeV8FCmFydGlzdEFkZHIBDGlkQ2FsbGVyRGF0ZQEBaQMJAQEhAQULZGFwcFJ1bm5pbmcJAAIBBQ5tYWludGVuYW5jZU1TRwkAlQoDCQDYBAEIBQFpDXRyYW5zYWN0aW9uSWQJANgEAQgIBQFpBmNhbGxlcgVieXRlcwgFCWxhc3RCbG9jawl0aW1lc3RhbXABCWlzUGF5bWVudAEBaQMJAAACCQCQAwEIBQFpCHBheW1lbnRzAAAJAAIBAhNObyBwYXltZW50IGF0dGFjaGVkBAdwYXltZW50CQEFdmFsdWUBCQCRAwIIBQFpCHBheW1lbnRzAAAEBmFtb3VudAkBBXZhbHVlAQgFB3BheW1lbnQGYW1vdW50CQCUCgIFB3BheW1lbnQFBmFtb3VudAEMYXNzZXRJc1ZhbGlkAQxhc3NldERldGFpbHMDAwMJAAACCAUMYXNzZXREZXRhaWxzCHF1YW50aXR5AAEJAAACCAUMYXNzZXREZXRhaWxzCGRlY2ltYWxzAAAHCQAAAggFDGFzc2V0RGV0YWlscwpyZWlzc3VhYmxlBwcJAAACCAUMYXNzZXREZXRhaWxzBmlzc3VlcgUMYXJ0d29ya3NEYXBwBwEMaXNTaWduQXJ0TkZUAQJpZAQMYXNzZXREZXRhaWxzCQEFdmFsdWUBCQDsBwEFAmlkCQEMYXNzZXRJc1ZhbGlkAQUMYXNzZXREZXRhaWxzARBhY2NlcHRlZEFzc2V0SWRzAQdhc3NldElkAwMDAwkBAiE9AgUHYXNzZXRJZAkA2AQBBQtzaWduQXNzZXRJZAkBAiE9AgUHYXNzZXRJZAkA2AQBBQx3YXZlc0Fzc2V0SWQHCQECIT0CBQdhc3NldElkAgVXQVZFUwcJAQIhPQIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQHBwYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQVuZnRpZAQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRpZAMJAAACCQCxAgEFCXNhbGVPd25lcgAACQACAQINTkZUIG5vdCBmb3VuZAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRpZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAhBORlQgbm90IGZvciBzYWxlBQlzYWxlT3duZXIBCmdldEJpZERhdGEBA2tleQQHYmlkRGF0YQkBCWdldFN0ckJ5SwEJAKwCAgUDa2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg9PZmZlciBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAgkAlQoDBQpiaWREYXRhQXJyBQdhc3NldElkBQdiaWREYXRhAQphcnRJc1ZhbGlkAQlhcnRTdGF0dXMDCQECIT0CBQlhcnRTdGF0dXMFCmFydElsbGVnYWwJAQIhPQIFCWFydFN0YXR1cwUMYXJ0U3VzcGVuZGVkBwEOY2hlY2tBcnRTdGF0dXMCBGFkZHICaWQECWFydFN0YXR1cwkBDGdldEFydFN0ckJ5SwEJAQdrZXlGbGFnAgUEYWRkcgUCaWQDCQEKYXJ0SXNWYWxpZAEFCWFydFN0YXR1cwYJAAIBCQCsAgICHE9yaWdpbmFsIEFydHdvcmsgZmxhZ2dlZCBhcyAFCWFydFN0YXR1cwERY2hlY2tBcnRpc3RTdGF0dXMBBGFkZHIEDGFydGlzdFN0YXR1cwkBDWdldFVzZXJTdHJCeUsBCQENa2V5VXNlclN0YXR1cwEFBGFkZHIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQ11c2VyU3VzcGVuZGVkCQDMCAIFC3VzZXJSZW1vdmVkBQNuaWwFDGFydGlzdFN0YXR1cwkAAgEJAKwCAgIQT3JpZ2luYWwgQXJ0aXN0IAUMYXJ0aXN0U3RhdHVzBgEMY2hlY2tORlRJbmZvAQdhc3NldElkBAduZnREYXRhCQC1CQIJAQxnZXRBcnRTdHJCeUsBCQEKa2V5TkZURGF0YQEFB2Fzc2V0SWQCAV8ECWFydFNpZ25JRAkBDGdldEFydFN0ckJ5SwEJAQlrZXlTaWduSUQCCQCRAwIFB25mdERhdGEABgkAkQMCBQduZnREYXRhAAUDAwkBASEBCQEOY2hlY2tBcnRTdGF0dXMCCQCRAwIFB25mdERhdGEABgkAkQMCBQduZnREYXRhAAUJAQEhAQkBEWNoZWNrQXJ0aXN0U3RhdHVzAQkAkQMCBQduZnREYXRhAAYHCQCWCgQHCQCRAwIFB25mdERhdGEABQkAkQMCBQduZnREYXRhAAYFCWFydFNpZ25JRAkAlgoEBgkAkQMCBQduZnREYXRhAAUJAJEDAgUHbmZ0RGF0YQAGBQlhcnRTaWduSUQBDWNoZWNrQVJURXhpc3QCBWFydElkC2NyZWF0b3JBZGRyBAlhcnRTaWduSUQJAQxnZXRBcnRTdHJCeUsBCQEJa2V5U2lnbklEAgULY3JlYXRvckFkZHIFBWFydElkAwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAh1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAMDCQEBIQEJAQ5jaGVja0FydFN0YXR1cwIFC2NyZWF0b3JBZGRyBQVhcnRJZAkBASEBCQERY2hlY2tBcnRpc3RTdGF0dXMBBQtjcmVhdG9yQWRkcgcHBgEMc2V0VHJhbnNmZXJzBgZhbW91bnQHYXNzZXRJZAVuZnRpZAtjcmVhdG9yQWRkcglzYWxlT3duZXIGY2FsbGVyBAVhZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBEmtleUFydGlzdEFnZW50QWRkcgEFC2NyZWF0b3JBZGRyBQtmZWVSZWNlaXZlcgQKYWdlbnRTaGFyZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQh1c2VyRGFwcAkBEWtleVNlY29uZGFyeVNoYXJlAQULY3JlYXRvckFkZHIAAAQNYW1vdW50Rm9yU2lnbgkAawMFBmFtb3VudAUHc2lnbkN1dABkBBBhbW91bnRGb3JDcmVhdG9yCQBrAwUGYW1vdW50BQpjcmVhdG9yQ3V0AGQEDmFtb3VudEZvck93bmVyCQBlAgUGYW1vdW50CQBkAgUNYW1vdW50Rm9yU2lnbgUQYW1vdW50Rm9yQ3JlYXRvcgQOYW1vdW50Rm9yQWdlbnQDAwkBAiE9AgUFYWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUKYWdlbnRTaGFyZQAABwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQBkAAAEC2NvbW1pc3Npb25zAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUFYWdlbnQFDmFtb3VudEZvckFnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQ1hbW91bnRGb3JTaWduBQdhc3NldElkBQNuaWwECmNyZWF0b3JGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtjcmVhdG9yQWRkcgUQYW1vdW50Rm9yQ3JlYXRvcgUHYXNzZXRJZAQIb3duZXJGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQlzYWxlT3duZXIFDmFtb3VudEZvck93bmVyBQdhc3NldElkBAxjb2xsZWN0b3JORlQJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQkA2QQBBQVuZnRpZAkAlgoEBQtjb21taXNzaW9ucwUKY3JlYXRvckZlZQUIb3duZXJGZWUFDGNvbGxlY3Rvck5GVAEPdmFsaWRhdGVNaW5TZWxsAgdhc3NldElkBXByaWNlBAxtaW5TZWxsV2F2ZXMDBQh1bml0VGVzdAAKCQETZ2V0SW50QnlLRnJvbU9yYWNsZQECDndhdmVzX21pbl9zZWxsBAttaW5TZWxsVXNkbgDAhD0EC21pblNlbGxTaWduAwUIdW5pdFRlc3QAAQkAaAIFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAgMDAwMDCQAAAgUHYXNzZXRJZAkA2AQBBQt1c2RuQXNzZXRJZAkAZgIFC21pblNlbGxVc2RuBQVwcmljZQcJAQIhPQIFBXByaWNlAAAHBgMDCQAAAgUHYXNzZXRJZAkA2AQBBQtzaWduQXNzZXRJZAkAZgIFC21pblNlbGxTaWduBQVwcmljZQcJAQIhPQIFBXByaWNlAAAHBgMDAwkAAAIFB2Fzc2V0SWQJANgEAQUMd2F2ZXNBc3NldElkBgkAAAIFB2Fzc2V0SWQCBVdBVkVTCQBmAgUMbWluU2VsbFdhdmVzBQVwcmljZQcJAQIhPQIFBXByaWNlAAAHBwYBD3Byb3ZpZGVCYXNlRGF0YQIBaQVuZnRJZAQLJHQwODgwMTg4NDAJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFCyR0MDg4MDE4ODQwAl8xBAZjYWxsZXIIBQskdDA4ODAxODg0MAJfMgQEZGF0ZQgFCyR0MDg4MDE4ODQwAl8zBAskdDA4ODQzODkxMgkBDGNoZWNrTkZUSW5mbwEFBW5mdElkBAppc1ZhbGlkTkZUCAULJHQwODg0Mzg5MTICXzEEBWFydElkCAULJHQwODg0Mzg5MTICXzIEC2NyZWF0b3JBZGRyCAULJHQwODg0Mzg5MTICXzMECWFydFNpZ25JRAgFCyR0MDg4NDM4OTEyAl80CQCZCgcFAmlkBQZjYWxsZXIFBGRhdGUFCmlzVmFsaWRORlQFBWFydElkBQtjcmVhdG9yQWRkcgUJYXJ0U2lnbklEAQ51cGRhdGVOdW1TYWxlcwAECG51bVNhbGVzCQEJZ2V0SW50QnlLAQUJbnVtU2FsZXNLCQEMSW50ZWdlckVudHJ5AgUJbnVtU2FsZXNLCQBkAgUIbnVtU2FsZXMAAQkGaW52b2tlAQdzZXRDb25mAgNrZXkDdmFsBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQVjaHJpcwkAzAgCCQClCAEFBHRoaXMFA25pbAUGY2FsbGVyAwkBCGNvbnRhaW5zAgUDa2V5AgVjb25mXwkAzAgCCQELU3RyaW5nRW50cnkCBQNrZXkFA3ZhbAUDbmlsCQACAQIgRW50cmllcyBzdGFydGluZyB3aXRoIGNvbmZfIG9ubHkJAAIBAiJZb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGNoYW5nZSB0aGlzBmludm9rZQEKYXBwUnVubmluZwIGaXNMaXZlB21lc3NhZ2UEBmNhbGxlcgkApQgBCAUGaW52b2tlBmNhbGxlcgQCaWQJANgEAQgFBmludm9rZQ10cmFuc2FjdGlvbklkAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgkAzAgCCQEMQm9vbGVhbkVudHJ5AgUOZGFwcFJ1bm5pbmdLZXkFBmlzTGl2ZQkAzAgCCQELU3RyaW5nRW50cnkCBRFtYWludGVuYW5jZU1TR0tleQUHbWVzc2FnZQUDbmlsCQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwFpAQdzZWxsTkZUAgVwcmljZQVhc3NldAQMJHQwOTk3NzEwMDEzCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDCR0MDk5NzcxMDAxMwJfMQQGYW1vdW50CAUMJHQwOTk3NzEwMDEzAl8yAwkBAiE9AgUGYW1vdW50AAEJAAIBAg9ObyBORlQgYXR0YWNoZWQEBW5mdElkAwMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQEMaXNTaWduQXJ0TkZUAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAcJANgEAQkBBXZhbHVlAQgFB3BheW1lbnQHYXNzZXRJZAkAAgECG09ubHkgU0lHTiBBcnQgTkZUIGFjY2VwdGVkLgQNJHQwMTAyNDcxMDMzOQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDEwMjQ3MTAzMzkCXzEEBmNhbGxlcggFDSR0MDEwMjQ3MTAzMzkCXzIEBGRhdGUIBQ0kdDAxMDI0NzEwMzM5Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTAyNDcxMDMzOQJfNAQFYXJ0SWQIBQ0kdDAxMDI0NzEwMzM5Al81BAtjcmVhdG9yQWRkcggFDSR0MDEwMjQ3MTAzMzkCXzYECWFydFNpZ25JRAgFDSR0MDEwMjQ3MTAzMzkCXzcDCQAAAgkAsQIBBQlhcnRTaWduSUQAAAkAAgECHUFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0AwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFBWFzc2V0CQACAQIhT25seSBTSUdOLCBVU0ROIG9yIFdBVkVTIGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUFYXNzZXQFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkBCmdldFNhbGVLZXkEBQZjYWxsZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHICBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUFcHJpY2UCAV8FBWFzc2V0AgFfBQVuZnRJZAIBXwUFYXJ0SWQCAV8FC2NyZWF0b3JBZGRyAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQCBE9QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAUGY2FsbGVyBQNuaWwBaQEPdXBkYXRlU2FsZVByaWNlAwVuZnRJZAVwcmljZQVhc3NldAQNJHQwMTEyMTMxMTMwNQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDExMjEzMTEzMDUCXzEEBmNhbGxlcggFDSR0MDExMjEzMTEzMDUCXzIEBGRhdGUIBQ0kdDAxMTIxMzExMzA1Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTEyMTMxMTMwNQJfNAQFYXJ0SWQIBQ0kdDAxMTIxMzExMzA1Al81BAtjcmVhdG9yQWRkcggFDSR0MDExMjEzMTEzMDUCXzYECWFydFNpZ25JRAgFDSR0MDExMjEzMTEzMDUCXzcDCQAAAgkAsQIBBQlhcnRTaWduSUQAAAkAAgECMEFydHdvcmsgbm90IGZvdW5kIG9uIFNJR04gQXJ0LCBjYW5jZWwgeW91ciBzYWxlLgMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAMJAQIhPQIFCXNhbGVPd25lcgUGY2FsbGVyCQACAQIWWW91IGRvbid0IG93biB0aGlzIE5GVAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAg9TYWxlIG5vdCBhY3RpdmUDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUFYXNzZXQJAAIBAiFPbmx5IFNJR04sIFVTRE4gb3IgV0FWRVMgYWNjZXB0ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwCBQVhc3NldAUFcHJpY2UJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUGY2FsbGVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkAtQkCCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgIBXwkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCRAwIFCHNhbGVJbmZvAAACAV8JAKQDAQUFcHJpY2UCAV8FBWFzc2V0AgFfCQCRAwIFCHNhbGVJbmZvAAMCAV8JAJEDAgUIc2FsZUluZm8ABAIBXwkAkQMCBQhzYWxlSW5mbwAFAgFfCQCRAwIFCHNhbGVJbmZvAAYFA25pbAFpAQpjYW5jZWxTYWxlAQVuZnRJZAQNJHQwMTI0NDcxMjY4NwkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDEyNDQ3MTI2ODcCXzEEBmNhbGxlcggFDSR0MDEyNDQ3MTI2ODcCXzIEBGRhdGUIBQ0kdDAxMjQ0NzEyNjg3Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTI0NDcxMjY4NwJfNAQFYXJ0SWQIBQ0kdDAxMjQ0NzEyNjg3Al81BAtjcmVhdG9yQWRkcggFDSR0MDEyNDQ3MTI2ODcCXzYECWFydFNpZ25JRAgFDSR0MDEyNDQ3MTI2ODcCXzcECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQDCQECIT0CBQlzYWxlT3duZXIFBmNhbGxlcgkAAgECFllvdSBkb24ndCBvd24gdGhpcyBORlQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIPU2FsZSBub3QgYWN0aXZlBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQQFBmNhbGxlcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgQIc2FsZUluZm8JAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHc2FsZUtleQIBXwUCaWQCCl9DQU5DRUxMRUQJAKwCAgkArAICCQCsAgIJAKwCAgUIc2FsZUluZm8CC19DQU5DRUxMRURfCQCkAwEFBGRhdGUCAV8FAmlkCQDMCAIJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQkA2QQBBQVuZnRJZAUDbmlsAWkBBmJ1eU5GVAEFbmZ0SWQEDSR0MDEzNTE4MTM2MTAJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMzUxODEzNjEwAl8xBAZjYWxsZXIIBQ0kdDAxMzUxODEzNjEwAl8yBARkYXRlCAUNJHQwMTM1MTgxMzYxMAJfMwQKaXNWYWxpZE5GVAgFDSR0MDEzNTE4MTM2MTACXzQEBWFydElkCAUNJHQwMTM1MTgxMzYxMAJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMzUxODEzNjEwAl82BAlhcnRTaWduSUQIBQ0kdDAxMzUxODEzNjEwAl83AwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAjBBcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydCwgY2FuY2VsIHlvdXIgc2FsZS4DCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQQFCXNhbGVPd25lcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgQIc2FsZUluZm8JAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAwkAAAIJALECAQUIc2FsZUluZm8AAAkAAgECD1NhbGUgTm90IGZvdW5kIQQNc2FsZUluZm9BcnJheQkAtQkCBQhzYWxlSW5mbwIBXwMJAAACCQC2CQEJAJEDAgUNc2FsZUluZm9BcnJheQABAAAJAAIBAgpPZmZlciBvbmx5BA0kdDAxNDEwNzE0MTQzCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDE0MTA3MTQxNDMCXzEEBmFtb3VudAgFDSR0MDE0MTA3MTQxNDMCXzIED3BheW1lbnRBc3NldFN0cgMJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQCAAMDCQECIT0CCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQkApAMBBQZhbW91bnQGCQECIT0CCQCRAwIFDXNhbGVJbmZvQXJyYXkAAgUPcGF5bWVudEFzc2V0U3RyCQACAQIaUGF5bWVudCBpbmZvcyBkb24ndCBtYXRjaC4EDSR0MDE0NjQ5MTQ3ODEJAQxzZXRUcmFuc2ZlcnMGBQZhbW91bnQIBQdwYXltZW50B2Fzc2V0SWQFBW5mdElkBQtjcmVhdG9yQWRkcgUJc2FsZU93bmVyBQZjYWxsZXIEC2NvbW1pc3Npb25zCAUNJHQwMTQ2NDkxNDc4MQJfMQQKY3JlYXRvckZlZQgFDSR0MDE0NjQ5MTQ3ODECXzIECG93bmVyRmVlCAUNJHQwMTQ2NDkxNDc4MQJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMTQ2NDkxNDc4MQJfNAkAzggCCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUHc2FsZUtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHc2FsZUtleQIBXwUCaWQCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAIBXwUGY2FsbGVyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUKY3JlYXRvckZlZQkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQFA25pbAULY29tbWlzc2lvbnMBaQEIc2V0T2ZmZXIBBW5mdElkBA0kdDAxNTE5MjE1Mjg4CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTUxOTIxNTI4OAJfMQQKb2ZmZXJPd25lcggFDSR0MDE1MTkyMTUyODgCXzIEBGRhdGUIBQ0kdDAxNTE5MjE1Mjg4Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTUxOTIxNTI4OAJfNAQFYXJ0SWQIBQ0kdDAxNTE5MjE1Mjg4Al81BAtjcmVhdG9yQWRkcggFDSR0MDE1MTkyMTUyODgCXzYECWFydFNpZ25JRAgFDSR0MDE1MTkyMTUyODgCXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQEDSR0MDE1MzQ5MTUzODUJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTUzNDkxNTM4NQJfMQQGYW1vdW50CAUNJHQwMTUzNDkxNTM4NQJfMgQHYXNzZXRJZAMJAQEhAQkBCWlzRGVmaW5lZAEIBQdwYXltZW50B2Fzc2V0SWQCBVdBVkVTCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQDCQEBIQEJARBhY2NlcHRlZEFzc2V0SWRzAQUHYXNzZXRJZAkAAgECEmFzc2V0IG5vdCBhY2NlcHRlZAMJAAACBQZhbW91bnQAAAkAAgECFk9mZmVyIG9mIDAgbm90IGFsbG93ZWQDCQEBIQEJAQ92YWxpZGF0ZU1pblNlbGwCBQdhc3NldElkBQZhbW91bnQJAAIBAhhXcm9uZyBtaW5pbXVtIHNlbGwgcHJpY2UECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFAmlkAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKQDAQUEZGF0ZQIBXwkApAMBBQZhbW91bnQCAV8FB2Fzc2V0SWQCAV8FBW5mdElkAgFfBQVhcnRJZAIBXwULY3JlYXRvckFkZHICAV8FCm9mZmVyT3duZXICAV8FAmlkBQNuaWwBaQELYWNjZXB0T2ZmZXIDBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcgQNJHQwMTYxODcxNjI3OQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE2MTg3MTYyNzkCXzEEBmNhbGxlcggFDSR0MDE2MTg3MTYyNzkCXzIEBGRhdGUIBQ0kdDAxNjE4NzE2Mjc5Al8zBAppc1ZhbGlkTkZUCAUNJHQwMTYxODcxNjI3OQJfNAQFYXJ0SWQIBQ0kdDAxNjE4NzE2Mjc5Al81BAtjcmVhdG9yQWRkcggFDSR0MDE2MTg3MTYyNzkCXzYECWFydFNpZ25JRAgFDSR0MDE2MTg3MTYyNzkCXzcDCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQECXNhbGVPd25lcgkBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFBW5mdElkAwkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIJAAIBAiBPbmx5IHNhbGUgb3duZXIgY2FuIGFjY2VwdCBvZmZlcgQGYmlkS2V5CQEJZ2V0QmlkS2V5BAUKb2ZmZXJPd25lcgUFbmZ0SWQFCXNhbGVPd25lcgUHb2ZmZXJJZAQNJHQwMTY1MzMxNjU4OAkBCmdldEJpZERhdGEBBQZiaWRLZXkECmJpZERhdGFBcnIIBQ0kdDAxNjUzMzE2NTg4Al8xBAdhc3NldElkCAUNJHQwMTY1MzMxNjU4OAJfMgQHYmlkRGF0YQgFDSR0MDE2NTMzMTY1ODgCXzMEB3NhbGVLZXkJAQpnZXRTYWxlS2V5BAUJc2FsZU93bmVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyBAhzYWxlSW5mbwkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4DCQAAAgkAsQIBBQhzYWxlSW5mbwAACQACAQIPU2FsZSBOb3QgZm91bmQhBAZhbW91bnQJAQV2YWx1ZQEJALYJAQkAkQMCBQpiaWREYXRhQXJyAAEEDSR0MDE2ODI0MTY5NTUJAQxzZXRUcmFuc2ZlcnMGBQZhbW91bnQFB2Fzc2V0SWQFBW5mdElkBQtjcmVhdG9yQWRkcgUJc2FsZU93bmVyCQCRAwIFCmJpZERhdGFBcnIABgQLY29tbWlzc2lvbnMIBQ0kdDAxNjgyNDE2OTU1Al8xBApjcmVhdG9yRmVlCAUNJHQwMTY4MjQxNjk1NQJfMgQIb3duZXJGZWUIBQ0kdDAxNjgyNDE2OTU1Al8zBAxjb2xsZWN0b3JORlQIBQ0kdDAxNjgyNDE2OTU1Al80BAphc3NldElkU3RyAwkBCWlzRGVmaW5lZAEFB2Fzc2V0SWQJANgEAQkBBXZhbHVlAQUHYXNzZXRJZAIFV0FWRVMJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0SWQJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAghfQ0xPU0VEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAKwCAgkArAICBQdzYWxlS2V5AgFfBQJpZAIHX0NMT1NFRAkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIOX0NMT1NFRC1PRkZFUl8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FCm9mZmVyT3duZXICAV8JAKQDAQUGYW1vdW50AgFfBQphc3NldElkU3RyCQDMCAIJAQ51cGRhdGVOdW1TYWxlcwAJAMwIAgUKY3JlYXRvckZlZQkAzAgCBQhvd25lckZlZQkAzAgCBQxjb2xsZWN0b3JORlQFA25pbAULY29tbWlzc2lvbnMBaQELY2FuY2VsT2ZmZXIEBW5mdElkB29mZmVySWQKb2ZmZXJPd25lcglzYWxlT3duZXIEDSR0MDE3NzU1MTc4MjcJAQxpZENhbGxlckRhdGUBBQFpBAJpZAgFDSR0MDE3NzU1MTc4MjcCXzEEBmNhbGxlcggFDSR0MDE3NzU1MTc4MjcCXzIEBGRhdGUIBQ0kdDAxNzc1NTE3ODI3Al8zAwMJAQIhPQIFBmNhbGxlcgUKb2ZmZXJPd25lcgkBAiE9AgUGY2FsbGVyBQlzYWxlT3duZXIHCQACAQIdWW91IGNhbm5vdCBjYW5jZWwgdGhpcyBvZmZlci4EBmJpZEtleQkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFB29mZmVySWQEDSR0MDE3OTk5MTgwNTQJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMTc5OTkxODA1NAJfMQQHYXNzZXRJZAgFDSR0MDE3OTk5MTgwNTQCXzIEB2JpZERhdGEIBQ0kdDAxNzk5OTE4MDU0Al8zCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgUGYmlkS2V5AgVfT1BFTgkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIFBmJpZEtleQIKX0NBTkNFTExFRAkArAICCQCsAgIJAKwCAgkArAICBQdiaWREYXRhAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyCQENcGFyc2VJbnRWYWx1ZQEJAJEDAgUKYmlkRGF0YUFycgABBQdhc3NldElkBQNuaWwAwkznzw==", "height": 2139196, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9CVWPL3rJxdUrhyZPug5dEXRr3yMxpzvJRn7ibVB9Kp3 Next: GARX1sUMfwnJRBPF4DxCPxc5riSnjsrFj7P3P5iRFD4Q Diff:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let VERSION = 111
5+
6+func getStrByK (key) = valueOrElse(getString(this, key), "")
7+
8+
49 let unitTest = false
510
6-let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
11+let oracleFee = value(addressFromString(getStrByK("conf_oracle_fee")))
712
8-let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
13+let signDapp = value(addressFromString(getStrByK("conf_signweb_dapp")))
914
10-let artworksDapp = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
15+let feeReceiver = getStrByK("conf_fee_receiver")
1116
12-let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
17+let artworksDapp = value(addressFromString(getStrByK("conf_artworks_dapp")))
1318
1419 let userDapp = if (unitTest)
1520 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
16- else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
21+ else value(addressFromString(getStrByK("conf_users_dapp")))
1722
18-let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
23+let whitelistDapp = value(addressFromString(getStrByK("conf_whitelist_dapp")))
1924
20-let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
25+let signAssetId = fromBase58String(getStrByK("conf_accepted_asset_SIGN"))
2126
22-let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
27+let usdnAssetId = fromBase58String(getStrByK("conf_accepted_asset_USDN"))
2328
2429 let wavesAssetId = base58''
2530
26-let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
31+let chris = getStrByK("conf_admin_1")
2732
2833 let signCut = 3
2934
5156
5257
5358 func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
54-
55-
56-func getStrByK (key) = valueOrElse(getString(this, key), "")
5759
5860
5961 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
256258
257259
258260 func provideBaseData (i,nftId) = {
259- let $t097339772 = idCallerDate(i)
260- let id = $t097339772._1
261- let caller = $t097339772._2
262- let date = $t097339772._3
263- let $t097759844 = checkNFTInfo(nftId)
264- let isValidNFT = $t097759844._1
265- let artId = $t097759844._2
266- let creatorAddr = $t097759844._3
267- let artSignID = $t097759844._4
261+ let $t088018840 = idCallerDate(i)
262+ let id = $t088018840._1
263+ let caller = $t088018840._2
264+ let date = $t088018840._3
265+ let $t088438912 = checkNFTInfo(nftId)
266+ let isValidNFT = $t088438912._1
267+ let artId = $t088438912._2
268+ let creatorAddr = $t088438912._3
269+ let artSignID = $t088438912._4
268270 $Tuple7(id, caller, date, isValidNFT, artId, creatorAddr, artSignID)
269271 }
270272
276278
277279
278280 @Callable(invoke)
281+func setConf (key,val) = {
282+ let caller = toString(invoke.caller)
283+ if (containsElement([chris, toString(this)], caller))
284+ then if (contains(key, "conf_"))
285+ then [StringEntry(key, val)]
286+ else throw("Entries starting with conf_ only")
287+ else throw("You are not allowed to change this")
288+ }
289+
290+
291+
292+@Callable(invoke)
279293 func appRunning (isLive,message) = {
280- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
294+ let caller = toString(invoke.caller)
281295 let id = toBase58String(invoke.transactionId)
282296 if (containsElement([chris, toString(this)], caller))
283297 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
288302
289303 @Callable(i)
290304 func sellNFT (price,asset) = {
291- let $t01055710593 = isPayment(i)
292- let payment = $t01055710593._1
293- let amount = $t01055710593._2
305+ let $t0997710013 = isPayment(i)
306+ let payment = $t0997710013._1
307+ let amount = $t0997710013._2
294308 if ((amount != 1))
295309 then throw("No NFT attached")
296310 else {
299313 else false)
300314 then toBase58String(value(payment.assetId))
301315 else throw("Only SIGN Art NFT accepted.")
302- let $t01082710919 = provideBaseData(i, nftId)
303- let id = $t01082710919._1
304- let caller = $t01082710919._2
305- let date = $t01082710919._3
306- let isValidNFT = $t01082710919._4
307- let artId = $t01082710919._5
308- let creatorAddr = $t01082710919._6
309- let artSignID = $t01082710919._7
316+ let $t01024710339 = provideBaseData(i, nftId)
317+ let id = $t01024710339._1
318+ let caller = $t01024710339._2
319+ let date = $t01024710339._3
320+ let isValidNFT = $t01024710339._4
321+ let artId = $t01024710339._5
322+ let creatorAddr = $t01024710339._6
323+ let artSignID = $t01024710339._7
310324 if ((size(artSignID) == 0))
311325 then throw("Artwork not found on SIGN Art")
312326 else if (!(isValidNFT))
323337
324338 @Callable(i)
325339 func updateSalePrice (nftId,price,asset) = {
326- let $t01179311885 = provideBaseData(i, nftId)
327- let id = $t01179311885._1
328- let caller = $t01179311885._2
329- let date = $t01179311885._3
330- let isValidNFT = $t01179311885._4
331- let artId = $t01179311885._5
332- let creatorAddr = $t01179311885._6
333- let artSignID = $t01179311885._7
340+ let $t01121311305 = provideBaseData(i, nftId)
341+ let id = $t01121311305._1
342+ let caller = $t01121311305._2
343+ let date = $t01121311305._3
344+ let isValidNFT = $t01121311305._4
345+ let artId = $t01121311305._5
346+ let creatorAddr = $t01121311305._6
347+ let artSignID = $t01121311305._7
334348 if ((size(artSignID) == 0))
335349 then throw("Artwork not found on SIGN Art, cancel your sale.")
336350 else if (!(isValidNFT))
360374
361375 @Callable(i)
362376 func cancelSale (nftId) = {
363- let $t01302713267 = provideBaseData(i, nftId)
364- let id = $t01302713267._1
365- let caller = $t01302713267._2
366- let date = $t01302713267._3
367- let isValidNFT = $t01302713267._4
368- let artId = $t01302713267._5
369- let creatorAddr = $t01302713267._6
370- let artSignID = $t01302713267._7
377+ let $t01244712687 = provideBaseData(i, nftId)
378+ let id = $t01244712687._1
379+ let caller = $t01244712687._2
380+ let date = $t01244712687._3
381+ let isValidNFT = $t01244712687._4
382+ let artId = $t01244712687._5
383+ let creatorAddr = $t01244712687._6
384+ let artSignID = $t01244712687._7
371385 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
372386 if ((saleOwner != caller))
373387 then throw("You don't own this NFT")
387401
388402 @Callable(i)
389403 func buyNFT (nftId) = {
390- let $t01409814190 = provideBaseData(i, nftId)
391- let id = $t01409814190._1
392- let caller = $t01409814190._2
393- let date = $t01409814190._3
394- let isValidNFT = $t01409814190._4
395- let artId = $t01409814190._5
396- let creatorAddr = $t01409814190._6
397- let artSignID = $t01409814190._7
404+ let $t01351813610 = provideBaseData(i, nftId)
405+ let id = $t01351813610._1
406+ let caller = $t01351813610._2
407+ let date = $t01351813610._3
408+ let isValidNFT = $t01351813610._4
409+ let artId = $t01351813610._5
410+ let creatorAddr = $t01351813610._6
411+ let artSignID = $t01351813610._7
398412 if ((size(artSignID) == 0))
399413 then throw("Artwork not found on SIGN Art, cancel your sale.")
400414 else if (!(isValidNFT))
410424 if ((parseInt(saleInfoArray[1]) == 0))
411425 then throw("Offer only")
412426 else {
413- let $t01468714723 = isPayment(i)
414- let payment = $t01468714723._1
415- let amount = $t01468714723._2
427+ let $t01410714143 = isPayment(i)
428+ let payment = $t01410714143._1
429+ let amount = $t01410714143._2
416430 let paymentAssetStr = if (isDefined(payment.assetId))
417431 then toBase58String(value(payment.assetId))
418432 else ""
421435 else (saleInfoArray[2] != paymentAssetStr))
422436 then throw("Payment infos don't match.")
423437 else {
424- let $t01522915361 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
425- let commissions = $t01522915361._1
426- let creatorFee = $t01522915361._2
427- let ownerFee = $t01522915361._3
428- let collectorNFT = $t01522915361._4
438+ let $t01464914781 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
439+ let commissions = $t01464914781._1
440+ let creatorFee = $t01464914781._2
441+ let ownerFee = $t01464914781._3
442+ let collectorNFT = $t01464914781._4
429443 ([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(), creatorFee, ownerFee, collectorNFT] ++ commissions)
430444 }
431445 }
437451
438452 @Callable(i)
439453 func setOffer (nftId) = {
440- let $t01577215868 = provideBaseData(i, nftId)
441- let id = $t01577215868._1
442- let offerOwner = $t01577215868._2
443- let date = $t01577215868._3
444- let isValidNFT = $t01577215868._4
445- let artId = $t01577215868._5
446- let creatorAddr = $t01577215868._6
447- let artSignID = $t01577215868._7
454+ let $t01519215288 = provideBaseData(i, nftId)
455+ let id = $t01519215288._1
456+ let offerOwner = $t01519215288._2
457+ let date = $t01519215288._3
458+ let isValidNFT = $t01519215288._4
459+ let artId = $t01519215288._5
460+ let creatorAddr = $t01519215288._6
461+ let artSignID = $t01519215288._7
448462 if (!(isValidNFT))
449463 then throw("Not a valid nft")
450464 else {
451- let $t01592915965 = isPayment(i)
452- let payment = $t01592915965._1
453- let amount = $t01592915965._2
465+ let $t01534915385 = isPayment(i)
466+ let payment = $t01534915385._1
467+ let amount = $t01534915385._2
454468 let assetId = if (!(isDefined(payment.assetId)))
455469 then "WAVES"
456470 else toBase58String(value(payment.assetId))
471485
472486 @Callable(i)
473487 func acceptOffer (nftId,offerId,offerOwner) = {
474- let $t01676716859 = provideBaseData(i, nftId)
475- let id = $t01676716859._1
476- let caller = $t01676716859._2
477- let date = $t01676716859._3
478- let isValidNFT = $t01676716859._4
479- let artId = $t01676716859._5
480- let creatorAddr = $t01676716859._6
481- let artSignID = $t01676716859._7
488+ let $t01618716279 = provideBaseData(i, nftId)
489+ let id = $t01618716279._1
490+ let caller = $t01618716279._2
491+ let date = $t01618716279._3
492+ let isValidNFT = $t01618716279._4
493+ let artId = $t01618716279._5
494+ let creatorAddr = $t01618716279._6
495+ let artSignID = $t01618716279._7
482496 if (!(isValidNFT))
483497 then throw("Not a valid nft")
484498 else {
487501 then throw("Only sale owner can accept offer")
488502 else {
489503 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
490- let $t01711317168 = getBidData(bidKey)
491- let bidDataArr = $t01711317168._1
492- let assetId = $t01711317168._2
493- let bidData = $t01711317168._3
504+ let $t01653316588 = getBidData(bidKey)
505+ let bidDataArr = $t01653316588._1
506+ let assetId = $t01653316588._2
507+ let bidData = $t01653316588._3
494508 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
495509 let saleInfo = getStrByK((saleKey + "_OPEN"))
496510 if ((size(saleInfo) == 0))
497511 then throw("Sale Not found!")
498512 else {
499513 let amount = value(parseInt(bidDataArr[1]))
500- let $t01740417535 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
501- let commissions = $t01740417535._1
502- let creatorFee = $t01740417535._2
503- let ownerFee = $t01740417535._3
504- let collectorNFT = $t01740417535._4
514+ let $t01682416955 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
515+ let commissions = $t01682416955._1
516+ let creatorFee = $t01682416955._2
517+ let ownerFee = $t01682416955._3
518+ let collectorNFT = $t01682416955._4
505519 let assetIdStr = if (isDefined(assetId))
506520 then toBase58String(value(assetId))
507521 else "WAVES"
515529
516530 @Callable(i)
517531 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
518- let $t01833518407 = idCallerDate(i)
519- let id = $t01833518407._1
520- let caller = $t01833518407._2
521- let date = $t01833518407._3
532+ let $t01775517827 = idCallerDate(i)
533+ let id = $t01775517827._1
534+ let caller = $t01775517827._2
535+ let date = $t01775517827._3
522536 if (if ((caller != offerOwner))
523537 then (caller != saleOwner)
524538 else false)
525539 then throw("You cannot cancel this offer.")
526540 else {
527541 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
528- let $t01857918634 = getBidData(bidKey)
529- let bidDataArr = $t01857918634._1
530- let assetId = $t01857918634._2
531- let bidData = $t01857918634._3
542+ let $t01799918054 = getBidData(bidKey)
543+ let bidDataArr = $t01799918054._1
544+ let assetId = $t01799918054._2
545+ let bidData = $t01799918054._3
532546 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
533547 }
534548 }
Full:
OldNewDifferences
1-{-# STDLIB_VERSION 5 #-}
1+{-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
4+let VERSION = 111
5+
6+func getStrByK (key) = valueOrElse(getString(this, key), "")
7+
8+
49 let unitTest = false
510
6-let oracleFee = value(addressFromString("3N2s5RtaHPBenCsx2ECcoFRbYHx3noZhXW1"))
11+let oracleFee = value(addressFromString(getStrByK("conf_oracle_fee")))
712
8-let signDapp = value(addressFromString("3NC28hSivrmsTUXaYD1x6L362J4ZpUnoTdB"))
13+let signDapp = value(addressFromString(getStrByK("conf_signweb_dapp")))
914
10-let artworksDapp = value(addressFromString("3NBynfbXC2KastUxhukcMUaE58K9cBdB9UY"))
15+let feeReceiver = getStrByK("conf_fee_receiver")
1116
12-let feeReceiver = "3N1E6tXddRoVaRfQ9dQ3vg5LaW2fsd8HKub"
17+let artworksDapp = value(addressFromString(getStrByK("conf_artworks_dapp")))
1318
1419 let userDapp = if (unitTest)
1520 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
16- else value(addressFromString("3N8xXaYjE27Aa79d5hHrhHu9HaFoTBmhDEj"))
21+ else value(addressFromString(getStrByK("conf_users_dapp")))
1722
18-let whitelistDapp = value(addressFromString("3N6BaV1dCB4zg43goNNHaCtvR13BcyJ5Gsq"))
23+let whitelistDapp = value(addressFromString(getStrByK("conf_whitelist_dapp")))
1924
20-let signAssetId = base58'Gf9t8FA4H3ssoZPCwrg3KwUFCci8zuUFP9ssRsUY3s6a'
25+let signAssetId = fromBase58String(getStrByK("conf_accepted_asset_SIGN"))
2126
22-let usdnAssetId = base58'25FEqEjRkqK6yCkiT7Lz6SAYz7gUFCtxfCChnrVFD5AT'
27+let usdnAssetId = fromBase58String(getStrByK("conf_accepted_asset_USDN"))
2328
2429 let wavesAssetId = base58''
2530
26-let chris = "3MsG6jPNCrVJUtYB7XJBxS7utWsXAf4n9Vp"
31+let chris = getStrByK("conf_admin_1")
2732
2833 let signCut = 3
2934
3035 let creatorCut = 10
3136
3237 let userSuspended = "SUSPENDED"
3338
3439 let userRemoved = "REMOVED"
3540
3641 let artIllegal = "ILLEGAL"
3742
3843 let artSuspended = "SUSPENDED"
3944
4045 let dappRunningKey = "conf_dapp_is_running"
4146
4247 let maintenanceMSGKey = "conf_maintenance_msg"
4348
4449 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
4550
4651 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
4752
4853 let numSalesK = "num_sales"
4954
5055 func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
5156
5257
5358 func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
54-
55-
56-func getStrByK (key) = valueOrElse(getString(this, key), "")
5759
5860
5961 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
6062
6163
6264 func keyUserStatus (addr) = ("user_status_" + addr)
6365
6466
6567 func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
6668
6769
6870 func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
6971
7072
7173 func keyNFTData (id) = ("nft_" + id)
7274
7375
7476 func getSaleKey (caller,nftId,artId,creatorAddr) = ((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + artId) + "_") + creatorAddr)
7577
7678
7779 func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
7880
7981
8082 func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
8183
8284
8385 let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
8486
8587 func keyArtistAgentAddr (artistAddr) = ("artist_agent_" + artistAddr)
8688
8789
8890 func keySecondaryShare (artistAddr) = ("artist_agent_secondary_" + artistAddr)
8991
9092
9193 func idCallerDate (i) = if (!(dappRunning))
9294 then throw(maintenanceMSG)
9395 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
9496
9597
9698 func isPayment (i) = if ((size(i.payments) == 0))
9799 then throw("No payment attached")
98100 else {
99101 let payment = value(i.payments[0])
100102 let amount = value(payment.amount)
101103 $Tuple2(payment, amount)
102104 }
103105
104106
105107 func assetIsValid (assetDetails) = if (if (if ((assetDetails.quantity == 1))
106108 then (assetDetails.decimals == 0)
107109 else false)
108110 then (assetDetails.reissuable == false)
109111 else false)
110112 then (assetDetails.issuer == artworksDapp)
111113 else false
112114
113115
114116 func isSignArtNFT (id) = {
115117 let assetDetails = value(assetInfo(id))
116118 assetIsValid(assetDetails)
117119 }
118120
119121
120122 func acceptedAssetIds (assetId) = if (if (if (if ((assetId != toBase58String(signAssetId)))
121123 then (assetId != toBase58String(wavesAssetId))
122124 else false)
123125 then (assetId != "WAVES")
124126 else false)
125127 then (assetId != toBase58String(usdnAssetId))
126128 else false)
127129 then false
128130 else true
129131
130132
131133 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
132134 then unit
133135 else fromBase58String(assetId)
134136
135137
136138 func getSaleOwnerAndStatus (nftid) = {
137139 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
138140 if ((size(saleOwner) == 0))
139141 then throw("NFT not found")
140142 else {
141143 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
142144 if ((saleStatus != "OPEN"))
143145 then throw("NFT not for sale")
144146 else saleOwner
145147 }
146148 }
147149
148150
149151 func getBidData (key) = {
150152 let bidData = getStrByK((key + "_OPEN"))
151153 if ((bidData == ""))
152154 then throw("Offer not found")
153155 else {
154156 let bidDataArr = split(bidData, "_")
155157 let assetId = getBidAssetId(bidDataArr[2])
156158 $Tuple3(bidDataArr, assetId, bidData)
157159 }
158160 }
159161
160162
161163 func artIsValid (artStatus) = if ((artStatus != artIllegal))
162164 then (artStatus != artSuspended)
163165 else false
164166
165167
166168 func checkArtStatus (addr,id) = {
167169 let artStatus = getArtStrByK(keyFlag(addr, id))
168170 if (artIsValid(artStatus))
169171 then true
170172 else throw(("Original Artwork flagged as " + artStatus))
171173 }
172174
173175
174176 func checkArtistStatus (addr) = {
175177 let artistStatus = getUserStrByK(keyUserStatus(addr))
176178 if (containsElement([userSuspended, userRemoved], artistStatus))
177179 then throw(("Original Artist " + artistStatus))
178180 else true
179181 }
180182
181183
182184 func checkNFTInfo (assetId) = {
183185 let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
184186 let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
185187 if (if (!(checkArtStatus(nftData[6], nftData[5])))
186188 then !(checkArtistStatus(nftData[6]))
187189 else false)
188190 then $Tuple4(false, nftData[5], nftData[6], artSignID)
189191 else $Tuple4(true, nftData[5], nftData[6], artSignID)
190192 }
191193
192194
193195 func checkARTExist (artId,creatorAddr) = {
194196 let artSignID = getArtStrByK(keySignID(creatorAddr, artId))
195197 if ((size(artSignID) == 0))
196198 then throw("Artwork not found on SIGN Art")
197199 else if (if (!(checkArtStatus(creatorAddr, artId)))
198200 then !(checkArtistStatus(creatorAddr))
199201 else false)
200202 then false
201203 else true
202204 }
203205
204206
205207 func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
206208 let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(creatorAddr)), feeReceiver)
207209 let agentShare = valueOrElse(getInteger(userDapp, keySecondaryShare(creatorAddr)), 0)
208210 let amountForSign = fraction(amount, signCut, 100)
209211 let amountForCreator = fraction(amount, creatorCut, 100)
210212 let amountForOwner = (amount - (amountForSign + amountForCreator))
211213 let amountForAgent = if (if ((agent != feeReceiver))
212214 then (agentShare > 0)
213215 else false)
214216 then fraction(amount, agentShare, 100)
215217 else 0
216218 let commissions = if ((amountForAgent != 0))
217219 then [ScriptTransfer(Address(fromBase58String(feeReceiver)), (amountForSign - amountForAgent), assetId), ScriptTransfer(Address(fromBase58String(agent)), amountForAgent, assetId)]
218220 else [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
219221 let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
220222 let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
221223 let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
222224 $Tuple4(commissions, creatorFee, ownerFee, collectorNFT)
223225 }
224226
225227
226228 func validateMinSell (assetId,price) = {
227229 let minSellWaves = if (unitTest)
228230 then 10
229231 else getIntByKFromOracle("waves_min_sell")
230232 let minSellUsdn = 1000000
231233 let minSellSign = if (unitTest)
232234 then 1
233235 else (currentCertificationPrice * 2)
234236 if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
235237 then (minSellUsdn > price)
236238 else false)
237239 then (price != 0)
238240 else false)
239241 then true
240242 else if (if ((assetId == toBase58String(signAssetId)))
241243 then (minSellSign > price)
242244 else false)
243245 then (price != 0)
244246 else false)
245247 then true
246248 else if (if (if ((assetId == toBase58String(wavesAssetId)))
247249 then true
248250 else (assetId == "WAVES"))
249251 then (minSellWaves > price)
250252 else false)
251253 then (price != 0)
252254 else false)
253255 then false
254256 else true
255257 }
256258
257259
258260 func provideBaseData (i,nftId) = {
259- let $t097339772 = idCallerDate(i)
260- let id = $t097339772._1
261- let caller = $t097339772._2
262- let date = $t097339772._3
263- let $t097759844 = checkNFTInfo(nftId)
264- let isValidNFT = $t097759844._1
265- let artId = $t097759844._2
266- let creatorAddr = $t097759844._3
267- let artSignID = $t097759844._4
261+ let $t088018840 = idCallerDate(i)
262+ let id = $t088018840._1
263+ let caller = $t088018840._2
264+ let date = $t088018840._3
265+ let $t088438912 = checkNFTInfo(nftId)
266+ let isValidNFT = $t088438912._1
267+ let artId = $t088438912._2
268+ let creatorAddr = $t088438912._3
269+ let artSignID = $t088438912._4
268270 $Tuple7(id, caller, date, isValidNFT, artId, creatorAddr, artSignID)
269271 }
270272
271273
272274 func updateNumSales () = {
273275 let numSales = getIntByK(numSalesK)
274276 IntegerEntry(numSalesK, (numSales + 1))
275277 }
276278
277279
278280 @Callable(invoke)
281+func setConf (key,val) = {
282+ let caller = toString(invoke.caller)
283+ if (containsElement([chris, toString(this)], caller))
284+ then if (contains(key, "conf_"))
285+ then [StringEntry(key, val)]
286+ else throw("Entries starting with conf_ only")
287+ else throw("You are not allowed to change this")
288+ }
289+
290+
291+
292+@Callable(invoke)
279293 func appRunning (isLive,message) = {
280- let caller = toString(addressFromPublicKey(invoke.callerPublicKey))
294+ let caller = toString(invoke.caller)
281295 let id = toBase58String(invoke.transactionId)
282296 if (containsElement([chris, toString(this)], caller))
283297 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
284298 else throw("You are not allowed to change this")
285299 }
286300
287301
288302
289303 @Callable(i)
290304 func sellNFT (price,asset) = {
291- let $t01055710593 = isPayment(i)
292- let payment = $t01055710593._1
293- let amount = $t01055710593._2
305+ let $t0997710013 = isPayment(i)
306+ let payment = $t0997710013._1
307+ let amount = $t0997710013._2
294308 if ((amount != 1))
295309 then throw("No NFT attached")
296310 else {
297311 let nftId = if (if (isDefined(payment.assetId))
298312 then isSignArtNFT(value(payment.assetId))
299313 else false)
300314 then toBase58String(value(payment.assetId))
301315 else throw("Only SIGN Art NFT accepted.")
302- let $t01082710919 = provideBaseData(i, nftId)
303- let id = $t01082710919._1
304- let caller = $t01082710919._2
305- let date = $t01082710919._3
306- let isValidNFT = $t01082710919._4
307- let artId = $t01082710919._5
308- let creatorAddr = $t01082710919._6
309- let artSignID = $t01082710919._7
316+ let $t01024710339 = provideBaseData(i, nftId)
317+ let id = $t01024710339._1
318+ let caller = $t01024710339._2
319+ let date = $t01024710339._3
320+ let isValidNFT = $t01024710339._4
321+ let artId = $t01024710339._5
322+ let creatorAddr = $t01024710339._6
323+ let artSignID = $t01024710339._7
310324 if ((size(artSignID) == 0))
311325 then throw("Artwork not found on SIGN Art")
312326 else if (!(isValidNFT))
313327 then throw("Not a valid nft")
314328 else if (!(acceptedAssetIds(asset)))
315329 then throw("Only SIGN, USDN or WAVES accepted")
316330 else if (!(validateMinSell(asset, price)))
317331 then throw("Wrong minimum sell price")
318332 else [StringEntry((getSaleKey(caller, nftId, artId, creatorAddr) + "_OPEN"), ((((((((((((toString(date) + "_") + toString(price)) + "_") + asset) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + id)), StringEntry(((("sale2nd_status_" + caller) + "_") + nftId), "OPEN"), StringEntry(("current_owner_on_dapp_" + nftId), caller)]
319333 }
320334 }
321335
322336
323337
324338 @Callable(i)
325339 func updateSalePrice (nftId,price,asset) = {
326- let $t01179311885 = provideBaseData(i, nftId)
327- let id = $t01179311885._1
328- let caller = $t01179311885._2
329- let date = $t01179311885._3
330- let isValidNFT = $t01179311885._4
331- let artId = $t01179311885._5
332- let creatorAddr = $t01179311885._6
333- let artSignID = $t01179311885._7
340+ let $t01121311305 = provideBaseData(i, nftId)
341+ let id = $t01121311305._1
342+ let caller = $t01121311305._2
343+ let date = $t01121311305._3
344+ let isValidNFT = $t01121311305._4
345+ let artId = $t01121311305._5
346+ let creatorAddr = $t01121311305._6
347+ let artSignID = $t01121311305._7
334348 if ((size(artSignID) == 0))
335349 then throw("Artwork not found on SIGN Art, cancel your sale.")
336350 else if (!(isValidNFT))
337351 then throw("Not a valid nft")
338352 else {
339353 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
340354 if ((saleOwner != caller))
341355 then throw("You don't own this NFT")
342356 else {
343357 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
344358 if ((saleStatus != "OPEN"))
345359 then throw("Sale not active")
346360 else if (!(acceptedAssetIds(asset)))
347361 then throw("Only SIGN, USDN or WAVES accepted")
348362 else if (!(validateMinSell(asset, price)))
349363 then throw("Wrong minimum sell price")
350364 else {
351365 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
352366 let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
353367 [StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
354368 }
355369 }
356370 }
357371 }
358372
359373
360374
361375 @Callable(i)
362376 func cancelSale (nftId) = {
363- let $t01302713267 = provideBaseData(i, nftId)
364- let id = $t01302713267._1
365- let caller = $t01302713267._2
366- let date = $t01302713267._3
367- let isValidNFT = $t01302713267._4
368- let artId = $t01302713267._5
369- let creatorAddr = $t01302713267._6
370- let artSignID = $t01302713267._7
377+ let $t01244712687 = provideBaseData(i, nftId)
378+ let id = $t01244712687._1
379+ let caller = $t01244712687._2
380+ let date = $t01244712687._3
381+ let isValidNFT = $t01244712687._4
382+ let artId = $t01244712687._5
383+ let creatorAddr = $t01244712687._6
384+ let artSignID = $t01244712687._7
371385 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
372386 if ((saleOwner != caller))
373387 then throw("You don't own this NFT")
374388 else {
375389 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
376390 if ((saleStatus != "OPEN"))
377391 then throw("Sale not active")
378392 else {
379393 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
380394 let saleInfo = getStrByK((saleKey + "_OPEN"))
381395 [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))]
382396 }
383397 }
384398 }
385399
386400
387401
388402 @Callable(i)
389403 func buyNFT (nftId) = {
390- let $t01409814190 = provideBaseData(i, nftId)
391- let id = $t01409814190._1
392- let caller = $t01409814190._2
393- let date = $t01409814190._3
394- let isValidNFT = $t01409814190._4
395- let artId = $t01409814190._5
396- let creatorAddr = $t01409814190._6
397- let artSignID = $t01409814190._7
404+ let $t01351813610 = provideBaseData(i, nftId)
405+ let id = $t01351813610._1
406+ let caller = $t01351813610._2
407+ let date = $t01351813610._3
408+ let isValidNFT = $t01351813610._4
409+ let artId = $t01351813610._5
410+ let creatorAddr = $t01351813610._6
411+ let artSignID = $t01351813610._7
398412 if ((size(artSignID) == 0))
399413 then throw("Artwork not found on SIGN Art, cancel your sale.")
400414 else if (!(isValidNFT))
401415 then throw("Not a valid nft")
402416 else {
403417 let saleOwner = getSaleOwnerAndStatus(nftId)
404418 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
405419 let saleInfo = getStrByK((saleKey + "_OPEN"))
406420 if ((size(saleInfo) == 0))
407421 then throw("Sale Not found!")
408422 else {
409423 let saleInfoArray = split(saleInfo, "_")
410424 if ((parseInt(saleInfoArray[1]) == 0))
411425 then throw("Offer only")
412426 else {
413- let $t01468714723 = isPayment(i)
414- let payment = $t01468714723._1
415- let amount = $t01468714723._2
427+ let $t01410714143 = isPayment(i)
428+ let payment = $t01410714143._1
429+ let amount = $t01410714143._2
416430 let paymentAssetStr = if (isDefined(payment.assetId))
417431 then toBase58String(value(payment.assetId))
418432 else ""
419433 if (if ((saleInfoArray[1] != toString(amount)))
420434 then true
421435 else (saleInfoArray[2] != paymentAssetStr))
422436 then throw("Payment infos don't match.")
423437 else {
424- let $t01522915361 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
425- let commissions = $t01522915361._1
426- let creatorFee = $t01522915361._2
427- let ownerFee = $t01522915361._3
428- let collectorNFT = $t01522915361._4
438+ let $t01464914781 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
439+ let commissions = $t01464914781._1
440+ let creatorFee = $t01464914781._2
441+ let ownerFee = $t01464914781._3
442+ let collectorNFT = $t01464914781._4
429443 ([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(), creatorFee, ownerFee, collectorNFT] ++ commissions)
430444 }
431445 }
432446 }
433447 }
434448 }
435449
436450
437451
438452 @Callable(i)
439453 func setOffer (nftId) = {
440- let $t01577215868 = provideBaseData(i, nftId)
441- let id = $t01577215868._1
442- let offerOwner = $t01577215868._2
443- let date = $t01577215868._3
444- let isValidNFT = $t01577215868._4
445- let artId = $t01577215868._5
446- let creatorAddr = $t01577215868._6
447- let artSignID = $t01577215868._7
454+ let $t01519215288 = provideBaseData(i, nftId)
455+ let id = $t01519215288._1
456+ let offerOwner = $t01519215288._2
457+ let date = $t01519215288._3
458+ let isValidNFT = $t01519215288._4
459+ let artId = $t01519215288._5
460+ let creatorAddr = $t01519215288._6
461+ let artSignID = $t01519215288._7
448462 if (!(isValidNFT))
449463 then throw("Not a valid nft")
450464 else {
451- let $t01592915965 = isPayment(i)
452- let payment = $t01592915965._1
453- let amount = $t01592915965._2
465+ let $t01534915385 = isPayment(i)
466+ let payment = $t01534915385._1
467+ let amount = $t01534915385._2
454468 let assetId = if (!(isDefined(payment.assetId)))
455469 then "WAVES"
456470 else toBase58String(value(payment.assetId))
457471 if (!(acceptedAssetIds(assetId)))
458472 then throw("asset not accepted")
459473 else if ((amount == 0))
460474 then throw("Offer of 0 not allowed")
461475 else if (!(validateMinSell(assetId, amount)))
462476 then throw("Wrong minimum sell price")
463477 else {
464478 let saleOwner = getSaleOwnerAndStatus(nftId)
465479 [StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
466480 }
467481 }
468482 }
469483
470484
471485
472486 @Callable(i)
473487 func acceptOffer (nftId,offerId,offerOwner) = {
474- let $t01676716859 = provideBaseData(i, nftId)
475- let id = $t01676716859._1
476- let caller = $t01676716859._2
477- let date = $t01676716859._3
478- let isValidNFT = $t01676716859._4
479- let artId = $t01676716859._5
480- let creatorAddr = $t01676716859._6
481- let artSignID = $t01676716859._7
488+ let $t01618716279 = provideBaseData(i, nftId)
489+ let id = $t01618716279._1
490+ let caller = $t01618716279._2
491+ let date = $t01618716279._3
492+ let isValidNFT = $t01618716279._4
493+ let artId = $t01618716279._5
494+ let creatorAddr = $t01618716279._6
495+ let artSignID = $t01618716279._7
482496 if (!(isValidNFT))
483497 then throw("Not a valid nft")
484498 else {
485499 let saleOwner = getSaleOwnerAndStatus(nftId)
486500 if ((caller != saleOwner))
487501 then throw("Only sale owner can accept offer")
488502 else {
489503 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
490- let $t01711317168 = getBidData(bidKey)
491- let bidDataArr = $t01711317168._1
492- let assetId = $t01711317168._2
493- let bidData = $t01711317168._3
504+ let $t01653316588 = getBidData(bidKey)
505+ let bidDataArr = $t01653316588._1
506+ let assetId = $t01653316588._2
507+ let bidData = $t01653316588._3
494508 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
495509 let saleInfo = getStrByK((saleKey + "_OPEN"))
496510 if ((size(saleInfo) == 0))
497511 then throw("Sale Not found!")
498512 else {
499513 let amount = value(parseInt(bidDataArr[1]))
500- let $t01740417535 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
501- let commissions = $t01740417535._1
502- let creatorFee = $t01740417535._2
503- let ownerFee = $t01740417535._3
504- let collectorNFT = $t01740417535._4
514+ let $t01682416955 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
515+ let commissions = $t01682416955._1
516+ let creatorFee = $t01682416955._2
517+ let ownerFee = $t01682416955._3
518+ let collectorNFT = $t01682416955._4
505519 let assetIdStr = if (isDefined(assetId))
506520 then toBase58String(value(assetId))
507521 else "WAVES"
508522 ([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(), creatorFee, ownerFee, collectorNFT] ++ commissions)
509523 }
510524 }
511525 }
512526 }
513527
514528
515529
516530 @Callable(i)
517531 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
518- let $t01833518407 = idCallerDate(i)
519- let id = $t01833518407._1
520- let caller = $t01833518407._2
521- let date = $t01833518407._3
532+ let $t01775517827 = idCallerDate(i)
533+ let id = $t01775517827._1
534+ let caller = $t01775517827._2
535+ let date = $t01775517827._3
522536 if (if ((caller != offerOwner))
523537 then (caller != saleOwner)
524538 else false)
525539 then throw("You cannot cancel this offer.")
526540 else {
527541 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
528- let $t01857918634 = getBidData(bidKey)
529- let bidDataArr = $t01857918634._1
530- let assetId = $t01857918634._2
531- let bidData = $t01857918634._3
542+ let $t01799918054 = getBidData(bidKey)
543+ let bidDataArr = $t01799918054._1
544+ let assetId = $t01799918054._2
545+ let bidData = $t01799918054._3
532546 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
533547 }
534548 }
535549
536550

github/deemru/w8io/3ef1775 
130.13 ms