tx · 5UFuuoyDANnumqRwF9KQXxQgkb3b1jJrPfsbF7XZm4TY

3N1Dhq5ZZyoojQisuTLusYjnGisqrxDwGLy:  -0.01000000 Waves

2022.04.11 18:27 [2004109] smart account 3N1Dhq5ZZyoojQisuTLusYjnGisqrxDwGLy > SELF 0.00000000 Waves

{ "type": 13, "id": "5UFuuoyDANnumqRwF9KQXxQgkb3b1jJrPfsbF7XZm4TY", "fee": 1000000, "feeAssetId": null, "timestamp": 1649690982732, "version": 2, "chainId": 84, "sender": "3N1Dhq5ZZyoojQisuTLusYjnGisqrxDwGLy", "senderPublicKey": "4ogfEQE7KGDWQR7Vd5VThqBebZ47NxrMLmAApR3sFuXW", "proofs": [ "24HNQoyd43tpY7ey1cmdB1KAU51ykhDBZss3bGc3BiSkPo8owvM4hnE52ZTMEsbiJP36WJqcirvzAMVteFScuGzH" ], "script": "base64:AAIFAAAAAAAAAFgIAhIDCgEIEgMKAQgSBQoDAQgIEgwKCggICAgICAgICAgSDgoMCAEBCAgBCAgIAQEBEgQKAggIEgUKAwgICBIDCgEIEgQKAggIEgYKBAgICAgSBQoDCAgIAAAAUwAAAAAIdW5pdFRlc3QHAAAAAAlvcmFjbGVLZXkCAAAACW9yYWNsZUtleQEAAAAGZ2V0U3RyAAAAAQAAAANrZXkEAAAAByRtYXRjaDAJAAQdAAAAAgUAAAAEdGhpcwUAAAADa2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAZTdHJpbmcEAAAAAWIFAAAAByRtYXRjaDAFAAAAAWICAAAAAAAAAAAGb3JhY2xlCQEAAAAGZ2V0U3RyAAAAAQUAAAAJb3JhY2xlS2V5AAAAAAlvcmFjbGVGZWUJAQAAAAV2YWx1ZQAAAAEJAAQmAAAAAQUAAAAGb3JhY2xlAAAAAAZvd25lcnMJAARMAAAAAgkABB0AAAACBQAAAAlvcmFjbGVGZWUCAAAABm93bmVyMQkABEwAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAGb3duZXIyBQAAAANuaWwAAAAAD2NvbGxlY3Rpb25zRGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAPY29sbGVjdGlvbnNEYXBwAgAAABhjb2xsZWN0aW9uRGFwcCBub3QgZm91bmQAAAAAC2ZlZVJlY2VpdmVyCQEAAAATdmFsdWVPckVycm9yTWVzc2FnZQAAAAIJAAQdAAAAAgUAAAAJb3JhY2xlRmVlAgAAAAtmZWVSZWNlaXZlcgIAAAAVZmVlUmVjZWl2ZXIgbm90IGZvdW5kAAAAAAhjZXJ0RGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAIY2VydERhcHACAAAAEmNlcnREYXBwIG5vdCBmb3VuZAAAAAAHZmVlRGFwcAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEHQAAAAIFAAAACW9yYWNsZUZlZQIAAAAHZmVlRGFwcAIAAAARZmVlRGFwcCBub3QgZm91bmQAAAAACHVzZXJEYXBwCQEAAAAFdmFsdWUAAAABCQAEJgAAAAEJAQAAABN2YWx1ZU9yRXJyb3JNZXNzYWdlAAAAAgkABB0AAAACBQAAAAlvcmFjbGVGZWUCAAAACHVzZXJEYXBwAgAAABJ1c2VyZGFwcCBub3QgZm91bmQAAAAAC1VTRE5Bc3NldElkCQACWQAAAAEJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAACW9yYWNsZUZlZQIAAAALVVNETkFzc2V0SWQAAAAADVNjb25leEFzc2V0SWQJAAJZAAAAAQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAJb3JhY2xlRmVlAgAAAA1TY29uZXhBc3NldElkAAAAAAV0eXBlcwkABEwAAAACAgAAAAVJTUFHRQkABEwAAAACAgAAAANQREYJAARMAAAAAgIAAAAFVklERU8FAAAAA25pbAAAAAAMUHJldmlld3R5cGVzCQAETAAAAAICAAAAA1BERgUAAAADbmlsAAAAAAtkYXBwUnVubmluZwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABBsAAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9kYXBwX2lzX3J1bm5pbmcGAAAAAA5tYWludGVuYW5jZU1TRwkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAAAAh1c2VyRGFwcAIAAAAUY29uZl9tYWludGVuYW5jZV9tc2cCAAAAAAAAAAANdXNlclN1c3BlbmRlZAIAAAAJU1VTUEVOREVEAAAAAAt1c2VyUmVtb3ZlZAIAAAAHUkVNT1ZFRAAAAAAQdXNlclVucmVnaXN0ZXJlZAIAAAAMVU5SRUdJU1RFUkVEAAAAAAxhdWN0aW9uVHlwZTECAAAAB0JJRFRZUEUAAAAADGF1Y3Rpb25UeXBlMgIAAAALVFJBRElUSU9OQUwAAAAADGF1Y3Rpb25UeXBlMwIAAAAGRElSRUNUAQAAABdnZXRTdHJpbmdCeUtleUZyb21Vc2VycwAAAAEAAAADa2V5CQEAAAALdmFsdWVPckVsc2UAAAACCQAEHQAAAAIFAAAACHVzZXJEYXBwBQAAAANrZXkCAAAAAAEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABAAAAA2tleQkBAAAAC3ZhbHVlT3JFbHNlAAAAAgkABB0AAAACBQAA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dW50CQAAAgAAAAECAAAADFdyb25nIGFtb3VudAkABRQAAAACBQAAAAliaWRBbW91bnQFAAAACmJpZEFzc2V0SWQBAAAADGlkQ2FsbGVyRGF0ZQAAAAEAAAABaQMJAQAAAAEhAAAAAQUAAAALZGFwcFJ1bm5pbmcJAAACAAAAAQUAAAAObWFpbnRlbmFuY2VNU0cJAAUVAAAAAwkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wAQAAAApnZXRBcnREYXRhAAAABAAAAAFpAAAABmlzc3VlcgAAAAVhcnRJZAAAAAVpc0JpZAQAAAAOY2FsbGVySXNJc3N1ZXIJAAAAAAAAAgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBQAAAAZpc3N1ZXIEAAAACHRvdGFsTkZUCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQIAAAAQdG90YWxfbmZ0X2lzc3VlZAQAAAALYXJ0d29ya05hbWUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAdrZXlOYW1lAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXJ0d29ya05hbWUCAAAAAAkAAAIAAAABAgAAABFBcnQgZG9lc24ndCBleGlzdAQAAAAIaXNPblNhbGUJAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABCQEAAAAJa2V5T25TYWxlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKYW1vdW50U29sZAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAlrZXlJc3N1ZWQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAxhcnR3b3JrUHJpY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAIa2V5UHJpY2UAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAAxtaW5VU0ROUHJpY2UEAAAADHByaWNlQXNzZXRJZAMFAAAADmNhbGxlcklzSXNzdWVyCQACWAAAAAEFAAAAC1VT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aHQJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAMa2V5RW5kSGVpZ2h0AAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAQAAAAKaGlnaGVzdEJpZAkBAAAAGmdldEFtb3VudEhpZ2hlc3RCaWRCeUFydElkAAAAAQUAAAAFYXJ0SWQDCQAAZgAAAAIFAAAABmhlaWdodAUAAAAJZW5kSGVpZ2h0CQAAAgAAAAECAAAAIVRoaXMgYXVjdGlvbiBpcyBmaW5pc2hlZCBhbHJlYWR5IQQAAAALY2FsbGRlckRhdGEJAQAAAAxpZENhbGxlckRhdGUAAAABBQAAAAFpBAAAAAJpZAgFAAAAC2NhbGxkZXJEYXRhAAAAAl8xBAAAAAZjYWxsZXIIBQAAAAtjYWxsZGVyRGF0YQAAAAJfMgQAAAAEZGF0ZQgFAAAAC2NhbGxkZXJEYXRhAAAAAl8zBAAAAAxpc1BheW1lbnRWYXIJAQAAAAlpc1BheW1lbnQAAAABBQAAAAFpBAAAAAdwYXltZW50CAUAAAAMaXNQYXltZW50VmFyAAAAAl8xBAAAAAZhbW91bnQIBQAAAAxpc1BheW1lbnRWYXIAAAACXzIDCQAAZwAAAAIFAAAACmhpZ2hlc3RCaWQFAAAABmFtb3VudAkAAAIAAAABCQABLAAAAAICAAAAIFBsZWFzZSBwbGFjZSBhIGJpZCBoaWdoZXIgdGhhbjogCQABpAAAAAEFAAAACmhpZ2hlc3RCaWQEAAAAB2Fzc2V0SWQDCQEAAAABIQAAAAEJAQAAAAlpc0RlZmluZWQAAAABCAUAAAAHcGF5bWVudAAAAAdhc3NldElkCQAAAgAAAAECAAAAFk9ubHkgVVNETiBpcyBhY2NlcHRlZCEJAAJYAAAAAQkBAAAABXZhbHVlAAAAAQgFAAAAB3BheW1lbnQAAAAHYXNzZXRJZAQAAAAGYmlkTmJyCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkAASwAAAACAgAAABJjdXJyZW50X2JpZGFtb3VudF8FAAAABWFydElkBAAAAA9taW5BcnR3b3JrUHJpY2UJAQAAAAt2YWx1ZU9yRWxzZQAAAAIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAIa2V5UHJpY2UAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBQAAAAxtaW5VU0ROUHJpY2UDCQEAAAABIQAAAAEJAQAAABBhY2NlcHRlZEFzc2V0SWRzAAAAAQUAAAAHYXNzZXRJZAkAAAIAAAABAgAAABJhc3NldCBub3QgYWNjZXB0ZWQDCQAAZgAAAAIFAAAAD21pbkFydHdvcmtQcmljZQUAAAAGYW1vdW50CQAAAgAAAAECAAAAF0JpZCBpcyBiZWxvdyBtaW4gcHJpY2UhBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACWtleUlzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACm1heENhblNlbGwJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQDCQAAZwAAAAIAAAAAAAAAAAAFAAAACm1heENhblNlbGwJAAACAAAAAQIAAAAjTm8gbWF4IGVkaXRpb24gc2V0IGZvciB0aGlzIGFydHdvcmsDCQAAZwAAAAIFAAAACmFtb3VudFNvbGQFAAAACm1heENhblNlbGwJAAACAAAAAQIAAAAYU29sZCBvdXQsIHlvdSBjYW5ub3QgYmlkCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACAgAAAARiaWRfBQAAAAVhcnRJZAIAAAABXwUAAAAGaXNzdWVyAgAAAAFfBQAAAAZjYWxsZXICAAAAAV8FAAAAAmlkAgAAAAVfT1BFTgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdhc3NldElkAgAAAAFfCQABpAAAAAEFAAAABmFtb3VudAIAAAABXwkAAaQAAAABBQAAAARkYXRlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQABLAAAAAICAAAAEmN1cnJlbnRfYmlkYW1vdW50XwUAAAAFYXJ0SWQJAABkAAAAAgUAAAAGYmlkTmJyAAAAAAAAAAABCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAABJrZXlIaWdoZXN0QmlkQmlkSWQAAAABBQAAAAVhcnRJZAkAAlgAAAABCAUAAAABaQAAAA10cmFuc2FjdGlvbklkCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAIa2V5QmlkSWQAAAABCQACWAAAAAEIBQAAAAFpAAAADXRyYW5zYWN0aW9uSWQFAAAABmFtb3VudAUAAAADbmlsAQAAABdhY2NlcHRCaWROb25UcmFkaXRpb25hbAAAAAUAAAABaQAAAAVhcnRJZAAAAAZpc3N1ZXIAAAAFYmlkSWQAAAAIYmlkT3duZXIEAAAABmNhbGxlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzAwkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAZpc3N1ZXIJAAACAAAAAQIAAAAZWW91IGNhbm5vdCBkbyB0aGlzIGFjdGlvbgkBAAAAB2J1eU1pbnQAAAAGBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAUAAAAIYmlkT3duZXIGAQAAAA5yZXN0YXJ0QXVjdGlvbgAAAAIAAAAFYXJ0SWQAAAAGaXNzdWVyBAAAAAphbW91bnRTb2xkCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAACWtleUlzc3VlZAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACm1heENhblNlbGwJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAKa2V5TWF4TWludAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADG9sZEVuZEhlaWdodAkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAxrZXlFbmRIZWlnaHQAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkBAAAAAhkdXJhdGlvbgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAAAtrZXlEdXJhdGlvbgAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAACWVuZEhlaWdodAkAAGQAAAACBQAAAAhkdXJhdGlvbgUAAAAGaGVpZ2h0AwkAAGYAAAACBQAAAAZoZWlnaHQFAAAADG9sZEVuZEhlaWdodAMJAAAAAAAAAgUAAAAKYW1vdW50U29sZAUAAAAKbWF4Q2FuU2VsbAkAAAIAAAABAgAAACZDYW4ndCByZXN0YXJ0IGF1Y3Rpb24sIG1heCBhbW91bnQgc29sZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAADGtleUVuZEhlaWdodAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQFAAAACWVuZEhlaWdodAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAASa2V5SGlnaGVzdEJpZEJpZElkAAAAAQUAAAAFYXJ0SWQFAAAAA25pbAkAAAIAAAABAgAAACRQcmV2aW91cyBhdWN0aW9uIGlzbid0IGNvbXBsZXRlZCB5ZXQBAAAAFGFjY2VwdEJpZFRyYWRpdGlvbmFsAAAABQAAAAFpAAAABWFydElkAAAABmlzc3VlcgAAAAViaWRJZAAAAAhiaWRPd25lcgQAAAAJZW5kSGVpZ2h0CQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAADGtleUVuZEhlaWdodAAAAAIFAAAABmlzc3VlcgUAAAAFYXJ0SWQEAAAADGhpZ2hlc3RCaWRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmtleUhpZ2hlc3RCaWRCaWRJZAAAAAEFAAAABWFydElkAwkAAGYAAAACBQAAAAZoZWlnaHQFAAAACWVuZEhlaWdodAMJAAAAAAAAAgUAAAAFYmlkSWQFAAAADGhpZ2hlc3RCaWRJZAQAAAALYnV5TWludERhdGEJAQAAAAdidXlNaW50AAAABgUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQFAAAACGJpZE93bmVyBgQAAAAScmVzdGFydEF1Y3Rpb25EYXRhCQEAAAAOcmVzdGFydEF1Y3Rpb24AAAACBQAAAAVhcnRJZAUAAAAGaXNzdWVyCQAETgAAAAIFAAAAEnJlc3RhcnRBdWN0aW9uRGF0YQUAAAALYnV5TWludERhdGEJAAACAAAAAQIAAAAcVGhpcyBpcyBub3QgdGhlIHdpbm5pbmcgYmlkIQkAAAIAAAABAgAAACFUaGlzIGF1Y3Rpb24gaXMgbm90IHlldCBmaW5pc2hlZCEBAAAADWNhbmNlbEJpZEltcGwAAAAEAAAAAWkAAAAFYXJ0SWQA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AAAEdHlwZQQAAAAPdmFsaWRhdGVBcnR3b3JrCQEAAAATdmFsaWRhdGVBcnR3b3JrRGF0YQAAAAUFAAAABmNhbGxlcgUAAAAKY2lkRGlzcGxheQUAAAAEbmFtZQUAAAALZGVzY3JpcHRpb24FAAAABHRhZ3MDCQEAAAACIT0AAAACBQAAAA92YWxpZGF0ZUFydHdvcmsCAAAAAAkAAAIAAAABAgAAABVTb21ldGhpbmcgd2VudCB3cm9uZyEEAAAADHQwMTgxNzAxODIxMgkBAAAAD3ZhbGlkYXRlUGF5bWVudAAAAAEFAAAAAWkEAAAABmFtb3VudAgFAAAADHQwMTgxNzAxODIxMgAAAAJfMQQAAAAHYXNzZXRJZAgFAAAADHQwMTgxNzAxODIxMgAAAAJfMgMJAQAAAAEhAAAAAQkBAAAACWlzRGVmaW5lZAAAAAEFAAAABmFtb3VudAkAAAIAAAABAgAAABRTb21ldGhpbmcgd2VudCB3cm9uZwQAAAALcHJldmlld0RhdGEDCQEAAAAPY29udGFpbnNFbGVtZW50AAAAAgUAAAAMUHJldmlld3R5cGVzBQAAAAR0eXBlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA1rZXlQcmV2aWV3Q2lkAAAAAgUAAAAGY2FsbGVyBQAAAAVhcnRJZAUAAAAHcHJldmlldwUAAAADbmlsBQAAAANuaWwEAAAAFmludm9rZUNvbGxlY3Rpb25DcmVhdGUJAAP8AAAABAkBAAAAE3ZhbHVlT3JFcnJvck1lc3NhZ2UAAAACCQAEJgAAAAEFAAAAD2NvbGxlY3Rpb25zRGFwcAkAASwAAAACBQAAAA9jb2xsZWN0aW9uc0RhcHACAAAACiBub3QgZm91bmQCAAAAEWNvbGxlY3Rpb25Qcm9jZXNzCQAETAAAAAIFAAAACmNvbGxlY3Rpb24JAARMAAAAAgUAAAANc3ViY29sbGVjdGlvbgkABEwAAAACBQAAAAZjYWxsZXIFAAAAA25pbAUAAAADbmlsAwkAAAAAAAACBQAAABZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlBQAAABZpbnZva2VDb2xsZWN0aW9uQ3JlYXRlBAAAAAxpZENvbGxlY3Rpb24EAAAAByRtYXRjaDAFAAAAFmludm9rZUNvbGxl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AAAADmtleUF1Y3Rpb25UeXBlAAAAAgUAAAAGaXNzdWVyBQAAAAVhcnRJZAMJAAAAAAAAAgUAAAALYXVjdGlvblR5cGUFAAAADGF1Y3Rpb25UeXBlMQkBAAAAF2FjY2VwdEJpZE5vblRyYWRpdGlvbmFsAAAABQUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQFAAAACGJpZE93bmVyAwkAAAAAAAACBQAAAAthdWN0aW9uVHlwZQUAAAAMYXVjdGlvblR5cGUyCQEAAAAUYWNjZXB0QmlkVHJhZGl0aW9uYWwAAAAFBQAAAAFpBQAAAAVhcnRJZAUAAAAGaXNzdWVyBQAAAAViaWRJZAUAAAAIYmlkT3duZXIJAAACAAAAAQkAASwAAAACCQABLAAAAAICAAAAFlVua25vd24gYXVjdGlvbiB0eXBlIDoFAAAAC2F1Y3Rpb25UeXBlAgAAABssIHBsZWFzZSBjb250YWN0IHRoZSBhZG1pbnMAAAABaQEAAAAJY2FuY2VsQmlkAAAAAwAAAAVhcnRJZAAAAAZpc3N1ZXIAAAAFYmlkSWQEAAAAC2F1Y3Rpb25UeXBlCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAOa2V5QXVjdGlvblR5cGUAAAACBQAAAAZpc3N1ZXIFAAAABWFydElkAwkAAAAAAAACBQAAAAthdWN0aW9uVHlwZQUAAAAMYXVjdGlvblR5cGUxCQEAAAANY2FuY2VsQmlkSW1wbAAAAAQFAAAAAWkFAAAABWFydElkBQAAAAZpc3N1ZXIFAAAABWJpZElkCQEAAAAYY2FuY2VsQmlkSW1wbFRyYWRpdGlvbmFsAAAABAUAAAABaQUAAAAFYXJ0SWQFAAAABmlzc3VlcgUAAAAFYmlkSWQAAAAAzTO8Ng==", "height": 2004109, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 53Njw8bL7LMBub98BbvBsxTY116cyktHfjBtqbbCo9a2 Next: 38PrUFiT1pKYmiPUM2zVKa2YKxdz69eJorT8BmCzEXLw Diff:
OldNewDifferences
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
6-let b = value(addressFromString("3MpZQjzGogmifcEKe8mDd6ribL7nxT9ACye"))
6+let b = "oracleKey"
77
8-let c = "3N65xLq8JcCeaEiR1TJQ7dBqXBvEy6E48Wz"
9-
10-let d = "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw"
11-
12-let e = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
13-
14-let f = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
15-
16-let g = base58'132maRL3uF35tc2bpRih9D6MYq5DR6H28zkop786dKyu'
17-
18-let h = [getString(b, "owner1"), getString(b, "owner2")]
19-
20-let i = 150
21-
22-let j = 30
23-
24-let k = 70
25-
26-let l = valueOrElse(getBoolean(e, "conf_dapp_is_running"), true)
27-
28-let m = valueOrElse(getString(e, "conf_maintenance_msg"), "")
29-
30-let n = "SUSPENDED"
31-
32-let o = "REMOVED"
33-
34-let p = "UNREGISTERED"
35-
36-let q = "ALLOWED"
37-
38-let r = "BIDTYPE"
39-
40-let s = "TRADITIONAL"
41-
42-func t (u) = valueOrElse(getString(e, u), "")
43-
44-
45-func v (u) = valueOrElse(getString(this, u), "")
46-
47-
48-func w (u,x) = valueOrErrorMessage(getString(this, u), x)
49-
50-
51-func y (u) = valueOrErrorMessage(getInteger(b, u), "Integer undefine or 0 in oracle")
52-
53-
54-func z (u) = valueOrElse(getInteger(this, u), 0)
55-
56-
57-func A (u) = valueOrElse(getInteger(f, u), 0)
58-
59-
60-func B (u) = valueOrElse(getBoolean(this, u), false)
61-
62-
63-func C (D) = (size(D) == 64)
64-
65-
66-func E (F) = ("user_status_" + F)
67-
68-
69-func G (F,H) = ((("art_date_" + H) + "_") + F)
70-
71-
72-func I (F,H) = ((("art_name_" + H) + "_") + F)
73-
74-
75-func J (F,H) = ((("art_desc_" + H) + "_") + F)
76-
77-
78-func K (F,H) = ((("art_display_cid_" + H) + "_") + F)
79-
80-
81-func L (F,H) = ((("art_maxmint_" + H) + "_") + F)
82-
83-
84-func M (F,H) = ((("art_minprice_" + H) + "_") + F)
85-
86-
87-func N (H) = ("art_highestBidBidId_" + H)
88-
89-
90-func O (P) = ("bid_" + P)
91-
92-
93-func Q (F,H) = ((("art_duration_" + H) + "_") + F)
94-
95-
96-func R (F,H) = ((("art_endheight_" + H) + "_") + F)
97-
98-
99-func S (F,H) = ((("art_auctiontype_" + H) + "_") + F)
100-
101-
102-func T (F,H) = ((("art_issued_" + H) + "_") + F)
103-
104-
105-func U (V) = ("nft_issued_" + V)
106-
107-
108-func W (F,H) = ((("art_onsale_" + H) + "_") + F)
109-
110-
111-func X (F,H) = ((("art_entitlement_" + H) + "_") + F)
112-
113-
114-func Y (F,H) = ((("art_tags_" + H) + "_") + F)
115-
116-
117-func Z (F,H) = ((("art_type_" + H) + "_") + F)
118-
119-
120-func aa (F,H) = ((("art_price_" + H) + "_") + F)
121-
122-
123-func ab (F,H) = ((("art_assetAccepted_" + H) + "_") + F)
124-
125-
126-func ac (F,ad) = ((("get_hashbytxidaddr_" + ad) + "_") + F)
127-
128-
129-func ae (af) = ("get_owner_by_hash_" + af)
130-
131-
132-func ag (af,F) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((af + F)))))
133-
134-
135-let ah = y(("certification_fee_" + toBase58String(g)))
136-
137-func ai (P) = valueOrElse(z(O(P)), 0)
138-
139-
140-func aj (H) = {
141- let P = v(N(H))
142- if ((P == ""))
143- then 0
144- else ai(P)
8+func c (d) = {
9+ let e = getString(this, d)
10+ if ($isInstanceOf(e, "String"))
11+ then {
12+ let f = e
13+ f
14+ }
15+ else ""
14516 }
14617
14718
148-func ak (al,am) = if ((size(al) == 0))
19+let g = c(b)
20+
21+let h = value(addressFromString(g))
22+
23+let i = [getString(h, "owner1"), getString(h, "owner2")]
24+
25+let j = valueOrErrorMessage(getString(h, "collectionsDapp"), "collectionDapp not found")
26+
27+let k = valueOrErrorMessage(getString(h, "feeReceiver"), "feeReceiver not found")
28+
29+let l = valueOrErrorMessage(getString(h, "certDapp"), "certDapp not found")
30+
31+let m = valueOrErrorMessage(getString(h, "feeDapp"), "feeDapp not found")
32+
33+let n = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
34+
35+let o = fromBase58String(getStringValue(h, "USDNAssetId"))
36+
37+let p = fromBase58String(getStringValue(h, "SconexAssetId"))
38+
39+let q = ["IMAGE", "PDF", "VIDEO"]
40+
41+let r = ["PDF"]
42+
43+let s = valueOrElse(getBoolean(n, "conf_dapp_is_running"), true)
44+
45+let t = valueOrElse(getString(n, "conf_maintenance_msg"), "")
46+
47+let u = "SUSPENDED"
48+
49+let v = "REMOVED"
50+
51+let w = "UNREGISTERED"
52+
53+let x = "BIDTYPE"
54+
55+let y = "TRADITIONAL"
56+
57+let z = "DIRECT"
58+
59+func A (d) = valueOrElse(getString(n, d), "")
60+
61+
62+func B (d) = valueOrElse(getString(this, d), "")
63+
64+
65+func C (d,D) = valueOrErrorMessage(getString(this, d), D)
66+
67+
68+func E (d) = valueOrErrorMessage(getInteger(h, d), "Integer undefine or 0 in oracle")
69+
70+
71+func F (d) = valueOrElse(getInteger(this, d), 0)
72+
73+
74+func G (d) = valueOrElse(getBoolean(this, d), false)
75+
76+
77+func H (I) = (size(I) == 64)
78+
79+
80+func J (K) = ("user_status_" + K)
81+
82+
83+func L (K,M) = ((("art_date_" + M) + "_") + K)
84+
85+
86+func N (K,M) = ((("art_name_" + M) + "_") + K)
87+
88+
89+func O (K,M) = ((("art_desc_" + M) + "_") + K)
90+
91+
92+func P (K,M) = ((("art_display_cid_" + M) + "_") + K)
93+
94+
95+func Q (K,M) = ((("art_preview_cid_" + M) + "_") + K)
96+
97+
98+func R (K,M) = ((("art_maxmint_" + M) + "_") + K)
99+
100+
101+func S (M) = ("art_highestBidBidId_" + M)
102+
103+
104+func T (U) = ("bid_" + U)
105+
106+
107+func V (K,M) = ((("art_duration_" + M) + "_") + K)
108+
109+
110+func W (K,M) = ((("art_endheight_" + M) + "_") + K)
111+
112+
113+func X (K,M) = ((("art_auctiontype_" + M) + "_") + K)
114+
115+
116+func Y (K,M) = ((("art_issued_" + M) + "_") + K)
117+
118+
119+func Z (aa) = ("nft_issued_" + aa)
120+
121+
122+func ab (aa) = ("nft_artId_" + aa)
123+
124+
125+func ac (K,M) = ((("art_onsale_" + M) + "_") + K)
126+
127+
128+func ad (K,M) = ((("art_entitlement_" + M) + "_") + K)
129+
130+
131+func ae (K,M) = ((("art_tags_" + M) + "_") + K)
132+
133+
134+func af (K,M) = ((("art_type_" + M) + "_") + K)
135+
136+
137+func ag (K,M) = ((("art_price_" + M) + "_") + K)
138+
139+
140+func ah (K,M) = ((("art_assetAccepted_" + M) + "_") + K)
141+
142+
143+func ai (K,aj) = ((("get_hashbytxidaddr_" + aj) + "_") + K)
144+
145+
146+func ak (al) = ("get_owner_by_hash_" + al)
147+
148+
149+func am (al,K) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((al + K)))))
150+
151+
152+func an (K,M) = ((("collection_" + M) + "_") + K)
153+
154+
155+let ao = E(("min_" + toBase58String(o)))
156+
157+let ap = E(("fee_" + toBase58String(p)))
158+
159+func aq (U) = valueOrElse(F(T(U)), 0)
160+
161+
162+func ar (M) = {
163+ let U = B(S(M))
164+ if ((U == ""))
165+ then 0
166+ else aq(U)
167+ }
168+
169+
170+func as (at,au) = if ((size(at) == 0))
149171 then throw("Field cannot be is empty")
150- else if ((size(al) > am))
151- then throw((al + " is too long"))
172+ else if ((size(at) > au))
173+ then throw((at + " is too long"))
152174 else true
153175
154176
155-func an (F) = {
156- let ao = valueOrElse(getString(e, E(F)), p)
157- if (if ((ao == p))
158- then true
159- else (ao == q))
177+func av (K) = {
178+ let aw = valueOrElse(getString(n, J(K)), w)
179+ if ((aw == w))
160180 then "Register this account first with 'Account' tab"
161- else if ((ao == n))
181+ else if ((aw == u))
162182 then "Account suspended"
163- else if ((ao == o))
183+ else if ((aw == v))
164184 then "Account removed"
165185 else ""
166186 }
167187
168188
169-func ap (F,aq,ar,as,at) = {
170- let au = an(F)
171- if ((au != ""))
172- then throw(au)
173- else if ((size(aq) == 0))
189+func ax (K,ay,az,aA,aB) = {
190+ let aC = av(K)
191+ if ((aC != ""))
192+ then throw(aC)
193+ else if ((size(ay) == 0))
174194 then throw("Display CID cannot be empty")
175- else if ((size(aq) != 46))
195+ else if ((size(ay) != 46))
176196 then throw("This doesn't seem a valid CID!")
177- else if (!(ak(ar, 100)))
197+ else if (!(as(az, 100)))
178198 then throw("100 Char. max name")
179- else if (!(ak(as, 1000)))
199+ else if (!(as(aA, 1000)))
180200 then throw("1000 Char. max description")
181- else if ((size(split(at, ",")) > 5))
201+ else if ((size(split(aB, ",")) > 5))
182202 then throw("5 tags max.")
183203 else ""
184204 }
185205
186206
187-func av (aw) = if ((size(aw.payments) == 0))
207+func aD (aE) = if ((size(aE.payments) == 0))
188208 then throw("No payment attached")
189209 else {
190- let ax = value(aw.payments[0])
191- let ay = value(ax.amount)
192- $Tuple2(ax, ay)
210+ let aF = value(aE.payments[0])
211+ let aG = value(aF.amount)
212+ $Tuple2(aF, aG)
193213 }
194214
195215
196-func az (aw) = {
197- let aA = av(aw)
198- let ax = aA._1
199- let ay = aA._2
200- let aB = if (if (isDefined(ax.assetId))
201- then (ax.assetId == g)
216+func aH (aE) = {
217+ let aI = aD(aE)
218+ let aF = aI._1
219+ let aG = aI._2
220+ let aJ = if (if (isDefined(aF.assetId))
221+ then (aF.assetId == p)
202222 else false)
203- then ax.assetId
204- else throw("Only USDN token accepted as transaction fee")
205- if ((ay != ah))
206- then throw(((("Payment amount should be " + toString(ah)) + " but is: ") + toString(ay)))
207- else $Tuple2(ay, aB)
223+ then aF.assetId
224+ else throw((("Only " + toBase58String(p)) + " token accepted as transaction fee"))
225+ if ((aG != ap))
226+ then throw(((("Payment amount should be " + toString(ap)) + " but is: ") + toString(aG)))
227+ else $Tuple2(aG, aJ)
208228 }
209229
210230
211-func aC (aD,H) = {
212- let aE = getInteger(this, T(aD, H))
213- if ($isInstanceOf(aE, "Int"))
231+func aK (aL,M) = {
232+ let e = getInteger(this, Y(aL, M))
233+ if ($isInstanceOf(e, "Int"))
214234 then {
215- let aF = aE
216- if ((aF != 0))
235+ let f = e
236+ if ((f != 0))
217237 then true
218238 else false
219239 }
221241 }
222242
223243
224-func aG (aw,aH,aI) = {
225- let aJ = av(aw)
226- let ax = aJ._1
227- let ay = aJ._2
228- let aB = if (!(isDefined(ax.assetId)))
244+func aM (aE,aN,aO) = {
245+ let aP = aD(aE)
246+ let aF = aP._1
247+ let aG = aP._2
248+ let aJ = if (!(isDefined(aF.assetId)))
229249 then throw("Wrong asset id")
230- else if (if ((size(aH) > 0))
231- then (toBase58String(value(ax.assetId)) == aH)
250+ else if (if ((size(aN) > 0))
251+ then (toBase58String(value(aF.assetId)) == aN)
232252 else false)
233- then ax.assetId
253+ then aF.assetId
234254 else throw("Wrong asset id")
235- if (if ((aB == unit))
236- then (aH != "")
255+ if (if ((aJ == unit))
256+ then (aN != "")
237257 else false)
238258 then throw("Wrong asset id")
239- else if ((aI != ay))
240- then throw(((("Payment don't match " + toString(aI)) + " ") + toString(ay)))
241- else $Tuple2(ay, aB)
259+ else if ((aO != aG))
260+ then throw(((("Payment don't match " + toString(aO)) + " ") + toString(aG)))
261+ else $Tuple2(aG, aJ)
242262 }
243263
244264
245-func aK (aB) = if ((aB != toBase58String(g)))
265+func aQ (aJ) = if ((aJ != toBase58String(o)))
246266 then throw("Only USDN accepted")
247267 else true
248268
249269
250-func aL (aB,aM) = {
251- let aN = if (a)
252- then 1
253- else (ah * 2)
254- if (if (if ((aB == toBase58String(g)))
255- then (aN > aM)
256- else false)
257- then (aM != 0)
258- else false)
259- then throw(("Wrong minimum sell price " + toString(aN)))
270+func aR (aJ,aS) = {
271+ let aT = ao
272+ if (if ((aT > aS))
273+ then true
274+ else (aJ != toBase58String(o)))
275+ then throw(("Wrong minimum sell price " + toString(aT)))
260276 else true
261277 }
262278
263279
264-func aO (aB) = if ((aB == "WAVES"))
280+func aU (aJ) = if ((aJ == "WAVES"))
265281 then throw("Only USDN is accepted!")
266- else fromBase58String(aB)
282+ else fromBase58String(aJ)
267283
268284
269-func aP (aQ) = {
270- let aR = v((aQ + "_OPEN"))
271- if ((aR == ""))
285+func aV (aW) = {
286+ let aX = B((aW + "_OPEN"))
287+ if ((aX == ""))
272288 then throw("Bid not found")
273289 else {
274- let aS = split(aR, "_")
275- let aT = parseIntValue(aS[1])
276- let aU = aO(aS[0])
277- if ((0 >= aT))
290+ let aY = split(aX, "_")
291+ let aZ = parseIntValue(aY[1])
292+ let ba = aU(aY[0])
293+ if ((0 >= aZ))
278294 then throw("Wrong amount")
279- else $Tuple2(aT, aU)
295+ else $Tuple2(aZ, ba)
280296 }
281297 }
282298
283299
284-func aV (aw) = if (!(l))
285- then throw(m)
286- else $Tuple3(toBase58String(aw.transactionId), toBase58String(aw.caller.bytes), lastBlock.timestamp)
300+func bb (aE) = if (!(s))
301+ then throw(t)
302+ else $Tuple3(toBase58String(aE.transactionId), toBase58String(aE.caller.bytes), lastBlock.timestamp)
287303
288304
289-func aW (aw,aX,aY,P) = if (if (if ((toBase58String(aw.caller.bytes) == aX))
290- then (aY != "")
291- else false)
292- then (P != "")
293- else false)
294- then true
295- else false
296-
297-
298-func aZ (aw,aX,H,ba) = {
299- let bb = (toBase58String(aw.caller.bytes) == aX)
300- let bc = z("total_nft_issued")
301- let bd = v(I(aX, H))
302- if ((bd == ""))
305+func bc (aE,bd,M,be) = {
306+ let bf = (toBase58String(aE.caller.bytes) == bd)
307+ let bg = F("total_nft_issued")
308+ let bh = B(N(bd, M))
309+ if ((bh == ""))
303310 then throw("Art doesn't exist")
304311 else {
305- let be = B(W(aX, H))
306- let bf = z(T(aX, H))
307- let aI = valueOrElse(z(aa(aX, H)), (ah * 2))
308- let aH = if (bb)
309- then toBase58String(g)
310- else v(ab(aX, H))
311- let bg = z(L(aX, H))
312- if (if (if (!(ba))
313- then !(bb)
312+ let bi = G(ac(bd, M))
313+ let bj = F(Y(bd, M))
314+ let aO = valueOrElse(F(ag(bd, M)), ao)
315+ let aN = if (bf)
316+ then toBase58String(o)
317+ else B(ah(bd, M))
318+ let bk = F(R(bd, M))
319+ if (if (if (!(be))
320+ then !(bf)
314321 else false)
315- then if (if ((0 >= aI))
322+ then if (if ((0 >= aO))
316323 then true
317- else !(be))
324+ else !(bi))
318325 then true
319- else (0 >= bg)
326+ else (0 >= bk)
320327 else false)
321328 then throw("Art not for sale")
322- else if (if (if (!(ba))
323- then bb
329+ else if (if (if (!(be))
330+ then bf
324331 else false)
325- then (0 >= bg)
332+ then (0 >= bk)
326333 else false)
327334 then throw("Max issuable not set")
328- else $Tuple7(bc, bd, bf, aI, aH, bg, be)
335+ else $Tuple7(bg, bh, bj, aO, aN, bk, bi)
329336 }
330337 }
331338
332339
333-func bh (aw,F,aX,H,aY,P,aH,aI,ba) = {
334- let au = an(aX)
335- if (if (ba)
336- then (au != "")
340+func bl (aE,K,bd,M,bm,U,aN,aO,be) = {
341+ let aC = av(bd)
342+ if (if (be)
343+ then (aC != "")
337344 else false)
338- then throw(au)
345+ then throw(aC)
339346 else {
340- let aQ = ((((((("bid_" + H) + "_") + aX) + "_") + aY) + "_") + P)
341- let bi = if (ba)
342- then aP(aQ)
343- else aG(aw, aH, aI)
344- let ay = bi._1
345- let aB = bi._2
346- $Tuple3(aQ, ay, aB)
347+ let aW = ((((((("bid_" + M) + "_") + bd) + "_") + bm) + "_") + U)
348+ let bn = if (be)
349+ then aV(aW)
350+ else aM(aE, aN, aO)
351+ let aG = bn._1
352+ let aJ = bn._2
353+ $Tuple3(aW, aG, aJ)
347354 }
348355 }
349356
350357
351-func bj (aX,aB,ay,bf,bg) = {
352- let bk = A(aX)
353- let bl = if ((bk > height))
354- then 0
355- else if ((aB == g))
356- then i
357- else throw("Only USDN is accepted!")
358- let bm = fraction(ay, bl, 1000)
359- let bn = (ay - bm)
360- if ((bf == bg))
361- then throw("Art sold out")
362- else {
363- let bo = (bf + 1)
364- $Tuple3(bm, bn, bo)
365- }
366- }
367-
368-
369-func bp (aX,H,bd,bo,bg,bc,F,aY,P,aw,be) = {
370- let bq = ((((((((("Creator: " + aX) + ",ArtID: ") + H) + ",Artwork name: ") + bd) + ",Issue: ") + toString(bo)) + "/") + toString(bg))
371- let br = if (if ((bo == bg))
358+func bo (bd,M,bh,bp,bk,bg,K,bm,U,aE,bi) = {
359+ let bq = ((((((((("Creator: " + bd) + ",ArtID: ") + M) + ",Artwork name: ") + bh) + ",Issue: ") + toString(bp)) + "/") + toString(bk))
360+ let br = if (if ((bp == bk))
372361 then true
373- else !(be))
362+ else !(bi))
374363 then false
375364 else true
376- let bs = if ((aY != ""))
377- then addressFromStringValue(aY)
378- else aw.caller
365+ let bs = if ((bm != ""))
366+ then addressFromStringValue(bm)
367+ else aE.caller
379368 $Tuple3(br, bs, bq)
380369 }
381370
382371
383-func bt (bu) = if ((4 > bu))
384- then "SSR"
385- else if ((11 > bu))
386- then "SR"
387- else if ((101 > bu))
388- then "R"
389- else "N"
390-
391-
392-func bv (aB,aQ,bw) = {
393- let bx = if (!(isDefined(aB)))
372+func bt (aJ,aW,bu) = {
373+ let bv = if (!(isDefined(aJ)))
394374 then throw("Only USDN is accepted")
395- else toBase58String(value(aB))
396- let aR = v((aQ + "_OPEN"))
397- let by = DeleteEntry((aQ + "_OPEN"))
398- let bz = StringEntry((aQ + "_CLOSED"), ((aR + "_") + toString(bw)))
399- $Tuple3(bx, by, bz)
375+ else toBase58String(value(aJ))
376+ let aX = B((aW + "_OPEN"))
377+ let bw = DeleteEntry((aW + "_OPEN"))
378+ let bx = StringEntry((aW + "_CLOSED"), ((aX + "_") + toString(bu)))
379+ $Tuple3(bv, bw, bx)
400380 }
401381
402382
403-func bA (aw,H,aX,P,aY,ba) = {
404- let bB = aV(aw)
405- let bC = bB._1
406- let F = bB._2
407- let bw = bB._3
408- let bD = aZ(aw, aX, H, ba)
409- let bc = bD._1
410- let bd = bD._2
411- let bf = bD._3
412- let aI = bD._4
413- let aH = bD._5
414- let bg = bD._6
415- let be = bD._7
416- let aR = bh(aw, F, aX, H, aY, P, aH, aI, ba)
417- let aQ = aR._1
418- let ay = aR._2
419- let aB = aR._3
420- let bE = bj(aX, value(aB), ay, bf, bg)
421- let bm = bE._1
422- let bn = bE._2
423- let bo = bE._3
424- let bF = bp(aX, H, bd, bo, bg, bc, F, aY, P, aw, be)
425- let br = bF._1
426- let bs = bF._2
427- let bq = bF._3
428- let bG = invoke(this, "mintNft", [bc, bq, toString(bs)], nil)
429- if ((bG == bG))
383+func by (aE,M,bd,U,bm,be) = {
384+ let bz = bb(aE)
385+ let bA = bz._1
386+ let K = bz._2
387+ let bu = bz._3
388+ let bB = bc(aE, bd, M, be)
389+ let bg = bB._1
390+ let bh = bB._2
391+ let bj = bB._3
392+ let aO = bB._4
393+ let aN = bB._5
394+ let bk = bB._6
395+ let bi = bB._7
396+ let aX = bl(aE, K, bd, M, bm, U, aN, aO, be)
397+ let aW = aX._1
398+ let aG = aX._2
399+ let aJ = aX._3
400+ let bp = if ((bj == bk))
401+ then throw("Max items sold")
402+ else (bj + 1)
403+ let bC = bo(bd, M, bh, bp, bk, bg, K, bm, U, aE, bi)
404+ let br = bC._1
405+ let bs = bC._2
406+ let bq = bC._3
407+ let bD = invoke(this, "mintNft", [bg, bq, toString(bs)], nil)
408+ if ((bD == bD))
430409 then {
431- let bH = {
432- let aE = bG
433- if ($isInstanceOf(aE, "String"))
410+ let bE = {
411+ let e = bD
412+ if ($isInstanceOf(e, "String"))
434413 then {
435- let bI = aE
436- bI
414+ let bF = e
415+ bF
437416 }
438417 else throw("Incorrect invoke result")
439418 }
440- let bJ = bv(aB, aQ, bw)
441- let bx = bJ._1
442- let by = bJ._2
443- let bz = bJ._3
444- let bK = ((((((("art_sold_" + toString(bo)) + "_of_") + toString(bg)) + "_") + H) + "_") + aX)
445- let bL = bt(bo)
446- let bM = if (!(ba))
447- then ((((((((((F + "_") + toString(bw)) + "_") + bC) + "_") + toString(aI)) + "_") + aH) + "_") + bH)
448- else ((((((((((toString(bs) + "_") + toString(bw)) + "_") + bC) + "_") + toString(ay)) + "_") + bx) + "_") + bH)
449- let bN = StringEntry(bK, bM)
450- let bO = [IntegerEntry(T(aX, H), bo), StringEntry(("nft_" + bH), bK), StringEntry(("nft_rarity_" + bH), bL), IntegerEntry("total_nft_issued", (bc + 1)), BooleanEntry(W(aX, H), br), ScriptTransfer(Address(fromBase58String(aX)), bn, aB), ScriptTransfer(Address(fromBase58String(c)), bm, aB), StringEntry(U(bH), aX)]
451- let bP = invoke(addressFromStringValue(d), "createCert", [toString(bs), bH, aX], nil)
452- if ((bP == bP))
453- then if (ba)
454- then (((bO :+ bN) :+ bz) :+ by)
455- else bN :: bO
419+ let bG = bt(aJ, aW, bu)
420+ let bv = bG._1
421+ let bw = bG._2
422+ let bx = bG._3
423+ let bH = ((((((("art_sold_" + toString(bp)) + "_of_") + toString(bk)) + "_") + M) + "_") + bd)
424+ let bI = if (!(be))
425+ then ((((((((((K + "_") + toString(bu)) + "_") + bA) + "_") + toString(aO)) + "_") + aN) + "_") + bE)
426+ else ((((((((((toString(bs) + "_") + toString(bu)) + "_") + bA) + "_") + toString(aG)) + "_") + bv) + "_") + bE)
427+ let bJ = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "payFee", [M, bd], [AttachedPayment(aJ, aG)])
428+ if ((bJ == bJ))
429+ then {
430+ let bK = StringEntry(bH, bI)
431+ let bL = [IntegerEntry(Y(bd, M), bp), StringEntry(("nft_" + bE), bH), IntegerEntry("total_nft_issued", (bg + 1)), BooleanEntry(ac(bd, M), br), StringEntry(Z(bE), bd), StringEntry(ab(bE), M)]
432+ let bM = invoke(addressFromStringValue(l), "createCert", [toString(bs), bE, bd], nil)
433+ if ((bM == bM))
434+ then if (be)
435+ then (((bL :+ bK) :+ bx) :+ bw)
436+ else bK :: bL
437+ else throw("Strict value is not equal to itself.")
438+ }
456439 else throw("Strict value is not equal to itself.")
457440 }
458441 else throw("Strict value is not equal to itself.")
459442 }
460443
461444
462-func bQ (aw,H,aX) = {
463- let bR = aV(aw)
464- let bC = bR._1
465- let F = bR._2
466- let bw = bR._3
467- let bS = av(aw)
468- let ax = bS._1
469- let ay = bS._2
470- let aB = if (!(isDefined(ax.assetId)))
445+func bN (aE,M,bd) = {
446+ let bO = bb(aE)
447+ let bA = bO._1
448+ let K = bO._2
449+ let bu = bO._3
450+ let bP = aD(aE)
451+ let aF = bP._1
452+ let aG = bP._2
453+ let aJ = if (!(isDefined(aF.assetId)))
471454 then throw("Only USDN is accepted!")
472- else toBase58String(value(ax.assetId))
473- let bT = z(("current_bidamount_" + H))
474- if (!(aK(aB)))
455+ else toBase58String(value(aF.assetId))
456+ let bQ = F(("current_bidamount_" + M))
457+ if (!(aQ(aJ)))
475458 then throw("asset not accepted")
476- else if (!(aL(aB, ay)))
477- then throw("Wrong min sell")
478- else {
479- let bf = z(T(aX, H))
480- let bg = z(L(aX, H))
481- if ((0 >= bg))
482- then throw("No max edition set for this artwork")
483- else if ((bf >= bg))
484- then throw("Sold out, you cannot bid")
485- else [StringEntry((((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + bC) + "_OPEN"), ((((aB + "_") + toString(ay)) + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT + 1))]
486- }
459+ else {
460+ let bj = F(Y(bd, M))
461+ let bk = F(R(bd, M))
462+ if ((0 >= bk))
463+ then throw("No max edition set for this artwork")
464+ else if ((bj >= bk))
465+ then throw("Sold out, you cannot bid")
466+ else [StringEntry((((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + bA) + "_OPEN"), ((((aJ + "_") + toString(aG)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ + 1))]
467+ }
487468 }
488469
489470
490-func bU (aw,H,aX) = {
491- let bV = z(R(aX, H))
492- let bW = aj(H)
493- if ((height > bV))
471+func bR (aE,M,bd) = {
472+ let bS = F(W(bd, M))
473+ let bT = ar(M)
474+ if ((height > bS))
494475 then throw("This auction is finished already!")
495476 else {
496- let bX = aV(aw)
497- let bC = bX._1
498- let F = bX._2
499- let bw = bX._3
500- let bY = av(aw)
501- let ax = bY._1
502- let ay = bY._2
503- if ((bW >= ay))
504- then throw(("Please place a bid higher than: " + toString(bW)))
477+ let bU = bb(aE)
478+ let bA = bU._1
479+ let K = bU._2
480+ let bu = bU._3
481+ let bV = aD(aE)
482+ let aF = bV._1
483+ let aG = bV._2
484+ if ((bT >= aG))
485+ then throw(("Please place a bid higher than: " + toString(bT)))
505486 else {
506- let aB = if (!(isDefined(ax.assetId)))
487+ let aJ = if (!(isDefined(aF.assetId)))
507488 then throw("Only USDN is accepted!")
508- else toBase58String(value(ax.assetId))
509- let bT = z(("current_bidamount_" + H))
510- if (!(aK(aB)))
489+ else toBase58String(value(aF.assetId))
490+ let bQ = F(("current_bidamount_" + M))
491+ let bW = valueOrElse(F(ag(bd, M)), ao)
492+ if (!(aQ(aJ)))
511493 then throw("asset not accepted")
512- else if (!(aL(aB, ay)))
513- then throw("Wrong min sell")
494+ else if ((bW > aG))
495+ then throw("Bid is below min price!")
514496 else {
515- let bf = z(T(aX, H))
516- let bg = z(L(aX, H))
517- if ((0 >= bg))
497+ let bj = F(Y(bd, M))
498+ let bk = F(R(bd, M))
499+ if ((0 >= bk))
518500 then throw("No max edition set for this artwork")
519- else if ((bf >= bg))
501+ else if ((bj >= bk))
520502 then throw("Sold out, you cannot bid")
521- else [StringEntry((((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + bC) + "_OPEN"), ((((aB + "_") + toString(ay)) + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT + 1)), StringEntry(N(H), toBase58String(aw.transactionId)), IntegerEntry(O(toBase58String(aw.transactionId)), ay)]
503+ else [StringEntry((((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + bA) + "_OPEN"), ((((aJ + "_") + toString(aG)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ + 1)), StringEntry(S(M), toBase58String(aE.transactionId)), IntegerEntry(T(toBase58String(aE.transactionId)), aG)]
522504 }
523505 }
524506 }
525507 }
526508
527509
528-func bZ (aw,H,aX,P,aY) = {
529- let F = toBase58String(aw.caller.bytes)
530- if ((F != aX))
510+func bX (aE,M,bd,U,bm) = {
511+ let K = toBase58String(aE.caller.bytes)
512+ if ((K != bd))
531513 then throw("You cannot do this action")
532- else bA(aw, H, aX, P, aY, true)
514+ else by(aE, M, bd, U, bm, true)
533515 }
534516
535517
536-func ca (H,aX) = {
537- let bf = z(T(aX, H))
538- let bg = z(L(aX, H))
539- let cb = z(R(aX, H))
540- let cc = z(Q(aX, H))
541- let bV = (cc + height)
542- if ((height > cb))
543- then if ((bf == bg))
518+func bY (M,bd) = {
519+ let bj = F(Y(bd, M))
520+ let bk = F(R(bd, M))
521+ let bZ = F(W(bd, M))
522+ let ca = F(V(bd, M))
523+ let bS = (ca + height)
524+ if ((height > bZ))
525+ then if ((bj == bk))
544526 then throw("Can't restart auction, max amount sold")
545- else [IntegerEntry(R(aX, H), bV), DeleteEntry(N(H))]
527+ else [IntegerEntry(W(bd, M), bS), DeleteEntry(S(M))]
546528 else throw("Previous auction isn't completed yet")
547529 }
548530
549531
550-func cd (aw,H,aX,P,aY) = {
551- let bV = z(R(aX, H))
552- let ce = v(N(H))
553- if ((height > bV))
554- then if ((P == ce))
532+func cb (aE,M,bd,U,bm) = {
533+ let bS = F(W(bd, M))
534+ let cc = B(S(M))
535+ if ((height > bS))
536+ then if ((U == cc))
555537 then {
556- let cf = bA(aw, H, aX, P, aY, true)
557- let cg = ca(H, aX)
558- (cg ++ cf)
538+ let cd = by(aE, M, bd, U, bm, true)
539+ let ce = bY(M, bd)
540+ (ce ++ cd)
559541 }
560542 else throw("This is not the winning bid!")
561543 else throw("This auction is not yet finished!")
562544 }
563545
564546
565-func ch (aw,H,aX,P) = {
566- let ci = aV(aw)
567- let bC = ci._1
568- let F = ci._2
569- let bw = ci._3
570- let bT = z(("current_bidamount_" + H))
571- let aQ = ((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + P)
572- let aR = w((aQ + "_OPEN"), "Bid not found")
573- let aS = split(aR, "_")
574- let aB = aO(aS[0])
575- let cj = "CANCELED"
576-[DeleteEntry((aQ + "_OPEN")), StringEntry(((aQ + "_") + cj), ((aR + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT - 1)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(aS[1]), aB)]
547+func cf (aE,M,bd,U) = {
548+ let cg = bb(aE)
549+ let bA = cg._1
550+ let K = cg._2
551+ let bu = cg._3
552+ let bQ = F(("current_bidamount_" + M))
553+ let aW = ((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + U)
554+ let aX = C((aW + "_OPEN"), "Bid not found")
555+ let aY = split(aX, "_")
556+ let aJ = aU(aY[0])
557+ let ch = "CANCELED"
558+[DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ch), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ - 1)), ScriptTransfer(Address(fromBase58String(K)), parseIntValue(aY[1]), aJ)]
577559 }
578560
579561
580-func ck (aw,H,aX,P) = {
581- let ci = aV(aw)
582- let bC = ci._1
583- let F = ci._2
584- let bw = ci._3
585- let bT = z(("current_bidamount_" + H))
586- let aQ = ((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + P)
587- let aR = w((aQ + "_OPEN"), "Bid not found")
588- let aS = split(aR, "_")
589- let aB = aO(aS[0])
590- let cj = "CANCELED"
591- let aT = parseIntValue(aS[1])
592- let ce = v(N(H))
593- if ((P == ce))
562+func ci (aE,M,bd,U) = {
563+ let cg = bb(aE)
564+ let bA = cg._1
565+ let K = cg._2
566+ let bu = cg._3
567+ let bQ = F(("current_bidamount_" + M))
568+ let aW = ((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + U)
569+ let aX = C((aW + "_OPEN"), "Bid not found")
570+ let aY = split(aX, "_")
571+ let aJ = aU(aY[0])
572+ let ch = "CANCELED"
573+ let aZ = parseIntValue(aY[1])
574+ let cc = B(S(M))
575+ if ((U == cc))
594576 then throw("You can't cancel the highest bid!")
595- else [DeleteEntry((aQ + "_OPEN")), StringEntry(((aQ + "_") + cj), ((aR + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT - 1)), ScriptTransfer(Address(fromBase58String(F)), aT, aB)]
577+ else [DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ch), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ - 1)), ScriptTransfer(Address(fromBase58String(K)), aZ, aJ)]
596578 }
597579
598580
599-@Callable(aw)
600-func mintNft (bc,bq,bs) = if ((aw.caller == this))
581+@Callable(aE)
582+func initDapp (cj) = if ((aE.caller != this))
583+ then throw("You cannot do this action")
584+ else if ((g != ""))
585+ then throw("oracle already set, you can't override!")
586+ else [StringEntry(b, cj)]
587+
588+
589+
590+@Callable(aE)
591+func restartAuctionManual (M) = if ((ar(M) != 0))
592+ then throw("Please accept the highest bid!")
593+ else bY(M, toBase58String(aE.caller.bytes))
594+
595+
596+
597+@Callable(aE)
598+func mintNft (bg,bq,bs) = if ((aE.caller == this))
601599 then {
602- let cl = Address(fromBase58String(bs))
603- let cm = Issue(("SCONEX_" + toString((bc + 1))), bq, 1, 0, false)
604- let bH = calculateAssetId(cm)
605- $Tuple2([cm, ScriptTransfer(cl, 1, bH)], toBase58String(bH))
600+ let ck = Address(fromBase58String(bs))
601+ let cl = Issue(("SCONEX_" + toString((bg + 1))), bq, 1, 0, false)
602+ let bE = calculateAssetId(cl)
603+ $Tuple2([cl, ScriptTransfer(ck, 1, bE)], toBase58String(bE))
606604 }
607605 else throw("Only the dApp can mint NFT's")
608606
609607
610608
611-@Callable(aw)
612-func addArtwork (af,ar,as,at,cn,aq,co) = {
613- let cp = aV(aw)
614- let H = cp._1
615- let F = cp._2
616- let bw = cp._3
617- let cq = ap(F, aq, ar, as, at)
618- if ((cq != ""))
619- then throw("Something went wrong!")
620- else {
621- let cr = az(aw)
622- let ay = cr._1
623- let aB = cr._2
624- if (!(isDefined(ay)))
625- then throw("Something went wrong")
609+@Callable(aE)
610+func addArtwork (al,az,aA,aB,cm,ay,cn,co,cp,cq) = {
611+ let cr = bb(aE)
612+ let M = cr._1
613+ let K = cr._2
614+ let bu = cr._3
615+ if (containsElement(q, cm))
616+ then {
617+ let cs = ax(K, ay, az, aA, aB)
618+ if ((cs != ""))
619+ then throw("Something went wrong!")
626620 else {
627- let cs = v(ag(af, F))
628- if ((cs != ""))
629- then throw("You already added it")
621+ let ct = aH(aE)
622+ let aG = ct._1
623+ let aJ = ct._2
624+ if (!(isDefined(aG)))
625+ then throw("Something went wrong")
630626 else {
631- let ct = v(ae(af))
632- if ((ct != ""))
633- then throw("This hash is already registered")
634- else [StringEntry(ae(af), F), StringEntry(ag(af, F), H), IntegerEntry(G(F, H), bw), StringEntry(I(F, H), ar), StringEntry(J(F, H), as), StringEntry(K(F, H), aq), StringEntry(Z(F, H), cn), StringEntry(Y(F, H), at), IntegerEntry(L(F, H), 0), IntegerEntry(T(F, H), 0), BooleanEntry(W(F, H), false), StringEntry(ac(F, H), af), StringEntry(X(F, H), co), ScriptTransfer(Address(fromBase58String(c)), ay, aB)]
627+ let cu = if (containsElement(r, cm))
628+ then [StringEntry(Q(K, M), co)]
629+ else nil
630+ let cv = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [cp, cq, K], nil)
631+ if ((cv == cv))
632+ then {
633+ let cw = {
634+ let e = cv
635+ if ($isInstanceOf(e, "String"))
636+ then {
637+ let bF = e
638+ bF
639+ }
640+ else throw("Incorrect invoke result")
641+ }
642+ let cx = B(am(al, K))
643+ if ((cx != ""))
644+ then throw("You already added it")
645+ else {
646+ let cy = B(ak(al))
647+ if ((cy != ""))
648+ then throw("This hash is already registered")
649+ else (cu ++ [StringEntry(ak(al), K), StringEntry(am(al, K), M), IntegerEntry(L(K, M), bu), StringEntry(N(K, M), az), StringEntry(O(K, M), aA), StringEntry(P(K, M), ay), StringEntry(af(K, M), cm), StringEntry(ae(K, M), aB), IntegerEntry(R(K, M), 0), IntegerEntry(Y(K, M), 0), BooleanEntry(ac(K, M), false), StringEntry(ai(K, M), al), StringEntry(ad(K, M), cn), ScriptTransfer(Address(fromBase58String(k)), aG, aJ)])
650+ }
651+ }
652+ else throw("Strict value is not equal to itself.")
635653 }
636654 }
637655 }
656+ else throw("Unknown type")
638657 }
639658
640659
641660
642-@Callable(aw)
643-func sellArtwork (H,aM,cu,aB,cv,cw,cc) = {
644- let cx = aV(aw)
645- let bC = cx._1
646- let F = cx._2
647- let bd = v(I(F, H))
648- if (!(containsElement([r, s], cv)))
649- then throw("We don't know this auction type")
650- else if ((bd == ""))
651- then throw("This art doesn't match your account")
652- else {
653- let bT = z(("current_bidamount_" + H))
654- if (!(aK(aB)))
655- then throw("Something went wrong!")
656- else if (!(aL(aB, aM)))
657- then throw("Something went wrong!")
658- else {
659- let au = an(F)
660- if ((au != ""))
661- then throw(au)
662- else {
663- let bf = z(T(F, H))
664- let bg = z(L(F, H))
665- if ((cu > 5000))
666- then throw("5000 editions max per artwork")
667- else if (if ((bf != 0))
668- then (bf == bg)
669- else false)
670- then throw("Max edition reached.")
671- else if (if ((bf > 0))
672- then (bg != cu)
673- else false)
674- then throw("Cannot change maximum issuable anymore")
675- else if (if ((bT > 0))
676- then (bg != cu)
677- else false)
678- then throw("Cannot change maximum issuable with active orders")
679- else {
680- let br = if (if ((aM > 0))
681- then (cu > 0)
661+@Callable(aE)
662+func sellArtwork (M,aS,cz,aJ,cA,ca,cB,cC,cD,cE,cF,cG) = {
663+ let bJ = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [M, k, "", "", 15, 0, 0], nil)
664+ if ((bJ == bJ))
665+ then {
666+ let cH = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "creatorSplitFee", [M, cB, cC, cD, cE, cF, cG], nil)
667+ if ((cH == cH))
668+ then {
669+ let cI = bb(aE)
670+ let bA = cI._1
671+ let K = cI._2
672+ let bh = B(N(K, M))
673+ if (!(containsElement([x, y, z], cA)))
674+ then throw("We don't know this auction type")
675+ else if ((bh == ""))
676+ then throw("This art doesn't match your account")
677+ else {
678+ let bQ = F(("current_bidamount_" + M))
679+ if (!(aQ(aJ)))
680+ then throw("Something went wrong!")
681+ else if (!(aR(aJ, aS)))
682+ then throw("Something went wrong!")
683+ else {
684+ let aC = av(K)
685+ if ((aC != ""))
686+ then throw(aC)
687+ else {
688+ let bj = F(Y(K, M))
689+ let bk = F(R(K, M))
690+ if ((cz > 10000))
691+ then throw("10000 editions max per artwork")
692+ else if (if ((bj != 0))
693+ then (bj == bk)
682694 else false)
683- then true
684- else false
685- let bV = (cc + height)
686-[BooleanEntry(W(F, H), br), IntegerEntry(aa(F, H), aM), IntegerEntry(L(F, H), cu), IntegerEntry(M(F, H), cw), IntegerEntry(Q(F, H), cc), IntegerEntry(R(F, H), bV), StringEntry(ab(F, H), aB), StringEntry(S(F, H), cv)]
687- }
688- }
689- }
690- }
695+ then throw("Max edition reached.")
696+ else if (if ((bj > 0))
697+ then (bk != cz)
698+ else false)
699+ then throw("Cannot change maximum issuable anymore")
700+ else if (if ((bQ > 0))
701+ then (bk != cz)
702+ else false)
703+ then throw("Cannot change maximum issuable with active orders")
704+ else {
705+ let br = if (if ((aS > 0))
706+ then (cz > 0)
707+ else false)
708+ then true
709+ else false
710+ let bS = (ca + height)
711+[BooleanEntry(ac(K, M), br), IntegerEntry(ag(K, M), aS), IntegerEntry(R(K, M), cz), IntegerEntry(V(K, M), ca), IntegerEntry(W(K, M), bS), StringEntry(ah(K, M), aJ), StringEntry(X(K, M), cA)]
712+ }
713+ }
714+ }
715+ }
716+ }
717+ else throw("Strict value is not equal to itself.")
718+ }
719+ else throw("Strict value is not equal to itself.")
691720 }
692721
693722
694723
695-@Callable(aw)
696-func buyArtwork (H,aX) = bA(aw, H, aX, "", "", false)
724+@Callable(aE)
725+func buyArtwork (M,bd) = {
726+ let cA = B(X(bd, M))
727+ if ((cA == z))
728+ then by(aE, M, bd, "", "", false)
729+ else throw("Direct buy only allowed when no auction type is set!")
730+ }
697731
698732
699733
700-@Callable(aw)
701-func deleteEntry (cy) = {
702- let F = toString(addressFromPublicKey(aw.callerPublicKey))
703- if (containsElement(h, F))
704- then [DeleteEntry(cy)]
734+@Callable(aE)
735+func updateTags (cJ,M,aB) = {
736+ let K = toString(addressFromPublicKey(aE.callerPublicKey))
737+ if (containsElement(i, K))
738+ then if ((size(split(aB, ",")) > 5))
739+ then throw("5 tags max.")
740+ else {
741+ let cK = C(ae(cJ, M), "No tags created with this key, so can't update!")
742+ if ((aB == cK))
743+ then throw("Tags are the same as old tags!")
744+ else [StringEntry(ae(cJ, M), aB)]
745+ }
705746 else throw("no")
706747 }
707748
708749
709750
710-@Callable(aw)
711-func setBid (H,aX) = {
712- let cv = v(S(aX, H))
713- if ((cv == r))
714- then bQ(aw, H, aX)
715- else if ((cv == s))
716- then bU(aw, H, aX)
717- else throw((("Unknown auction type :" + cv) + ", please contact the admins"))
751+@Callable(aE)
752+func deleteEntry (cL) = {
753+ let K = toString(addressFromPublicKey(aE.callerPublicKey))
754+ if (containsElement(i, K))
755+ then [DeleteEntry(cL)]
756+ else throw("no")
718757 }
719758
720759
721760
722-@Callable(aw)
723-func acceptBid (H,aX,P,aY) = {
724- let cv = v(S(aX, H))
725- if ((cv == r))
726- then bZ(aw, H, aX, P, aY)
727- else if ((cv == s))
728- then cd(aw, H, aX, P, aY)
729- else throw((("Unknown auction type :" + cv) + ", please contact the admins"))
761+@Callable(aE)
762+func setBid (M,bd) = {
763+ let cA = B(X(bd, M))
764+ if ((cA == x))
765+ then bN(aE, M, bd)
766+ else if ((cA == y))
767+ then bR(aE, M, bd)
768+ else throw((("Unknown auction type :" + cA) + ", please contact the admins"))
730769 }
731770
732771
733772
734-@Callable(aw)
735-func cancelBid (H,aX,P) = {
736- let cv = v(S(aX, H))
737- if ((cv == r))
738- then ch(aw, H, aX, P)
739- else ck(aw, H, aX, P)
773+@Callable(aE)
774+func acceptBid (M,bd,U,bm) = {
775+ let cA = B(X(bd, M))
776+ if ((cA == x))
777+ then bX(aE, M, bd, U, bm)
778+ else if ((cA == y))
779+ then cb(aE, M, bd, U, bm)
780+ else throw((("Unknown auction type :" + cA) + ", please contact the admins"))
781+ }
782+
783+
784+
785+@Callable(aE)
786+func cancelBid (M,bd,U) = {
787+ let cA = B(X(bd, M))
788+ if ((cA == x))
789+ then cf(aE, M, bd, U)
790+ else ci(aE, M, bd, U)
740791 }
741792
742793
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 5 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = false
55
6-let b = value(addressFromString("3MpZQjzGogmifcEKe8mDd6ribL7nxT9ACye"))
6+let b = "oracleKey"
77
8-let c = "3N65xLq8JcCeaEiR1TJQ7dBqXBvEy6E48Wz"
9-
10-let d = "3MxcXrNbMZKYaSrhcfeMm2hZnBeCu3yRWsw"
11-
12-let e = value(addressFromString("3N9cQgZFPHHVu8wqsn2DkQFehg3h8CNiooA"))
13-
14-let f = value(addressFromString("3N9xZYGpzMFDXvXuctmU6zV8qSzm2ZfF31f"))
15-
16-let g = base58'132maRL3uF35tc2bpRih9D6MYq5DR6H28zkop786dKyu'
17-
18-let h = [getString(b, "owner1"), getString(b, "owner2")]
19-
20-let i = 150
21-
22-let j = 30
23-
24-let k = 70
25-
26-let l = valueOrElse(getBoolean(e, "conf_dapp_is_running"), true)
27-
28-let m = valueOrElse(getString(e, "conf_maintenance_msg"), "")
29-
30-let n = "SUSPENDED"
31-
32-let o = "REMOVED"
33-
34-let p = "UNREGISTERED"
35-
36-let q = "ALLOWED"
37-
38-let r = "BIDTYPE"
39-
40-let s = "TRADITIONAL"
41-
42-func t (u) = valueOrElse(getString(e, u), "")
43-
44-
45-func v (u) = valueOrElse(getString(this, u), "")
46-
47-
48-func w (u,x) = valueOrErrorMessage(getString(this, u), x)
49-
50-
51-func y (u) = valueOrErrorMessage(getInteger(b, u), "Integer undefine or 0 in oracle")
52-
53-
54-func z (u) = valueOrElse(getInteger(this, u), 0)
55-
56-
57-func A (u) = valueOrElse(getInteger(f, u), 0)
58-
59-
60-func B (u) = valueOrElse(getBoolean(this, u), false)
61-
62-
63-func C (D) = (size(D) == 64)
64-
65-
66-func E (F) = ("user_status_" + F)
67-
68-
69-func G (F,H) = ((("art_date_" + H) + "_") + F)
70-
71-
72-func I (F,H) = ((("art_name_" + H) + "_") + F)
73-
74-
75-func J (F,H) = ((("art_desc_" + H) + "_") + F)
76-
77-
78-func K (F,H) = ((("art_display_cid_" + H) + "_") + F)
79-
80-
81-func L (F,H) = ((("art_maxmint_" + H) + "_") + F)
82-
83-
84-func M (F,H) = ((("art_minprice_" + H) + "_") + F)
85-
86-
87-func N (H) = ("art_highestBidBidId_" + H)
88-
89-
90-func O (P) = ("bid_" + P)
91-
92-
93-func Q (F,H) = ((("art_duration_" + H) + "_") + F)
94-
95-
96-func R (F,H) = ((("art_endheight_" + H) + "_") + F)
97-
98-
99-func S (F,H) = ((("art_auctiontype_" + H) + "_") + F)
100-
101-
102-func T (F,H) = ((("art_issued_" + H) + "_") + F)
103-
104-
105-func U (V) = ("nft_issued_" + V)
106-
107-
108-func W (F,H) = ((("art_onsale_" + H) + "_") + F)
109-
110-
111-func X (F,H) = ((("art_entitlement_" + H) + "_") + F)
112-
113-
114-func Y (F,H) = ((("art_tags_" + H) + "_") + F)
115-
116-
117-func Z (F,H) = ((("art_type_" + H) + "_") + F)
118-
119-
120-func aa (F,H) = ((("art_price_" + H) + "_") + F)
121-
122-
123-func ab (F,H) = ((("art_assetAccepted_" + H) + "_") + F)
124-
125-
126-func ac (F,ad) = ((("get_hashbytxidaddr_" + ad) + "_") + F)
127-
128-
129-func ae (af) = ("get_owner_by_hash_" + af)
130-
131-
132-func ag (af,F) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((af + F)))))
133-
134-
135-let ah = y(("certification_fee_" + toBase58String(g)))
136-
137-func ai (P) = valueOrElse(z(O(P)), 0)
138-
139-
140-func aj (H) = {
141- let P = v(N(H))
142- if ((P == ""))
143- then 0
144- else ai(P)
8+func c (d) = {
9+ let e = getString(this, d)
10+ if ($isInstanceOf(e, "String"))
11+ then {
12+ let f = e
13+ f
14+ }
15+ else ""
14516 }
14617
14718
148-func ak (al,am) = if ((size(al) == 0))
19+let g = c(b)
20+
21+let h = value(addressFromString(g))
22+
23+let i = [getString(h, "owner1"), getString(h, "owner2")]
24+
25+let j = valueOrErrorMessage(getString(h, "collectionsDapp"), "collectionDapp not found")
26+
27+let k = valueOrErrorMessage(getString(h, "feeReceiver"), "feeReceiver not found")
28+
29+let l = valueOrErrorMessage(getString(h, "certDapp"), "certDapp not found")
30+
31+let m = valueOrErrorMessage(getString(h, "feeDapp"), "feeDapp not found")
32+
33+let n = value(addressFromString(valueOrErrorMessage(getString(h, "userDapp"), "userdapp not found")))
34+
35+let o = fromBase58String(getStringValue(h, "USDNAssetId"))
36+
37+let p = fromBase58String(getStringValue(h, "SconexAssetId"))
38+
39+let q = ["IMAGE", "PDF", "VIDEO"]
40+
41+let r = ["PDF"]
42+
43+let s = valueOrElse(getBoolean(n, "conf_dapp_is_running"), true)
44+
45+let t = valueOrElse(getString(n, "conf_maintenance_msg"), "")
46+
47+let u = "SUSPENDED"
48+
49+let v = "REMOVED"
50+
51+let w = "UNREGISTERED"
52+
53+let x = "BIDTYPE"
54+
55+let y = "TRADITIONAL"
56+
57+let z = "DIRECT"
58+
59+func A (d) = valueOrElse(getString(n, d), "")
60+
61+
62+func B (d) = valueOrElse(getString(this, d), "")
63+
64+
65+func C (d,D) = valueOrErrorMessage(getString(this, d), D)
66+
67+
68+func E (d) = valueOrErrorMessage(getInteger(h, d), "Integer undefine or 0 in oracle")
69+
70+
71+func F (d) = valueOrElse(getInteger(this, d), 0)
72+
73+
74+func G (d) = valueOrElse(getBoolean(this, d), false)
75+
76+
77+func H (I) = (size(I) == 64)
78+
79+
80+func J (K) = ("user_status_" + K)
81+
82+
83+func L (K,M) = ((("art_date_" + M) + "_") + K)
84+
85+
86+func N (K,M) = ((("art_name_" + M) + "_") + K)
87+
88+
89+func O (K,M) = ((("art_desc_" + M) + "_") + K)
90+
91+
92+func P (K,M) = ((("art_display_cid_" + M) + "_") + K)
93+
94+
95+func Q (K,M) = ((("art_preview_cid_" + M) + "_") + K)
96+
97+
98+func R (K,M) = ((("art_maxmint_" + M) + "_") + K)
99+
100+
101+func S (M) = ("art_highestBidBidId_" + M)
102+
103+
104+func T (U) = ("bid_" + U)
105+
106+
107+func V (K,M) = ((("art_duration_" + M) + "_") + K)
108+
109+
110+func W (K,M) = ((("art_endheight_" + M) + "_") + K)
111+
112+
113+func X (K,M) = ((("art_auctiontype_" + M) + "_") + K)
114+
115+
116+func Y (K,M) = ((("art_issued_" + M) + "_") + K)
117+
118+
119+func Z (aa) = ("nft_issued_" + aa)
120+
121+
122+func ab (aa) = ("nft_artId_" + aa)
123+
124+
125+func ac (K,M) = ((("art_onsale_" + M) + "_") + K)
126+
127+
128+func ad (K,M) = ((("art_entitlement_" + M) + "_") + K)
129+
130+
131+func ae (K,M) = ((("art_tags_" + M) + "_") + K)
132+
133+
134+func af (K,M) = ((("art_type_" + M) + "_") + K)
135+
136+
137+func ag (K,M) = ((("art_price_" + M) + "_") + K)
138+
139+
140+func ah (K,M) = ((("art_assetAccepted_" + M) + "_") + K)
141+
142+
143+func ai (K,aj) = ((("get_hashbytxidaddr_" + aj) + "_") + K)
144+
145+
146+func ak (al) = ("get_owner_by_hash_" + al)
147+
148+
149+func am (al,K) = ("get_txid_by_hash_owner_" + toBase58String(sha256_16Kb(toBytes((al + K)))))
150+
151+
152+func an (K,M) = ((("collection_" + M) + "_") + K)
153+
154+
155+let ao = E(("min_" + toBase58String(o)))
156+
157+let ap = E(("fee_" + toBase58String(p)))
158+
159+func aq (U) = valueOrElse(F(T(U)), 0)
160+
161+
162+func ar (M) = {
163+ let U = B(S(M))
164+ if ((U == ""))
165+ then 0
166+ else aq(U)
167+ }
168+
169+
170+func as (at,au) = if ((size(at) == 0))
149171 then throw("Field cannot be is empty")
150- else if ((size(al) > am))
151- then throw((al + " is too long"))
172+ else if ((size(at) > au))
173+ then throw((at + " is too long"))
152174 else true
153175
154176
155-func an (F) = {
156- let ao = valueOrElse(getString(e, E(F)), p)
157- if (if ((ao == p))
158- then true
159- else (ao == q))
177+func av (K) = {
178+ let aw = valueOrElse(getString(n, J(K)), w)
179+ if ((aw == w))
160180 then "Register this account first with 'Account' tab"
161- else if ((ao == n))
181+ else if ((aw == u))
162182 then "Account suspended"
163- else if ((ao == o))
183+ else if ((aw == v))
164184 then "Account removed"
165185 else ""
166186 }
167187
168188
169-func ap (F,aq,ar,as,at) = {
170- let au = an(F)
171- if ((au != ""))
172- then throw(au)
173- else if ((size(aq) == 0))
189+func ax (K,ay,az,aA,aB) = {
190+ let aC = av(K)
191+ if ((aC != ""))
192+ then throw(aC)
193+ else if ((size(ay) == 0))
174194 then throw("Display CID cannot be empty")
175- else if ((size(aq) != 46))
195+ else if ((size(ay) != 46))
176196 then throw("This doesn't seem a valid CID!")
177- else if (!(ak(ar, 100)))
197+ else if (!(as(az, 100)))
178198 then throw("100 Char. max name")
179- else if (!(ak(as, 1000)))
199+ else if (!(as(aA, 1000)))
180200 then throw("1000 Char. max description")
181- else if ((size(split(at, ",")) > 5))
201+ else if ((size(split(aB, ",")) > 5))
182202 then throw("5 tags max.")
183203 else ""
184204 }
185205
186206
187-func av (aw) = if ((size(aw.payments) == 0))
207+func aD (aE) = if ((size(aE.payments) == 0))
188208 then throw("No payment attached")
189209 else {
190- let ax = value(aw.payments[0])
191- let ay = value(ax.amount)
192- $Tuple2(ax, ay)
210+ let aF = value(aE.payments[0])
211+ let aG = value(aF.amount)
212+ $Tuple2(aF, aG)
193213 }
194214
195215
196-func az (aw) = {
197- let aA = av(aw)
198- let ax = aA._1
199- let ay = aA._2
200- let aB = if (if (isDefined(ax.assetId))
201- then (ax.assetId == g)
216+func aH (aE) = {
217+ let aI = aD(aE)
218+ let aF = aI._1
219+ let aG = aI._2
220+ let aJ = if (if (isDefined(aF.assetId))
221+ then (aF.assetId == p)
202222 else false)
203- then ax.assetId
204- else throw("Only USDN token accepted as transaction fee")
205- if ((ay != ah))
206- then throw(((("Payment amount should be " + toString(ah)) + " but is: ") + toString(ay)))
207- else $Tuple2(ay, aB)
223+ then aF.assetId
224+ else throw((("Only " + toBase58String(p)) + " token accepted as transaction fee"))
225+ if ((aG != ap))
226+ then throw(((("Payment amount should be " + toString(ap)) + " but is: ") + toString(aG)))
227+ else $Tuple2(aG, aJ)
208228 }
209229
210230
211-func aC (aD,H) = {
212- let aE = getInteger(this, T(aD, H))
213- if ($isInstanceOf(aE, "Int"))
231+func aK (aL,M) = {
232+ let e = getInteger(this, Y(aL, M))
233+ if ($isInstanceOf(e, "Int"))
214234 then {
215- let aF = aE
216- if ((aF != 0))
235+ let f = e
236+ if ((f != 0))
217237 then true
218238 else false
219239 }
220240 else false
221241 }
222242
223243
224-func aG (aw,aH,aI) = {
225- let aJ = av(aw)
226- let ax = aJ._1
227- let ay = aJ._2
228- let aB = if (!(isDefined(ax.assetId)))
244+func aM (aE,aN,aO) = {
245+ let aP = aD(aE)
246+ let aF = aP._1
247+ let aG = aP._2
248+ let aJ = if (!(isDefined(aF.assetId)))
229249 then throw("Wrong asset id")
230- else if (if ((size(aH) > 0))
231- then (toBase58String(value(ax.assetId)) == aH)
250+ else if (if ((size(aN) > 0))
251+ then (toBase58String(value(aF.assetId)) == aN)
232252 else false)
233- then ax.assetId
253+ then aF.assetId
234254 else throw("Wrong asset id")
235- if (if ((aB == unit))
236- then (aH != "")
255+ if (if ((aJ == unit))
256+ then (aN != "")
237257 else false)
238258 then throw("Wrong asset id")
239- else if ((aI != ay))
240- then throw(((("Payment don't match " + toString(aI)) + " ") + toString(ay)))
241- else $Tuple2(ay, aB)
259+ else if ((aO != aG))
260+ then throw(((("Payment don't match " + toString(aO)) + " ") + toString(aG)))
261+ else $Tuple2(aG, aJ)
242262 }
243263
244264
245-func aK (aB) = if ((aB != toBase58String(g)))
265+func aQ (aJ) = if ((aJ != toBase58String(o)))
246266 then throw("Only USDN accepted")
247267 else true
248268
249269
250-func aL (aB,aM) = {
251- let aN = if (a)
252- then 1
253- else (ah * 2)
254- if (if (if ((aB == toBase58String(g)))
255- then (aN > aM)
256- else false)
257- then (aM != 0)
258- else false)
259- then throw(("Wrong minimum sell price " + toString(aN)))
270+func aR (aJ,aS) = {
271+ let aT = ao
272+ if (if ((aT > aS))
273+ then true
274+ else (aJ != toBase58String(o)))
275+ then throw(("Wrong minimum sell price " + toString(aT)))
260276 else true
261277 }
262278
263279
264-func aO (aB) = if ((aB == "WAVES"))
280+func aU (aJ) = if ((aJ == "WAVES"))
265281 then throw("Only USDN is accepted!")
266- else fromBase58String(aB)
282+ else fromBase58String(aJ)
267283
268284
269-func aP (aQ) = {
270- let aR = v((aQ + "_OPEN"))
271- if ((aR == ""))
285+func aV (aW) = {
286+ let aX = B((aW + "_OPEN"))
287+ if ((aX == ""))
272288 then throw("Bid not found")
273289 else {
274- let aS = split(aR, "_")
275- let aT = parseIntValue(aS[1])
276- let aU = aO(aS[0])
277- if ((0 >= aT))
290+ let aY = split(aX, "_")
291+ let aZ = parseIntValue(aY[1])
292+ let ba = aU(aY[0])
293+ if ((0 >= aZ))
278294 then throw("Wrong amount")
279- else $Tuple2(aT, aU)
295+ else $Tuple2(aZ, ba)
280296 }
281297 }
282298
283299
284-func aV (aw) = if (!(l))
285- then throw(m)
286- else $Tuple3(toBase58String(aw.transactionId), toBase58String(aw.caller.bytes), lastBlock.timestamp)
300+func bb (aE) = if (!(s))
301+ then throw(t)
302+ else $Tuple3(toBase58String(aE.transactionId), toBase58String(aE.caller.bytes), lastBlock.timestamp)
287303
288304
289-func aW (aw,aX,aY,P) = if (if (if ((toBase58String(aw.caller.bytes) == aX))
290- then (aY != "")
291- else false)
292- then (P != "")
293- else false)
294- then true
295- else false
296-
297-
298-func aZ (aw,aX,H,ba) = {
299- let bb = (toBase58String(aw.caller.bytes) == aX)
300- let bc = z("total_nft_issued")
301- let bd = v(I(aX, H))
302- if ((bd == ""))
305+func bc (aE,bd,M,be) = {
306+ let bf = (toBase58String(aE.caller.bytes) == bd)
307+ let bg = F("total_nft_issued")
308+ let bh = B(N(bd, M))
309+ if ((bh == ""))
303310 then throw("Art doesn't exist")
304311 else {
305- let be = B(W(aX, H))
306- let bf = z(T(aX, H))
307- let aI = valueOrElse(z(aa(aX, H)), (ah * 2))
308- let aH = if (bb)
309- then toBase58String(g)
310- else v(ab(aX, H))
311- let bg = z(L(aX, H))
312- if (if (if (!(ba))
313- then !(bb)
312+ let bi = G(ac(bd, M))
313+ let bj = F(Y(bd, M))
314+ let aO = valueOrElse(F(ag(bd, M)), ao)
315+ let aN = if (bf)
316+ then toBase58String(o)
317+ else B(ah(bd, M))
318+ let bk = F(R(bd, M))
319+ if (if (if (!(be))
320+ then !(bf)
314321 else false)
315- then if (if ((0 >= aI))
322+ then if (if ((0 >= aO))
316323 then true
317- else !(be))
324+ else !(bi))
318325 then true
319- else (0 >= bg)
326+ else (0 >= bk)
320327 else false)
321328 then throw("Art not for sale")
322- else if (if (if (!(ba))
323- then bb
329+ else if (if (if (!(be))
330+ then bf
324331 else false)
325- then (0 >= bg)
332+ then (0 >= bk)
326333 else false)
327334 then throw("Max issuable not set")
328- else $Tuple7(bc, bd, bf, aI, aH, bg, be)
335+ else $Tuple7(bg, bh, bj, aO, aN, bk, bi)
329336 }
330337 }
331338
332339
333-func bh (aw,F,aX,H,aY,P,aH,aI,ba) = {
334- let au = an(aX)
335- if (if (ba)
336- then (au != "")
340+func bl (aE,K,bd,M,bm,U,aN,aO,be) = {
341+ let aC = av(bd)
342+ if (if (be)
343+ then (aC != "")
337344 else false)
338- then throw(au)
345+ then throw(aC)
339346 else {
340- let aQ = ((((((("bid_" + H) + "_") + aX) + "_") + aY) + "_") + P)
341- let bi = if (ba)
342- then aP(aQ)
343- else aG(aw, aH, aI)
344- let ay = bi._1
345- let aB = bi._2
346- $Tuple3(aQ, ay, aB)
347+ let aW = ((((((("bid_" + M) + "_") + bd) + "_") + bm) + "_") + U)
348+ let bn = if (be)
349+ then aV(aW)
350+ else aM(aE, aN, aO)
351+ let aG = bn._1
352+ let aJ = bn._2
353+ $Tuple3(aW, aG, aJ)
347354 }
348355 }
349356
350357
351-func bj (aX,aB,ay,bf,bg) = {
352- let bk = A(aX)
353- let bl = if ((bk > height))
354- then 0
355- else if ((aB == g))
356- then i
357- else throw("Only USDN is accepted!")
358- let bm = fraction(ay, bl, 1000)
359- let bn = (ay - bm)
360- if ((bf == bg))
361- then throw("Art sold out")
362- else {
363- let bo = (bf + 1)
364- $Tuple3(bm, bn, bo)
365- }
366- }
367-
368-
369-func bp (aX,H,bd,bo,bg,bc,F,aY,P,aw,be) = {
370- let bq = ((((((((("Creator: " + aX) + ",ArtID: ") + H) + ",Artwork name: ") + bd) + ",Issue: ") + toString(bo)) + "/") + toString(bg))
371- let br = if (if ((bo == bg))
358+func bo (bd,M,bh,bp,bk,bg,K,bm,U,aE,bi) = {
359+ let bq = ((((((((("Creator: " + bd) + ",ArtID: ") + M) + ",Artwork name: ") + bh) + ",Issue: ") + toString(bp)) + "/") + toString(bk))
360+ let br = if (if ((bp == bk))
372361 then true
373- else !(be))
362+ else !(bi))
374363 then false
375364 else true
376- let bs = if ((aY != ""))
377- then addressFromStringValue(aY)
378- else aw.caller
365+ let bs = if ((bm != ""))
366+ then addressFromStringValue(bm)
367+ else aE.caller
379368 $Tuple3(br, bs, bq)
380369 }
381370
382371
383-func bt (bu) = if ((4 > bu))
384- then "SSR"
385- else if ((11 > bu))
386- then "SR"
387- else if ((101 > bu))
388- then "R"
389- else "N"
390-
391-
392-func bv (aB,aQ,bw) = {
393- let bx = if (!(isDefined(aB)))
372+func bt (aJ,aW,bu) = {
373+ let bv = if (!(isDefined(aJ)))
394374 then throw("Only USDN is accepted")
395- else toBase58String(value(aB))
396- let aR = v((aQ + "_OPEN"))
397- let by = DeleteEntry((aQ + "_OPEN"))
398- let bz = StringEntry((aQ + "_CLOSED"), ((aR + "_") + toString(bw)))
399- $Tuple3(bx, by, bz)
375+ else toBase58String(value(aJ))
376+ let aX = B((aW + "_OPEN"))
377+ let bw = DeleteEntry((aW + "_OPEN"))
378+ let bx = StringEntry((aW + "_CLOSED"), ((aX + "_") + toString(bu)))
379+ $Tuple3(bv, bw, bx)
400380 }
401381
402382
403-func bA (aw,H,aX,P,aY,ba) = {
404- let bB = aV(aw)
405- let bC = bB._1
406- let F = bB._2
407- let bw = bB._3
408- let bD = aZ(aw, aX, H, ba)
409- let bc = bD._1
410- let bd = bD._2
411- let bf = bD._3
412- let aI = bD._4
413- let aH = bD._5
414- let bg = bD._6
415- let be = bD._7
416- let aR = bh(aw, F, aX, H, aY, P, aH, aI, ba)
417- let aQ = aR._1
418- let ay = aR._2
419- let aB = aR._3
420- let bE = bj(aX, value(aB), ay, bf, bg)
421- let bm = bE._1
422- let bn = bE._2
423- let bo = bE._3
424- let bF = bp(aX, H, bd, bo, bg, bc, F, aY, P, aw, be)
425- let br = bF._1
426- let bs = bF._2
427- let bq = bF._3
428- let bG = invoke(this, "mintNft", [bc, bq, toString(bs)], nil)
429- if ((bG == bG))
383+func by (aE,M,bd,U,bm,be) = {
384+ let bz = bb(aE)
385+ let bA = bz._1
386+ let K = bz._2
387+ let bu = bz._3
388+ let bB = bc(aE, bd, M, be)
389+ let bg = bB._1
390+ let bh = bB._2
391+ let bj = bB._3
392+ let aO = bB._4
393+ let aN = bB._5
394+ let bk = bB._6
395+ let bi = bB._7
396+ let aX = bl(aE, K, bd, M, bm, U, aN, aO, be)
397+ let aW = aX._1
398+ let aG = aX._2
399+ let aJ = aX._3
400+ let bp = if ((bj == bk))
401+ then throw("Max items sold")
402+ else (bj + 1)
403+ let bC = bo(bd, M, bh, bp, bk, bg, K, bm, U, aE, bi)
404+ let br = bC._1
405+ let bs = bC._2
406+ let bq = bC._3
407+ let bD = invoke(this, "mintNft", [bg, bq, toString(bs)], nil)
408+ if ((bD == bD))
430409 then {
431- let bH = {
432- let aE = bG
433- if ($isInstanceOf(aE, "String"))
410+ let bE = {
411+ let e = bD
412+ if ($isInstanceOf(e, "String"))
434413 then {
435- let bI = aE
436- bI
414+ let bF = e
415+ bF
437416 }
438417 else throw("Incorrect invoke result")
439418 }
440- let bJ = bv(aB, aQ, bw)
441- let bx = bJ._1
442- let by = bJ._2
443- let bz = bJ._3
444- let bK = ((((((("art_sold_" + toString(bo)) + "_of_") + toString(bg)) + "_") + H) + "_") + aX)
445- let bL = bt(bo)
446- let bM = if (!(ba))
447- then ((((((((((F + "_") + toString(bw)) + "_") + bC) + "_") + toString(aI)) + "_") + aH) + "_") + bH)
448- else ((((((((((toString(bs) + "_") + toString(bw)) + "_") + bC) + "_") + toString(ay)) + "_") + bx) + "_") + bH)
449- let bN = StringEntry(bK, bM)
450- let bO = [IntegerEntry(T(aX, H), bo), StringEntry(("nft_" + bH), bK), StringEntry(("nft_rarity_" + bH), bL), IntegerEntry("total_nft_issued", (bc + 1)), BooleanEntry(W(aX, H), br), ScriptTransfer(Address(fromBase58String(aX)), bn, aB), ScriptTransfer(Address(fromBase58String(c)), bm, aB), StringEntry(U(bH), aX)]
451- let bP = invoke(addressFromStringValue(d), "createCert", [toString(bs), bH, aX], nil)
452- if ((bP == bP))
453- then if (ba)
454- then (((bO :+ bN) :+ bz) :+ by)
455- else bN :: bO
419+ let bG = bt(aJ, aW, bu)
420+ let bv = bG._1
421+ let bw = bG._2
422+ let bx = bG._3
423+ let bH = ((((((("art_sold_" + toString(bp)) + "_of_") + toString(bk)) + "_") + M) + "_") + bd)
424+ let bI = if (!(be))
425+ then ((((((((((K + "_") + toString(bu)) + "_") + bA) + "_") + toString(aO)) + "_") + aN) + "_") + bE)
426+ else ((((((((((toString(bs) + "_") + toString(bu)) + "_") + bA) + "_") + toString(aG)) + "_") + bv) + "_") + bE)
427+ let bJ = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "payFee", [M, bd], [AttachedPayment(aJ, aG)])
428+ if ((bJ == bJ))
429+ then {
430+ let bK = StringEntry(bH, bI)
431+ let bL = [IntegerEntry(Y(bd, M), bp), StringEntry(("nft_" + bE), bH), IntegerEntry("total_nft_issued", (bg + 1)), BooleanEntry(ac(bd, M), br), StringEntry(Z(bE), bd), StringEntry(ab(bE), M)]
432+ let bM = invoke(addressFromStringValue(l), "createCert", [toString(bs), bE, bd], nil)
433+ if ((bM == bM))
434+ then if (be)
435+ then (((bL :+ bK) :+ bx) :+ bw)
436+ else bK :: bL
437+ else throw("Strict value is not equal to itself.")
438+ }
456439 else throw("Strict value is not equal to itself.")
457440 }
458441 else throw("Strict value is not equal to itself.")
459442 }
460443
461444
462-func bQ (aw,H,aX) = {
463- let bR = aV(aw)
464- let bC = bR._1
465- let F = bR._2
466- let bw = bR._3
467- let bS = av(aw)
468- let ax = bS._1
469- let ay = bS._2
470- let aB = if (!(isDefined(ax.assetId)))
445+func bN (aE,M,bd) = {
446+ let bO = bb(aE)
447+ let bA = bO._1
448+ let K = bO._2
449+ let bu = bO._3
450+ let bP = aD(aE)
451+ let aF = bP._1
452+ let aG = bP._2
453+ let aJ = if (!(isDefined(aF.assetId)))
471454 then throw("Only USDN is accepted!")
472- else toBase58String(value(ax.assetId))
473- let bT = z(("current_bidamount_" + H))
474- if (!(aK(aB)))
455+ else toBase58String(value(aF.assetId))
456+ let bQ = F(("current_bidamount_" + M))
457+ if (!(aQ(aJ)))
475458 then throw("asset not accepted")
476- else if (!(aL(aB, ay)))
477- then throw("Wrong min sell")
478- else {
479- let bf = z(T(aX, H))
480- let bg = z(L(aX, H))
481- if ((0 >= bg))
482- then throw("No max edition set for this artwork")
483- else if ((bf >= bg))
484- then throw("Sold out, you cannot bid")
485- else [StringEntry((((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + bC) + "_OPEN"), ((((aB + "_") + toString(ay)) + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT + 1))]
486- }
459+ else {
460+ let bj = F(Y(bd, M))
461+ let bk = F(R(bd, M))
462+ if ((0 >= bk))
463+ then throw("No max edition set for this artwork")
464+ else if ((bj >= bk))
465+ then throw("Sold out, you cannot bid")
466+ else [StringEntry((((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + bA) + "_OPEN"), ((((aJ + "_") + toString(aG)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ + 1))]
467+ }
487468 }
488469
489470
490-func bU (aw,H,aX) = {
491- let bV = z(R(aX, H))
492- let bW = aj(H)
493- if ((height > bV))
471+func bR (aE,M,bd) = {
472+ let bS = F(W(bd, M))
473+ let bT = ar(M)
474+ if ((height > bS))
494475 then throw("This auction is finished already!")
495476 else {
496- let bX = aV(aw)
497- let bC = bX._1
498- let F = bX._2
499- let bw = bX._3
500- let bY = av(aw)
501- let ax = bY._1
502- let ay = bY._2
503- if ((bW >= ay))
504- then throw(("Please place a bid higher than: " + toString(bW)))
477+ let bU = bb(aE)
478+ let bA = bU._1
479+ let K = bU._2
480+ let bu = bU._3
481+ let bV = aD(aE)
482+ let aF = bV._1
483+ let aG = bV._2
484+ if ((bT >= aG))
485+ then throw(("Please place a bid higher than: " + toString(bT)))
505486 else {
506- let aB = if (!(isDefined(ax.assetId)))
487+ let aJ = if (!(isDefined(aF.assetId)))
507488 then throw("Only USDN is accepted!")
508- else toBase58String(value(ax.assetId))
509- let bT = z(("current_bidamount_" + H))
510- if (!(aK(aB)))
489+ else toBase58String(value(aF.assetId))
490+ let bQ = F(("current_bidamount_" + M))
491+ let bW = valueOrElse(F(ag(bd, M)), ao)
492+ if (!(aQ(aJ)))
511493 then throw("asset not accepted")
512- else if (!(aL(aB, ay)))
513- then throw("Wrong min sell")
494+ else if ((bW > aG))
495+ then throw("Bid is below min price!")
514496 else {
515- let bf = z(T(aX, H))
516- let bg = z(L(aX, H))
517- if ((0 >= bg))
497+ let bj = F(Y(bd, M))
498+ let bk = F(R(bd, M))
499+ if ((0 >= bk))
518500 then throw("No max edition set for this artwork")
519- else if ((bf >= bg))
501+ else if ((bj >= bk))
520502 then throw("Sold out, you cannot bid")
521- else [StringEntry((((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + bC) + "_OPEN"), ((((aB + "_") + toString(ay)) + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT + 1)), StringEntry(N(H), toBase58String(aw.transactionId)), IntegerEntry(O(toBase58String(aw.transactionId)), ay)]
503+ else [StringEntry((((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + bA) + "_OPEN"), ((((aJ + "_") + toString(aG)) + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ + 1)), StringEntry(S(M), toBase58String(aE.transactionId)), IntegerEntry(T(toBase58String(aE.transactionId)), aG)]
522504 }
523505 }
524506 }
525507 }
526508
527509
528-func bZ (aw,H,aX,P,aY) = {
529- let F = toBase58String(aw.caller.bytes)
530- if ((F != aX))
510+func bX (aE,M,bd,U,bm) = {
511+ let K = toBase58String(aE.caller.bytes)
512+ if ((K != bd))
531513 then throw("You cannot do this action")
532- else bA(aw, H, aX, P, aY, true)
514+ else by(aE, M, bd, U, bm, true)
533515 }
534516
535517
536-func ca (H,aX) = {
537- let bf = z(T(aX, H))
538- let bg = z(L(aX, H))
539- let cb = z(R(aX, H))
540- let cc = z(Q(aX, H))
541- let bV = (cc + height)
542- if ((height > cb))
543- then if ((bf == bg))
518+func bY (M,bd) = {
519+ let bj = F(Y(bd, M))
520+ let bk = F(R(bd, M))
521+ let bZ = F(W(bd, M))
522+ let ca = F(V(bd, M))
523+ let bS = (ca + height)
524+ if ((height > bZ))
525+ then if ((bj == bk))
544526 then throw("Can't restart auction, max amount sold")
545- else [IntegerEntry(R(aX, H), bV), DeleteEntry(N(H))]
527+ else [IntegerEntry(W(bd, M), bS), DeleteEntry(S(M))]
546528 else throw("Previous auction isn't completed yet")
547529 }
548530
549531
550-func cd (aw,H,aX,P,aY) = {
551- let bV = z(R(aX, H))
552- let ce = v(N(H))
553- if ((height > bV))
554- then if ((P == ce))
532+func cb (aE,M,bd,U,bm) = {
533+ let bS = F(W(bd, M))
534+ let cc = B(S(M))
535+ if ((height > bS))
536+ then if ((U == cc))
555537 then {
556- let cf = bA(aw, H, aX, P, aY, true)
557- let cg = ca(H, aX)
558- (cg ++ cf)
538+ let cd = by(aE, M, bd, U, bm, true)
539+ let ce = bY(M, bd)
540+ (ce ++ cd)
559541 }
560542 else throw("This is not the winning bid!")
561543 else throw("This auction is not yet finished!")
562544 }
563545
564546
565-func ch (aw,H,aX,P) = {
566- let ci = aV(aw)
567- let bC = ci._1
568- let F = ci._2
569- let bw = ci._3
570- let bT = z(("current_bidamount_" + H))
571- let aQ = ((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + P)
572- let aR = w((aQ + "_OPEN"), "Bid not found")
573- let aS = split(aR, "_")
574- let aB = aO(aS[0])
575- let cj = "CANCELED"
576-[DeleteEntry((aQ + "_OPEN")), StringEntry(((aQ + "_") + cj), ((aR + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT - 1)), ScriptTransfer(Address(fromBase58String(F)), parseIntValue(aS[1]), aB)]
547+func cf (aE,M,bd,U) = {
548+ let cg = bb(aE)
549+ let bA = cg._1
550+ let K = cg._2
551+ let bu = cg._3
552+ let bQ = F(("current_bidamount_" + M))
553+ let aW = ((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + U)
554+ let aX = C((aW + "_OPEN"), "Bid not found")
555+ let aY = split(aX, "_")
556+ let aJ = aU(aY[0])
557+ let ch = "CANCELED"
558+[DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ch), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ - 1)), ScriptTransfer(Address(fromBase58String(K)), parseIntValue(aY[1]), aJ)]
577559 }
578560
579561
580-func ck (aw,H,aX,P) = {
581- let ci = aV(aw)
582- let bC = ci._1
583- let F = ci._2
584- let bw = ci._3
585- let bT = z(("current_bidamount_" + H))
586- let aQ = ((((((("bid_" + H) + "_") + aX) + "_") + F) + "_") + P)
587- let aR = w((aQ + "_OPEN"), "Bid not found")
588- let aS = split(aR, "_")
589- let aB = aO(aS[0])
590- let cj = "CANCELED"
591- let aT = parseIntValue(aS[1])
592- let ce = v(N(H))
593- if ((P == ce))
562+func ci (aE,M,bd,U) = {
563+ let cg = bb(aE)
564+ let bA = cg._1
565+ let K = cg._2
566+ let bu = cg._3
567+ let bQ = F(("current_bidamount_" + M))
568+ let aW = ((((((("bid_" + M) + "_") + bd) + "_") + K) + "_") + U)
569+ let aX = C((aW + "_OPEN"), "Bid not found")
570+ let aY = split(aX, "_")
571+ let aJ = aU(aY[0])
572+ let ch = "CANCELED"
573+ let aZ = parseIntValue(aY[1])
574+ let cc = B(S(M))
575+ if ((U == cc))
594576 then throw("You can't cancel the highest bid!")
595- else [DeleteEntry((aQ + "_OPEN")), StringEntry(((aQ + "_") + cj), ((aR + "_") + toString(bw))), IntegerEntry(("current_bidamount_" + H), (bT - 1)), ScriptTransfer(Address(fromBase58String(F)), aT, aB)]
577+ else [DeleteEntry((aW + "_OPEN")), StringEntry(((aW + "_") + ch), ((aX + "_") + toString(bu))), IntegerEntry(("current_bidamount_" + M), (bQ - 1)), ScriptTransfer(Address(fromBase58String(K)), aZ, aJ)]
596578 }
597579
598580
599-@Callable(aw)
600-func mintNft (bc,bq,bs) = if ((aw.caller == this))
581+@Callable(aE)
582+func initDapp (cj) = if ((aE.caller != this))
583+ then throw("You cannot do this action")
584+ else if ((g != ""))
585+ then throw("oracle already set, you can't override!")
586+ else [StringEntry(b, cj)]
587+
588+
589+
590+@Callable(aE)
591+func restartAuctionManual (M) = if ((ar(M) != 0))
592+ then throw("Please accept the highest bid!")
593+ else bY(M, toBase58String(aE.caller.bytes))
594+
595+
596+
597+@Callable(aE)
598+func mintNft (bg,bq,bs) = if ((aE.caller == this))
601599 then {
602- let cl = Address(fromBase58String(bs))
603- let cm = Issue(("SCONEX_" + toString((bc + 1))), bq, 1, 0, false)
604- let bH = calculateAssetId(cm)
605- $Tuple2([cm, ScriptTransfer(cl, 1, bH)], toBase58String(bH))
600+ let ck = Address(fromBase58String(bs))
601+ let cl = Issue(("SCONEX_" + toString((bg + 1))), bq, 1, 0, false)
602+ let bE = calculateAssetId(cl)
603+ $Tuple2([cl, ScriptTransfer(ck, 1, bE)], toBase58String(bE))
606604 }
607605 else throw("Only the dApp can mint NFT's")
608606
609607
610608
611-@Callable(aw)
612-func addArtwork (af,ar,as,at,cn,aq,co) = {
613- let cp = aV(aw)
614- let H = cp._1
615- let F = cp._2
616- let bw = cp._3
617- let cq = ap(F, aq, ar, as, at)
618- if ((cq != ""))
619- then throw("Something went wrong!")
620- else {
621- let cr = az(aw)
622- let ay = cr._1
623- let aB = cr._2
624- if (!(isDefined(ay)))
625- then throw("Something went wrong")
609+@Callable(aE)
610+func addArtwork (al,az,aA,aB,cm,ay,cn,co,cp,cq) = {
611+ let cr = bb(aE)
612+ let M = cr._1
613+ let K = cr._2
614+ let bu = cr._3
615+ if (containsElement(q, cm))
616+ then {
617+ let cs = ax(K, ay, az, aA, aB)
618+ if ((cs != ""))
619+ then throw("Something went wrong!")
626620 else {
627- let cs = v(ag(af, F))
628- if ((cs != ""))
629- then throw("You already added it")
621+ let ct = aH(aE)
622+ let aG = ct._1
623+ let aJ = ct._2
624+ if (!(isDefined(aG)))
625+ then throw("Something went wrong")
630626 else {
631- let ct = v(ae(af))
632- if ((ct != ""))
633- then throw("This hash is already registered")
634- else [StringEntry(ae(af), F), StringEntry(ag(af, F), H), IntegerEntry(G(F, H), bw), StringEntry(I(F, H), ar), StringEntry(J(F, H), as), StringEntry(K(F, H), aq), StringEntry(Z(F, H), cn), StringEntry(Y(F, H), at), IntegerEntry(L(F, H), 0), IntegerEntry(T(F, H), 0), BooleanEntry(W(F, H), false), StringEntry(ac(F, H), af), StringEntry(X(F, H), co), ScriptTransfer(Address(fromBase58String(c)), ay, aB)]
627+ let cu = if (containsElement(r, cm))
628+ then [StringEntry(Q(K, M), co)]
629+ else nil
630+ let cv = invoke(valueOrErrorMessage(addressFromString(j), (j + " not found")), "collectionProcess", [cp, cq, K], nil)
631+ if ((cv == cv))
632+ then {
633+ let cw = {
634+ let e = cv
635+ if ($isInstanceOf(e, "String"))
636+ then {
637+ let bF = e
638+ bF
639+ }
640+ else throw("Incorrect invoke result")
641+ }
642+ let cx = B(am(al, K))
643+ if ((cx != ""))
644+ then throw("You already added it")
645+ else {
646+ let cy = B(ak(al))
647+ if ((cy != ""))
648+ then throw("This hash is already registered")
649+ else (cu ++ [StringEntry(ak(al), K), StringEntry(am(al, K), M), IntegerEntry(L(K, M), bu), StringEntry(N(K, M), az), StringEntry(O(K, M), aA), StringEntry(P(K, M), ay), StringEntry(af(K, M), cm), StringEntry(ae(K, M), aB), IntegerEntry(R(K, M), 0), IntegerEntry(Y(K, M), 0), BooleanEntry(ac(K, M), false), StringEntry(ai(K, M), al), StringEntry(ad(K, M), cn), ScriptTransfer(Address(fromBase58String(k)), aG, aJ)])
650+ }
651+ }
652+ else throw("Strict value is not equal to itself.")
635653 }
636654 }
637655 }
656+ else throw("Unknown type")
638657 }
639658
640659
641660
642-@Callable(aw)
643-func sellArtwork (H,aM,cu,aB,cv,cw,cc) = {
644- let cx = aV(aw)
645- let bC = cx._1
646- let F = cx._2
647- let bd = v(I(F, H))
648- if (!(containsElement([r, s], cv)))
649- then throw("We don't know this auction type")
650- else if ((bd == ""))
651- then throw("This art doesn't match your account")
652- else {
653- let bT = z(("current_bidamount_" + H))
654- if (!(aK(aB)))
655- then throw("Something went wrong!")
656- else if (!(aL(aB, aM)))
657- then throw("Something went wrong!")
658- else {
659- let au = an(F)
660- if ((au != ""))
661- then throw(au)
662- else {
663- let bf = z(T(F, H))
664- let bg = z(L(F, H))
665- if ((cu > 5000))
666- then throw("5000 editions max per artwork")
667- else if (if ((bf != 0))
668- then (bf == bg)
669- else false)
670- then throw("Max edition reached.")
671- else if (if ((bf > 0))
672- then (bg != cu)
673- else false)
674- then throw("Cannot change maximum issuable anymore")
675- else if (if ((bT > 0))
676- then (bg != cu)
677- else false)
678- then throw("Cannot change maximum issuable with active orders")
679- else {
680- let br = if (if ((aM > 0))
681- then (cu > 0)
661+@Callable(aE)
662+func sellArtwork (M,aS,cz,aJ,cA,ca,cB,cC,cD,cE,cF,cG) = {
663+ let bJ = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "teamSplitFee", [M, k, "", "", 15, 0, 0], nil)
664+ if ((bJ == bJ))
665+ then {
666+ let cH = invoke(valueOrErrorMessage(addressFromString(m), (m + " not found")), "creatorSplitFee", [M, cB, cC, cD, cE, cF, cG], nil)
667+ if ((cH == cH))
668+ then {
669+ let cI = bb(aE)
670+ let bA = cI._1
671+ let K = cI._2
672+ let bh = B(N(K, M))
673+ if (!(containsElement([x, y, z], cA)))
674+ then throw("We don't know this auction type")
675+ else if ((bh == ""))
676+ then throw("This art doesn't match your account")
677+ else {
678+ let bQ = F(("current_bidamount_" + M))
679+ if (!(aQ(aJ)))
680+ then throw("Something went wrong!")
681+ else if (!(aR(aJ, aS)))
682+ then throw("Something went wrong!")
683+ else {
684+ let aC = av(K)
685+ if ((aC != ""))
686+ then throw(aC)
687+ else {
688+ let bj = F(Y(K, M))
689+ let bk = F(R(K, M))
690+ if ((cz > 10000))
691+ then throw("10000 editions max per artwork")
692+ else if (if ((bj != 0))
693+ then (bj == bk)
682694 else false)
683- then true
684- else false
685- let bV = (cc + height)
686-[BooleanEntry(W(F, H), br), IntegerEntry(aa(F, H), aM), IntegerEntry(L(F, H), cu), IntegerEntry(M(F, H), cw), IntegerEntry(Q(F, H), cc), IntegerEntry(R(F, H), bV), StringEntry(ab(F, H), aB), StringEntry(S(F, H), cv)]
687- }
688- }
689- }
690- }
695+ then throw("Max edition reached.")
696+ else if (if ((bj > 0))
697+ then (bk != cz)
698+ else false)
699+ then throw("Cannot change maximum issuable anymore")
700+ else if (if ((bQ > 0))
701+ then (bk != cz)
702+ else false)
703+ then throw("Cannot change maximum issuable with active orders")
704+ else {
705+ let br = if (if ((aS > 0))
706+ then (cz > 0)
707+ else false)
708+ then true
709+ else false
710+ let bS = (ca + height)
711+[BooleanEntry(ac(K, M), br), IntegerEntry(ag(K, M), aS), IntegerEntry(R(K, M), cz), IntegerEntry(V(K, M), ca), IntegerEntry(W(K, M), bS), StringEntry(ah(K, M), aJ), StringEntry(X(K, M), cA)]
712+ }
713+ }
714+ }
715+ }
716+ }
717+ else throw("Strict value is not equal to itself.")
718+ }
719+ else throw("Strict value is not equal to itself.")
691720 }
692721
693722
694723
695-@Callable(aw)
696-func buyArtwork (H,aX) = bA(aw, H, aX, "", "", false)
724+@Callable(aE)
725+func buyArtwork (M,bd) = {
726+ let cA = B(X(bd, M))
727+ if ((cA == z))
728+ then by(aE, M, bd, "", "", false)
729+ else throw("Direct buy only allowed when no auction type is set!")
730+ }
697731
698732
699733
700-@Callable(aw)
701-func deleteEntry (cy) = {
702- let F = toString(addressFromPublicKey(aw.callerPublicKey))
703- if (containsElement(h, F))
704- then [DeleteEntry(cy)]
734+@Callable(aE)
735+func updateTags (cJ,M,aB) = {
736+ let K = toString(addressFromPublicKey(aE.callerPublicKey))
737+ if (containsElement(i, K))
738+ then if ((size(split(aB, ",")) > 5))
739+ then throw("5 tags max.")
740+ else {
741+ let cK = C(ae(cJ, M), "No tags created with this key, so can't update!")
742+ if ((aB == cK))
743+ then throw("Tags are the same as old tags!")
744+ else [StringEntry(ae(cJ, M), aB)]
745+ }
705746 else throw("no")
706747 }
707748
708749
709750
710-@Callable(aw)
711-func setBid (H,aX) = {
712- let cv = v(S(aX, H))
713- if ((cv == r))
714- then bQ(aw, H, aX)
715- else if ((cv == s))
716- then bU(aw, H, aX)
717- else throw((("Unknown auction type :" + cv) + ", please contact the admins"))
751+@Callable(aE)
752+func deleteEntry (cL) = {
753+ let K = toString(addressFromPublicKey(aE.callerPublicKey))
754+ if (containsElement(i, K))
755+ then [DeleteEntry(cL)]
756+ else throw("no")
718757 }
719758
720759
721760
722-@Callable(aw)
723-func acceptBid (H,aX,P,aY) = {
724- let cv = v(S(aX, H))
725- if ((cv == r))
726- then bZ(aw, H, aX, P, aY)
727- else if ((cv == s))
728- then cd(aw, H, aX, P, aY)
729- else throw((("Unknown auction type :" + cv) + ", please contact the admins"))
761+@Callable(aE)
762+func setBid (M,bd) = {
763+ let cA = B(X(bd, M))
764+ if ((cA == x))
765+ then bN(aE, M, bd)
766+ else if ((cA == y))
767+ then bR(aE, M, bd)
768+ else throw((("Unknown auction type :" + cA) + ", please contact the admins"))
730769 }
731770
732771
733772
734-@Callable(aw)
735-func cancelBid (H,aX,P) = {
736- let cv = v(S(aX, H))
737- if ((cv == r))
738- then ch(aw, H, aX, P)
739- else ck(aw, H, aX, P)
773+@Callable(aE)
774+func acceptBid (M,bd,U,bm) = {
775+ let cA = B(X(bd, M))
776+ if ((cA == x))
777+ then bX(aE, M, bd, U, bm)
778+ else if ((cA == y))
779+ then cb(aE, M, bd, U, bm)
780+ else throw((("Unknown auction type :" + cA) + ", please contact the admins"))
781+ }
782+
783+
784+
785+@Callable(aE)
786+func cancelBid (M,bd,U) = {
787+ let cA = B(X(bd, M))
788+ if ((cA == x))
789+ then cf(aE, M, bd, U)
790+ else ci(aE, M, bd, U)
740791 }
741792
742793

github/deemru/w8io/169f3d6 
181.03 ms