tx · BKD5DDgy75Fdw5CkgATw995S8rGvnrxLobiMSNRepcpb

3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p:  -0.01500000 Waves

2022.11.30 07:10 [2339349] smart account 3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p > SELF 0.00000000 Waves

{ "type": 13, "id": "BKD5DDgy75Fdw5CkgATw995S8rGvnrxLobiMSNRepcpb", "fee": 1500000, "feeAssetId": null, "timestamp": 1669781504079, "version": 2, "chainId": 84, "sender": "3N2eA4yzXa4wTj7pP8r6G144RRxZW7cmq4p", "senderPublicKey": "Hh3eFP2XFetZSfTxQiM1Ps96f68zi8Zh5ghhCZdjgdFs", "proofs": [ "3JgdcyYfzfJtKwA5hTaF3FF3mKhf3vQvvEkVC5ahThmWDC5pMyFHmKs1rZ9772Tx9oK5sT141UqLZtK78MY5zTDS" ], "script": "base64:BgI5CAISBAoCCAgSBAoCBAgSBAoCAQgSBQoDCAEIEgMKAQgSAwoBCBIDCgEIEgUKAwgICBIGCgQICAgINAEJZ2V0U3RyQnlLAQNrZXkJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwUDa2V5AgAACHVuaXRUZXN0BwAJb3JhY2xlRmVlCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAg9jb25mX29yYWNsZV9mZWUAC2ZlZVJlY2VpdmVyCQEJZ2V0U3RyQnlLAQIRY29uZl9mZWVfcmVjZWl2ZXIADGFydHdvcmtzRGFwcAkBBXZhbHVlAQkApggBCQEJZ2V0U3RyQnlLAQISY29uZl9hcnR3b3Jrc19kYXBwAAh1c2VyRGFwcAMFCHVuaXRUZXN0CQEFdmFsdWUBCQCmCAECIzNNdDRSR01FeWpTV1lBb2NUUHFkNTV3ZEhRUUIzUFUyVUNtCQEFdmFsdWUBCQCmCAEJAQlnZXRTdHJCeUsBAg9jb25mX3VzZXJzX2RhcHAAC3NpZ25Bc3NldElkCQDZBAEJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1NJR04AC3VzZG5Bc3NldElkCQDZBAEJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRE4AC3VzZHRBc3NldElkCQDZBAEJAQlnZXRTdHJCeUsBAhhjb25mX2FjY2VwdGVkX2Fzc2V0X1VTRFQADHdhdmVzQXNzZXRJZAEAAAVjaHJpcwkBCWdldFN0ckJ5SwECDGNvbmZfYWRtaW5fMQAHc2lnbkN1dAADAA11c2VyU3VzcGVuZGVkAglTVVNQRU5ERUQAC3VzZXJSZW1vdmVkAgdSRU1PVkVEAAphcnRJbGxlZ2FsAgdJTExFR0FMAAxhcnRTdXNwZW5kZWQCCVNVU1BFTkRFRAAOZGFwcFJ1bm5pbmdLZXkCFGNvbmZfZGFwcF9pc19ydW5uaW5nABFtYWludGVuYW5jZU1TR0tleQIUY29uZl9tYWludGVuYW5jZV9tc2cAC2RhcHBSdW5uaW5nCQELdmFsdWVPckVsc2UCCQCbCAIFBHRoaXMFDmRhcHBSdW5uaW5nS2V5BgAObWFpbnRlbmFuY2VNU0cJAQt2YWx1ZU9yRWxzZQIJAJ0IAgUEdGhpcwURbWFpbnRlbmFuY2VNU0dLZXkCAAAJbnVtU2FsZXNLAgludW1fc2FsZXMBDWdldFVzZXJTdHJCeUsBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQh1c2VyRGFwcAUDa2V5AgVFcnJvcgETZ2V0QXJ0d29ya1JveWFsdGllcwEDa2V5CQELdmFsdWVPckVsc2UCCQCaCAIFDGFydHdvcmtzRGFwcAUDa2V5AOgHAQxnZXRBcnRTdHJCeUsBA2tleQkBC3ZhbHVlT3JFbHNlAgkAnQgCBQxhcnR3b3Jrc0RhcHAFA2tleQIAAQlnZXRJbnRCeUsBA2tleQkBC3ZhbHVlT3JFbHNlAgkAmggCBQR0aGlzBQNrZXkAAAENa2V5VXNlclN0YXR1cwEEYWRkcgkArAICAgx1c2VyX3N0YXR1c18FBGFkZHIBE2tleUFydHdvcmtSb3lhbHRpZXMCBmNhbGxlcgVhcnRJZAkArAICCQCsAgIJAKwCAgIOYXJ0X3JveWFsdGllc18FBWFydElkAgFfBQZjYWxsZXIBCWtleVNpZ25JRAIKYXJ0aXN0QWRkcgVhcnRJZAkArAICCQCsAgIJAKwCAgILYXJ0X3NpZ25pZF8FBWFydElkAgFfBQphcnRpc3RBZGRyAQdrZXlGbGFnAgphcnRpc3RBZGRyBWFydElkCQCsAgIJAKwCAgkArAICAglhcnRfZmxhZ18FBWFydElkAgFfBQphcnRpc3RBZGRyAQprZXlORlREYXRhAQJpZAkArAICAgRuZnRfBQJpZAEKZ2V0U2FsZUtleQQGY2FsbGVyBW5mdElkBWFydElkC2NyZWF0b3JBZGRyCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICDXNhbGUybmRfaW5mb18FBmNhbGxlcgIBXwUFbmZ0SWQCAV8FBWFydElkAgFfBQtjcmVhdG9yQWRkcgEJZ2V0QmlkS2V5BApvZmZlck93bmVyBW5mdElkCXNhbGVPd25lcgdvZmZlcklkCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgICCW9mZmVyMm5kXwUKb2ZmZXJPd25lcgIBXwUFbmZ0SWQCAV8FCXNhbGVPd25lcgIBXwUHb2ZmZXJJZAETZ2V0SW50QnlLRnJvbU9yYWNsZQEDa2V5CQETdmFsdWVPckVycm9yTWVzc2FnZQIJAJoIAgUJb3JhY2xlRmVlBQNrZXkCH0ludGVnZXIgdW5kZWZpbmUgb3IgMCBpbiBvcmFjbGUAGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UJARNnZXRJbnRCeUtGcm9tT3JhY2xlAQkArAICAhJjZXJ0aWZpY2F0aW9uX2ZlZV8JANgEAQULc2lnbkFzc2V0SWQBEmtleUFydGlzdEFnZW50QWRkcgEKYXJ0aXN0QWRkcgkArAICAg1hcnRpc3RfYWdlbnRfBQphcnRpc3RBZGRyARFrZXlTZWNvbmRhcnlTaGFyZQEKYXJ0aXN0QWRkcgkArAICAhdhcnRpc3RfYWdlbnRfc2Vjb25kYXJ5XwUKYXJ0aXN0QWRkcgEMaWRDYWxsZXJEYXRlAQFpAwkBASEBBQtkYXBwUnVubmluZwkAAgEFDm1haW50ZW5hbmNlTVNHCQCVCgMJANgEAQgFAWkNdHJhbnNhY3Rpb25JZAkA2AQBCAgFAWkGY2FsbGVyBWJ5dGVzCAUJbGFzdEJsb2NrCXRpbWVzdGFtcAEJaXNQYXltZW50AQFpAwkAAAIJAJADAQgFAWkIcGF5bWVudHMAAAkAAgECE05vIHBheW1lbnQgYXR0YWNoZWQEB3BheW1lbnQJAQV2YWx1ZQEJAJEDAggFAWkIcGF5bWVudHMAAAQGYW1vdW50CQEFdmFsdWUBCAUHcGF5bWVudAZhbW91bnQJAJQKAgUHcGF5bWVudAUGYW1vdW50AQxhc3NldElzVmFsaWQBDGFzc2V0RGV0YWlscwMDAwkAAAIIBQxhc3NldERldGFpbHMIcXVhbnRpdHkAAQkAAAIIBQxhc3NldERldGFpbHMIZGVjaW1hbHMAAAcJAAACCAUMYXNzZXREZXRhaWxzCnJlaXNzdWFibGUHBwkAAAIIBQxhc3NldERldGFpbHMGaXNzdWVyBQxhcnR3b3Jrc0RhcHAHAQxpc1NpZ25BcnRORlQBAmlkBAxhc3NldERldGFpbHMJAQV2YWx1ZQEJAOwHAQUCaWQJAQxhc3NldElzVmFsaWQBBQxhc3NldERldGFpbHMBEGFjY2VwdGVkQXNzZXRJZHMBB2Fzc2V0SWQDAwMDAwkBAiE9AgUHYXNzZXRJZAkA2AQBBQtzaWduQXNzZXRJZAkBAiE9AgUHYXNzZXRJZAkA2AQBBQx3YXZlc0Fzc2V0SWQHCQECIT0CBQdhc3NldElkAgVXQVZFUwcJAQIhPQIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQHCQECIT0CBQdhc3NldElkCQDYBAEFC3VzZHRBc3NldElkBwcGAQ1nZXRCaWRBc3NldElkAQdhc3NldElkAwkAAAIFB2Fzc2V0SWQCBVdBVkVTBQR1bml0CQDZBAEFB2Fzc2V0SWQBFWdldFNhbGVPd25lckFuZFN0YXR1cwEFbmZ0aWQECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0aWQDCQAAAgkAsQIBBQlzYWxlT3duZXIAAAkAAgECDU5GVCBub3QgZm91bmQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FCXNhbGVPd25lcgIBXwUFbmZ0aWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIQTkZUIG5vdCBmb3Igc2FsZQUJc2FsZU93bmVyAQpnZXRCaWREYXRhAQNrZXkEB2JpZERhdGEJAQlnZXRTdHJCeUsBCQCsAgIFA2tleQIFX09QRU4DCQAAAgUHYmlkRGF0YQIACQACAQIPT2ZmZXIgbm90IGZvdW5kBApiaWREYXRhQXJyCQC1CQIFB2JpZERhdGECAV8EB2Fzc2V0SWQJAQ1nZXRCaWRBc3NldElkAQkAkQMCBQpiaWREYXRhQXJyAAIJAJUKAwUKYmlkRGF0YUFycgUHYXNzZXRJZAUHYmlkRGF0YQEKYXJ0SXNWYWxpZAEJYXJ0U3RhdHVzAwkBAiE9AgUJYXJ0U3RhdHVzBQphcnRJbGxlZ2FsCQECIT0CBQlhcnRTdGF0dXMFDGFydFN1c3BlbmRlZAcBDmNoZWNrQXJ0U3RhdHVzAgRhZGRyAmlkBAlhcnRTdGF0dXMJAQxnZXRBcnRTdHJCeUsBCQEHa2V5RmxhZwIFBGFkZHIFAmlkAwkBCmFydElzVmFsaWQBBQlhcnRTdGF0dXMGCQACAQkArAICAhxPcmlnaW5hbCBBcnR3b3JrIGZsYWdnZWQgYXMgBQlhcnRTdGF0dXMBEWNoZWNrQXJ0aXN0U3RhdHVzAQRhZGRyBAxhcnRpc3RTdGF0dXMJAQ1nZXRVc2VyU3RyQnlLAQkBDWtleVVzZXJTdGF0dXMBBQRhZGRyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUNdXNlclN1c3BlbmRlZAkAzAgCBQt1c2VyUmVtb3ZlZAUDbmlsBQxhcnRpc3RTdGF0dXMJAAIBCQCsAgICEE9yaWdpbmFsIEFydGlzdCAFDGFydGlzdFN0YXR1cwYBDGNoZWNrTkZUSW5mbwEHYXNzZXRJZAQHbmZ0RGF0YQkAtQkCCQEMZ2V0QXJ0U3RyQnlLAQkBCmtleU5GVERhdGEBBQdhc3NldElkAgFfBAlhcnRTaWduSUQJAQxnZXRBcnRTdHJCeUsBCQEJa2V5U2lnbklEAgkAkQMCBQduZnREYXRhAAYJAJEDAgUHbmZ0RGF0YQAFAwMJAQEhAQkBDmNoZWNrQXJ0U3RhdHVzAgkAkQMCBQduZnREYXRhAAYJAJEDAgUHbmZ0RGF0YQAFCQEBIQEJARFjaGVja0FydGlzdFN0YXR1cwEJAJEDAgUHbmZ0RGF0YQAGBwkAlgoEBwkAkQMCBQduZnREYXRhAAUJAJEDAgUHbmZ0RGF0YQAGBQlhcnRTaWduSUQJAJYKBAYJAJEDAgUHbmZ0RGF0YQAFCQCRAwIFB25mdERhdGEABgUJYXJ0U2lnbklEAQxzZXRUcmFuc2ZlcnMGBmFtb3VudAdhc3NldElkBW5mdGlkC2NyZWF0b3JBZGRyCXNhbGVPd25lcgZjYWxsZXIECmNyZWF0b3JDdXQJARNnZXRBcnR3b3JrUm95YWx0aWVzAQkBE2tleUFydHdvcmtSb3lhbHRpZXMCBQtjcmVhdG9yQWRkcgUFbmZ0aWQDBgkAAgEJAKwCAgkArAICCQCkAwEFBmFtb3VudAIDIC8gCQCkAwEFCmNyZWF0b3JDdXQEBWFnZW50CQELdmFsdWVPckVsc2UCCQCdCAIFCHVzZXJEYXBwCQESa2V5QXJ0aXN0QWdlbnRBZGRyAQULY3JlYXRvckFkZHIFC2ZlZVJlY2VpdmVyBAphZ2VudFNoYXJlCQELdmFsdWVPckVsc2UCCQCaCAIFCHVzZXJEYXBwCQERa2V5U2Vjb25kYXJ5U2hhcmUBBQtjcmVhdG9yQWRkcgAABA1hbW91bnRGb3JTaWduCQBrAwUGYW1vdW50BQdzaWduQ3V0AGQEEGFtb3VudEZvckNyZWF0b3IJAGsDBQZhbW91bnQFCmNyZWF0b3JDdXQAkE4EDmFtb3VudEZvck93bmVyCQBlAgUGYW1vdW50CQBkAgUNYW1vdW50Rm9yU2lnbgUQYW1vdW50Rm9yQ3JlYXRvcgQOYW1vdW50Rm9yQWdlbnQDAwkBAiE9AgUFYWdlbnQFC2ZlZVJlY2VpdmVyCQBmAgUKYWdlbnRTaGFyZQAABwkAawMFBmFtb3VudAUKYWdlbnRTaGFyZQBkAAAEC2NvbW1pc3Npb25zAwkBAiE9AgUOYW1vdW50Rm9yQWdlbnQAAAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQULZmVlUmVjZWl2ZXIJAGUCBQ1hbW91bnRGb3JTaWduBQ5hbW91bnRGb3JBZ2VudAUHYXNzZXRJZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUFYWdlbnQFDmFtb3VudEZvckFnZW50BQdhc3NldElkBQNuaWwJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFC2ZlZVJlY2VpdmVyBQ1hbW91bnRGb3JTaWduBQdhc3NldElkBQNuaWwECmNyZWF0b3JGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQtjcmVhdG9yQWRkcgUQYW1vdW50Rm9yQ3JlYXRvcgUHYXNzZXRJZAQIb3duZXJGZWUJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQlzYWxlT3duZXIFDmFtb3VudEZvck93bmVyBQdhc3NldElkBAxjb2xsZWN0b3JORlQJAQ5TY3JpcHRUcmFuc2ZlcgMJAQdBZGRyZXNzAQkA2QQBBQZjYWxsZXIAAQkA2QQBBQVuZnRpZAkAlgoEBQtjb21taXNzaW9ucwUKY3JlYXRvckZlZQUIb3duZXJGZWUFDGNvbGxlY3Rvck5GVAEPdmFsaWRhdGVNaW5TZWxsAgdhc3NldElkBXByaWNlBAxtaW5TZWxsV2F2ZXMDBQh1bml0VGVzdAAKCQETZ2V0SW50QnlLRnJvbU9yYWNsZQECDndhdmVzX21pbl9zZWxsBAttaW5TZWxsVXNkbgDAhD0EC21pblNlbGxTaWduAwUIdW5pdFRlc3QAAQkAaAIFGWN1cnJlbnRDZXJ0aWZpY2F0aW9uUHJpY2UAAgMDAwMDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkbkFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULdXNkdEFzc2V0SWQJAGYCBQttaW5TZWxsVXNkbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwkAAAIFB2Fzc2V0SWQJANgEAQULc2lnbkFzc2V0SWQJAGYCBQttaW5TZWxsU2lnbgUFcHJpY2UHCQECIT0CBQVwcmljZQAABwYDAwMJAAACBQdhc3NldElkCQDYBAEFDHdhdmVzQXNzZXRJZAYJAAACBQdhc3NldElkAgVXQVZFUwkAZgIFDG1pblNlbGxXYXZlcwUFcHJpY2UHCQECIT0CBQVwcmljZQAABwcGAQ9wcm92aWRlQmFzZURhdGECAWkFbmZ0SWQECyR0MDk3NzU5ODE1CQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQskdDA5Nzc1OTgxNQJfMQQGY2FsbGVyCAULJHQwOTc3NTk4MTUCXzIEBGRhdGUIBQskdDA5Nzc1OTgxNQJfMwQLJHQwOTgxOTk4ODgJAQxjaGVja05GVEluZm8BBQVuZnRJZAQKaXNWYWxpZE5GVAgFCyR0MDk4MTk5ODg4Al8xBAVhcnRJZAgFCyR0MDk4MTk5ODg4Al8yBAtjcmVhdG9yQWRkcggFCyR0MDk4MTk5ODg4Al8zBAlhcnRTaWduSUQIBQskdDA5ODE5OTg4OAJfNAkAmQoHBQJpZAUGY2FsbGVyBQRkYXRlBQppc1ZhbGlkTkZUBQVhcnRJZAULY3JlYXRvckFkZHIFCWFydFNpZ25JRAEOdXBkYXRlTnVtU2FsZXMABAhudW1TYWxlcwkBCWdldEludEJ5SwEFCW51bVNhbGVzSwkBDEludGVnZXJFbnRyeQIFCW51bVNhbGVzSwkAZAIFCG51bVNhbGVzAAEJBmludm9rZQEHc2V0Q29uZgIDa2V5A3ZhbAQGY2FsbGVyCQClCAEIBQZpbnZva2UGY2FsbGVyAwkBD2NvbnRhaW5zRWxlbWVudAIJAMwIAgUFY2hyaXMJAMwIAgkApQgBBQR0aGlzBQNuaWwFBmNhbGxlcgMJAQhjb250YWlucwIFA2tleQIFY29uZl8JAMwIAgkBC1N0cmluZ0VudHJ5AgUDa2V5BQN2YWwFA25pbAkAAgECIEVudHJpZXMgc3RhcnRpbmcgd2l0aCBjb25mXyBvbmx5CQACAQIiWW91IGFyZSBub3QgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcwZpbnZva2UBCmFwcFJ1bm5pbmcCBmlzTGl2ZQdtZXNzYWdlBAZjYWxsZXIJAKUIAQgFBmludm9rZQZjYWxsZXIEAmlkCQDYBAEIBQZpbnZva2UNdHJhbnNhY3Rpb25JZAMJAQ9jb250YWluc0VsZW1lbnQCCQDMCAIFBWNocmlzCQDMCAIJAKUIAQUEdGhpcwUDbmlsBQZjYWxsZXIJAMwIAgkBDEJvb2xlYW5FbnRyeQIFDmRhcHBSdW5uaW5nS2V5BQZpc0xpdmUJAMwIAgkBC1N0cmluZ0VudHJ5AgURbWFpbnRlbmFuY2VNU0dLZXkFB21lc3NhZ2UFA25pbAkAAgECIllvdSBhcmUgbm90IGFsbG93ZWQgdG8gY2hhbmdlIHRoaXMBaQEHc2VsbE5GVAIFcHJpY2UFYXNzZXQEDSR0MDEwOTkzMTEwMjkJAQlpc1BheW1lbnQBBQFpBAdwYXltZW50CAUNJHQwMTA5OTMxMTAyOQJfMQQGYW1vdW50CAUNJHQwMTA5OTMxMTAyOQJfMgMJAQIhPQIFBmFtb3VudAABCQACAQIPTm8gTkZUIGF0dGFjaGVkBAVuZnRJZAMDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkBDGlzU2lnbkFydE5GVAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQHCQDYBAEJAQV2YWx1ZQEIBQdwYXltZW50B2Fzc2V0SWQJAAIBAhtPbmx5IFNJR04gQXJ0IE5GVCBhY2NlcHRlZC4EDSR0MDExMjY3MTEzNjAJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMTI2NzExMzYwAl8xBAZjYWxsZXIIBQ0kdDAxMTI2NzExMzYwAl8yBARkYXRlCAUNJHQwMTEyNjcxMTM2MAJfMwQKaXNWYWxpZE5GVAgFDSR0MDExMjY3MTEzNjACXzQEBWFydElkCAUNJHQwMTEyNjcxMTM2MAJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMTI2NzExMzYwAl82BAlhcnRTaWduSUQIBQ0kdDAxMTI2NzExMzYwAl83AwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAh1BcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydAMJAQEhAQUKaXNWYWxpZE5GVAkAAgECD05vdCBhIHZhbGlkIG5mdAMJAQEhAQkBEGFjY2VwdGVkQXNzZXRJZHMBBQVhc3NldAkAAgECJ09ubHkgU0lHTiwgVVNETiwgVVNEVCBvciBXQVZFUyBhY2NlcHRlZAMJAQEhAQkBD3ZhbGlkYXRlTWluU2VsbAIFBWFzc2V0BQVwcmljZQkAAgECGFdyb25nIG1pbmltdW0gc2VsbCBwcmljZQkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQpnZXRTYWxlS2V5BAUGY2FsbGVyBQVuZnRJZAUFYXJ0SWQFC2NyZWF0b3JBZGRyAgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkApAMBBQRkYXRlAgFfCQCkAwEFBXByaWNlAgFfBQVhc3NldAIBXwUFbmZ0SWQCAV8FBWFydElkAgFfBQtjcmVhdG9yQWRkcgIBXwUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAgRPUEVOCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQFBmNhbGxlcgUDbmlsAWkBD3VwZGF0ZVNhbGVQcmljZQMFbmZ0SWQFcHJpY2UFYXNzZXQEDSR0MDEyMjY0MTIzNTcJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMjI2NDEyMzU3Al8xBAZjYWxsZXIIBQ0kdDAxMjI2NDEyMzU3Al8yBARkYXRlCAUNJHQwMTIyNjQxMjM1NwJfMwQKaXNWYWxpZE5GVAgFDSR0MDEyMjY0MTIzNTcCXzQEBWFydElkCAUNJHQwMTIyNjQxMjM1NwJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMjI2NDEyMzU3Al82BAlhcnRTaWduSUQIBQ0kdDAxMjI2NDEyMzU3Al83AwkAAAIJALECAQUJYXJ0U2lnbklEAAAJAAIBAjBBcnR3b3JrIG5vdCBmb3VuZCBvbiBTSUdOIEFydCwgY2FuY2VsIHlvdXIgc2FsZS4DCQEBIQEFCmlzVmFsaWRORlQJAAIBAg9Ob3QgYSB2YWxpZCBuZnQECXNhbGVPd25lcgkBCWdldFN0ckJ5SwEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQDCQECIT0CBQlzYWxlT3duZXIFBmNhbGxlcgkAAgECFllvdSBkb24ndCBvd24gdGhpcyBORlQECnNhbGVTdGF0dXMJAQlnZXRTdHJCeUsBCQCsAgIJAKwCAgkArAICAg9zYWxlMm5kX3N0YXR1c18FBmNhbGxlcgIBXwUFbmZ0SWQDCQECIT0CBQpzYWxlU3RhdHVzAgRPUEVOCQACAQIPU2FsZSBub3QgYWN0aXZlAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFBWFzc2V0CQACAQInT25seSBTSUdOLCBVU0ROLCBVU0RUIG9yIFdBVkVTIGFjY2VwdGVkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUFYXNzZXQFBXByaWNlCQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQQFBmNhbGxlcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgQIc2FsZUluZm8JALUJAgkBCWdldFN0ckJ5SwEJAKwCAgUHc2FsZUtleQIFX09QRU4CAV8JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQdzYWxlS2V5AgVfT1BFTgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkAkQMCBQhzYWxlSW5mbwAAAgFfCQCkAwEFBXByaWNlAgFfBQVhc3NldAIBXwkAkQMCBQhzYWxlSW5mbwADAgFfCQCRAwIFCHNhbGVJbmZvAAQCAV8JAJEDAgUIc2FsZUluZm8ABQIBXwkAkQMCBQhzYWxlSW5mbwAGBQNuaWwBaQEKY2FuY2VsU2FsZQEFbmZ0SWQEDSR0MDEzNTM0MTM3NzgJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxMzUzNDEzNzc4Al8xBAZjYWxsZXIIBQ0kdDAxMzUzNDEzNzc4Al8yBARkYXRlCAUNJHQwMTM1MzQxMzc3OAJfMwQKaXNWYWxpZE5GVAgFDSR0MDEzNTM0MTM3NzgCXzQEBWFydElkCAUNJHQwMTM1MzQxMzc3OAJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxMzUzNDEzNzc4Al82BAlhcnRTaWduSUQIBQ0kdDAxMzUzNDEzNzc4Al83BAlzYWxlT3duZXIJAQlnZXRTdHJCeUsBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkAwkBAiE9AgUJc2FsZU93bmVyBQZjYWxsZXIJAAIBAhZZb3UgZG9uJ3Qgb3duIHRoaXMgTkZUBApzYWxlU3RhdHVzCQEJZ2V0U3RyQnlLAQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQZjYWxsZXICAV8FBW5mdElkAwkBAiE9AgUKc2FsZVN0YXR1cwIET1BFTgkAAgECD1NhbGUgbm90IGFjdGl2ZQQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQZjYWxsZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUGY2FsbGVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgpfQ0FOQ0VMTEVECQCsAgIJAKwCAgkArAICCQCsAgIFCHNhbGVJbmZvAgtfQ0FOQ0VMTEVEXwkApAMBBQRkYXRlAgFfBQJpZAkAzAgCCQEOU2NyaXB0VHJhbnNmZXIDCQEHQWRkcmVzcwEJANkEAQUGY2FsbGVyAAEJANkEAQUFbmZ0SWQFA25pbAFpAQZidXlORlQBBW5mdElkBA0kdDAxNDYzMjE0NzI1CQEPcHJvdmlkZUJhc2VEYXRhAgUBaQUFbmZ0SWQEAmlkCAUNJHQwMTQ2MzIxNDcyNQJfMQQGY2FsbGVyCAUNJHQwMTQ2MzIxNDcyNQJfMgQEZGF0ZQgFDSR0MDE0NjMyMTQ3MjUCXzMECmlzVmFsaWRORlQIBQ0kdDAxNDYzMjE0NzI1Al80BAVhcnRJZAgFDSR0MDE0NjMyMTQ3MjUCXzUEC2NyZWF0b3JBZGRyCAUNJHQwMTQ2MzIxNDcyNQJfNgQJYXJ0U2lnbklECAUNJHQwMTQ2MzIxNDcyNQJfNwMJAAACCQCxAgEFCWFydFNpZ25JRAAACQACAQIwQXJ0d29yayBub3QgZm91bmQgb24gU0lHTiBBcnQsIGNhbmNlbCB5b3VyIHNhbGUuAwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAQHc2FsZUtleQkBCmdldFNhbGVLZXkEBQlzYWxlT3duZXIFBW5mdElkBQVhcnRJZAULY3JlYXRvckFkZHIECHNhbGVJbmZvCQEJZ2V0U3RyQnlLAQkArAICBQdzYWxlS2V5AgVfT1BFTgMJAAACCQCxAgEFCHNhbGVJbmZvAAAJAAIBAg9TYWxlIE5vdCBmb3VuZCEEDXNhbGVJbmZvQXJyYXkJALUJAgUIc2FsZUluZm8CAV8DCQAAAgkAtgkBCQCRAwIFDXNhbGVJbmZvQXJyYXkAAQAACQACAQIKT2ZmZXIgb25seQQNJHQwMTUyMzQxNTI3MAkBCWlzUGF5bWVudAEFAWkEB3BheW1lbnQIBQ0kdDAxNTIzNDE1MjcwAl8xBAZhbW91bnQIBQ0kdDAxNTIzNDE1MjcwAl8yBA9wYXltZW50QXNzZXRTdHIDCQEJaXNEZWZpbmVkAQgFB3BheW1lbnQHYXNzZXRJZAkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAgADAwkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAEJAKQDAQUGYW1vdW50BgkBAiE9AgkAkQMCBQ1zYWxlSW5mb0FycmF5AAIFD3BheW1lbnRBc3NldFN0cgkAAgECGlBheW1lbnQgaW5mb3MgZG9uJ3QgbWF0Y2guBA0kdDAxNTc4NDE1OTE2CQEMc2V0VHJhbnNmZXJzBgUGYW1vdW50CAUHcGF5bWVudAdhc3NldElkBQVuZnRJZAULY3JlYXRvckFkZHIFCXNhbGVPd25lcgUGY2FsbGVyBAtjb21taXNzaW9ucwgFDSR0MDE1Nzg0MTU5MTYCXzEECmNyZWF0b3JGZWUIBQ0kdDAxNTc4NDE1OTE2Al8yBAhvd25lckZlZQgFDSR0MDE1Nzg0MTU5MTYCXzMEDGNvbGxlY3Rvck5GVAgFDSR0MDE1Nzg0MTU5MTYCXzQJAM4IAgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFB3NhbGVLZXkCBV9PUEVOCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgkArAICCQCsAgICD3NhbGUybmRfc3RhdHVzXwUJc2FsZU93bmVyAgFfBQVuZnRJZAkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgICFmN1cnJlbnRfb3duZXJfb25fZGFwcF8FBW5mdElkCQDMCAIJAQtTdHJpbmdFbnRyeQIJAKwCAgkArAICCQCsAgIFB3NhbGVLZXkCAV8FAmlkAgdfQ0xPU0VECQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICBQhzYWxlSW5mbwIIX0NMT1NFRF8JAKQDAQUEZGF0ZQIBXwUCaWQCAV8FBmNhbGxlcgkAzAgCCQEOdXBkYXRlTnVtU2FsZXMACQDMCAIFCmNyZWF0b3JGZWUJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUBQNuaWwFC2NvbW1pc3Npb25zAWkBCHNldE9mZmVyAQVuZnRJZAQNJHQwMTYzNDQxNjQ0MQkBD3Byb3ZpZGVCYXNlRGF0YQIFAWkFBW5mdElkBAJpZAgFDSR0MDE2MzQ0MTY0NDECXzEECm9mZmVyT3duZXIIBQ0kdDAxNjM0NDE2NDQxAl8yBARkYXRlCAUNJHQwMTYzNDQxNjQ0MQJfMwQKaXNWYWxpZE5GVAgFDSR0MDE2MzQ0MTY0NDECXzQEBWFydElkCAUNJHQwMTYzNDQxNjQ0MQJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxNjM0NDE2NDQxAl82BAlhcnRTaWduSUQIBQ0kdDAxNjM0NDE2NDQxAl83AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BA0kdDAxNjUwNTE2NTQxCQEJaXNQYXltZW50AQUBaQQHcGF5bWVudAgFDSR0MDE2NTA1MTY1NDECXzEEBmFtb3VudAgFDSR0MDE2NTA1MTY1NDECXzIEB2Fzc2V0SWQDCQEBIQEJAQlpc0RlZmluZWQBCAUHcGF5bWVudAdhc3NldElkAgVXQVZFUwkA2AQBCQEFdmFsdWUBCAUHcGF5bWVudAdhc3NldElkAwkBASEBCQEQYWNjZXB0ZWRBc3NldElkcwEFB2Fzc2V0SWQJAAIBAhJhc3NldCBub3QgYWNjZXB0ZWQDCQAAAgUGYW1vdW50AAAJAAIBAhZPZmZlciBvZiAwIG5vdCBhbGxvd2VkAwkBASEBCQEPdmFsaWRhdGVNaW5TZWxsAgUHYXNzZXRJZAUGYW1vdW50CQACAQIYV3JvbmcgbWluaW11bSBzZWxsIHByaWNlBAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAkAzAgCCQELU3RyaW5nRW50cnkCCQCsAgIJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQJpZAIFX09QRU4JAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCkAwEFBGRhdGUCAV8JAKQDAQUGYW1vdW50AgFfBQdhc3NldElkAgFfBQVuZnRJZAIBXwUFYXJ0SWQCAV8FC2NyZWF0b3JBZGRyAgFfBQpvZmZlck93bmVyAgFfBQJpZAUDbmlsAWkBC2FjY2VwdE9mZmVyAwVuZnRJZAdvZmZlcklkCm9mZmVyT3duZXIEDSR0MDE3MzYyMTc0NTUJAQ9wcm92aWRlQmFzZURhdGECBQFpBQVuZnRJZAQCaWQIBQ0kdDAxNzM2MjE3NDU1Al8xBAZjYWxsZXIIBQ0kdDAxNzM2MjE3NDU1Al8yBARkYXRlCAUNJHQwMTczNjIxNzQ1NQJfMwQKaXNWYWxpZE5GVAgFDSR0MDE3MzYyMTc0NTUCXzQEBWFydElkCAUNJHQwMTczNjIxNzQ1NQJfNQQLY3JlYXRvckFkZHIIBQ0kdDAxNzM2MjE3NDU1Al82BAlhcnRTaWduSUQIBQ0kdDAxNzM2MjE3NDU1Al83AwkBASEBBQppc1ZhbGlkTkZUCQACAQIPTm90IGEgdmFsaWQgbmZ0BAlzYWxlT3duZXIJARVnZXRTYWxlT3duZXJBbmRTdGF0dXMBBQVuZnRJZAMJAQIhPQIFBmNhbGxlcgUJc2FsZU93bmVyCQACAQIgT25seSBzYWxlIG93bmVyIGNhbiBhY2NlcHQgb2ZmZXIEBmJpZEtleQkBCWdldEJpZEtleQQFCm9mZmVyT3duZXIFBW5mdElkBQlzYWxlT3duZXIFB29mZmVySWQEDSR0MDE3NzE2MTc3NzEJAQpnZXRCaWREYXRhAQUGYmlkS2V5BApiaWREYXRhQXJyCAUNJHQwMTc3MTYxNzc3MQJfMQQHYXNzZXRJZAgFDSR0MDE3NzE2MTc3NzECXzIEB2JpZERhdGEIBQ0kdDAxNzcxNjE3NzcxAl8zBAdzYWxlS2V5CQEKZ2V0U2FsZUtleQQFCXNhbGVPd25lcgUFbmZ0SWQFBWFydElkBQtjcmVhdG9yQWRkcgQIc2FsZUluZm8JAQlnZXRTdHJCeUsBCQCsAgIFB3NhbGVLZXkCBV9PUEVOAwkAAAIJALECAQUIc2FsZUluZm8AAAkAAgECD1NhbGUgTm90IGZvdW5kIQQGYW1vdW50CQEFdmFsdWUBCQC2CQEJAJEDAgUKYmlkRGF0YUFycgABBA0kdDAxODAxNDE4MTQ1CQEMc2V0VHJhbnNmZXJzBgUGYW1vdW50BQdhc3NldElkBQVuZnRJZAULY3JlYXRvckFkZHIFCXNhbGVPd25lcgkAkQMCBQpiaWREYXRhQXJyAAYEC2NvbW1pc3Npb25zCAUNJHQwMTgwMTQxODE0NQJfMQQKY3JlYXRvckZlZQgFDSR0MDE4MDE0MTgxNDUCXzIECG93bmVyRmVlCAUNJHQwMTgwMTQxODE0NQJfMwQMY29sbGVjdG9yTkZUCAUNJHQwMTgwMTQxODE0NQJfNAQKYXNzZXRJZFN0cgMJAQlpc0RlZmluZWQBBQdhc3NldElkCQDYBAEJAQV2YWx1ZQEFB2Fzc2V0SWQCBVdBVkVTCQDOCAIJAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICBQdzYWxlS2V5AgVfT1BFTgkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBmJpZEtleQIFX09QRU4JAMwIAgkBC0RlbGV0ZUVudHJ5AQkArAICCQCsAgIJAKwCAgIPc2FsZTJuZF9zdGF0dXNfBQlzYWxlT3duZXICAV8FBW5mdElkCQDMCAIJAQtEZWxldGVFbnRyeQEJAKwCAgIWY3VycmVudF9vd25lcl9vbl9kYXBwXwUFbmZ0SWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZiaWRLZXkCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgUHYmlkRGF0YQIIX0NMT1NFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICCQCsAgIJAKwCAgUHc2FsZUtleQIBXwUCaWQCB19DTE9TRUQJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgkArAICCQCsAgIJAKwCAgUIc2FsZUluZm8CDl9DTE9TRUQtT0ZGRVJfCQCkAwEFBGRhdGUCAV8FAmlkAgFfBQpvZmZlck93bmVyAgFfCQCkAwEFBmFtb3VudAIBXwUKYXNzZXRJZFN0cgkAzAgCCQEOdXBkYXRlTnVtU2FsZXMACQDMCAIFCmNyZWF0b3JGZWUJAMwIAgUIb3duZXJGZWUJAMwIAgUMY29sbGVjdG9yTkZUBQNuaWwFC2NvbW1pc3Npb25zAWkBC2NhbmNlbE9mZmVyBAVuZnRJZAdvZmZlcklkCm9mZmVyT3duZXIJc2FsZU93bmVyBA0kdDAxODk2NTE5MDQwCQEMaWRDYWxsZXJEYXRlAQUBaQQCaWQIBQ0kdDAxODk2NTE5MDQwAl8xBAZjYWxsZXIIBQ0kdDAxODk2NTE5MDQwAl8yBARkYXRlCAUNJHQwMTg5NjUxOTA0MAJfMwMDCQECIT0CBQZjYWxsZXIFCm9mZmVyT3duZXIJAQIhPQIFBmNhbGxlcgUJc2FsZU93bmVyBwkAAgECHVlvdSBjYW5ub3QgY2FuY2VsIHRoaXMgb2ZmZXIuBAZiaWRLZXkJAQlnZXRCaWRLZXkEBQpvZmZlck93bmVyBQVuZnRJZAUJc2FsZU93bmVyBQdvZmZlcklkBA0kdDAxOTIxNDE5MjY5CQEKZ2V0QmlkRGF0YQEFBmJpZEtleQQKYmlkRGF0YUFycggFDSR0MDE5MjE0MTkyNjkCXzEEB2Fzc2V0SWQIBQ0kdDAxOTIxNDE5MjY5Al8yBAdiaWREYXRhCAUNJHQwMTkyMTQxOTI2OQJfMwkAzAgCCQELRGVsZXRlRW50cnkBCQCsAgIFBmJpZEtleQIFX09QRU4JAMwIAgkBC1N0cmluZ0VudHJ5AgkArAICBQZiaWRLZXkCCl9DQU5DRUxMRUQJAKwCAgkArAICCQCsAgIJAKwCAgUHYmlkRGF0YQILX0NBTkNFTExFRF8JAKQDAQUEZGF0ZQIBXwUCaWQJAMwIAgkBDlNjcmlwdFRyYW5zZmVyAwkBB0FkZHJlc3MBCQDZBAEFBmNhbGxlcgkBDXBhcnNlSW50VmFsdWUBCQCRAwIFCmJpZERhdGFBcnIAAQUHYXNzZXRJZAUDbmlsAGdjbiE=", "height": 2339349, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 48NPWfhWUfyx5SU3ttXASjUCfchJDEEF6pC1pzp83Rub Next: 44SrtBzDEFfnGGEAvDf84MYfdzbXGyNjsoAam6Vg7rC7 Diff:
OldNewDifferences
196196
197197 func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
198198 let creatorCut = getArtworkRoyalties(keyArtworkRoyalties(creatorAddr, nftid))
199- let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(creatorAddr)), feeReceiver)
200- let agentShare = valueOrElse(getInteger(userDapp, keySecondaryShare(creatorAddr)), 0)
201- let amountForSign = fraction(amount, signCut, 100)
202- let amountForCreator = fraction(amount, creatorCut, 10000)
203- let amountForOwner = (amount - (amountForSign + amountForCreator))
204- let amountForAgent = if (if ((agent != feeReceiver))
205- then (agentShare > 0)
206- else false)
207- then fraction(amount, agentShare, 100)
208- else 0
209- let commissions = if ((amountForAgent != 0))
210- then [ScriptTransfer(Address(fromBase58String(feeReceiver)), (amountForSign - amountForAgent), assetId), ScriptTransfer(Address(fromBase58String(agent)), amountForAgent, assetId)]
211- else [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
212- let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
213- let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
214- let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
215- $Tuple4(commissions, creatorFee, ownerFee, collectorNFT)
199+ if (true)
200+ then throw(((toString(amount) + " / ") + toString(creatorCut)))
201+ else {
202+ let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(creatorAddr)), feeReceiver)
203+ let agentShare = valueOrElse(getInteger(userDapp, keySecondaryShare(creatorAddr)), 0)
204+ let amountForSign = fraction(amount, signCut, 100)
205+ let amountForCreator = fraction(amount, creatorCut, 10000)
206+ let amountForOwner = (amount - (amountForSign + amountForCreator))
207+ let amountForAgent = if (if ((agent != feeReceiver))
208+ then (agentShare > 0)
209+ else false)
210+ then fraction(amount, agentShare, 100)
211+ else 0
212+ let commissions = if ((amountForAgent != 0))
213+ then [ScriptTransfer(Address(fromBase58String(feeReceiver)), (amountForSign - amountForAgent), assetId), ScriptTransfer(Address(fromBase58String(agent)), amountForAgent, assetId)]
214+ else [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
215+ let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
216+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
217+ let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
218+ $Tuple4(commissions, creatorFee, ownerFee, collectorNFT)
219+ }
216220 }
217221
218222
255259
256260
257261 func provideBaseData (i,nftId) = {
258- let $t096979737 = idCallerDate(i)
259- let id = $t096979737._1
260- let caller = $t096979737._2
261- let date = $t096979737._3
262- let $t097419810 = checkNFTInfo(nftId)
263- let isValidNFT = $t097419810._1
264- let artId = $t097419810._2
265- let creatorAddr = $t097419810._3
266- let artSignID = $t097419810._4
262+ let $t097759815 = idCallerDate(i)
263+ let id = $t097759815._1
264+ let caller = $t097759815._2
265+ let date = $t097759815._3
266+ let $t098199888 = checkNFTInfo(nftId)
267+ let isValidNFT = $t098199888._1
268+ let artId = $t098199888._2
269+ let creatorAddr = $t098199888._3
270+ let artSignID = $t098199888._4
267271 $Tuple7(id, caller, date, isValidNFT, artId, creatorAddr, artSignID)
268272 }
269273
299303
300304 @Callable(i)
301305 func sellNFT (price,asset) = {
302- let $t01091510951 = isPayment(i)
303- let payment = $t01091510951._1
304- let amount = $t01091510951._2
306+ let $t01099311029 = isPayment(i)
307+ let payment = $t01099311029._1
308+ let amount = $t01099311029._2
305309 if ((amount != 1))
306310 then throw("No NFT attached")
307311 else {
310314 else false)
311315 then toBase58String(value(payment.assetId))
312316 else throw("Only SIGN Art NFT accepted.")
313- let $t01118911282 = provideBaseData(i, nftId)
314- let id = $t01118911282._1
315- let caller = $t01118911282._2
316- let date = $t01118911282._3
317- let isValidNFT = $t01118911282._4
318- let artId = $t01118911282._5
319- let creatorAddr = $t01118911282._6
320- let artSignID = $t01118911282._7
317+ let $t01126711360 = provideBaseData(i, nftId)
318+ let id = $t01126711360._1
319+ let caller = $t01126711360._2
320+ let date = $t01126711360._3
321+ let isValidNFT = $t01126711360._4
322+ let artId = $t01126711360._5
323+ let creatorAddr = $t01126711360._6
324+ let artSignID = $t01126711360._7
321325 if ((size(artSignID) == 0))
322326 then throw("Artwork not found on SIGN Art")
323327 else if (!(isValidNFT))
334338
335339 @Callable(i)
336340 func updateSalePrice (nftId,price,asset) = {
337- let $t01218612279 = provideBaseData(i, nftId)
338- let id = $t01218612279._1
339- let caller = $t01218612279._2
340- let date = $t01218612279._3
341- let isValidNFT = $t01218612279._4
342- let artId = $t01218612279._5
343- let creatorAddr = $t01218612279._6
344- let artSignID = $t01218612279._7
341+ let $t01226412357 = provideBaseData(i, nftId)
342+ let id = $t01226412357._1
343+ let caller = $t01226412357._2
344+ let date = $t01226412357._3
345+ let isValidNFT = $t01226412357._4
346+ let artId = $t01226412357._5
347+ let creatorAddr = $t01226412357._6
348+ let artSignID = $t01226412357._7
345349 if ((size(artSignID) == 0))
346350 then throw("Artwork not found on SIGN Art, cancel your sale.")
347351 else if (!(isValidNFT))
371375
372376 @Callable(i)
373377 func cancelSale (nftId) = {
374- let $t01345613700 = provideBaseData(i, nftId)
375- let id = $t01345613700._1
376- let caller = $t01345613700._2
377- let date = $t01345613700._3
378- let isValidNFT = $t01345613700._4
379- let artId = $t01345613700._5
380- let creatorAddr = $t01345613700._6
381- let artSignID = $t01345613700._7
378+ let $t01353413778 = provideBaseData(i, nftId)
379+ let id = $t01353413778._1
380+ let caller = $t01353413778._2
381+ let date = $t01353413778._3
382+ let isValidNFT = $t01353413778._4
383+ let artId = $t01353413778._5
384+ let creatorAddr = $t01353413778._6
385+ let artSignID = $t01353413778._7
382386 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
383387 if ((saleOwner != caller))
384388 then throw("You don't own this NFT")
398402
399403 @Callable(i)
400404 func buyNFT (nftId) = {
401- let $t01455414647 = provideBaseData(i, nftId)
402- let id = $t01455414647._1
403- let caller = $t01455414647._2
404- let date = $t01455414647._3
405- let isValidNFT = $t01455414647._4
406- let artId = $t01455414647._5
407- let creatorAddr = $t01455414647._6
408- let artSignID = $t01455414647._7
405+ let $t01463214725 = provideBaseData(i, nftId)
406+ let id = $t01463214725._1
407+ let caller = $t01463214725._2
408+ let date = $t01463214725._3
409+ let isValidNFT = $t01463214725._4
410+ let artId = $t01463214725._5
411+ let creatorAddr = $t01463214725._6
412+ let artSignID = $t01463214725._7
409413 if ((size(artSignID) == 0))
410414 then throw("Artwork not found on SIGN Art, cancel your sale.")
411415 else if (!(isValidNFT))
421425 if ((parseInt(saleInfoArray[1]) == 0))
422426 then throw("Offer only")
423427 else {
424- let $t01515615192 = isPayment(i)
425- let payment = $t01515615192._1
426- let amount = $t01515615192._2
428+ let $t01523415270 = isPayment(i)
429+ let payment = $t01523415270._1
430+ let amount = $t01523415270._2
427431 let paymentAssetStr = if (isDefined(payment.assetId))
428432 then toBase58String(value(payment.assetId))
429433 else ""
432436 else (saleInfoArray[2] != paymentAssetStr))
433437 then throw("Payment infos don't match.")
434438 else {
435- let $t01570615838 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
436- let commissions = $t01570615838._1
437- let creatorFee = $t01570615838._2
438- let ownerFee = $t01570615838._3
439- let collectorNFT = $t01570615838._4
439+ let $t01578415916 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
440+ let commissions = $t01578415916._1
441+ let creatorFee = $t01578415916._2
442+ let ownerFee = $t01578415916._3
443+ let collectorNFT = $t01578415916._4
440444 ([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)
441445 }
442446 }
448452
449453 @Callable(i)
450454 func setOffer (nftId) = {
451- let $t01626616363 = provideBaseData(i, nftId)
452- let id = $t01626616363._1
453- let offerOwner = $t01626616363._2
454- let date = $t01626616363._3
455- let isValidNFT = $t01626616363._4
456- let artId = $t01626616363._5
457- let creatorAddr = $t01626616363._6
458- let artSignID = $t01626616363._7
455+ let $t01634416441 = provideBaseData(i, nftId)
456+ let id = $t01634416441._1
457+ let offerOwner = $t01634416441._2
458+ let date = $t01634416441._3
459+ let isValidNFT = $t01634416441._4
460+ let artId = $t01634416441._5
461+ let creatorAddr = $t01634416441._6
462+ let artSignID = $t01634416441._7
459463 if (!(isValidNFT))
460464 then throw("Not a valid nft")
461465 else {
462- let $t01642716463 = isPayment(i)
463- let payment = $t01642716463._1
464- let amount = $t01642716463._2
466+ let $t01650516541 = isPayment(i)
467+ let payment = $t01650516541._1
468+ let amount = $t01650516541._2
465469 let assetId = if (!(isDefined(payment.assetId)))
466470 then "WAVES"
467471 else toBase58String(value(payment.assetId))
482486
483487 @Callable(i)
484488 func acceptOffer (nftId,offerId,offerOwner) = {
485- let $t01728417377 = provideBaseData(i, nftId)
486- let id = $t01728417377._1
487- let caller = $t01728417377._2
488- let date = $t01728417377._3
489- let isValidNFT = $t01728417377._4
490- let artId = $t01728417377._5
491- let creatorAddr = $t01728417377._6
492- let artSignID = $t01728417377._7
489+ let $t01736217455 = provideBaseData(i, nftId)
490+ let id = $t01736217455._1
491+ let caller = $t01736217455._2
492+ let date = $t01736217455._3
493+ let isValidNFT = $t01736217455._4
494+ let artId = $t01736217455._5
495+ let creatorAddr = $t01736217455._6
496+ let artSignID = $t01736217455._7
493497 if (!(isValidNFT))
494498 then throw("Not a valid nft")
495499 else {
498502 then throw("Only sale owner can accept offer")
499503 else {
500504 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
501- let $t01763817693 = getBidData(bidKey)
502- let bidDataArr = $t01763817693._1
503- let assetId = $t01763817693._2
504- let bidData = $t01763817693._3
505+ let $t01771617771 = getBidData(bidKey)
506+ let bidDataArr = $t01771617771._1
507+ let assetId = $t01771617771._2
508+ let bidData = $t01771617771._3
505509 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
506510 let saleInfo = getStrByK((saleKey + "_OPEN"))
507511 if ((size(saleInfo) == 0))
508512 then throw("Sale Not found!")
509513 else {
510514 let amount = value(parseInt(bidDataArr[1]))
511- let $t01793618067 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
512- let commissions = $t01793618067._1
513- let creatorFee = $t01793618067._2
514- let ownerFee = $t01793618067._3
515- let collectorNFT = $t01793618067._4
515+ let $t01801418145 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
516+ let commissions = $t01801418145._1
517+ let creatorFee = $t01801418145._2
518+ let ownerFee = $t01801418145._3
519+ let collectorNFT = $t01801418145._4
516520 let assetIdStr = if (isDefined(assetId))
517521 then toBase58String(value(assetId))
518522 else "WAVES"
526530
527531 @Callable(i)
528532 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
529- let $t01888718962 = idCallerDate(i)
530- let id = $t01888718962._1
531- let caller = $t01888718962._2
532- let date = $t01888718962._3
533+ let $t01896519040 = idCallerDate(i)
534+ let id = $t01896519040._1
535+ let caller = $t01896519040._2
536+ let date = $t01896519040._3
533537 if (if ((caller != offerOwner))
534538 then (caller != saleOwner)
535539 else false)
536540 then throw("You cannot cancel this offer.")
537541 else {
538542 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
539- let $t01913619191 = getBidData(bidKey)
540- let bidDataArr = $t01913619191._1
541- let assetId = $t01913619191._2
542- let bidData = $t01913619191._3
543+ let $t01921419269 = getBidData(bidKey)
544+ let bidDataArr = $t01921419269._1
545+ let assetId = $t01921419269._2
546+ let bidData = $t01921419269._3
543547 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
544548 }
545549 }
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
3131 let userSuspended = "SUSPENDED"
3232
3333 let userRemoved = "REMOVED"
3434
3535 let artIllegal = "ILLEGAL"
3636
3737 let artSuspended = "SUSPENDED"
3838
3939 let dappRunningKey = "conf_dapp_is_running"
4040
4141 let maintenanceMSGKey = "conf_maintenance_msg"
4242
4343 let dappRunning = valueOrElse(getBoolean(this, dappRunningKey), true)
4444
4545 let maintenanceMSG = valueOrElse(getString(this, maintenanceMSGKey), "")
4646
4747 let numSalesK = "num_sales"
4848
4949 func getUserStrByK (key) = valueOrElse(getString(userDapp, key), "Error")
5050
5151
5252 func getArtworkRoyalties (key) = valueOrElse(getInteger(artworksDapp, key), 1000)
5353
5454
5555 func getArtStrByK (key) = valueOrElse(getString(artworksDapp, key), "")
5656
5757
5858 func getIntByK (key) = valueOrElse(getInteger(this, key), 0)
5959
6060
6161 func keyUserStatus (addr) = ("user_status_" + addr)
6262
6363
6464 func keyArtworkRoyalties (caller,artId) = ((("art_royalties_" + artId) + "_") + caller)
6565
6666
6767 func keySignID (artistAddr,artId) = ((("art_signid_" + artId) + "_") + artistAddr)
6868
6969
7070 func keyFlag (artistAddr,artId) = ((("art_flag_" + artId) + "_") + artistAddr)
7171
7272
7373 func keyNFTData (id) = ("nft_" + id)
7474
7575
7676 func getSaleKey (caller,nftId,artId,creatorAddr) = ((((((("sale2nd_info_" + caller) + "_") + nftId) + "_") + artId) + "_") + creatorAddr)
7777
7878
7979 func getBidKey (offerOwner,nftId,saleOwner,offerId) = ((((((("offer2nd_" + offerOwner) + "_") + nftId) + "_") + saleOwner) + "_") + offerId)
8080
8181
8282 func getIntByKFromOracle (key) = valueOrErrorMessage(getInteger(oracleFee, key), "Integer undefine or 0 in oracle")
8383
8484
8585 let currentCertificationPrice = getIntByKFromOracle(("certification_fee_" + toBase58String(signAssetId)))
8686
8787 func keyArtistAgentAddr (artistAddr) = ("artist_agent_" + artistAddr)
8888
8989
9090 func keySecondaryShare (artistAddr) = ("artist_agent_secondary_" + artistAddr)
9191
9292
9393 func idCallerDate (i) = if (!(dappRunning))
9494 then throw(maintenanceMSG)
9595 else $Tuple3(toBase58String(i.transactionId), toBase58String(i.caller.bytes), lastBlock.timestamp)
9696
9797
9898 func isPayment (i) = if ((size(i.payments) == 0))
9999 then throw("No payment attached")
100100 else {
101101 let payment = value(i.payments[0])
102102 let amount = value(payment.amount)
103103 $Tuple2(payment, amount)
104104 }
105105
106106
107107 func assetIsValid (assetDetails) = if (if (if ((assetDetails.quantity == 1))
108108 then (assetDetails.decimals == 0)
109109 else false)
110110 then (assetDetails.reissuable == false)
111111 else false)
112112 then (assetDetails.issuer == artworksDapp)
113113 else false
114114
115115
116116 func isSignArtNFT (id) = {
117117 let assetDetails = value(assetInfo(id))
118118 assetIsValid(assetDetails)
119119 }
120120
121121
122122 func acceptedAssetIds (assetId) = if (if (if (if (if ((assetId != toBase58String(signAssetId)))
123123 then (assetId != toBase58String(wavesAssetId))
124124 else false)
125125 then (assetId != "WAVES")
126126 else false)
127127 then (assetId != toBase58String(usdnAssetId))
128128 else false)
129129 then (assetId != toBase58String(usdtAssetId))
130130 else false)
131131 then false
132132 else true
133133
134134
135135 func getBidAssetId (assetId) = if ((assetId == "WAVES"))
136136 then unit
137137 else fromBase58String(assetId)
138138
139139
140140 func getSaleOwnerAndStatus (nftid) = {
141141 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftid))
142142 if ((size(saleOwner) == 0))
143143 then throw("NFT not found")
144144 else {
145145 let saleStatus = getStrByK(((("sale2nd_status_" + saleOwner) + "_") + nftid))
146146 if ((saleStatus != "OPEN"))
147147 then throw("NFT not for sale")
148148 else saleOwner
149149 }
150150 }
151151
152152
153153 func getBidData (key) = {
154154 let bidData = getStrByK((key + "_OPEN"))
155155 if ((bidData == ""))
156156 then throw("Offer not found")
157157 else {
158158 let bidDataArr = split(bidData, "_")
159159 let assetId = getBidAssetId(bidDataArr[2])
160160 $Tuple3(bidDataArr, assetId, bidData)
161161 }
162162 }
163163
164164
165165 func artIsValid (artStatus) = if ((artStatus != artIllegal))
166166 then (artStatus != artSuspended)
167167 else false
168168
169169
170170 func checkArtStatus (addr,id) = {
171171 let artStatus = getArtStrByK(keyFlag(addr, id))
172172 if (artIsValid(artStatus))
173173 then true
174174 else throw(("Original Artwork flagged as " + artStatus))
175175 }
176176
177177
178178 func checkArtistStatus (addr) = {
179179 let artistStatus = getUserStrByK(keyUserStatus(addr))
180180 if (containsElement([userSuspended, userRemoved], artistStatus))
181181 then throw(("Original Artist " + artistStatus))
182182 else true
183183 }
184184
185185
186186 func checkNFTInfo (assetId) = {
187187 let nftData = split(getArtStrByK(keyNFTData(assetId)), "_")
188188 let artSignID = getArtStrByK(keySignID(nftData[6], nftData[5]))
189189 if (if (!(checkArtStatus(nftData[6], nftData[5])))
190190 then !(checkArtistStatus(nftData[6]))
191191 else false)
192192 then $Tuple4(false, nftData[5], nftData[6], artSignID)
193193 else $Tuple4(true, nftData[5], nftData[6], artSignID)
194194 }
195195
196196
197197 func setTransfers (amount,assetId,nftid,creatorAddr,saleOwner,caller) = {
198198 let creatorCut = getArtworkRoyalties(keyArtworkRoyalties(creatorAddr, nftid))
199- let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(creatorAddr)), feeReceiver)
200- let agentShare = valueOrElse(getInteger(userDapp, keySecondaryShare(creatorAddr)), 0)
201- let amountForSign = fraction(amount, signCut, 100)
202- let amountForCreator = fraction(amount, creatorCut, 10000)
203- let amountForOwner = (amount - (amountForSign + amountForCreator))
204- let amountForAgent = if (if ((agent != feeReceiver))
205- then (agentShare > 0)
206- else false)
207- then fraction(amount, agentShare, 100)
208- else 0
209- let commissions = if ((amountForAgent != 0))
210- then [ScriptTransfer(Address(fromBase58String(feeReceiver)), (amountForSign - amountForAgent), assetId), ScriptTransfer(Address(fromBase58String(agent)), amountForAgent, assetId)]
211- else [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
212- let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
213- let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
214- let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
215- $Tuple4(commissions, creatorFee, ownerFee, collectorNFT)
199+ if (true)
200+ then throw(((toString(amount) + " / ") + toString(creatorCut)))
201+ else {
202+ let agent = valueOrElse(getString(userDapp, keyArtistAgentAddr(creatorAddr)), feeReceiver)
203+ let agentShare = valueOrElse(getInteger(userDapp, keySecondaryShare(creatorAddr)), 0)
204+ let amountForSign = fraction(amount, signCut, 100)
205+ let amountForCreator = fraction(amount, creatorCut, 10000)
206+ let amountForOwner = (amount - (amountForSign + amountForCreator))
207+ let amountForAgent = if (if ((agent != feeReceiver))
208+ then (agentShare > 0)
209+ else false)
210+ then fraction(amount, agentShare, 100)
211+ else 0
212+ let commissions = if ((amountForAgent != 0))
213+ then [ScriptTransfer(Address(fromBase58String(feeReceiver)), (amountForSign - amountForAgent), assetId), ScriptTransfer(Address(fromBase58String(agent)), amountForAgent, assetId)]
214+ else [ScriptTransfer(Address(fromBase58String(feeReceiver)), amountForSign, assetId)]
215+ let creatorFee = ScriptTransfer(Address(fromBase58String(creatorAddr)), amountForCreator, assetId)
216+ let ownerFee = ScriptTransfer(Address(fromBase58String(saleOwner)), amountForOwner, assetId)
217+ let collectorNFT = ScriptTransfer(Address(fromBase58String(caller)), 1, fromBase58String(nftid))
218+ $Tuple4(commissions, creatorFee, ownerFee, collectorNFT)
219+ }
216220 }
217221
218222
219223 func validateMinSell (assetId,price) = {
220224 let minSellWaves = if (unitTest)
221225 then 10
222226 else getIntByKFromOracle("waves_min_sell")
223227 let minSellUsdn = 1000000
224228 let minSellSign = if (unitTest)
225229 then 1
226230 else (currentCertificationPrice * 2)
227231 if (if (if (if (if (if ((assetId == toBase58String(usdnAssetId)))
228232 then (minSellUsdn > price)
229233 else false)
230234 then (price != 0)
231235 else false)
232236 then true
233237 else if (if ((assetId == toBase58String(usdtAssetId)))
234238 then (minSellUsdn > price)
235239 else false)
236240 then (price != 0)
237241 else false)
238242 then true
239243 else if (if ((assetId == toBase58String(signAssetId)))
240244 then (minSellSign > price)
241245 else false)
242246 then (price != 0)
243247 else false)
244248 then true
245249 else if (if (if ((assetId == toBase58String(wavesAssetId)))
246250 then true
247251 else (assetId == "WAVES"))
248252 then (minSellWaves > price)
249253 else false)
250254 then (price != 0)
251255 else false)
252256 then false
253257 else true
254258 }
255259
256260
257261 func provideBaseData (i,nftId) = {
258- let $t096979737 = idCallerDate(i)
259- let id = $t096979737._1
260- let caller = $t096979737._2
261- let date = $t096979737._3
262- let $t097419810 = checkNFTInfo(nftId)
263- let isValidNFT = $t097419810._1
264- let artId = $t097419810._2
265- let creatorAddr = $t097419810._3
266- let artSignID = $t097419810._4
262+ let $t097759815 = idCallerDate(i)
263+ let id = $t097759815._1
264+ let caller = $t097759815._2
265+ let date = $t097759815._3
266+ let $t098199888 = checkNFTInfo(nftId)
267+ let isValidNFT = $t098199888._1
268+ let artId = $t098199888._2
269+ let creatorAddr = $t098199888._3
270+ let artSignID = $t098199888._4
267271 $Tuple7(id, caller, date, isValidNFT, artId, creatorAddr, artSignID)
268272 }
269273
270274
271275 func updateNumSales () = {
272276 let numSales = getIntByK(numSalesK)
273277 IntegerEntry(numSalesK, (numSales + 1))
274278 }
275279
276280
277281 @Callable(invoke)
278282 func setConf (key,val) = {
279283 let caller = toString(invoke.caller)
280284 if (containsElement([chris, toString(this)], caller))
281285 then if (contains(key, "conf_"))
282286 then [StringEntry(key, val)]
283287 else throw("Entries starting with conf_ only")
284288 else throw("You are not allowed to change this")
285289 }
286290
287291
288292
289293 @Callable(invoke)
290294 func appRunning (isLive,message) = {
291295 let caller = toString(invoke.caller)
292296 let id = toBase58String(invoke.transactionId)
293297 if (containsElement([chris, toString(this)], caller))
294298 then [BooleanEntry(dappRunningKey, isLive), StringEntry(maintenanceMSGKey, message)]
295299 else throw("You are not allowed to change this")
296300 }
297301
298302
299303
300304 @Callable(i)
301305 func sellNFT (price,asset) = {
302- let $t01091510951 = isPayment(i)
303- let payment = $t01091510951._1
304- let amount = $t01091510951._2
306+ let $t01099311029 = isPayment(i)
307+ let payment = $t01099311029._1
308+ let amount = $t01099311029._2
305309 if ((amount != 1))
306310 then throw("No NFT attached")
307311 else {
308312 let nftId = if (if (isDefined(payment.assetId))
309313 then isSignArtNFT(value(payment.assetId))
310314 else false)
311315 then toBase58String(value(payment.assetId))
312316 else throw("Only SIGN Art NFT accepted.")
313- let $t01118911282 = provideBaseData(i, nftId)
314- let id = $t01118911282._1
315- let caller = $t01118911282._2
316- let date = $t01118911282._3
317- let isValidNFT = $t01118911282._4
318- let artId = $t01118911282._5
319- let creatorAddr = $t01118911282._6
320- let artSignID = $t01118911282._7
317+ let $t01126711360 = provideBaseData(i, nftId)
318+ let id = $t01126711360._1
319+ let caller = $t01126711360._2
320+ let date = $t01126711360._3
321+ let isValidNFT = $t01126711360._4
322+ let artId = $t01126711360._5
323+ let creatorAddr = $t01126711360._6
324+ let artSignID = $t01126711360._7
321325 if ((size(artSignID) == 0))
322326 then throw("Artwork not found on SIGN Art")
323327 else if (!(isValidNFT))
324328 then throw("Not a valid nft")
325329 else if (!(acceptedAssetIds(asset)))
326330 then throw("Only SIGN, USDN, USDT or WAVES accepted")
327331 else if (!(validateMinSell(asset, price)))
328332 then throw("Wrong minimum sell price")
329333 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)]
330334 }
331335 }
332336
333337
334338
335339 @Callable(i)
336340 func updateSalePrice (nftId,price,asset) = {
337- let $t01218612279 = provideBaseData(i, nftId)
338- let id = $t01218612279._1
339- let caller = $t01218612279._2
340- let date = $t01218612279._3
341- let isValidNFT = $t01218612279._4
342- let artId = $t01218612279._5
343- let creatorAddr = $t01218612279._6
344- let artSignID = $t01218612279._7
341+ let $t01226412357 = provideBaseData(i, nftId)
342+ let id = $t01226412357._1
343+ let caller = $t01226412357._2
344+ let date = $t01226412357._3
345+ let isValidNFT = $t01226412357._4
346+ let artId = $t01226412357._5
347+ let creatorAddr = $t01226412357._6
348+ let artSignID = $t01226412357._7
345349 if ((size(artSignID) == 0))
346350 then throw("Artwork not found on SIGN Art, cancel your sale.")
347351 else if (!(isValidNFT))
348352 then throw("Not a valid nft")
349353 else {
350354 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
351355 if ((saleOwner != caller))
352356 then throw("You don't own this NFT")
353357 else {
354358 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
355359 if ((saleStatus != "OPEN"))
356360 then throw("Sale not active")
357361 else if (!(acceptedAssetIds(asset)))
358362 then throw("Only SIGN, USDN, USDT or WAVES accepted")
359363 else if (!(validateMinSell(asset, price)))
360364 then throw("Wrong minimum sell price")
361365 else {
362366 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
363367 let saleInfo = split(getStrByK((saleKey + "_OPEN")), "_")
364368 [StringEntry((saleKey + "_OPEN"), ((((((((((((saleInfo[0] + "_") + toString(price)) + "_") + asset) + "_") + saleInfo[3]) + "_") + saleInfo[4]) + "_") + saleInfo[5]) + "_") + saleInfo[6]))]
365369 }
366370 }
367371 }
368372 }
369373
370374
371375
372376 @Callable(i)
373377 func cancelSale (nftId) = {
374- let $t01345613700 = provideBaseData(i, nftId)
375- let id = $t01345613700._1
376- let caller = $t01345613700._2
377- let date = $t01345613700._3
378- let isValidNFT = $t01345613700._4
379- let artId = $t01345613700._5
380- let creatorAddr = $t01345613700._6
381- let artSignID = $t01345613700._7
378+ let $t01353413778 = provideBaseData(i, nftId)
379+ let id = $t01353413778._1
380+ let caller = $t01353413778._2
381+ let date = $t01353413778._3
382+ let isValidNFT = $t01353413778._4
383+ let artId = $t01353413778._5
384+ let creatorAddr = $t01353413778._6
385+ let artSignID = $t01353413778._7
382386 let saleOwner = getStrByK(("current_owner_on_dapp_" + nftId))
383387 if ((saleOwner != caller))
384388 then throw("You don't own this NFT")
385389 else {
386390 let saleStatus = getStrByK(((("sale2nd_status_" + caller) + "_") + nftId))
387391 if ((saleStatus != "OPEN"))
388392 then throw("Sale not active")
389393 else {
390394 let saleKey = getSaleKey(caller, nftId, artId, creatorAddr)
391395 let saleInfo = getStrByK((saleKey + "_OPEN"))
392396 [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))]
393397 }
394398 }
395399 }
396400
397401
398402
399403 @Callable(i)
400404 func buyNFT (nftId) = {
401- let $t01455414647 = provideBaseData(i, nftId)
402- let id = $t01455414647._1
403- let caller = $t01455414647._2
404- let date = $t01455414647._3
405- let isValidNFT = $t01455414647._4
406- let artId = $t01455414647._5
407- let creatorAddr = $t01455414647._6
408- let artSignID = $t01455414647._7
405+ let $t01463214725 = provideBaseData(i, nftId)
406+ let id = $t01463214725._1
407+ let caller = $t01463214725._2
408+ let date = $t01463214725._3
409+ let isValidNFT = $t01463214725._4
410+ let artId = $t01463214725._5
411+ let creatorAddr = $t01463214725._6
412+ let artSignID = $t01463214725._7
409413 if ((size(artSignID) == 0))
410414 then throw("Artwork not found on SIGN Art, cancel your sale.")
411415 else if (!(isValidNFT))
412416 then throw("Not a valid nft")
413417 else {
414418 let saleOwner = getSaleOwnerAndStatus(nftId)
415419 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
416420 let saleInfo = getStrByK((saleKey + "_OPEN"))
417421 if ((size(saleInfo) == 0))
418422 then throw("Sale Not found!")
419423 else {
420424 let saleInfoArray = split(saleInfo, "_")
421425 if ((parseInt(saleInfoArray[1]) == 0))
422426 then throw("Offer only")
423427 else {
424- let $t01515615192 = isPayment(i)
425- let payment = $t01515615192._1
426- let amount = $t01515615192._2
428+ let $t01523415270 = isPayment(i)
429+ let payment = $t01523415270._1
430+ let amount = $t01523415270._2
427431 let paymentAssetStr = if (isDefined(payment.assetId))
428432 then toBase58String(value(payment.assetId))
429433 else ""
430434 if (if ((saleInfoArray[1] != toString(amount)))
431435 then true
432436 else (saleInfoArray[2] != paymentAssetStr))
433437 then throw("Payment infos don't match.")
434438 else {
435- let $t01570615838 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
436- let commissions = $t01570615838._1
437- let creatorFee = $t01570615838._2
438- let ownerFee = $t01570615838._3
439- let collectorNFT = $t01570615838._4
439+ let $t01578415916 = setTransfers(amount, payment.assetId, nftId, creatorAddr, saleOwner, caller)
440+ let commissions = $t01578415916._1
441+ let creatorFee = $t01578415916._2
442+ let ownerFee = $t01578415916._3
443+ let collectorNFT = $t01578415916._4
440444 ([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)
441445 }
442446 }
443447 }
444448 }
445449 }
446450
447451
448452
449453 @Callable(i)
450454 func setOffer (nftId) = {
451- let $t01626616363 = provideBaseData(i, nftId)
452- let id = $t01626616363._1
453- let offerOwner = $t01626616363._2
454- let date = $t01626616363._3
455- let isValidNFT = $t01626616363._4
456- let artId = $t01626616363._5
457- let creatorAddr = $t01626616363._6
458- let artSignID = $t01626616363._7
455+ let $t01634416441 = provideBaseData(i, nftId)
456+ let id = $t01634416441._1
457+ let offerOwner = $t01634416441._2
458+ let date = $t01634416441._3
459+ let isValidNFT = $t01634416441._4
460+ let artId = $t01634416441._5
461+ let creatorAddr = $t01634416441._6
462+ let artSignID = $t01634416441._7
459463 if (!(isValidNFT))
460464 then throw("Not a valid nft")
461465 else {
462- let $t01642716463 = isPayment(i)
463- let payment = $t01642716463._1
464- let amount = $t01642716463._2
466+ let $t01650516541 = isPayment(i)
467+ let payment = $t01650516541._1
468+ let amount = $t01650516541._2
465469 let assetId = if (!(isDefined(payment.assetId)))
466470 then "WAVES"
467471 else toBase58String(value(payment.assetId))
468472 if (!(acceptedAssetIds(assetId)))
469473 then throw("asset not accepted")
470474 else if ((amount == 0))
471475 then throw("Offer of 0 not allowed")
472476 else if (!(validateMinSell(assetId, amount)))
473477 then throw("Wrong minimum sell price")
474478 else {
475479 let saleOwner = getSaleOwnerAndStatus(nftId)
476480 [StringEntry((getBidKey(offerOwner, nftId, saleOwner, id) + "_OPEN"), ((((((((((((((toString(date) + "_") + toString(amount)) + "_") + assetId) + "_") + nftId) + "_") + artId) + "_") + creatorAddr) + "_") + offerOwner) + "_") + id))]
477481 }
478482 }
479483 }
480484
481485
482486
483487 @Callable(i)
484488 func acceptOffer (nftId,offerId,offerOwner) = {
485- let $t01728417377 = provideBaseData(i, nftId)
486- let id = $t01728417377._1
487- let caller = $t01728417377._2
488- let date = $t01728417377._3
489- let isValidNFT = $t01728417377._4
490- let artId = $t01728417377._5
491- let creatorAddr = $t01728417377._6
492- let artSignID = $t01728417377._7
489+ let $t01736217455 = provideBaseData(i, nftId)
490+ let id = $t01736217455._1
491+ let caller = $t01736217455._2
492+ let date = $t01736217455._3
493+ let isValidNFT = $t01736217455._4
494+ let artId = $t01736217455._5
495+ let creatorAddr = $t01736217455._6
496+ let artSignID = $t01736217455._7
493497 if (!(isValidNFT))
494498 then throw("Not a valid nft")
495499 else {
496500 let saleOwner = getSaleOwnerAndStatus(nftId)
497501 if ((caller != saleOwner))
498502 then throw("Only sale owner can accept offer")
499503 else {
500504 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
501- let $t01763817693 = getBidData(bidKey)
502- let bidDataArr = $t01763817693._1
503- let assetId = $t01763817693._2
504- let bidData = $t01763817693._3
505+ let $t01771617771 = getBidData(bidKey)
506+ let bidDataArr = $t01771617771._1
507+ let assetId = $t01771617771._2
508+ let bidData = $t01771617771._3
505509 let saleKey = getSaleKey(saleOwner, nftId, artId, creatorAddr)
506510 let saleInfo = getStrByK((saleKey + "_OPEN"))
507511 if ((size(saleInfo) == 0))
508512 then throw("Sale Not found!")
509513 else {
510514 let amount = value(parseInt(bidDataArr[1]))
511- let $t01793618067 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
512- let commissions = $t01793618067._1
513- let creatorFee = $t01793618067._2
514- let ownerFee = $t01793618067._3
515- let collectorNFT = $t01793618067._4
515+ let $t01801418145 = setTransfers(amount, assetId, nftId, creatorAddr, saleOwner, bidDataArr[6])
516+ let commissions = $t01801418145._1
517+ let creatorFee = $t01801418145._2
518+ let ownerFee = $t01801418145._3
519+ let collectorNFT = $t01801418145._4
516520 let assetIdStr = if (isDefined(assetId))
517521 then toBase58String(value(assetId))
518522 else "WAVES"
519523 ([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)
520524 }
521525 }
522526 }
523527 }
524528
525529
526530
527531 @Callable(i)
528532 func cancelOffer (nftId,offerId,offerOwner,saleOwner) = {
529- let $t01888718962 = idCallerDate(i)
530- let id = $t01888718962._1
531- let caller = $t01888718962._2
532- let date = $t01888718962._3
533+ let $t01896519040 = idCallerDate(i)
534+ let id = $t01896519040._1
535+ let caller = $t01896519040._2
536+ let date = $t01896519040._3
533537 if (if ((caller != offerOwner))
534538 then (caller != saleOwner)
535539 else false)
536540 then throw("You cannot cancel this offer.")
537541 else {
538542 let bidKey = getBidKey(offerOwner, nftId, saleOwner, offerId)
539- let $t01913619191 = getBidData(bidKey)
540- let bidDataArr = $t01913619191._1
541- let assetId = $t01913619191._2
542- let bidData = $t01913619191._3
543+ let $t01921419269 = getBidData(bidKey)
544+ let bidDataArr = $t01921419269._1
545+ let assetId = $t01921419269._2
546+ let bidData = $t01921419269._3
543547 [DeleteEntry((bidKey + "_OPEN")), StringEntry((bidKey + "_CANCELLED"), ((((bidData + "_CANCELLED_") + toString(date)) + "_") + id)), ScriptTransfer(Address(fromBase58String(caller)), parseIntValue(bidDataArr[1]), assetId)]
544548 }
545549 }
546550
547551

github/deemru/w8io/3ef1775 
124.80 ms