tx · EnUCkh4DYVqfZuJs9GpfrRvASJscXVedWWoftG5b3AfE

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01500000 Waves

2022.11.29 05:43 [2337805] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "EnUCkh4DYVqfZuJs9GpfrRvASJscXVedWWoftG5b3AfE", "fee": 1500000, "feeAssetId": null, "timestamp": 1669689809180, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "YLC8qSH6GosC3ghaMJv3LjXnfwvSNhkbZR6JvPEiFCGPLyp5j5DaKYXEhzaPbBkrStNst2oiaFuzVzrPj6ncwmF" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgINAEJZ2V0U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgAACHVuaXRUZXN0BwAJb3JhY2xlRmVlCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAg9jb25mX29yYWNsZV9mZWUAC2ZlZVJlY2VpdmVyCQEJZ2V0U3RyQnlLAQIRY29uZl9mZWVfcmVjZWl2ZXIADGFydHdvcmtzRGFwcAkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQISY29uZl9hcnR3b3Jrc19kYXBwAAh1c2VyRGFwcAMFCHVuaXRUZXN0CQEFdmFsdWUBCQCmCAECIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAg9jb25mX3VzZXJzX2RhcHAAC3NpZ25Bc3NldElkCQDZBAEJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1NJR04AC3VzZG5Bc3NldElkCQDZBAEJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRE4AC3VzZHRBc3NldElkCQDZBAEJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFQADHdhdmVzQXNzZXRJZAEAAAVjaHJpcwkBCWdldFN0ckJ5SwECDGNvbmZfYWRtaW5fMQAHc2lnbkN1dAADAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEAAphcnRJbGxlZ2FsAgdJTExFR0FMAAxhcnRTdXNwZW5kZWQCCVNVU1BFTkRFRAAOZGFwcFJ1bm5pbmdLZXkCFGNvbmZfZGFwcF9pc19ydW5uaW5nABFtYWludGVuYW5jZU1TR0tleQIUY29uZl9tYWludGVuYW5jZV9tc2cAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDmRhcHBSdW5uaW5nS2V5BgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwURbWFpbnRlbmFuY2VNU0dLZXkCAAAJbnVtU2FsZXNLAgludW1fc2FsZXMBDWdldFVzZXJTdHJCeUsBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAUDa2V5AgVFcnJvcgEQZ2V0VXNlclJveWFsdGllcwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwBQNrZXkACgEMZ2V0QXJ0U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUMYXJ0d29ya3NEYXBwBQNrZXkCAAEJZ2V0SW50QnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJoIAgUEdGhpcwUDa2V5AAABDWtleVVzZXJTdGF0dXMBBGFkZHIJAKwCAgIMdXNlcl9zdGF0dXNfBQRhZGRyARBrZXlVc2VyUm95YWx0aWVzAQRhZGRyCQCsAgICD3VzZXJfcm95YWx0aWVzXwUEYWRkcgEJa2V5U2lnbklEAgphcnRpc3RBZGRyBWFydElkCQCsAgIJAKwCAgkArAICAgthcnRfc2lnbmlkXwUFYXJ0SWQCAV8FCmFydGlzdEFkZHIBB2tleUZsYWcCCmFydGlzdEFkZHIFYXJ0SWQJAKwCAgkArAICCQCsAgICCWFydF9mbGFnXwUFYXJ0SWQCAV8FCmFydGlzdEFkZHIBCmtleU5GVERhdGEBAmlkCQCsAgICBG5mdF8FAmlkAQpnZXRTYWxlS2V5BAZjYWxsZXIFbmZ0SWQFYXJ0SWQLY3JlYXRvckFkZHIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgINc2FsZTJuZF9pbmZvXwUGY2FsbGVyAgFfBQVuZnRJZAIBXwUFYXJ0SWQCAV8FC2NyZWF0b3JBZGRyAQlnZXRCaWRLZXkECm9mZmVyT3duZXIFbmZ0SWQJc2FsZU93bmVyB29mZmVySWQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgIJb2ZmZXIybmRfBQpvZmZlck93bmVyAgFfBQVuZnRJZAIBXwUJc2FsZU93bmVyAgFfBQdvZmZlcklkARNnZXRJbnRCeUtGcm9tT3JhY2xlAQNrZXkJARN2YWx1ZU9yRXJyb3JNZXNzYWdlAgkAmggCBQlvcmFjbGVGZWUFA2tleQIfSW50ZWdlciB1bmRlZmluZSBvciAwIGluIG9yYWNsZQAZY3VycmVudENlcnRpZmljYXRpb25QcmljZQkBE2dldEludEJ5S0Zyb21PcmFjbGUBCQCsAgICEmNlcnRpZmljYXRpb25fZmVlXwkA2AQBBQtzaWduQXNzZXRJZAESa2V5QXJ0aXN0QWdlbnRBZGRyAQphcnRpc3RBZGRyCQCsAgICDWFydGlzdF9hZ2VudF8FCmFydGlzdEFkZHIBEWtleVNlY29uZGFyeVNoYXJlAQphcnRpc3RBZGRyCQCsAgICF2FydGlzdF9hZ2VudF9zZWNvbmRhcnlfBQphcnRpc3RBZGRyAQxpZENhbGxlckRhdGUBAWkDCQEBIQEFC2RhcHBSdW5uaW5nCQACAQUObWFpbnRlbmFuY2VNU0cJAJUKAwkA2AQBCAUBaQ10cmFuc2FjdGlvbklkCQDYBAEICAUBaQZjYWxsZXIFYnl0ZXMIBQlsYXN0QmxvY2sJdGltZXN0YW1wAQlpc1BheW1lbnQBAWkDCQAAAgkAkAMBCAUBaQhwYXltZW50cwAACQACAQITTm8gcGF5bWVudCBhdHRhY2hlZAQHcGF5bWVudAkBBXZhbHVlAQkAkQMCCAUBaQhwYXltZW50cwAABAZhbW91bnQJAQV2YWx1ZQEIBQdwYXltZW50BmFtb3VudAkAlAoCBQdwYXltZW50BQZhbW91bnQBDGFzc2V0SXNWYWxpZAEMYXNzZXREZXRhaWxzAwMDCQAAAggFDGFzc2V0RGV0YWlscwhxdWFudGl0eQABCQAAAggFDGFzc2V0RGV0YWlscwhkZWNpbWFscwAABwkAAAIIBQxhc3NldERldGFpbHMKcmVpc3N1YWJsZQcHCQAAAggFDGFzc2V0RGV0YWlscwZpc3N1ZXIFDGFydHdvcmtzRGFwcAcBDGlzU2lnbkFydE5GVAECaWQEDGFzc2V0RGV0YWlscwkBBXZhbHVlAQkA7AcBBQJpZAkBDGFzc2V0SXNWYWxpZAEFDGFzc2V0RGV0YWlscwEQYWNjZXB0ZWRBc3NldElkcwEHYXNzZXRJZAMDAwMDCQECIT0CBQdhc3NldElkCQDYBAEFC3NpZ25Bc3NldElkCQECIT0CBQdhc3NldElkCQDYBAEFDHdhdmVzQXNzZXRJZAcJAQIhPQIFB2Fzc2V0SWQCBVdBVkVTBwkBAiE9AgUHYXNzZXRJZAkA2AQBBQt1c2RuQXNzZXRJZAcJAQIhPQIFB2Fzc2V0SWQJANgEAQULdXNkdEFzc2V0SWQHBwYBDWdldEJpZEFzc2V0SWQBB2Fzc2V0SWQDCQAAAgUHYXNzZXRJZAIFV0FWRVMFBHVuaXQJANkEAQUHYXNzZXRJZAEVZ2V0U2FsZU93bmVyQW5kU3RhdHVzAQVuZnRpZAQJc2FsZU93bmVyCQEJZ2V0U3RyQnlLAQkArAICAhZjdXJyZW50X293bmVyX29uX2RhcHBfBQVuZnRpZAMJAAACCQCxAgEFCXNhbGVPd25lcgAACQACAQINTkZUIG5vdCBmb3VuZAQKc2FsZVN0YXR1cwkBCWdldFN0ckJ5SwEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRpZAMJAQIhPQIFCnNhbGVTdGF0dXMCBE9QRU4JAAIBAhBORlQgbm90IGZvciBzYWxlBQlzYWxlT3duZXIBCmdldEJpZERhdGEBA2tleQQHYmlkRGF0YQkBCWdldFN0ckJ5SwEJAKwCAgUDa2V5AgVfT1BFTgMJAAACBQdiaWREYXRhAgAJAAIBAg9PZmZlciBub3QgZm91bmQECmJpZERhdGFBcnIJALUJAgUHYmlkRGF0YQIBXwQHYXNzZXRJZAkBDWdldEJpZEFzc2V0SWQBCQCRAwIFCmJpZERhdGFBcnIAAgkAlQoDBQpiaWREYXRhQXJyBQdhc3NldElkBQdiaWREYXRhAQphcnRJc1ZhbGlkAQlhcnRTdGF0dXMDCQECIT0CBQlhcnRTdGF0dXMFCmFydElsbGVnYWwJAQIhPQIFCWFydFN0YXR1cwUMYXJ0U3VzcGVuZGVkBwEOY2hlY2tBcnRTdGF0dXMCBGFkZHICaWQECWFydFN0YXR1cwkBDGdldEFydFN0ckJ5SwEJAQdrZXlGbGFnAgUEYWRkcgUCaWQDCQEKYXJ0SXNWYWxpZAEFCWFydFN0YXR1cwYJAAIBCQCsAgICHE9yaWdpbmFsIEFydHdvcmsgZmxhZ2dlZCBhcyAFCWFydFN0YXR1cwERY2hlY2tBcnRpc3RTdGF0dXMBBGFkZHIEDGFydGlzdFN0YXR1cwkBDWdldFVzZXJTdHJCeUsBCQENa2V5VXNlclN0YXR1cwEFBGFkZHIDCQEPY29udGFpbnNFbGVtZW50AgkAzAgCBQ11c2VyU3VzcGVuZGVkCQDMCAIFC3VzZXJSZW1vdmVkBQNuaWwFDGFydGlzdFN0YXR1cwkAAgEJAKwCAgIQT3JpZ2luYWwgQXJ0aXN0IAUMYXJ0aXN0U3RhdHVzBgEMY2hlY2tORlRJbmZvAQdhc3NldElkBAduZnREYXRhCQC1CQIJAQxnZXRBcnRTdHJCeUsBCQEKa2V5TkZURGF0YQEFB2Fzc2V0SWQCAV8ECWFydFNpZ25JRAkBDGdldEFydFN0ckJ5SwEJAQlrZXlTaWduSUQCCQCRAwIFB25mdERhdGEABgkAkQMCBQduZnREYXRhAAUDAwkBASEBCQEOY2hlY2tBcnRTdGF0dXMCCQCRAwIFB25mdERhdGEABgkAkQMCBQduZnREYXRhAAUJAQEhAQkBEWNoZWNrQXJ0aXN0U3RhdHVzAQkAkQMCBQduZnREYXRhAAYHCQCWCgQHCQCRAwIFB25mdERhdGEABQkAkQMCBQduZnREYXRhAAYFCWFydFNpZ25JRAkAlgoEBgkAkQMCBQduZnREYXRhAAUJAJEDAgUHbmZ0RGF0YQAGBQlhcnRTaWduSUQBDHNldFRyYW5zZmVycwYGYW1vdW50B2Fzc2V0SWQFbmZ0aWQLY3JlYXRvckFkZHIJc2FsZU93bmVyBmNhbGxlcgQKY3JlYXRvckN1dAkBEGdldFVzZXJSb3lhbHRpZXMBCQEQa2V5VXNlclJveWFsdGllcwEFC2NyZWF0b3JBZGRyBAVhZ2VudAkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAkBEmtleUFydGlzdEFnZW50QWRkcgEFC2NyZWF0b3JBZGRyBQtmZWVSZWNlaXZlcgQKYWdlbnRTaGFyZQkBC3ZhbHVlT3JFbHNlAgkAmggCBQh1c2VyRGFwcAkBEWtleVNlY29uZGFyeVNoYXJlAQULY3JlYXRvckFkZHIAAAQNYW1vdW50Rm9yU2lnbgkAawMFBmFtb3VudAUHc2lnbkN1dABkBBBhbW91bnRGb3JDcmVhdG9yCQBrAwUGYW1vdW50BQpjcmVhdG9yQ3V0AGQEDmFtb3VudEZvck93bmVyCQBlAgUGYW1vdW50CQBkAgUNYW1vdW50Rm9yU2lnbgUQYW1vdW50Rm9yQ3JlYXRvcgQOYW1vdW50Rm9yQWdlbnQDAwkBAiE9AgUFYWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUKYWdlbnRTaGFyZQAABwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQBkAAAEC2NvbW1pc3Npb25zAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUFYWdlbnQFDmFtb3VudEZvckFnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQ1hbW91bnRGb3JTaWduBQdhc3NldElkBQNuaWwECmNyZWF0b3JGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtjcmVhdG9yQWRkcgUQYW1vdW50Rm9yQ3JlYXRvcgUHYXNzZXRJZAQIb3duZXJGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQlzYWxlT3duZXIFDmFtb3VudEZvck93bmVyBQdhc3NldElkBAxjb2xsZWN0b3JORlQJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQkA2QQBBQVuZnRpZAkAlgoEBQtjb21taXNzaW9ucwUKY3JlYXRvckZlZQUIb3duZXJGZWUFDGNvbGxlY3Rvck5GVAEPdmFsaWRhdGVNaW5TZWxsAgdhc3NldElkBXByaWNlBAxtaW5TZWxsV2F2ZXMDBQh1bml0VGVzdAAKCQETZ2V0SW50QnlLRnJvbU9yYWNsZQECDndhdmVzX21pbl9zZWxsBAttaW5TZWxsVXNkbgDAhD0EC21pblNlbGxTaWduAwUIdW5pdFRlc3QAAQkAaAIFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAgMDAwMDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkdEFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULc2lnbkFzc2V0SWQJAGYCBQttaW5TZWxsU2lnbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwMJAAACBQdhc3NldElkCQDYBAEFDHdhdmVzQXNzZXRJZAYJAAACBQdhc3NldElkAgVXQVZFUwkAZgIFDG1pblNlbGxXYXZlcwUFcHJpY2UHCQECIT0CBQVwcmljZQAABwcGAQ9wcm92aWRlQmFzZURhdGECAWkFbmZ0SWQECyR0MDk1NDU5NTg1CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQskdDA5NTQ1OTU4NQJfMQQGY2FsbGVyCAULJHQwOTU0NTk1ODUCXzIEBGRhdGUIBQskdDA5NTQ1OTU4NQJfMwQLJHQwOTU4OTk2NTgJAQxjaGVja05GVEluZm8BBQVuZnRJZAQKaXNWYWxpZE5GVAgFCyR0MDk1ODk5NjU4Al8xBAVhcnRJZAgFCyR0MDk1ODk5NjU4Al8yBAtjcmVhdG9yQWRkcggFCyR0MDk1ODk5NjU4Al8zBAlhcnRTaWduSUQIBQskdDA5NTg5OTY1OAJfNAkAmQoHBQJpZAUGY2FsbGVyBQRkYXRlBQppc1ZhbGlkTkZUBQVhcnRJZAULY3JlYXRvckFkZHIFCWFydFNpZ25JRAEOdXBkYXRlTnVtU2FsZXMABAhudW1TYWxlcwkBCWdldEludEJ5SwEFCW51bVNhbGVzSwkBDEludGVnZXJFbnRyeQIFCW51bVNhbGVzSwkAZAIFCG51bVNhbGVzAAEJBmludm9rZQEHc2V0Q29uZgIDa2V5A3ZhbAQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQhjb250YWlucwIFA2tleQIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBCmFwcFJ1bm5pbmcCBmlzTGl2ZQdtZXNzYWdlBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEAmlkCQDYBAEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDmRhcHBSdW5uaW5nS2V5BQZpc0xpdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgURbWFpbnRlbmFuY2VNU0dLZXkFB21lc3NhZ2UFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEHc2VsbE5GVAIFcHJpY2UFYXNzZXQEDSR0MDEwNzYzMTA3OTkJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTA3NjMxMDc5OQJfMQQGYW1vdW50CAUNJHQwMTA3NjMxMDc5OQJfMgMJAQIhPQIFBmFtb3VudAABCQACAQIPTm8gTkZUIGF0dGFjaGVkBAVuZnRJZAMDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkBDGlzU2lnbkFydE5GVAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQHCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhtPbmx5IFNJR04gQXJ0IE5GVCBhY2NlcHRlZC4EDSR0MDExMDM3MTExMzAJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMTAzNzExMTMwAl8xBAZjYWxsZXIIBQ0kdDAxMTAzNzExMTMwAl8yBARkYXRlCAUNJHQwMTEwMzcxMTEzMAJfMwQKaXNWYWxpZE5GVAgFDSR0MDExMDM3MTExMzACXzQEBWFydElkCAUNJHQwMTEwMzcxMTEzMAJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMTAzNzExMTMwAl82BAlhcnRTaWduSUQIBQ0kdDAxMTAzNzExMTMwAl83AwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAh1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECJ09ubHkgU0lHTiwgVVNETiwgVVNEVCBvciBXQVZFUyBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAIFBWFzc2V0BQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQpnZXRTYWxlS2V5BAUGY2FsbGVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQRkYXRlAgFfCQCkAwEFBXByaWNlAgFfBQVhc3NldAIBXwUFbmZ0SWQCAV8FBWFydElkAgFfBQtjcmVhdG9yQWRkcgIBXwUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAgRPUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQFBmNhbGxlcgUDbmlsAWkBD3VwZGF0ZVNhbGVQcmljZQMFbmZ0SWQFcHJpY2UFYXNzZXQEDSR0MDEyMDM0MTIxMjcJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMjAzNDEyMTI3Al8xBAZjYWxsZXIIBQ0kdDAxMjAzNDEyMTI3Al8yBARkYXRlCAUNJHQwMTIwMzQxMjEyNwJfMwQKaXNWYWxpZE5GVAgFDSR0MDEyMDM0MTIxMjcCXzQEBWFydElkCAUNJHQwMTIwMzQxMjEyNwJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMjAzNDEyMTI3Al82BAlhcnRTaWduSUQIBQ0kdDAxMjAzNDEyMTI3Al83AwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAjBBcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydCwgY2FuY2VsIHlvdXIgc2FsZS4DCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQDCQECIT0CBQlzYWxlT3duZXIFBmNhbGxlcgkAAgECFllvdSBkb24ndCBvd24gdGhpcyBORlQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIPU2FsZSBub3QgYWN0aXZlAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFBWFzc2V0CQACAQInT25seSBTSUdOLCBVU0ROLCBVU0RUIG9yIFdBVkVTIGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUFYXNzZXQFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQQFBmNhbGxlcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgQIc2FsZUluZm8JALUJAgkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4CAV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzYWxlS2V5AgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQhzYWxlSW5mbwAAAgFfCQCkAwEFBXByaWNlAgFfBQVhc3NldAIBXwkAkQMCBQhzYWxlSW5mbwADAgFfCQCRAwIFCHNhbGVJbmZvAAQCAV8JAJEDAgUIc2FsZUluZm8ABQIBXwkAkQMCBQhzYWxlSW5mbwAGBQNuaWwBaQEKY2FuY2VsU2FsZQEFbmZ0SWQEDSR0MDEzMzA0MTM1NDgJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMzMwNDEzNTQ4Al8xBAZjYWxsZXIIBQ0kdDAxMzMwNDEzNTQ4Al8yBARkYXRlCAUNJHQwMTMzMDQxMzU0OAJfMwQKaXNWYWxpZE5GVAgFDSR0MDEzMzA0MTM1NDgCXzQEBWFydElkCAUNJHQwMTMzMDQxMzU0OAJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMzMwNDEzNTQ4Al82BAlhcnRTaWduSUQIBQ0kdDAxMzMwNDEzNTQ4Al83BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQZjYWxsZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgpfQ0FOQ0VMTEVECQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEJANkEAQUFbmZ0SWQFA25pbAFpAQZidXlORlQBBW5mdElkBA0kdDAxNDQwMjE0NDk1CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTQ0MDIxNDQ5NQJfMQQGY2FsbGVyCAUNJHQwMTQ0MDIxNDQ5NQJfMgQEZGF0ZQgFDSR0MDE0NDAyMTQ0OTUCXzMECmlzVmFsaWRORlQIBQ0kdDAxNDQwMjE0NDk1Al80BAVhcnRJZAgFDSR0MDE0NDAyMTQ0OTUCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTQ0MDIxNDQ5NQJfNgQJYXJ0U2lnbklECAUNJHQwMTQ0MDIxNDQ5NQJfNwMJAAACCQCxAgEFCWFydFNpZ25JRAAACQACAQIwQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQsIGNhbmNlbCB5b3VyIHNhbGUuAwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQlzYWxlT3duZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgMJAAACCQCxAgEFCHNhbGVJbmZvAAAJAAIBAg9TYWxlIE5vdCBmb3VuZCEEDXNhbGVJbmZvQXJyYXkJALUJAgUIc2FsZUluZm8CAV8DCQAAAgkAtgkBCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQAACQACAQIKT2ZmZXIgb25seQQNJHQwMTUwMDQxNTA0MAkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxNTAwNDE1MDQwAl8xBAZhbW91bnQIBQ0kdDAxNTAwNDE1MDQwAl8yBA9wYXltZW50QXNzZXRTdHIDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAgADAwkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAEJAKQDAQUGYW1vdW50BgkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAIFD3BheW1lbnRBc3NldFN0cgkAAgECGlBheW1lbnQgaW5mb3MgZG9uJ3QgbWF0Y2guBA0kdDAxNTU1NDE1Njg2CQEMc2V0VHJhbnNmZXJzBgUGYW1vdW50CAUHcGF5bWVudAdhc3NldElkBQVuZnRJZAULY3JlYXRvckFkZHIFCXNhbGVPd25lcgUGY2FsbGVyBAtjb21taXNzaW9ucwgFDSR0MDE1NTU0MTU2ODYCXzEECmNyZWF0b3JGZWUIBQ0kdDAxNTU1NDE1Njg2Al8yBAhvd25lckZlZQgFDSR0MDE1NTU0MTU2ODYCXzMEDGNvbGxlY3Rvck5GVAgFDSR0MDE1NTU0MTU2ODYCXzQJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgdfQ0xPU0VECQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIIX0NMT1NFRF8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FBmNhbGxlcgkAzAgCCQEOdXBkYXRlTnVtU2FsZXMACQDMCAIFCmNyZWF0b3JGZWUJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUBQNuaWwFC2NvbW1pc3Npb25zAWkBCHNldE9mZmVyAQVuZnRJZAQNJHQwMTYxMTQxNjIxMQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE2MTE0MTYyMTECXzEECm9mZmVyT3duZXIIBQ0kdDAxNjExNDE2MjExAl8yBARkYXRlCAUNJHQwMTYxMTQxNjIxMQJfMwQKaXNWYWxpZE5GVAgFDSR0MDE2MTE0MTYyMTECXzQEBWFydElkCAUNJHQwMTYxMTQxNjIxMQJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxNjExNDE2MjExAl82BAlhcnRTaWduSUQIBQ0kdDAxNjExNDE2MjExAl83AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BA0kdDAxNjI3NTE2MzExCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDE2Mjc1MTYzMTECXzEEBmFtb3VudAgFDSR0MDE2Mjc1MTYzMTECXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFB2Fzc2V0SWQJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQAAAgUGYW1vdW50AAAJAAIBAhZPZmZlciBvZiAwIG5vdCBhbGxvd2VkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUHYXNzZXRJZAUGYW1vdW50CQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUGYW1vdW50AgFfBQdhc3NldElkAgFfBQVuZnRJZAIBXwUFYXJ0SWQCAV8FC2NyZWF0b3JBZGRyAgFfBQpvZmZlck93bmVyAgFfBQJpZAUDbmlsAWkBC2FjY2VwdE9mZmVyAwVuZnRJZAdvZmZlcklkCm9mZmVyT3duZXIEDSR0MDE3MTMyMTcyMjUJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxNzEzMjE3MjI1Al8xBAZjYWxsZXIIBQ0kdDAxNzEzMjE3MjI1Al8yBARkYXRlCAUNJHQwMTcxMzIxNzIyNQJfMwQKaXNWYWxpZE5GVAgFDSR0MDE3MTMyMTcyMjUCXzQEBWFydElkCAUNJHQwMTcxMzIxNzIyNQJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxNzEzMjE3MjI1Al82BAlhcnRTaWduSUQIBQ0kdDAxNzEzMjE3MjI1Al83AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAMJAQIhPQIFBmNhbGxlcgUJc2FsZU93bmVyCQACAQIgT25seSBzYWxlIG93bmVyIGNhbiBhY2NlcHQgb2ZmZXIEBmJpZEtleQkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFB29mZmVySWQEDSR0MDE3NDg2MTc1NDEJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMTc0ODYxNzU0MQJfMQQHYXNzZXRJZAgFDSR0MDE3NDg2MTc1NDECXzIEB2JpZERhdGEIBQ0kdDAxNzQ4NjE3NTQxAl8zBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQQFCXNhbGVPd25lcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgQIc2FsZUluZm8JAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAwkAAAIJALECAQUIc2FsZUluZm8AAAkAAgECD1NhbGUgTm90IGZvdW5kIQQGYW1vdW50CQEFdmFsdWUBCQC2CQEJAJEDAgUKYmlkRGF0YUFycgABBA0kdDAxNzc4NDE3OTE1CQEMc2V0VHJhbnNmZXJzBgUGYW1vdW50BQdhc3NldElkBQVuZnRJZAULY3JlYXRvckFkZHIFCXNhbGVPd25lcgkAkQMCBQpiaWREYXRhQXJyAAYEC2NvbW1pc3Npb25zCAUNJHQwMTc3ODQxNzkxNQJfMQQKY3JlYXRvckZlZQgFDSR0MDE3Nzg0MTc5MTUCXzIECG93bmVyRmVlCAUNJHQwMTc3ODQxNzkxNQJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMTc3ODQxNzkxNQJfNAQKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQdhc3NldElkCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQCBVdBVkVTCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBmJpZEtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZiaWRLZXkCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgUHYmlkRGF0YQIIX0NMT1NFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHc2FsZUtleQIBXwUCaWQCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUIc2FsZUluZm8CDl9DTE9TRUQtT0ZGRVJfCQCkAwEFBGRhdGUCAV8FAmlkAgFfBQpvZmZlck93bmVyAgFfCQCkAwEFBmFtb3VudAIBXwUKYXNzZXRJZFN0cgkAzAgCCQEOdXBkYXRlTnVtU2FsZXMACQDMCAIFCmNyZWF0b3JGZWUJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUBQNuaWwFC2NvbW1pc3Npb25zAWkBC2NhbmNlbE9mZmVyBAVuZnRJZAdvZmZlcklkCm9mZmVyT3duZXIJc2FsZU93bmVyBA0kdDAxODczNTE4ODEwCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxODczNTE4ODEwAl8xBAZjYWxsZXIIBQ0kdDAxODczNTE4ODEwAl8yBARkYXRlCAUNJHQwMTg3MzUxODgxMAJfMwMDCQECIT0CBQZjYWxsZXIFCm9mZmVyT3duZXIJAQIhPQIFBmNhbGxlcgUJc2FsZU93bmVyBwkAAgECHVlvdSBjYW5ub3QgY2FuY2VsIHRoaXMgb2ZmZXIuBAZiaWRLZXkJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQdvZmZlcklkBA0kdDAxODk4NDE5MDM5CQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDE4OTg0MTkwMzkCXzEEB2Fzc2V0SWQIBQ0kdDAxODk4NDE5MDM5Al8yBAdiaWREYXRhCAUNJHQwMTg5ODQxOTAzOQJfMwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBmJpZEtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZiaWRLZXkCCl9DQU5DRUxMRUQJAKwCAgkArAICCQCsAgIJAKwCAgUHYmlkRGF0YQILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQUHYXNzZXRJZAUDbmlsAAzPo6I=", "height": 2337805, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GARX1sUMfwnJRBPF4DxCPxc5riSnjsrFj7P3P5iRFD4Q Next: DEwcfARDv4Hf1VUrRLBPgiSnCY9PT51ZMsHkWzKGGWbT Diff:
OldNewDifferences
2828
2929 let signCut = 3
3030
31-let creatorCut = 10
32-
3331 let userSuspended = "SUSPENDED"
3432
3533 let userRemoved = "REMOVED"
5149 func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
5250
5351
52+func getUserRoyalties (key) = valueOrElse(getInteger(userDapp, key), 10)
53+
54+
5455 func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
5556
5657
5859
5960
6061 func keyUserStatus (addr) = ("user_status_" + addr)
62+
63+
64+func keyUserRoyalties (addr) = ("user_royalties_" + addr)
6165
6266
6367 func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
191195
192196
193197 func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
198+ let creatorCut = getUserRoyalties(keyUserRoyalties(creatorAddr))
194199 let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(creatorAddr)), feeReceiver)
195200 let agentShare = valueOrElse(getInteger(userDapp, keySecondaryShare(creatorAddr)), 0)
196201 let amountForSign = fraction(amount, signCut, 100)
250255
251256
252257 func provideBaseData (i,nftId) = {
253- let $t093049344 = idCallerDate(i)
254- let id = $t093049344._1
255- let caller = $t093049344._2
256- let date = $t093049344._3
257- let $t093489417 = checkNFTInfo(nftId)
258- let isValidNFT = $t093489417._1
259- let artId = $t093489417._2
260- let creatorAddr = $t093489417._3
261- let artSignID = $t093489417._4
258+ let $t095459585 = idCallerDate(i)
259+ let id = $t095459585._1
260+ let caller = $t095459585._2
261+ let date = $t095459585._3
262+ let $t095899658 = checkNFTInfo(nftId)
263+ let isValidNFT = $t095899658._1
264+ let artId = $t095899658._2
265+ let creatorAddr = $t095899658._3
266+ let artSignID = $t095899658._4
262267 $Tuple7(id, caller, date, isValidNFT, artId, creatorAddr, artSignID)
263268 }
264269
294299
295300 @Callable(i)
296301 func sellNFT (price,asset) = {
297- let $t01052210558 = isPayment(i)
298- let payment = $t01052210558._1
299- let amount = $t01052210558._2
302+ let $t01076310799 = isPayment(i)
303+ let payment = $t01076310799._1
304+ let amount = $t01076310799._2
300305 if ((amount != 1))
301306 then throw("No NFT attached")
302307 else {
305310 else false)
306311 then toBase58String(value(payment.assetId))
307312 else throw("Only SIGN Art NFT accepted.")
308- let $t01079610889 = provideBaseData(i, nftId)
309- let id = $t01079610889._1
310- let caller = $t01079610889._2
311- let date = $t01079610889._3
312- let isValidNFT = $t01079610889._4
313- let artId = $t01079610889._5
314- let creatorAddr = $t01079610889._6
315- let artSignID = $t01079610889._7
313+ let $t01103711130 = provideBaseData(i, nftId)
314+ let id = $t01103711130._1
315+ let caller = $t01103711130._2
316+ let date = $t01103711130._3
317+ let isValidNFT = $t01103711130._4
318+ let artId = $t01103711130._5
319+ let creatorAddr = $t01103711130._6
320+ let artSignID = $t01103711130._7
316321 if ((size(artSignID) == 0))
317322 then throw("Artwork not found on SIGN Art")
318323 else if (!(isValidNFT))
329334
330335 @Callable(i)
331336 func updateSalePrice (nftId,price,asset) = {
332- let $t01179311886 = provideBaseData(i, nftId)
333- let id = $t01179311886._1
334- let caller = $t01179311886._2
335- let date = $t01179311886._3
336- let isValidNFT = $t01179311886._4
337- let artId = $t01179311886._5
338- let creatorAddr = $t01179311886._6
339- let artSignID = $t01179311886._7
337+ let $t01203412127 = provideBaseData(i, nftId)
338+ let id = $t01203412127._1
339+ let caller = $t01203412127._2
340+ let date = $t01203412127._3
341+ let isValidNFT = $t01203412127._4
342+ let artId = $t01203412127._5
343+ let creatorAddr = $t01203412127._6
344+ let artSignID = $t01203412127._7
340345 if ((size(artSignID) == 0))
341346 then throw("Artwork not found on SIGN Art, cancel your sale.")
342347 else if (!(isValidNFT))
366371
367372 @Callable(i)
368373 func cancelSale (nftId) = {
369- let $t01306313307 = provideBaseData(i, nftId)
370- let id = $t01306313307._1
371- let caller = $t01306313307._2
372- let date = $t01306313307._3
373- let isValidNFT = $t01306313307._4
374- let artId = $t01306313307._5
375- let creatorAddr = $t01306313307._6
376- let artSignID = $t01306313307._7
374+ let $t01330413548 = provideBaseData(i, nftId)
375+ let id = $t01330413548._1
376+ let caller = $t01330413548._2
377+ let date = $t01330413548._3
378+ let isValidNFT = $t01330413548._4
379+ let artId = $t01330413548._5
380+ let creatorAddr = $t01330413548._6
381+ let artSignID = $t01330413548._7
377382 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
378383 if ((saleOwner != caller))
379384 then throw("You don't own this NFT")
393398
394399 @Callable(i)
395400 func buyNFT (nftId) = {
396- let $t01416114254 = provideBaseData(i, nftId)
397- let id = $t01416114254._1
398- let caller = $t01416114254._2
399- let date = $t01416114254._3
400- let isValidNFT = $t01416114254._4
401- let artId = $t01416114254._5
402- let creatorAddr = $t01416114254._6
403- let artSignID = $t01416114254._7
401+ let $t01440214495 = provideBaseData(i, nftId)
402+ let id = $t01440214495._1
403+ let caller = $t01440214495._2
404+ let date = $t01440214495._3
405+ let isValidNFT = $t01440214495._4
406+ let artId = $t01440214495._5
407+ let creatorAddr = $t01440214495._6
408+ let artSignID = $t01440214495._7
404409 if ((size(artSignID) == 0))
405410 then throw("Artwork not found on SIGN Art, cancel your sale.")
406411 else if (!(isValidNFT))
416421 if ((parseInt(saleInfoArray[1]) == 0))
417422 then throw("Offer only")
418423 else {
419- let $t01476314799 = isPayment(i)
420- let payment = $t01476314799._1
421- let amount = $t01476314799._2
424+ let $t01500415040 = isPayment(i)
425+ let payment = $t01500415040._1
426+ let amount = $t01500415040._2
422427 let paymentAssetStr = if (isDefined(payment.assetId))
423428 then toBase58String(value(payment.assetId))
424429 else ""
427432 else (saleInfoArray[2] != paymentAssetStr))
428433 then throw("Payment infos don't match.")
429434 else {
430- let $t01531315445 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
431- let commissions = $t01531315445._1
432- let creatorFee = $t01531315445._2
433- let ownerFee = $t01531315445._3
434- let collectorNFT = $t01531315445._4
435+ let $t01555415686 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
436+ let commissions = $t01555415686._1
437+ let creatorFee = $t01555415686._2
438+ let ownerFee = $t01555415686._3
439+ let collectorNFT = $t01555415686._4
435440 ([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)
436441 }
437442 }
443448
444449 @Callable(i)
445450 func setOffer (nftId) = {
446- let $t01587315970 = provideBaseData(i, nftId)
447- let id = $t01587315970._1
448- let offerOwner = $t01587315970._2
449- let date = $t01587315970._3
450- let isValidNFT = $t01587315970._4
451- let artId = $t01587315970._5
452- let creatorAddr = $t01587315970._6
453- let artSignID = $t01587315970._7
451+ let $t01611416211 = provideBaseData(i, nftId)
452+ let id = $t01611416211._1
453+ let offerOwner = $t01611416211._2
454+ let date = $t01611416211._3
455+ let isValidNFT = $t01611416211._4
456+ let artId = $t01611416211._5
457+ let creatorAddr = $t01611416211._6
458+ let artSignID = $t01611416211._7
454459 if (!(isValidNFT))
455460 then throw("Not a valid nft")
456461 else {
457- let $t01603416070 = isPayment(i)
458- let payment = $t01603416070._1
459- let amount = $t01603416070._2
462+ let $t01627516311 = isPayment(i)
463+ let payment = $t01627516311._1
464+ let amount = $t01627516311._2
460465 let assetId = if (!(isDefined(payment.assetId)))
461466 then "WAVES"
462467 else toBase58String(value(payment.assetId))
477482
478483 @Callable(i)
479484 func acceptOffer (nftId,offerId,offerOwner) = {
480- let $t01689116984 = provideBaseData(i, nftId)
481- let id = $t01689116984._1
482- let caller = $t01689116984._2
483- let date = $t01689116984._3
484- let isValidNFT = $t01689116984._4
485- let artId = $t01689116984._5
486- let creatorAddr = $t01689116984._6
487- let artSignID = $t01689116984._7
485+ let $t01713217225 = provideBaseData(i, nftId)
486+ let id = $t01713217225._1
487+ let caller = $t01713217225._2
488+ let date = $t01713217225._3
489+ let isValidNFT = $t01713217225._4
490+ let artId = $t01713217225._5
491+ let creatorAddr = $t01713217225._6
492+ let artSignID = $t01713217225._7
488493 if (!(isValidNFT))
489494 then throw("Not a valid nft")
490495 else {
493498 then throw("Only sale owner can accept offer")
494499 else {
495500 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
496- let $t01724517300 = getBidData(bidKey)
497- let bidDataArr = $t01724517300._1
498- let assetId = $t01724517300._2
499- let bidData = $t01724517300._3
501+ let $t01748617541 = getBidData(bidKey)
502+ let bidDataArr = $t01748617541._1
503+ let assetId = $t01748617541._2
504+ let bidData = $t01748617541._3
500505 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
501506 let saleInfo = getStrByK((saleKey + "_OPEN"))
502507 if ((size(saleInfo) == 0))
503508 then throw("Sale Not found!")
504509 else {
505510 let amount = value(parseInt(bidDataArr[1]))
506- let $t01754317674 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
507- let commissions = $t01754317674._1
508- let creatorFee = $t01754317674._2
509- let ownerFee = $t01754317674._3
510- let collectorNFT = $t01754317674._4
511+ let $t01778417915 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
512+ let commissions = $t01778417915._1
513+ let creatorFee = $t01778417915._2
514+ let ownerFee = $t01778417915._3
515+ let collectorNFT = $t01778417915._4
511516 let assetIdStr = if (isDefined(assetId))
512517 then toBase58String(value(assetId))
513518 else "WAVES"
521526
522527 @Callable(i)
523528 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
524- let $t01849418569 = idCallerDate(i)
525- let id = $t01849418569._1
526- let caller = $t01849418569._2
527- let date = $t01849418569._3
529+ let $t01873518810 = idCallerDate(i)
530+ let id = $t01873518810._1
531+ let caller = $t01873518810._2
532+ let date = $t01873518810._3
528533 if (if ((caller != offerOwner))
529534 then (caller != saleOwner)
530535 else false)
531536 then throw("You cannot cancel this offer.")
532537 else {
533538 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
534- let $t01874318798 = getBidData(bidKey)
535- let bidDataArr = $t01874318798._1
536- let assetId = $t01874318798._2
537- let bidData = $t01874318798._3
539+ let $t01898419039 = getBidData(bidKey)
540+ let bidDataArr = $t01898419039._1
541+ let assetId = $t01898419039._2
542+ let bidData = $t01898419039._3
538543 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
539544 }
540545 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 6 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 func getStrByK (key) = valueOrElse(getString(this, key), "")
55
66
77 let unitTest = false
88
99 let oracleFee = value(addressFromString(getStrByK("conf_oracle_fee")))
1010
1111 let feeReceiver = getStrByK("conf_fee_receiver")
1212
1313 let artworksDapp = value(addressFromString(getStrByK("conf_artworks_dapp")))
1414
1515 let userDapp = if (unitTest)
1616 then value(addressFromString("3Mt4RGMEyjSWYAocTPqd55wdHQQB3PU2UCm"))
1717 else value(addressFromString(getStrByK("conf_users_dapp")))
1818
1919 let signAssetId = fromBase58String(getStrByK("conf_accepted_asset_SIGN"))
2020
2121 let usdnAssetId = fromBase58String(getStrByK("conf_accepted_asset_USDN"))
2222
2323 let usdtAssetId = fromBase58String(getStrByK("conf_accepted_asset_USDT"))
2424
2525 let wavesAssetId = base58''
2626
2727 let chris = getStrByK("conf_admin_1")
2828
2929 let signCut = 3
3030
31-let creatorCut = 10
32-
3331 let userSuspended = "SUSPENDED"
3432
3533 let userRemoved = "REMOVED"
3634
3735 let artIllegal = "ILLEGAL"
3836
3937 let artSuspended = "SUSPENDED"
4038
4139 let dappRunningKey = "conf_dapp_is_running"
4240
4341 let maintenanceMSGKey = "conf_maintenance_msg"
4442
4543 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
4644
4745 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
4846
4947 let numSalesK = "num_sales"
5048
5149 func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
5250
5351
52+func getUserRoyalties (key) = valueOrElse(getInteger(userDapp, key), 10)
53+
54+
5455 func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
5556
5657
5758 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
5859
5960
6061 func keyUserStatus (addr) = ("user_status_" + addr)
62+
63+
64+func keyUserRoyalties (addr) = ("user_royalties_" + addr)
6165
6266
6367 func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
6468
6569
6670 func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
6771
6872
6973 func keyNFTData (id) = ("nft_" + id)
7074
7175
7276 func getSaleKey (caller,nftId,artId,creatorAddr) = ((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + artId) + "_") + creatorAddr)
7377
7478
7579 func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
7680
7781
7882 func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
7983
8084
8185 let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
8286
8387 func keyArtistAgentAddr (artistAddr) = ("artist_agent_" + artistAddr)
8488
8589
8690 func keySecondaryShare (artistAddr) = ("artist_agent_secondary_" + artistAddr)
8791
8892
8993 func idCallerDate (i) = if (!(dappRunning))
9094 then throw(maintenanceMSG)
9195 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
9296
9397
9498 func isPayment (i) = if ((size(i.payments) == 0))
9599 then throw("No payment attached")
96100 else {
97101 let payment = value(i.payments[0])
98102 let amount = value(payment.amount)
99103 $Tuple2(payment, amount)
100104 }
101105
102106
103107 func assetIsValid (assetDetails) = if (if (if ((assetDetails.quantity == 1))
104108 then (assetDetails.decimals == 0)
105109 else false)
106110 then (assetDetails.reissuable == false)
107111 else false)
108112 then (assetDetails.issuer == artworksDapp)
109113 else false
110114
111115
112116 func isSignArtNFT (id) = {
113117 let assetDetails = value(assetInfo(id))
114118 assetIsValid(assetDetails)
115119 }
116120
117121
118122 func acceptedAssetIds (assetId) = if (if (if (if (if ((assetId != toBase58String(signAssetId)))
119123 then (assetId != toBase58String(wavesAssetId))
120124 else false)
121125 then (assetId != "WAVES")
122126 else false)
123127 then (assetId != toBase58String(usdnAssetId))
124128 else false)
125129 then (assetId != toBase58String(usdtAssetId))
126130 else false)
127131 then false
128132 else true
129133
130134
131135 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
132136 then unit
133137 else fromBase58String(assetId)
134138
135139
136140 func getSaleOwnerAndStatus (nftid) = {
137141 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
138142 if ((size(saleOwner) == 0))
139143 then throw("NFT not found")
140144 else {
141145 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
142146 if ((saleStatus != "OPEN"))
143147 then throw("NFT not for sale")
144148 else saleOwner
145149 }
146150 }
147151
148152
149153 func getBidData (key) = {
150154 let bidData = getStrByK((key + "_OPEN"))
151155 if ((bidData == ""))
152156 then throw("Offer not found")
153157 else {
154158 let bidDataArr = split(bidData, "_")
155159 let assetId = getBidAssetId(bidDataArr[2])
156160 $Tuple3(bidDataArr, assetId, bidData)
157161 }
158162 }
159163
160164
161165 func artIsValid (artStatus) = if ((artStatus != artIllegal))
162166 then (artStatus != artSuspended)
163167 else false
164168
165169
166170 func checkArtStatus (addr,id) = {
167171 let artStatus = getArtStrByK(keyFlag(addr, id))
168172 if (artIsValid(artStatus))
169173 then true
170174 else throw(("Original Artwork flagged as " + artStatus))
171175 }
172176
173177
174178 func checkArtistStatus (addr) = {
175179 let artistStatus = getUserStrByK(keyUserStatus(addr))
176180 if (containsElement([userSuspended, userRemoved], artistStatus))
177181 then throw(("Original Artist " + artistStatus))
178182 else true
179183 }
180184
181185
182186 func checkNFTInfo (assetId) = {
183187 let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
184188 let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
185189 if (if (!(checkArtStatus(nftData[6], nftData[5])))
186190 then !(checkArtistStatus(nftData[6]))
187191 else false)
188192 then $Tuple4(false, nftData[5], nftData[6], artSignID)
189193 else $Tuple4(true, nftData[5], nftData[6], artSignID)
190194 }
191195
192196
193197 func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
198+ let creatorCut = getUserRoyalties(keyUserRoyalties(creatorAddr))
194199 let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(creatorAddr)), feeReceiver)
195200 let agentShare = valueOrElse(getInteger(userDapp, keySecondaryShare(creatorAddr)), 0)
196201 let amountForSign = fraction(amount, signCut, 100)
197202 let amountForCreator = fraction(amount, creatorCut, 100)
198203 let amountForOwner = (amount - (amountForSign + amountForCreator))
199204 let amountForAgent = if (if ((agent != feeReceiver))
200205 then (agentShare > 0)
201206 else false)
202207 then fraction(amount, agentShare, 100)
203208 else 0
204209 let commissions = if ((amountForAgent != 0))
205210 then [ScriptTransfer(Address(fromBase58String(feeReceiver)), (amountForSign - amountForAgent), assetId), ScriptTransfer(Address(fromBase58String(agent)), amountForAgent, assetId)]
206211 else [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
207212 let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
208213 let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
209214 let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
210215 $Tuple4(commissions, creatorFee, ownerFee, collectorNFT)
211216 }
212217
213218
214219 func validateMinSell (assetId,price) = {
215220 let minSellWaves = if (unitTest)
216221 then 10
217222 else getIntByKFromOracle("waves_min_sell")
218223 let minSellUsdn = 1000000
219224 let minSellSign = if (unitTest)
220225 then 1
221226 else (currentCertificationPrice * 2)
222227 if (if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
223228 then (minSellUsdn > price)
224229 else false)
225230 then (price != 0)
226231 else false)
227232 then true
228233 else if (if ((assetId == toBase58String(usdtAssetId)))
229234 then (minSellUsdn > price)
230235 else false)
231236 then (price != 0)
232237 else false)
233238 then true
234239 else if (if ((assetId == toBase58String(signAssetId)))
235240 then (minSellSign > price)
236241 else false)
237242 then (price != 0)
238243 else false)
239244 then true
240245 else if (if (if ((assetId == toBase58String(wavesAssetId)))
241246 then true
242247 else (assetId == "WAVES"))
243248 then (minSellWaves > price)
244249 else false)
245250 then (price != 0)
246251 else false)
247252 then false
248253 else true
249254 }
250255
251256
252257 func provideBaseData (i,nftId) = {
253- let $t093049344 = idCallerDate(i)
254- let id = $t093049344._1
255- let caller = $t093049344._2
256- let date = $t093049344._3
257- let $t093489417 = checkNFTInfo(nftId)
258- let isValidNFT = $t093489417._1
259- let artId = $t093489417._2
260- let creatorAddr = $t093489417._3
261- let artSignID = $t093489417._4
258+ let $t095459585 = idCallerDate(i)
259+ let id = $t095459585._1
260+ let caller = $t095459585._2
261+ let date = $t095459585._3
262+ let $t095899658 = checkNFTInfo(nftId)
263+ let isValidNFT = $t095899658._1
264+ let artId = $t095899658._2
265+ let creatorAddr = $t095899658._3
266+ let artSignID = $t095899658._4
262267 $Tuple7(id, caller, date, isValidNFT, artId, creatorAddr, artSignID)
263268 }
264269
265270
266271 func updateNumSales () = {
267272 let numSales = getIntByK(numSalesK)
268273 IntegerEntry(numSalesK, (numSales + 1))
269274 }
270275
271276
272277 @Callable(invoke)
273278 func setConf (key,val) = {
274279 let caller = toString(invoke.caller)
275280 if (containsElement([chris, toString(this)], caller))
276281 then if (contains(key, "conf_"))
277282 then [StringEntry(key, val)]
278283 else throw("Entries starting with conf_ only")
279284 else throw("You are not allowed to change this")
280285 }
281286
282287
283288
284289 @Callable(invoke)
285290 func appRunning (isLive,message) = {
286291 let caller = toString(invoke.caller)
287292 let id = toBase58String(invoke.transactionId)
288293 if (containsElement([chris, toString(this)], caller))
289294 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
290295 else throw("You are not allowed to change this")
291296 }
292297
293298
294299
295300 @Callable(i)
296301 func sellNFT (price,asset) = {
297- let $t01052210558 = isPayment(i)
298- let payment = $t01052210558._1
299- let amount = $t01052210558._2
302+ let $t01076310799 = isPayment(i)
303+ let payment = $t01076310799._1
304+ let amount = $t01076310799._2
300305 if ((amount != 1))
301306 then throw("No NFT attached")
302307 else {
303308 let nftId = if (if (isDefined(payment.assetId))
304309 then isSignArtNFT(value(payment.assetId))
305310 else false)
306311 then toBase58String(value(payment.assetId))
307312 else throw("Only SIGN Art NFT accepted.")
308- let $t01079610889 = provideBaseData(i, nftId)
309- let id = $t01079610889._1
310- let caller = $t01079610889._2
311- let date = $t01079610889._3
312- let isValidNFT = $t01079610889._4
313- let artId = $t01079610889._5
314- let creatorAddr = $t01079610889._6
315- let artSignID = $t01079610889._7
313+ let $t01103711130 = provideBaseData(i, nftId)
314+ let id = $t01103711130._1
315+ let caller = $t01103711130._2
316+ let date = $t01103711130._3
317+ let isValidNFT = $t01103711130._4
318+ let artId = $t01103711130._5
319+ let creatorAddr = $t01103711130._6
320+ let artSignID = $t01103711130._7
316321 if ((size(artSignID) == 0))
317322 then throw("Artwork not found on SIGN Art")
318323 else if (!(isValidNFT))
319324 then throw("Not a valid nft")
320325 else if (!(acceptedAssetIds(asset)))
321326 then throw("Only SIGN, USDN, USDT or WAVES accepted")
322327 else if (!(validateMinSell(asset, price)))
323328 then throw("Wrong minimum sell price")
324329 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)]
325330 }
326331 }
327332
328333
329334
330335 @Callable(i)
331336 func updateSalePrice (nftId,price,asset) = {
332- let $t01179311886 = provideBaseData(i, nftId)
333- let id = $t01179311886._1
334- let caller = $t01179311886._2
335- let date = $t01179311886._3
336- let isValidNFT = $t01179311886._4
337- let artId = $t01179311886._5
338- let creatorAddr = $t01179311886._6
339- let artSignID = $t01179311886._7
337+ let $t01203412127 = provideBaseData(i, nftId)
338+ let id = $t01203412127._1
339+ let caller = $t01203412127._2
340+ let date = $t01203412127._3
341+ let isValidNFT = $t01203412127._4
342+ let artId = $t01203412127._5
343+ let creatorAddr = $t01203412127._6
344+ let artSignID = $t01203412127._7
340345 if ((size(artSignID) == 0))
341346 then throw("Artwork not found on SIGN Art, cancel your sale.")
342347 else if (!(isValidNFT))
343348 then throw("Not a valid nft")
344349 else {
345350 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
346351 if ((saleOwner != caller))
347352 then throw("You don't own this NFT")
348353 else {
349354 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
350355 if ((saleStatus != "OPEN"))
351356 then throw("Sale not active")
352357 else if (!(acceptedAssetIds(asset)))
353358 then throw("Only SIGN, USDN, USDT or WAVES accepted")
354359 else if (!(validateMinSell(asset, price)))
355360 then throw("Wrong minimum sell price")
356361 else {
357362 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
358363 let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
359364 [StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
360365 }
361366 }
362367 }
363368 }
364369
365370
366371
367372 @Callable(i)
368373 func cancelSale (nftId) = {
369- let $t01306313307 = provideBaseData(i, nftId)
370- let id = $t01306313307._1
371- let caller = $t01306313307._2
372- let date = $t01306313307._3
373- let isValidNFT = $t01306313307._4
374- let artId = $t01306313307._5
375- let creatorAddr = $t01306313307._6
376- let artSignID = $t01306313307._7
374+ let $t01330413548 = provideBaseData(i, nftId)
375+ let id = $t01330413548._1
376+ let caller = $t01330413548._2
377+ let date = $t01330413548._3
378+ let isValidNFT = $t01330413548._4
379+ let artId = $t01330413548._5
380+ let creatorAddr = $t01330413548._6
381+ let artSignID = $t01330413548._7
377382 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
378383 if ((saleOwner != caller))
379384 then throw("You don't own this NFT")
380385 else {
381386 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
382387 if ((saleStatus != "OPEN"))
383388 then throw("Sale not active")
384389 else {
385390 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
386391 let saleInfo = getStrByK((saleKey + "_OPEN"))
387392 [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))]
388393 }
389394 }
390395 }
391396
392397
393398
394399 @Callable(i)
395400 func buyNFT (nftId) = {
396- let $t01416114254 = provideBaseData(i, nftId)
397- let id = $t01416114254._1
398- let caller = $t01416114254._2
399- let date = $t01416114254._3
400- let isValidNFT = $t01416114254._4
401- let artId = $t01416114254._5
402- let creatorAddr = $t01416114254._6
403- let artSignID = $t01416114254._7
401+ let $t01440214495 = provideBaseData(i, nftId)
402+ let id = $t01440214495._1
403+ let caller = $t01440214495._2
404+ let date = $t01440214495._3
405+ let isValidNFT = $t01440214495._4
406+ let artId = $t01440214495._5
407+ let creatorAddr = $t01440214495._6
408+ let artSignID = $t01440214495._7
404409 if ((size(artSignID) == 0))
405410 then throw("Artwork not found on SIGN Art, cancel your sale.")
406411 else if (!(isValidNFT))
407412 then throw("Not a valid nft")
408413 else {
409414 let saleOwner = getSaleOwnerAndStatus(nftId)
410415 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
411416 let saleInfo = getStrByK((saleKey + "_OPEN"))
412417 if ((size(saleInfo) == 0))
413418 then throw("Sale Not found!")
414419 else {
415420 let saleInfoArray = split(saleInfo, "_")
416421 if ((parseInt(saleInfoArray[1]) == 0))
417422 then throw("Offer only")
418423 else {
419- let $t01476314799 = isPayment(i)
420- let payment = $t01476314799._1
421- let amount = $t01476314799._2
424+ let $t01500415040 = isPayment(i)
425+ let payment = $t01500415040._1
426+ let amount = $t01500415040._2
422427 let paymentAssetStr = if (isDefined(payment.assetId))
423428 then toBase58String(value(payment.assetId))
424429 else ""
425430 if (if ((saleInfoArray[1] != toString(amount)))
426431 then true
427432 else (saleInfoArray[2] != paymentAssetStr))
428433 then throw("Payment infos don't match.")
429434 else {
430- let $t01531315445 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
431- let commissions = $t01531315445._1
432- let creatorFee = $t01531315445._2
433- let ownerFee = $t01531315445._3
434- let collectorNFT = $t01531315445._4
435+ let $t01555415686 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
436+ let commissions = $t01555415686._1
437+ let creatorFee = $t01555415686._2
438+ let ownerFee = $t01555415686._3
439+ let collectorNFT = $t01555415686._4
435440 ([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)
436441 }
437442 }
438443 }
439444 }
440445 }
441446
442447
443448
444449 @Callable(i)
445450 func setOffer (nftId) = {
446- let $t01587315970 = provideBaseData(i, nftId)
447- let id = $t01587315970._1
448- let offerOwner = $t01587315970._2
449- let date = $t01587315970._3
450- let isValidNFT = $t01587315970._4
451- let artId = $t01587315970._5
452- let creatorAddr = $t01587315970._6
453- let artSignID = $t01587315970._7
451+ let $t01611416211 = provideBaseData(i, nftId)
452+ let id = $t01611416211._1
453+ let offerOwner = $t01611416211._2
454+ let date = $t01611416211._3
455+ let isValidNFT = $t01611416211._4
456+ let artId = $t01611416211._5
457+ let creatorAddr = $t01611416211._6
458+ let artSignID = $t01611416211._7
454459 if (!(isValidNFT))
455460 then throw("Not a valid nft")
456461 else {
457- let $t01603416070 = isPayment(i)
458- let payment = $t01603416070._1
459- let amount = $t01603416070._2
462+ let $t01627516311 = isPayment(i)
463+ let payment = $t01627516311._1
464+ let amount = $t01627516311._2
460465 let assetId = if (!(isDefined(payment.assetId)))
461466 then "WAVES"
462467 else toBase58String(value(payment.assetId))
463468 if (!(acceptedAssetIds(assetId)))
464469 then throw("asset not accepted")
465470 else if ((amount == 0))
466471 then throw("Offer of 0 not allowed")
467472 else if (!(validateMinSell(assetId, amount)))
468473 then throw("Wrong minimum sell price")
469474 else {
470475 let saleOwner = getSaleOwnerAndStatus(nftId)
471476 [StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
472477 }
473478 }
474479 }
475480
476481
477482
478483 @Callable(i)
479484 func acceptOffer (nftId,offerId,offerOwner) = {
480- let $t01689116984 = provideBaseData(i, nftId)
481- let id = $t01689116984._1
482- let caller = $t01689116984._2
483- let date = $t01689116984._3
484- let isValidNFT = $t01689116984._4
485- let artId = $t01689116984._5
486- let creatorAddr = $t01689116984._6
487- let artSignID = $t01689116984._7
485+ let $t01713217225 = provideBaseData(i, nftId)
486+ let id = $t01713217225._1
487+ let caller = $t01713217225._2
488+ let date = $t01713217225._3
489+ let isValidNFT = $t01713217225._4
490+ let artId = $t01713217225._5
491+ let creatorAddr = $t01713217225._6
492+ let artSignID = $t01713217225._7
488493 if (!(isValidNFT))
489494 then throw("Not a valid nft")
490495 else {
491496 let saleOwner = getSaleOwnerAndStatus(nftId)
492497 if ((caller != saleOwner))
493498 then throw("Only sale owner can accept offer")
494499 else {
495500 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
496- let $t01724517300 = getBidData(bidKey)
497- let bidDataArr = $t01724517300._1
498- let assetId = $t01724517300._2
499- let bidData = $t01724517300._3
501+ let $t01748617541 = getBidData(bidKey)
502+ let bidDataArr = $t01748617541._1
503+ let assetId = $t01748617541._2
504+ let bidData = $t01748617541._3
500505 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
501506 let saleInfo = getStrByK((saleKey + "_OPEN"))
502507 if ((size(saleInfo) == 0))
503508 then throw("Sale Not found!")
504509 else {
505510 let amount = value(parseInt(bidDataArr[1]))
506- let $t01754317674 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
507- let commissions = $t01754317674._1
508- let creatorFee = $t01754317674._2
509- let ownerFee = $t01754317674._3
510- let collectorNFT = $t01754317674._4
511+ let $t01778417915 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
512+ let commissions = $t01778417915._1
513+ let creatorFee = $t01778417915._2
514+ let ownerFee = $t01778417915._3
515+ let collectorNFT = $t01778417915._4
511516 let assetIdStr = if (isDefined(assetId))
512517 then toBase58String(value(assetId))
513518 else "WAVES"
514519 ([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)
515520 }
516521 }
517522 }
518523 }
519524
520525
521526
522527 @Callable(i)
523528 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
524- let $t01849418569 = idCallerDate(i)
525- let id = $t01849418569._1
526- let caller = $t01849418569._2
527- let date = $t01849418569._3
529+ let $t01873518810 = idCallerDate(i)
530+ let id = $t01873518810._1
531+ let caller = $t01873518810._2
532+ let date = $t01873518810._3
528533 if (if ((caller != offerOwner))
529534 then (caller != saleOwner)
530535 else false)
531536 then throw("You cannot cancel this offer.")
532537 else {
533538 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
534- let $t01874318798 = getBidData(bidKey)
535- let bidDataArr = $t01874318798._1
536- let assetId = $t01874318798._2
537- let bidData = $t01874318798._3
539+ let $t01898419039 = getBidData(bidKey)
540+ let bidDataArr = $t01898419039._1
541+ let assetId = $t01898419039._2
542+ let bidData = $t01898419039._3
538543 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
539544 }
540545 }
541546
542547

github/deemru/w8io/3ef1775 
125.61 ms