tx · 66pcj3acSVMXNHPw3LZpmT4RJSnAraBUawryhSkn4vjh

3MtA8ddCQT44GtMfUj9XgzPeZvzY52kofKK:  -0.01400000 Waves

2021.08.15 04:53 [1658843] smart account 3MtA8ddCQT44GtMfUj9XgzPeZvzY52kofKK > SELF 0.00000000 Waves

{ "type": 13, "id": "66pcj3acSVMXNHPw3LZpmT4RJSnAraBUawryhSkn4vjh", "fee": 1400000, "feeAssetId": null, "timestamp": 1628992397200, "version": 2, "chainId": 84, "sender": "3MtA8ddCQT44GtMfUj9XgzPeZvzY52kofKK", "senderPublicKey": "FHpHpSeEJhz3pVGgYuLDVj7fesP8NNRAMtG9Kh8EQevE", "proofs": [ "4J1QbTeABduXcUVyzzTHcigvWmKsxL5wVHA1nD9QsQms1E8hQf161ZPG8fFUhdD9JDL3t4KehrQRqVYqqc228aHz" ], "script": "base64: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Y2hhc2UCAAAAB19hbW91bnQBAAAAF2dldEtleVB1cmNoYXNlVGltZXN0YW1wAAAAAQAAAAhwdXJjaGFzZQkAASwAAAACBQAAAAhwdXJjaGFzZQIAAAAKX3RpbWVzdGFtcAEAAAAVZ2V0S2V5UHVyY2hhc2VBc3NldElkAAAAAQAAAAhwdXJjaGFzZQkAASwAAAACBQAAAAhwdXJjaGFzZQIAAAAIX2Fzc2V0SWQBAAAAFmdldEtleVB1cmNoYXNlRnVuZFBhaWQAAAABAAAACHB1cmNoYXNlCQABLAAAAAIFAAAACHB1cmNoYXNlAgAAAAlfZnVuZHBhaWQBAAAAFGdldEtleUNvdXBvblB1cmNoYXNlAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAHY291cG9uXwUAAAAHYXNzZXRJZAIAAAAJX3B1cmNoYXNlAQAAABBnZXRLZXlDb3Vwb25JdGVtAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAHY291cG9uXwUAAAAHYXNzZXRJZAIAAAAFX2l0ZW0BAAAAF2dldFZhbHVlU3VwcGxpZXJCYWxhbmNlAAAAAQAAAAhzdXBwbGllcgkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABVnZXRLZXlTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACAAAABHVzZXIAAAAEaXRlbQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACBQAAAAR1c2VyBQAAAARpdGVtAQAAABZnZXRWYWx1ZVB1cmNoYXNlU3RhdHVzAAAAAQAAAAhwdXJjaGFzZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFGdldEtleVB1cmNoYXNlU3RhdHVzAAAAAQUAAAAIcHVyY2hhc2UBAAAAFGdldFZhbHVlUHVyY2hhc2VJdGVtAAAAAQAAAAhwdXJjaGFzZQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAAEmdldEtleVB1cmNoYXNlSXRlbQAAAAEFAAAACHB1cmNoYXNlAQAAABhnZXRWYWx1ZVB1cmNoYXNlU3VwcGxpZXIAAAABAAAACHB1cmNoYXNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQEAAAAWZ2V0S2V5UHVyY2hhc2VTdXBwbGllcgAAAAEFAAAACHB1cmNoYXNlAQAAABRnZXRWYWx1ZVB1cmNoYXNlVXNlcgAAAAEAAAAIcHVyY2hhc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAQAAABJnZXRLZXlQdXJjaGFzZVVzZXIAAAABBQAAAAhwdXJjaGFzZQEAAAAWZ2V0VmFsdWVQdXJjaGFzZUFtb3VudAAAAAEAAAAIcHVyY2hhc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAABRnZXRLZXlQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlAQAAABlnZXRWYWx1ZVB1cmNoYXNlVGltZXN0YW1wAAAAAQAAAAhwdXJjaGFzZQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABdnZXRLZXlQdXJjaGFzZVRpbWVzdGFtcAAAAAEFAAAACHB1cmNoYXNlAQAAABdnZXRWYWx1ZVB1cmNoYXNlQXNzZXRJZAAAAAEAAAAIcHVyY2hhc2UJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVnZXRLZXlQdXJjaGFzZUFzc2V0SWQAAAABBQAAAAhwdXJjaGFzZQEAAAAYZ2V0VmFsdWVQdXJjaGFzZUZ1bmRQYWlkAAAAAQAAAAhwdXJjaGFzZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAABZnZXRLZXlQdXJjaGFzZUZ1bmRQYWlkAAAAAQUAAAAIcHVyY2hhc2UBAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQAAAARpdGVtCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQUAAAAEaXRlbQEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABAAAABGl0ZW0JAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAQAAABZnZXRWYWx1ZUl0ZW1FeHBpcmVUaW1lAAAAAQAAAARpdGVtCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAFGdldEtleUl0ZW1FeHBpcmVEYXRlAAAAAQUAAAAEaXRlbQEAAAARZ2V0VmFsdWVJdGVtVGl0bGUAAAABAAAABGl0ZW0JAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAA9nZXRLZXlJdGVtVGl0bGUAAAABBQAAAARpdGVtAQAAABdnZXRWYWx1ZUl0ZW1Tb2xkQ291bnRlcgAAAAEAAAAEaXRlbQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABVnZXRLZXlJdGVtU29sZENvdW50ZXIAAAABBQAAAARpdGVtAQAAABNnZXRWYWx1ZUl0ZW1SZW1vdmVkAAAAAQAAAARpdGVtCQEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQkBAAAAEWdldEtleUl0ZW1SZW1vdmVkAAAAAQUAAAAEaXRlbQEAAAAWZ2V0VmFsdWVDb3Vwb25QdXJjaGFzZQAAAAEAAAAHYXNzZXRJZAkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFGdldEtleUNvdXBvblB1cmNoYXNlAAAAAQUAAAAHYXNzZXRJZAEAAAAOZ2V0VmFsdWVDb21taXQAAAACAAAABGl0ZW0AAAAEdXNlcgkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAADGdldEtleUNvbW1pdAAAAAIFAAAABGl0ZW0FAAAABHVzZXIBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQAAAARpdGVtCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAEmdldEtleUNvbW1pdHNDb3VudAAAAAEFAAAABGl0ZW0BAAAADmdldFZhbHVlUmV2ZWFsAAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABZnZXRWYWx1ZUl0ZW1Wb3RlU3RhdHVzAAAAAQAAAARpdGVtCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAUZ2V0S2V5SXRlbVZvdGVT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AAAETk9ORQkAAAIAAAABAgAAABhTdXBwbGllciBkb2VzIG5vdCBleGlzdHMEAAAAEmtleVVzZXJJdGVtQ291bnRlcgkBAAAAFWdldEtleVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0EAAAAD3VzZXJJdGVtQ291bnRlcgkAAGQAAAACCQEAAAAXZ2V0VmFsdWVVc2VySXRlbUNvdW50ZXIAAAACBQAAAAR1c2VyBQAAAARpdGVtAAAAAAAAAAABBAAAAAhwdXJjaGFzZQkBAAAADmdlblB1cmNoYXNlS2V5AAAABAUAAAAIc3VwcGxpZXIFAAAABGl0ZW0FAAAABHVzZXIFAAAAD3VzZXJJdGVtQ291bnRlcgQAAAARa2V5UHVyY2hhc2VTdGF0dXMJAQAAABRnZXRLZXlQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlBAAAAA9rZXlQdXJjaGFzZUl0ZW0JAQAAABJnZXRLZXlQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQQAAAATa2V5UHVyY2hhc2VTdXBwbGllcgkBAAAAFmdldEtleVB1cmNoYXNlU3VwcGxpZXIAAAABBQAAAAhwdXJjaGFzZQQAAAAPa2V5UHVyY2hhc2VVc2VyCQEAAAASZ2V0S2V5UHVyY2hhc2VVc2VyAAAAAQUAAAAIcHVyY2hhc2UEAAAAEWtleVB1cmNoYXNlQW1vdW50CQEAAAAUZ2V0S2V5UHVyY2hhc2VBbW91bnQAAAABBQAAAAhwdXJjaGFzZQQAAAAUa2V5UHVyY2hhc2VUaW1lc3RhbXAJAQAAABdnZXRLZXlQdXJjaGFzZVRpbWVzdGFtcAAAAAEFAAAACHB1cmNoYXNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlVc2VySXRlbUNvdW50ZXIFAAAAD3VzZXJJdGVtQ291bnRlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFrZXlQdXJjaGFzZVN0YXR1cwUAAAAIQVBQUk9WQUwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5UHVyY2hhc2VJdGVtBQAAAARpdGVtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAE2tleVB1cmNoYXNlU3VwcGxpZXIFAAAACHN1cHBsaWVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2tleVB1cmNoYXNlVXNlcgUAAAAEdXNlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa2V5UHVyY2hhc2VBbW91bnQIBQAAAANwbXQAAAAGYW1vdW50CQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABRrZXlQdXJjaGFzZVRpbWVzdGFtcAgFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAAA25pbAAAAAFpAQAAAA5yZWplY3RQdXJjaGFzZQAAAAEAAAAIcHVyY2hhc2UEAAAABmNhbGxlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAZzdGF0dXMJAQAAABZnZXRWYWx1ZVB1cmNoYXNlU3RhdHVzAAAAAQUAAAAIcHVyY2hhc2UEAAAACHN1cHBsaWVyCQEAAAAYZ2V0VmFsdWVQdXJjaGFzZVN1cHBsaWVyAAAAAQUAAAAIcHVyY2hhc2UEAAAABGl0ZW0JAQAAABRnZXRWYWx1ZVB1cmNoYXNlSXRlbQAAAAEFAAAACHB1cmNoYXNlBAAAAAhub3RGb3VuZAkAAAAAAAACBQAAAARpdGVtBQAAAAROT05FAwUAAAAIbm90Rm91bmQJAAACAAAAAQkAASwAAAACAgAAABNQdXJjaGFzZSBub3QgZm91bmQgBQAAAAhwdXJjaGFzZQMDCQAAAAAAAAIFAAAACHN1cHBsaWVyBQAAAAROT05FBgkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAhzdXBwbGllcgkAAAIAAAABAgAAACNZb3VyIGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgaXRlbQMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAIQVBQUk9WQUwJAAACAAAAAQIAAAAgWW91IGNhbm5vdCByZWplY3QgdGhpcyBwdXJjaGFzZWQEAAAAEWtleVB1cmNoYXNlU3RhdHVzCQEAAAAUZ2V0S2V5UHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAARa2V5UHVyY2hhc2VBbW91bnQJAQAAABRnZXRLZXlQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlBAAAABJrZXlJdGVtU29sZENvdW50ZXIJAQAAABVnZXRLZXlJdGVtU29sZENvdW50ZXIAAAABBQAAAARpdGVtBAAAAAR1c2VyCQEAAAAUZ2V0VmFsdWVQdXJjaGFzZVVzZXIAAAABBQAAAAhwdXJjaGFzZQQAAAAGYW1vdW50CQEAAAAWZ2V0VmFsdWVQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlBAAAAA9zdXBwbGllckJhbGFuY2UJAABlAAAAAgkBAAAAF2dldFZhbHVlU3VwcGxpZXJCYWxhbmNlAAAAAQUAAAAIc3VwcGxpZXIFAAAABmFtb3VudAQAAAAPaXRlbVNvbGRDb3VudGVyCQAAZQAAAAIJAQAAABdnZXRWYWx1ZUl0ZW1Tb2xkQ291bnRlcgAAAAEFAAAABGl0ZW0AAAAAAAAAAAEEAAAAB2FkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABHVzZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARa2V5UHVyY2hhc2VTdGF0dXMFAAAACFJFSkVDVEVECQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrZXlQdXJjaGFzZUFtb3VudAAAAAAAAAAAAAkABEwAAAACCQEAAAAOU2NyaXB0VHJhbnNmZXIAAAADBQAAAAdhZGRyZXNzBQAAAAZhbW91bnQFAAAABHVuaXQFAAAAA25pbAAAAAFpAQAAAA5hY2NlcHRQdXJjaGFzZQAAAAIAAAAIcHVyY2hhc2UAAAAHYXNzZXRJZAQAAAAGY2FsbGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABnN0YXR1cwkBAAAAFmdldFZhbHVlUHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAAIc3VwcGxpZXIJAQAAABhnZXRWYWx1ZVB1cmNoYXNlU3VwcGxpZXIAAAABBQAAAAhwdXJjaGFzZQQAAAAEaXRlbQkBAAAAFGdldFZhbHVlUHVyY2hhc2VJdGVtAAAAAQUAAAAIcHVyY2hhc2UEAAAABmV4cGlyZQkBAAAAFmdldFZhbHVlSXRlbUV4cGlyZVRpbWUAAAABBQAAAARpdGVtBAAAAAhub3RGb3VuZAkAAAAAAAACBQAAAARpdGVtBQAAAAROT05FAwUAAAAIbm90Rm91bmQJAAACAAAAAQkAASwAAAACAgAAABNQdXJjaGFzZSBub3QgZm91bmQgBQAAAAhwdXJjaGFzZQMDCQAAAAAAAAIFAAAACHN1cHBsaWVyBQAAAAROT05FBgkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAhzdXBwbGllcgkAAAIAAAABAgAAACNZb3VyIGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgaXRlbQMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAIQVBQUk9WQUwJAAACAAAAAQIAAAAgWW91IGNhbm5vdCByZWplY3QgdGhpcyBwdXJjaGFzZWQDAwkAAGYAAAACBQAAAAZleHBpcmUAAAAAAAAAAAAJAABnAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmV4cGlyZQcJAAACAAAAAQIAAAAOQ291cG9uIGV4cGlyZWQEAAAAEWtleVB1cmNoYXNlU3RhdHVzCQEAAAAUZ2V0S2V5UHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAASa2V5UHVyY2hhc2VBc3NldElkCQEAAAAVZ2V0S2V5UHVyY2hhc2VBc3NldElkAAAAAQUAAAAIcHVyY2hhc2UEAAAAEmtleVN1cHBsaWVyQmFsYW5jZQkBAAAAFWdldEtleVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBAAAABJrZXlJdGVtU29sZENvdW50ZXIJAQAAABVnZXRLZXlJdGVtU29sZENvdW50ZXIAAAABBQAAAARpdGVtBAAAABFrZXlDb3Vwb25QdXJjaGFzZQkBAAAAFGdldEtleUNvdXBvblB1cmNoYXNlAAAAAQUAAAAHYXNzZXRJZAQAAAANa2V5Q291cG9uSXRlbQkBAAAAEGdldEtleUNvdXBvbkl0ZW0AAAABBQAAAAdhc3NldElkBAAAAAZhbW91bnQJAQAAABZnZXRWYWx1ZVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UE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AQAAABVnZXRLZXlTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgQAAAARa2V5Q291cG9uRnVuZFBhaWQJAQAAABZnZXRLZXlQdXJjaGFzZUZ1bmRQYWlkAAAAAQUAAAAIcHVyY2hhc2UJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAVhc3NldAAAAAAAAAAAAQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAARa2V5Q291cG9uRnVuZFBhaWQGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlTdXBwbGllckJhbGFuY2UFAAAACm5ld0JhbGFuY2UJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAt3aXRoZHJhd0FtdAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAQAAAAdhc3NldElkBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHYWNjb3VudAkBAAAAEmdldFN1cHBsaWVyQWNjb3VudAAAAAEFAAAABmNhbGxlcgMJAAAAAAAAAgUAAAAHYWNjb3VudAUAAAAETk9ORQkAAAIAAAABAgAAACFZb3UgYXJlIG5vdCByZWdpc3RyZWQgYXMgc3VwcGxpZXIEAAAACHB1cmNoYXNlCQEAAAAWZ2V0VmFsdWVDb3Vwb25QdXJjaGFzZQAAAAEFAAAAB2Fzc2V0SWQEAAAACHN1cHBsaWVyCQEAAAAYZ2V0VmFsdWVQdXJjaGFzZVN1cHBsaWVyAAAAAQUAAAAIcHVyY2hhc2UEAAAACmlzZnVuZFBhaWQJAQAAABhnZXRWYWx1ZVB1cmNoYXNlRnVuZFBhaWQAAAABBQAAAAhwdXJjaGFzZQMJAQAAAAIhPQAAAAIFAAAABmNhbGxlcgUAAAAIc3VwcGxpZXIJAAACAAAAAQIAAAApWW91ciBhcmUgbm90IHRoZSBzdXBwbGllciBmb3IgdGhpcyBjb3Vwb24DBQAAAAppc2Z1bmRQYWlkCQAAAgAAAAECAAAAGkZ1bmQgaGFzIGFscmVhZHkgYmVlbiBwYWlkBAAAAARpdGVtCQEAAAAUZ2V0VmFsdWVQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQQAAAAGZXhwaXJlCQEAAAAWZ2V0VmFsdWVJdGVtRXhwaXJlVGltZQAAAAEFAAAABGl0ZW0EAAAABGluZm8EAAAAByRtYXRjaDAJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAABZDYW5ub3QgZmluZCBhc3NldCBpbmZvBAAAAAtjYW5XaXRoZHJhdwMDCQAAZgAAAAIFAAAABmV4cGlyZQAAAAAAAAAAAAkAAGcAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAGZXhwaXJlBwYDCQAAAAAAAAIIBQAAAARpbmZvAAAACHF1YW50aXR5AAAAAAAAAAAABgcDCQEAAAABIQAAAAEFAAAAC2NhbldpdGhkcmF3CQAAAgAAAAECAAAAHFRoaXMgY291cG9uIGNhbm5vdCBiZSBmdW5kZWQEAAAAB2JhbGFuY2UJAQAAABdnZXRWYWx1ZVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBAAAAAZhbW91bnQJAQAAABZnZXRWYWx1ZVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UEAAAAC3dpdGhkcmF3QW10AwkAAGcAAAACAAAAAAAAAAAACQAAZQAAAAIFAAAAB2JhbGFuY2UFAAAABmFtb3VudAUAAAAHYmFsYW5jZQUAAAAGYW1vdW50BAAAAApuZXdCYWxhbmNlCQAAZQAAAAIFAAAAB2JhbGFuY2UFAAAAC3dpdGhkcmF3QW10AwkAAGYAAAACAAAAAAAAAAAABQAAAApuZXdCYWxhbmNlCQAAAgAAAAECAAAAHE5vdCBlbm91Z2ggZnVuZHMgdG8gd2l0aGRyYXcEAAAAEmtleVN1cHBsaWVyQmFsYW5jZQkBAAAAFWdldEtleVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBAAAABFrZXlDb3Vwb25GdW5kUGFpZAkBAAAAFmdldEtleVB1cmNoYXNlRnVuZFBhaWQAAAABBQAAAAhwdXJjaGFzZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAARa2V5Q291cG9uRnVuZFBhaWQGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlTdXBwbGllckJhbGFuY2UFAAAACm5ld0JhbGFuY2UJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAt3aXRoZHJhd0FtdAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACnZvdGVDb21taXQAAAACAAAABGl0ZW0AAAAEaGFzaAQAAAAEdXNlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAxjb21taXRzQ291bnQJAQAAABRnZXRWYWx1ZUNvbW1pdHNDb3VudAAAAAEFAAAABGl0ZW0EAAAABnN0YXR1cwkBAAAAFmdldFZhbHVlSXRlbVZvdGVTdGF0dXMAAAABBQAAAARpdGVtAwkAAGcAAAACBQAAAAxjb21taXRzQ291bnQFAAAABlZPVEVSUwkAAAIAAAABAgAAABxSZWFjaGVkIG1heCBudW1iZXIgb2Ygdm90ZXJzAwkBAAAAAiE9AAAAAgkBAAAADmdldFZhbHVlQ29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgUAAAAETk9ORQkAAAIAAAABAgAAABFZb3Ugdm90ZWQgYWxyZWFkeQMJAAAAAAAAAgkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAABE5PTkUJAAACAAAAAQIAAAAUSXRlbSBkb2VzIG5vdCBleGlzdHMDAwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAROT05FCQEAAAACIT0AAAACBQAAAAZzdGF0dXMFAAAABlZPVElORwcJAAACAAAAAQIAAAAmVm90aW5nIGlzIG5vdCBhY3RpdmUgZm9yIHRoaXMgaXRlbSBub3cEAAAACW5ld1N0YXR1cwMJAAAAAAAAAgUAAAAMY29tbWl0c0NvdW50BQAAAAZWT1RFUlMFAAAABlJFVkVBTAUAAAAGVk9USU5HCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyBQAAAARoYXNoCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAASZ2V0S2V5Q29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQkAAGQAAAACBQAAAAxjb21taXRzQ291bnQAAAAAAAAAAAEJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFGdldEtleUl0ZW1Wb3RlU3RhdHVzAAAAAQUAAAAEaXRlbQUAAAAJbmV3U3RhdHVzBQAAAANuaWwAAAABaQEAAAAKdm90ZVJldmVhbAAAAAMAAAAEaXRlbQAAAAR2b3RlAAAABHNhbHQEAAAABHVzZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAGc3RhdHVzCQEAAAAWZ2V0VmFsdWVJdGVtVm90ZVN0YXR1cwAAAAEFAAAABGl0ZW0EAAAADW5ld1ZvdGVzQ291bnQJAABkAAAAAgkBAAAAEmdldFZhbHVlVm90ZXNDb3VudAAAAAIFAAAABGl0ZW0FAAAABHZvdGUAAAAAAAAAAAEEAAAACnNhbHRlZFZvdGUJAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgkAASwAAAACBQAAAARpdGVtBQAAAAR2b3RlBQAAAARzYWx0AwkBAAAAAiE9AAAAAgUAAAAKc2FsdGVkVm90ZQkBAAAADmdldFZhbHVlQ29tbWl0AAAAAgUAAAAEaXRlbQUAAAAEdXNlcgkAAAIAAAABAgAAABhSZXZlYWwgZGF0YSBpcyBub3QgdmFsaWQDCQAAZgAAAAIFAAAABlZPVEVSUwkBAAAAFGdldFZhbHVlQ29tbWl0c0NvdW50AAAAAQUAAAAEaXRlbQkAAAIAAAABAgAAACBNYXggbnVtYmVyIG9mIHZvdGVycyBub3QgcmVhY2hlZAMJAQAAAAIhPQAAAAIJAQAAAA5nZXRWYWx1ZVJldmVhbAAAAAIFAAAABGl0ZW0FAAAABHVzZXIFAAAABE5PTkUJAAACAAAAAQIAAAARWW91IHZvdGVkIGFscmVhZHkDAwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAZWT1RJTkcJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAGUkVWRUFMBwkAAAIAAAABAgAAACZWb3RpbmcgaXMgbm90IGFjdGl2ZSBmb3IgdGhpcyBpdGVtIG5vdwMDCQEAAAACIT0AAAACBQAAAAR2b3RlBQAAAAhGRUFUVVJFRAkBAAAAAiE9AAAAAgUAAAAEdm90ZQUAAAAIREVMSVNURUQHCQAAAgAAAAECAAAAI1Byb3ZpZGVkIHZvdGluZyBvcHRpb24gaXMgaW5jb3JyZWN0AwkAAGcAAAACBQAAAA1uZXdWb3Rlc0NvdW50BQAAAAZRVU9SVU0EAAAACGZlYXR1cmVkAwkAAAAAAAACBQAAAAR2b3RlBQAAAAhGRUFUVVJFRAYHCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAAxnZXRLZXlSZXZlYWwAAAACBQAAAARpdGVtBQAAAAR1c2VyBQAAAAR2b3RlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAQZ2V0S2V5Vm90ZXNDb3VudAAAAAIFAAAABGl0ZW0FAAAABHZvdGUFAAAADW5ld1ZvdGVzQ291bnQJAARMAAAAAgkBAAAADEJvb2xlYW5FbnRyeQAAAAIJAQAAABJnZXRLZXlJdGVtRmVhdHVyZWQAAAABBQAAAARpdGVtBQAAAAhmZWF0dXJlZAkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAUZ2V0S2V5SXRlbVZvdGVTdGF0dXMAAAABBQAAAARpdGVtBQAAAANuaWwJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADGdldEtleVJldmVhbAAAAAIFAAAABGl0ZW0FAAAABHVzZXIFAAAABHZvdGUJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABBnZXRLZXlWb3Rlc0NvdW50AAAAAgUAAAAEaXRlbQUAAAAEdm90ZQUAAAANbmV3Vm90ZXNDb3VudAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAAUZ2V0S2V5SXRlbVZvdGVTdGF0dXMAAAABBQAAAARpdGVtBQAAAAZSRVZFQUwFAAAAA25pbAAAAAEAAAACdHgBAAAABnZlcmlmeQAAAAAEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAABdAUAAAAHJG1hdGNoMAkAAfQAAAADCAUAAAACdHgAAAAJYm9keUJ5dGVzCQABkQAAAAIIBQAAAAJ0eAAAAAZwcm9vZnMAAAAAAAAAAAAIBQAAAAJ0eAAAAA9zZW5kZXJQdWJsaWNLZXkDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAEElzc3VlVHJhbnNhY3Rpb24EAAAAAXQFAAAAByRtYXRjaDAJAAH0AAAAAwgFAAAAAnR4AAAACWJvZHlCeXRlcwkAAZEAAAACCAUAAAACdHgAAAAGcHJvb2ZzAAAAAAAAAAAACAUAAAACdHgAAAAPc2VuZGVyUHVibGljS2V5AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABNUcmFuc2ZlclRyYW5zYWN0aW9uBAAAAAF0BQAAAAckbWF0Y2gwCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAAgFAAAAAnR4AAAAD3NlbmRlclB1YmxpY0tleQc5pci4", "height": 1658843, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5jK4dufuVnWu2wM7ckf2VStFCxcW2YgHhUZhnfduamMZ Next: 4K1he3JSjGCCmZsCmFTn1eH8oBs9XmDmVbgYGhqrTQNm Diff:
OldNewDifferences
9999 func J (y) = (y + "_status")
100100
101101
102-func K (y,L) = ((y + "_res:") + L)
102+func K (y) = (y + "_featured")
103103
104104
105-func M (u) = (u + "_balance")
105+func L (y,M) = ((y + "_res:") + M)
106106
107107
108-func N (G,y) = (((G + "_") + y) + "_counter")
108+func N (u) = (u + "_balance")
109109
110110
111-func O (u,y,G,P) = ("purchase_" + toBase58String(sha256(toBytes(((((((u + "_") + y) + "_") + G) + "_") + toString(P))))))
111+func O (G,y) = (((G + "_") + y) + "_counter")
112112
113113
114-func Q (R) = (R + "_status")
114+func P (u,y,G,Q) = ("purchase_" + toBase58String(sha256(toBytes(((((((u + "_") + y) + "_") + G) + "_") + toString(Q))))))
115115
116116
117-func S (R) = (R + "_item")
117+func R (S) = (S + "_status")
118118
119119
120-func T (R) = (R + "_supplier")
120+func T (S) = (S + "_item")
121121
122122
123-func U (R) = (R + "_user")
123+func U (S) = (S + "_supplier")
124124
125125
126-func V (R) = (R + "_amount")
126+func V (S) = (S + "_user")
127127
128128
129-func W (R) = (R + "_timestamp")
129+func W (S) = (S + "_amount")
130130
131131
132-func X (R) = (R + "_assetId")
132+func X (S) = (S + "_timestamp")
133133
134134
135-func Y (R) = (R + "_fundpaid")
135+func Y (S) = (S + "_assetId")
136136
137137
138-func Z (aa) = (("coupon_" + aa) + "_purchase")
138+func Z (S) = (S + "_fundpaid")
139139
140140
141-func ab (aa) = (("coupon_" + aa) + "_item")
141+func aa (ab) = (("coupon_" + ab) + "_purchase")
142142
143143
144-func ac (u) = o(M(u))
144+func ac (ab) = (("coupon_" + ab) + "_item")
145145
146146
147-func ad (G,y) = o(N(G, y))
147+func ad (u) = o(N(u))
148148
149149
150-func ae (R) = k(Q(R))
150+func ae (G,y) = o(O(G, y))
151151
152152
153-func af (R) = getStringValue(this, S(R))
153+func af (S) = k(R(S))
154154
155155
156-func ag (R) = getStringValue(this, T(R))
156+func ag (S) = getStringValue(this, T(S))
157157
158158
159-func ah (R) = getStringValue(this, U(R))
159+func ah (S) = getStringValue(this, U(S))
160160
161161
162-func ai (R) = getIntegerValue(this, V(R))
162+func ai (S) = getStringValue(this, V(S))
163163
164164
165-func aj (R) = o(W(R))
165+func aj (S) = getIntegerValue(this, W(S))
166166
167167
168-func ak (R) = k(X(R))
168+func ak (S) = o(X(S))
169169
170170
171-func al (R) = p(Y(R))
171+func al (S) = k(Y(S))
172172
173173
174-func am (y) = getIntegerValue(this, A(y))
174+func am (S) = p(Z(S))
175175
176176
177-func an (y) = k(x(y))
177+func an (y) = getIntegerValue(this, A(y))
178178
179179
180-func ao (y) = o(C(y))
180+func ao (y) = k(x(y))
181181
182182
183-func ap (y) = k(z(y))
183+func ap (y) = o(C(y))
184184
185185
186-func aq (y) = o(D(y))
186+func aq (y) = k(z(y))
187187
188188
189-func ar (y) = p(E(y))
189+func ar (y) = o(D(y))
190190
191191
192-func as (aa) = k(Z(aa))
192+func as (y) = p(E(y))
193193
194194
195-func at (y,G) = k(F(y, G))
195+func at (ab) = k(aa(ab))
196196
197197
198-func au (y) = o(H(y))
198+func au (y,G) = k(F(y, G))
199199
200200
201-func av (y,G) = k(I(y, G))
201+func av (y) = o(H(y))
202202
203203
204-func aw (y) = k(J(y))
204+func aw (y,G) = k(I(y, G))
205205
206206
207-func ax (y,L) = o(K(y, L))
207+func ax (y) = k(J(y))
208208
209209
210-@Callable(ay)
211-func registerSupplier (az) = {
212- let u = toBase58String(ay.caller.bytes)
210+func ay (y) = p(K(y))
211+
212+
213+func az (y,M) = o(L(y, M))
214+
215+
216+@Callable(aA)
217+func registerSupplier (aB) = {
218+ let u = toBase58String(aA.caller.bytes)
213219 let r = s(u)
214220 if ((r != a))
215221 then throw("This address has already registred as supplier")
216- else [StringEntry(q(u), az)]
222+ else [StringEntry(q(u), aB)]
217223 }
218224
219225
220226
221-@Callable(ay)
222-func addItem (v,aA,az,aB) = {
223- let u = toBase58String(ay.caller.bytes)
227+@Callable(aA)
228+func addItem (v,aC,aB,aD) = {
229+ let u = toBase58String(aA.caller.bytes)
224230 let r = s(u)
225231 let y = t(u, v)
226232 if ((r == a))
227233 then throw("You should register as supplier to add an item")
228- else if ((0 >= aA))
234+ else if ((0 >= aC))
229235 then throw("Purchase amount cannot be less than item price")
230- else if ((an(y) != a))
236+ else if ((ao(y) != a))
231237 then throw("An item already exists")
232- else [StringEntry(x(y), u), StringEntry(z(y), v), IntegerEntry(A(y), aA), StringEntry(B(y), az), IntegerEntry(C(y), aB)]
238+ else [StringEntry(x(y), u), StringEntry(z(y), v), IntegerEntry(A(y), aC), StringEntry(B(y), aB), IntegerEntry(C(y), aD), BooleanEntry(K(y), true)]
233239 }
234240
235241
236242
237-@Callable(ay)
238-func updateItem (y,v,aA,az,aB) = {
239- let u = toBase58String(ay.caller.bytes)
243+@Callable(aA)
244+func updateItem (y,v,aC,aB,aD) = {
245+ let u = toBase58String(aA.caller.bytes)
240246 let r = s(u)
241- let aC = an(y)
242- let aD = if ((ap(y) == a))
247+ let aE = ao(y)
248+ let aF = if ((aq(y) == a))
243249 then true
244- else (ar(y) == true)
250+ else (as(y) == true)
245251 if ((r == a))
246252 then throw("You should register as supplier to remove an item")
247- else if (aD)
253+ else if (aF)
248254 then throw(("Item does not exists or has been removed " + y))
249- else if ((u != aC))
255+ else if ((u != aE))
250256 then throw(("You don't owned item " + y))
251- else [StringEntry(z(y), v), IntegerEntry(A(y), aA), StringEntry(B(y), az), IntegerEntry(C(y), aB)]
257+ else [StringEntry(z(y), v), IntegerEntry(A(y), aC), StringEntry(B(y), aB), IntegerEntry(C(y), aD)]
252258 }
253259
254260
255261
256-@Callable(ay)
262+@Callable(aA)
257263 func removeItem (y) = {
258- let u = toBase58String(ay.caller.bytes)
264+ let u = toBase58String(aA.caller.bytes)
259265 let r = s(u)
260- let aC = an(y)
261- let aD = if ((ap(y) == a))
266+ let aE = ao(y)
267+ let aF = if ((aq(y) == a))
262268 then true
263- else (ar(y) == true)
269+ else (as(y) == true)
264270 if ((r == a))
265271 then throw("You should register as supplier to remove an item")
266- else if (aD)
272+ else if (aF)
267273 then throw(("Item does not exists or has been removed " + y))
268- else if ((u != aC))
274+ else if ((u != aE))
269275 then throw(("You don't owned item " + y))
270276 else {
271- let aE = aq(y)
272- if ((aE == 0))
273- then [DeleteEntry(x(y)), DeleteEntry(z(y)), DeleteEntry(A(y)), DeleteEntry(B(y)), DeleteEntry(C(y))]
277+ let aG = ar(y)
278+ if ((aG == 0))
279+ then [DeleteEntry(x(y)), DeleteEntry(z(y)), DeleteEntry(A(y)), DeleteEntry(B(y)), DeleteEntry(C(y)), DeleteEntry(J(y)), DeleteEntry(K(y))]
274280 else [BooleanEntry(E(y), true)]
275281 }
276282 }
277283
278284
279285
280-@Callable(ay)
286+@Callable(aA)
281287 func purchase (y) = {
282- let aF = ay.payments[0]
283- let aD = if ((ap(y) == a))
288+ let aH = aA.payments[0]
289+ let aF = if ((aq(y) == a))
284290 then true
285- else (ar(y) == true)
286- if (aD)
291+ else (as(y) == true)
292+ if (aF)
287293 then throw(("Item does not exists or has been removed " + y))
288- else if (isDefined(aF.assetId))
294+ else if (isDefined(aH.assetId))
289295 then throw("You can buy tokens only with Waves tokens")
290296 else {
291- let G = toBase58String(ay.caller.bytes)
292- let aA = am(y)
293- let u = an(y)
294- let aB = ao(y)
295- if (if ((aB > 0))
296- then (lastBlock.timestamp >= aB)
297+ let G = toBase58String(aA.caller.bytes)
298+ let aC = an(y)
299+ let u = ao(y)
300+ let aD = ap(y)
301+ if (if ((aD > 0))
302+ then (lastBlock.timestamp >= aD)
297303 else false)
298304 then throw("Coupon expired")
299- else if ((aA > aF.amount))
305+ else if ((aC > aH.amount))
300306 then throw("Purchase amount cannot be less than item price")
301- else if ((aF.amount > aA))
307+ else if ((aH.amount > aC))
302308 then throw("Purchase amount cannot be higher than item price")
303309 else if ((u == a))
304310 then throw("Supplier does not exists")
305311 else {
306- let aG = N(G, y)
307- let aH = (ad(G, y) + 1)
308- let R = O(u, y, G, aH)
309- let aI = Q(R)
310- let aJ = S(R)
311- let aK = T(R)
312- let aL = U(R)
313- let aM = V(R)
314- let aN = W(R)
315-[IntegerEntry(aG, aH), StringEntry(aI, h), StringEntry(aJ, y), StringEntry(aK, u), StringEntry(aL, G), IntegerEntry(aM, aF.amount), IntegerEntry(aN, lastBlock.timestamp)]
312+ let aI = O(G, y)
313+ let aJ = (ae(G, y) + 1)
314+ let S = P(u, y, G, aJ)
315+ let aK = R(S)
316+ let aL = T(S)
317+ let aM = U(S)
318+ let aN = V(S)
319+ let aO = W(S)
320+ let aP = X(S)
321+[IntegerEntry(aI, aJ), StringEntry(aK, h), StringEntry(aL, y), StringEntry(aM, u), StringEntry(aN, G), IntegerEntry(aO, aH.amount), IntegerEntry(aP, lastBlock.timestamp)]
316322 }
317323 }
318324 }
319325
320326
321327
322-@Callable(ay)
323-func rejectPurchase (R) = {
324- let aO = toBase58String(ay.caller.bytes)
325- let aP = ae(R)
326- let u = ag(R)
327- let y = af(R)
328- let aD = (y == a)
329- if (aD)
330- then throw(("Purchase not found " + R))
328+@Callable(aA)
329+func rejectPurchase (S) = {
330+ let aQ = toBase58String(aA.caller.bytes)
331+ let aR = af(S)
332+ let u = ah(S)
333+ let y = ag(S)
334+ let aF = (y == a)
335+ if (aF)
336+ then throw(("Purchase not found " + S))
331337 else if (if ((u == a))
332338 then true
333- else (aO != u))
339+ else (aQ != u))
334340 then throw("Your are not the owner of this item")
335- else if ((aP != h))
341+ else if ((aR != h))
336342 then throw("You cannot reject this purchased")
337343 else {
338- let aI = Q(R)
339- let aM = V(R)
340- let aQ = D(y)
341- let G = ah(R)
342- let aR = ai(R)
343- let aS = (ac(u) - aR)
344- let aT = (aq(y) - 1)
345- let aU = addressFromStringValue(G)
346-[StringEntry(aI, i), IntegerEntry(aM, 0), ScriptTransfer(aU, aR, unit)]
344+ let aK = R(S)
345+ let aO = W(S)
346+ let aS = D(y)
347+ let G = ai(S)
348+ let aT = aj(S)
349+ let aU = (ad(u) - aT)
350+ let aV = (ar(y) - 1)
351+ let aW = addressFromStringValue(G)
352+[StringEntry(aK, i), IntegerEntry(aO, 0), ScriptTransfer(aW, aT, unit)]
347353 }
348354 }
349355
350356
351357
352-@Callable(ay)
353-func acceptPurchase (R,aa) = {
354- let aO = toBase58String(ay.caller.bytes)
355- let aP = ae(R)
356- let u = ag(R)
357- let y = af(R)
358- let aB = ao(y)
359- let aD = (y == a)
360- if (aD)
361- then throw(("Purchase not found " + R))
358+@Callable(aA)
359+func acceptPurchase (S,ab) = {
360+ let aQ = toBase58String(aA.caller.bytes)
361+ let aR = af(S)
362+ let u = ah(S)
363+ let y = ag(S)
364+ let aD = ap(y)
365+ let aF = (y == a)
366+ if (aF)
367+ then throw(("Purchase not found " + S))
362368 else if (if ((u == a))
363369 then true
364- else (aO != u))
370+ else (aQ != u))
365371 then throw("Your are not the owner of this item")
366- else if ((aP != h))
372+ else if ((aR != h))
367373 then throw("You cannot reject this purchased")
368- else if (if ((aB > 0))
369- then (lastBlock.timestamp >= aB)
374+ else if (if ((aD > 0))
375+ then (lastBlock.timestamp >= aD)
370376 else false)
371377 then throw("Coupon expired")
372378 else {
373- let aI = Q(R)
374- let aV = X(R)
375- let aW = M(u)
376- let aQ = D(y)
377- let aX = Z(aa)
378- let aY = ab(aa)
379- let aR = ai(R)
380- let aZ = (ac(u) + aR)
381- let aT = (aq(y) + 1)
382- let G = ah(R)
383- let aU = addressFromStringValue(G)
384-[StringEntry(aI, j), StringEntry(aX, R), StringEntry(aY, y), StringEntry(aV, aa), IntegerEntry(aW, aZ), IntegerEntry(aQ, aT)]
379+ let aK = R(S)
380+ let aX = Y(S)
381+ let aY = N(u)
382+ let aS = D(y)
383+ let aZ = aa(ab)
384+ let ba = ac(ab)
385+ let aT = aj(S)
386+ let bb = (ad(u) + aT)
387+ let aV = (ar(y) + 1)
388+ let G = ai(S)
389+ let aW = addressFromStringValue(G)
390+[StringEntry(aK, j), StringEntry(aZ, S), StringEntry(ba, y), StringEntry(aX, ab), IntegerEntry(aY, bb), IntegerEntry(aS, aV)]
385391 }
386392 }
387393
388394
389395
390-@Callable(ay)
396+@Callable(aA)
391397 func burn () = {
392- let aO = toBase58String(ay.caller.bytes)
393- let aF = if ((size(ay.payments) == 1))
394- then ay.payments[0]
398+ let aQ = toBase58String(aA.caller.bytes)
399+ let aH = if ((size(aA.payments) == 1))
400+ then aA.payments[0]
395401 else throw("An attached coupon is required as payment[0]")
396- if ((isDefined(aF.assetId) == false))
402+ if ((isDefined(aH.assetId) == false))
397403 then throw("Need a coupon to burn")
398404 else {
399- let ba = {
400- let m = aF.assetId
405+ let bc = {
406+ let m = aH.assetId
401407 if ($isInstanceOf(m, "ByteVector"))
402408 then {
403- let bb = m
404- bb
409+ let bd = m
410+ bd
405411 }
406412 else throw("Need a coupon to burn")
407413 }
408- let aa = toBase58String(ba)
409- let R = as(aa)
410- let u = ag(R)
411- let bc = al(R)
412- if ((aO != u))
414+ let ab = toBase58String(bc)
415+ let S = at(ab)
416+ let u = ah(S)
417+ let be = am(S)
418+ if ((aQ != u))
413419 then throw("Your are not the supplier for this coupon")
414- else if (bc)
415- then [Burn(ba, 1)]
420+ else if (be)
421+ then [Burn(bc, 1)]
416422 else {
417- let bd = ac(u)
418- let aR = ai(R)
419- let be = if ((0 >= (bd - aR)))
420- then bd
421- else aR
422- let aZ = (bd - be)
423- if ((0 > aZ))
423+ let bf = ad(u)
424+ let aT = aj(S)
425+ let bg = if ((0 >= (bf - aT)))
426+ then bf
427+ else aT
428+ let bb = (bf - bg)
429+ if ((0 > bb))
424430 then throw("Not enough funds to withdraw")
425431 else {
426- let aW = M(u)
427- let bf = Y(R)
428-[Burn(ba, 1), BooleanEntry(bf, true), IntegerEntry(aW, aZ), ScriptTransfer(ay.caller, be, unit)]
432+ let aY = N(u)
433+ let bh = Z(S)
434+[Burn(bc, 1), BooleanEntry(bh, true), IntegerEntry(aY, bb), ScriptTransfer(aA.caller, bg, unit)]
429435 }
430436 }
431437 }
433439
434440
435441
436-@Callable(ay)
437-func withdraw (aa) = {
438- let aO = toBase58String(ay.caller.bytes)
439- let r = s(aO)
442+@Callable(aA)
443+func withdraw (ab) = {
444+ let aQ = toBase58String(aA.caller.bytes)
445+ let r = s(aQ)
440446 if ((r == a))
441447 then throw("You are not registred as supplier")
442448 else {
443- let R = as(aa)
444- let u = ag(R)
445- let bc = al(R)
446- if ((aO != u))
449+ let S = at(ab)
450+ let u = ah(S)
451+ let be = am(S)
452+ if ((aQ != u))
447453 then throw("Your are not the supplier for this coupon")
448- else if (bc)
454+ else if (be)
449455 then throw("Fund has already been paid")
450456 else {
451- let y = af(R)
452- let aB = ao(y)
453- let bg = {
454- let m = assetInfo(fromBase58String(aa))
457+ let y = ag(S)
458+ let aD = ap(y)
459+ let bi = {
460+ let m = assetInfo(fromBase58String(ab))
455461 if ($isInstanceOf(m, "Asset"))
456462 then {
457463 let n = m
459465 }
460466 else throw("Cannot find asset info")
461467 }
462- let bh = if (if ((aB > 0))
463- then (lastBlock.timestamp >= aB)
468+ let bj = if (if ((aD > 0))
469+ then (lastBlock.timestamp >= aD)
464470 else false)
465471 then true
466- else if ((bg.quantity == 0))
472+ else if ((bi.quantity == 0))
467473 then true
468474 else false
469- if (!(bh))
475+ if (!(bj))
470476 then throw("This coupon cannot be funded")
471477 else {
472- let bd = ac(u)
473- let aR = ai(R)
474- let be = if ((0 >= (bd - aR)))
475- then bd
476- else aR
477- let aZ = (bd - be)
478- if ((0 > aZ))
478+ let bf = ad(u)
479+ let aT = aj(S)
480+ let bg = if ((0 >= (bf - aT)))
481+ then bf
482+ else aT
483+ let bb = (bf - bg)
484+ if ((0 > bb))
479485 then throw("Not enough funds to withdraw")
480486 else {
481- let aW = M(u)
482- let bf = Y(R)
483-[BooleanEntry(bf, true), IntegerEntry(aW, aZ), ScriptTransfer(ay.caller, be, unit)]
487+ let aY = N(u)
488+ let bh = Z(S)
489+[BooleanEntry(bh, true), IntegerEntry(aY, bb), ScriptTransfer(aA.caller, bg, unit)]
484490 }
485491 }
486492 }
489495
490496
491497
492-@Callable(ay)
493-func voteCommit (y,bi) = {
494- let G = toBase58String(ay.caller.bytes)
495- let bj = au(y)
496- let aP = aw(y)
497- if ((bj >= b))
498+@Callable(aA)
499+func voteCommit (y,bk) = {
500+ let G = toBase58String(aA.caller.bytes)
501+ let bl = av(y)
502+ let aR = ax(y)
503+ if ((bl >= b))
498504 then throw("Reached max number of voters")
499- else if ((at(y, G) != a))
505+ else if ((au(y, G) != a))
500506 then throw("You voted already")
501507 else if ((x(y) == a))
502508 then throw("Item does not exists")
503- else if (if ((aP != a))
504- then (aP != f)
509+ else if (if ((aR != a))
510+ then (aR != f)
505511 else false)
506512 then throw("Voting is not active for this item now")
507513 else {
508- let bk = if ((bj == b))
514+ let bm = if ((bl == b))
509515 then g
510516 else f
511-[StringEntry(F(y, G), bi), IntegerEntry(H(y), (bj + 1)), StringEntry(J(y), bk)]
517+[StringEntry(F(y, G), bk), IntegerEntry(H(y), (bl + 1)), StringEntry(J(y), bm)]
512518 }
513519 }
514520
515521
516522
517-@Callable(ay)
518-func voteReveal (y,L,bl) = {
519- let G = toBase58String(ay.caller.bytes)
520- let aP = aw(y)
521- let bm = (ax(y, L) + 1)
522- let bn = toBase58String(sha256(toBytes(((y + L) + bl))))
523- if ((bn != at(y, G)))
523+@Callable(aA)
524+func voteReveal (y,M,bn) = {
525+ let G = toBase58String(aA.caller.bytes)
526+ let aR = ax(y)
527+ let bo = (az(y, M) + 1)
528+ let bp = toBase58String(sha256(toBytes(((y + M) + bn))))
529+ if ((bp != au(y, G)))
524530 then throw("Reveal data is not valid")
525- else if ((b > au(y)))
531+ else if ((b > av(y)))
526532 then throw("Max number of voters not reached")
527- else if ((av(y, G) != a))
533+ else if ((aw(y, G) != a))
528534 then throw("You voted already")
529- else if (if ((aP != f))
530- then (aP != g)
535+ else if (if ((aR != f))
536+ then (aR != g)
531537 else false)
532538 then throw("Voting is not active for this item now")
533- else if (if ((L != d))
534- then (L != e)
539+ else if (if ((M != d))
540+ then (M != e)
535541 else false)
536542 then throw("Provided voting option is incorrect")
537- else {
538- let bk = if ((bm >= c))
539- then L
540- else g
541-[StringEntry(I(y, G), L), IntegerEntry(K(y, G), bm), StringEntry(J(y), bk)]
542- }
543+ else if ((bo >= c))
544+ then {
545+ let bq = if ((M == d))
546+ then true
547+ else false
548+[StringEntry(I(y, G), M), IntegerEntry(L(y, M), bo), BooleanEntry(K(y), bq), DeleteEntry(J(y))]
549+ }
550+ else [StringEntry(I(y, G), M), IntegerEntry(L(y, M), bo), StringEntry(J(y), g)]
543551 }
544552
545553
546-@Verifier(bo)
547-func bp () = {
548- let m = bo
554+@Verifier(br)
555+func bs () = {
556+ let m = br
549557 if ($isInstanceOf(m, "SetScriptTransaction"))
550558 then {
551- let bq = m
552- sigVerify(bo.bodyBytes, bo.proofs[0], bo.senderPublicKey)
559+ let bt = m
560+ sigVerify(br.bodyBytes, br.proofs[0], br.senderPublicKey)
553561 }
554562 else if ($isInstanceOf(m, "IssueTransaction"))
555563 then {
556- let bq = m
557- sigVerify(bo.bodyBytes, bo.proofs[0], bo.senderPublicKey)
564+ let bt = m
565+ sigVerify(br.bodyBytes, br.proofs[0], br.senderPublicKey)
558566 }
559567 else if ($isInstanceOf(m, "TransferTransaction"))
560568 then {
561- let bq = m
562- sigVerify(bo.bodyBytes, bo.proofs[0], bo.senderPublicKey)
569+ let bt = m
570+ sigVerify(br.bodyBytes, br.proofs[0], br.senderPublicKey)
563571 }
564572 else false
565573 }
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = "NONE"
55
66 let b = 3
77
88 let c = 2
99
1010 let d = "featured"
1111
1212 let e = "delisted"
1313
1414 let f = "voting"
1515
1616 let g = "reveal"
1717
1818 let h = "approval"
1919
2020 let i = "rejected"
2121
2222 let j = "accepted"
2323
2424 func k (l) = {
2525 let m = getString(this, l)
2626 if ($isInstanceOf(m, "String"))
2727 then {
2828 let n = m
2929 n
3030 }
3131 else a
3232 }
3333
3434
3535 func o (l) = {
3636 let m = getInteger(this, l)
3737 if ($isInstanceOf(m, "Int"))
3838 then {
3939 let n = m
4040 n
4141 }
4242 else 0
4343 }
4444
4545
4646 func p (l) = {
4747 let m = getBoolean(this, l)
4848 if ($isInstanceOf(m, "Boolean"))
4949 then {
5050 let n = m
5151 n
5252 }
5353 else false
5454 }
5555
5656
5757 func q (r) = (r + "_account")
5858
5959
6060 func s (r) = k(q(r))
6161
6262
6363 func t (u,v) = {
6464 let w = (u + v)
6565 ("item_" + toBase58String(sha256(toBytes(w))))
6666 }
6767
6868
6969 func x (y) = (y + "_owner")
7070
7171
7272 func z (y) = (y + "_title")
7373
7474
7575 func A (y) = (y + "_price")
7676
7777
7878 func B (y) = (y + "_data")
7979
8080
8181 func C (y) = (y + "_expiredate")
8282
8383
8484 func D (y) = (y + "_sold")
8585
8686
8787 func E (y) = (y + "_removed")
8888
8989
9090 func F (y,G) = (((y + "_") + G) + "_commit")
9191
9292
9393 func H (y) = (y + "_cmtcnt")
9494
9595
9696 func I (y,G) = (((y + "_") + G) + "_reveal")
9797
9898
9999 func J (y) = (y + "_status")
100100
101101
102-func K (y,L) = ((y + "_res:") + L)
102+func K (y) = (y + "_featured")
103103
104104
105-func M (u) = (u + "_balance")
105+func L (y,M) = ((y + "_res:") + M)
106106
107107
108-func N (G,y) = (((G + "_") + y) + "_counter")
108+func N (u) = (u + "_balance")
109109
110110
111-func O (u,y,G,P) = ("purchase_" + toBase58String(sha256(toBytes(((((((u + "_") + y) + "_") + G) + "_") + toString(P))))))
111+func O (G,y) = (((G + "_") + y) + "_counter")
112112
113113
114-func Q (R) = (R + "_status")
114+func P (u,y,G,Q) = ("purchase_" + toBase58String(sha256(toBytes(((((((u + "_") + y) + "_") + G) + "_") + toString(Q))))))
115115
116116
117-func S (R) = (R + "_item")
117+func R (S) = (S + "_status")
118118
119119
120-func T (R) = (R + "_supplier")
120+func T (S) = (S + "_item")
121121
122122
123-func U (R) = (R + "_user")
123+func U (S) = (S + "_supplier")
124124
125125
126-func V (R) = (R + "_amount")
126+func V (S) = (S + "_user")
127127
128128
129-func W (R) = (R + "_timestamp")
129+func W (S) = (S + "_amount")
130130
131131
132-func X (R) = (R + "_assetId")
132+func X (S) = (S + "_timestamp")
133133
134134
135-func Y (R) = (R + "_fundpaid")
135+func Y (S) = (S + "_assetId")
136136
137137
138-func Z (aa) = (("coupon_" + aa) + "_purchase")
138+func Z (S) = (S + "_fundpaid")
139139
140140
141-func ab (aa) = (("coupon_" + aa) + "_item")
141+func aa (ab) = (("coupon_" + ab) + "_purchase")
142142
143143
144-func ac (u) = o(M(u))
144+func ac (ab) = (("coupon_" + ab) + "_item")
145145
146146
147-func ad (G,y) = o(N(G, y))
147+func ad (u) = o(N(u))
148148
149149
150-func ae (R) = k(Q(R))
150+func ae (G,y) = o(O(G, y))
151151
152152
153-func af (R) = getStringValue(this, S(R))
153+func af (S) = k(R(S))
154154
155155
156-func ag (R) = getStringValue(this, T(R))
156+func ag (S) = getStringValue(this, T(S))
157157
158158
159-func ah (R) = getStringValue(this, U(R))
159+func ah (S) = getStringValue(this, U(S))
160160
161161
162-func ai (R) = getIntegerValue(this, V(R))
162+func ai (S) = getStringValue(this, V(S))
163163
164164
165-func aj (R) = o(W(R))
165+func aj (S) = getIntegerValue(this, W(S))
166166
167167
168-func ak (R) = k(X(R))
168+func ak (S) = o(X(S))
169169
170170
171-func al (R) = p(Y(R))
171+func al (S) = k(Y(S))
172172
173173
174-func am (y) = getIntegerValue(this, A(y))
174+func am (S) = p(Z(S))
175175
176176
177-func an (y) = k(x(y))
177+func an (y) = getIntegerValue(this, A(y))
178178
179179
180-func ao (y) = o(C(y))
180+func ao (y) = k(x(y))
181181
182182
183-func ap (y) = k(z(y))
183+func ap (y) = o(C(y))
184184
185185
186-func aq (y) = o(D(y))
186+func aq (y) = k(z(y))
187187
188188
189-func ar (y) = p(E(y))
189+func ar (y) = o(D(y))
190190
191191
192-func as (aa) = k(Z(aa))
192+func as (y) = p(E(y))
193193
194194
195-func at (y,G) = k(F(y, G))
195+func at (ab) = k(aa(ab))
196196
197197
198-func au (y) = o(H(y))
198+func au (y,G) = k(F(y, G))
199199
200200
201-func av (y,G) = k(I(y, G))
201+func av (y) = o(H(y))
202202
203203
204-func aw (y) = k(J(y))
204+func aw (y,G) = k(I(y, G))
205205
206206
207-func ax (y,L) = o(K(y, L))
207+func ax (y) = k(J(y))
208208
209209
210-@Callable(ay)
211-func registerSupplier (az) = {
212- let u = toBase58String(ay.caller.bytes)
210+func ay (y) = p(K(y))
211+
212+
213+func az (y,M) = o(L(y, M))
214+
215+
216+@Callable(aA)
217+func registerSupplier (aB) = {
218+ let u = toBase58String(aA.caller.bytes)
213219 let r = s(u)
214220 if ((r != a))
215221 then throw("This address has already registred as supplier")
216- else [StringEntry(q(u), az)]
222+ else [StringEntry(q(u), aB)]
217223 }
218224
219225
220226
221-@Callable(ay)
222-func addItem (v,aA,az,aB) = {
223- let u = toBase58String(ay.caller.bytes)
227+@Callable(aA)
228+func addItem (v,aC,aB,aD) = {
229+ let u = toBase58String(aA.caller.bytes)
224230 let r = s(u)
225231 let y = t(u, v)
226232 if ((r == a))
227233 then throw("You should register as supplier to add an item")
228- else if ((0 >= aA))
234+ else if ((0 >= aC))
229235 then throw("Purchase amount cannot be less than item price")
230- else if ((an(y) != a))
236+ else if ((ao(y) != a))
231237 then throw("An item already exists")
232- else [StringEntry(x(y), u), StringEntry(z(y), v), IntegerEntry(A(y), aA), StringEntry(B(y), az), IntegerEntry(C(y), aB)]
238+ else [StringEntry(x(y), u), StringEntry(z(y), v), IntegerEntry(A(y), aC), StringEntry(B(y), aB), IntegerEntry(C(y), aD), BooleanEntry(K(y), true)]
233239 }
234240
235241
236242
237-@Callable(ay)
238-func updateItem (y,v,aA,az,aB) = {
239- let u = toBase58String(ay.caller.bytes)
243+@Callable(aA)
244+func updateItem (y,v,aC,aB,aD) = {
245+ let u = toBase58String(aA.caller.bytes)
240246 let r = s(u)
241- let aC = an(y)
242- let aD = if ((ap(y) == a))
247+ let aE = ao(y)
248+ let aF = if ((aq(y) == a))
243249 then true
244- else (ar(y) == true)
250+ else (as(y) == true)
245251 if ((r == a))
246252 then throw("You should register as supplier to remove an item")
247- else if (aD)
253+ else if (aF)
248254 then throw(("Item does not exists or has been removed " + y))
249- else if ((u != aC))
255+ else if ((u != aE))
250256 then throw(("You don't owned item " + y))
251- else [StringEntry(z(y), v), IntegerEntry(A(y), aA), StringEntry(B(y), az), IntegerEntry(C(y), aB)]
257+ else [StringEntry(z(y), v), IntegerEntry(A(y), aC), StringEntry(B(y), aB), IntegerEntry(C(y), aD)]
252258 }
253259
254260
255261
256-@Callable(ay)
262+@Callable(aA)
257263 func removeItem (y) = {
258- let u = toBase58String(ay.caller.bytes)
264+ let u = toBase58String(aA.caller.bytes)
259265 let r = s(u)
260- let aC = an(y)
261- let aD = if ((ap(y) == a))
266+ let aE = ao(y)
267+ let aF = if ((aq(y) == a))
262268 then true
263- else (ar(y) == true)
269+ else (as(y) == true)
264270 if ((r == a))
265271 then throw("You should register as supplier to remove an item")
266- else if (aD)
272+ else if (aF)
267273 then throw(("Item does not exists or has been removed " + y))
268- else if ((u != aC))
274+ else if ((u != aE))
269275 then throw(("You don't owned item " + y))
270276 else {
271- let aE = aq(y)
272- if ((aE == 0))
273- then [DeleteEntry(x(y)), DeleteEntry(z(y)), DeleteEntry(A(y)), DeleteEntry(B(y)), DeleteEntry(C(y))]
277+ let aG = ar(y)
278+ if ((aG == 0))
279+ then [DeleteEntry(x(y)), DeleteEntry(z(y)), DeleteEntry(A(y)), DeleteEntry(B(y)), DeleteEntry(C(y)), DeleteEntry(J(y)), DeleteEntry(K(y))]
274280 else [BooleanEntry(E(y), true)]
275281 }
276282 }
277283
278284
279285
280-@Callable(ay)
286+@Callable(aA)
281287 func purchase (y) = {
282- let aF = ay.payments[0]
283- let aD = if ((ap(y) == a))
288+ let aH = aA.payments[0]
289+ let aF = if ((aq(y) == a))
284290 then true
285- else (ar(y) == true)
286- if (aD)
291+ else (as(y) == true)
292+ if (aF)
287293 then throw(("Item does not exists or has been removed " + y))
288- else if (isDefined(aF.assetId))
294+ else if (isDefined(aH.assetId))
289295 then throw("You can buy tokens only with Waves tokens")
290296 else {
291- let G = toBase58String(ay.caller.bytes)
292- let aA = am(y)
293- let u = an(y)
294- let aB = ao(y)
295- if (if ((aB > 0))
296- then (lastBlock.timestamp >= aB)
297+ let G = toBase58String(aA.caller.bytes)
298+ let aC = an(y)
299+ let u = ao(y)
300+ let aD = ap(y)
301+ if (if ((aD > 0))
302+ then (lastBlock.timestamp >= aD)
297303 else false)
298304 then throw("Coupon expired")
299- else if ((aA > aF.amount))
305+ else if ((aC > aH.amount))
300306 then throw("Purchase amount cannot be less than item price")
301- else if ((aF.amount > aA))
307+ else if ((aH.amount > aC))
302308 then throw("Purchase amount cannot be higher than item price")
303309 else if ((u == a))
304310 then throw("Supplier does not exists")
305311 else {
306- let aG = N(G, y)
307- let aH = (ad(G, y) + 1)
308- let R = O(u, y, G, aH)
309- let aI = Q(R)
310- let aJ = S(R)
311- let aK = T(R)
312- let aL = U(R)
313- let aM = V(R)
314- let aN = W(R)
315-[IntegerEntry(aG, aH), StringEntry(aI, h), StringEntry(aJ, y), StringEntry(aK, u), StringEntry(aL, G), IntegerEntry(aM, aF.amount), IntegerEntry(aN, lastBlock.timestamp)]
312+ let aI = O(G, y)
313+ let aJ = (ae(G, y) + 1)
314+ let S = P(u, y, G, aJ)
315+ let aK = R(S)
316+ let aL = T(S)
317+ let aM = U(S)
318+ let aN = V(S)
319+ let aO = W(S)
320+ let aP = X(S)
321+[IntegerEntry(aI, aJ), StringEntry(aK, h), StringEntry(aL, y), StringEntry(aM, u), StringEntry(aN, G), IntegerEntry(aO, aH.amount), IntegerEntry(aP, lastBlock.timestamp)]
316322 }
317323 }
318324 }
319325
320326
321327
322-@Callable(ay)
323-func rejectPurchase (R) = {
324- let aO = toBase58String(ay.caller.bytes)
325- let aP = ae(R)
326- let u = ag(R)
327- let y = af(R)
328- let aD = (y == a)
329- if (aD)
330- then throw(("Purchase not found " + R))
328+@Callable(aA)
329+func rejectPurchase (S) = {
330+ let aQ = toBase58String(aA.caller.bytes)
331+ let aR = af(S)
332+ let u = ah(S)
333+ let y = ag(S)
334+ let aF = (y == a)
335+ if (aF)
336+ then throw(("Purchase not found " + S))
331337 else if (if ((u == a))
332338 then true
333- else (aO != u))
339+ else (aQ != u))
334340 then throw("Your are not the owner of this item")
335- else if ((aP != h))
341+ else if ((aR != h))
336342 then throw("You cannot reject this purchased")
337343 else {
338- let aI = Q(R)
339- let aM = V(R)
340- let aQ = D(y)
341- let G = ah(R)
342- let aR = ai(R)
343- let aS = (ac(u) - aR)
344- let aT = (aq(y) - 1)
345- let aU = addressFromStringValue(G)
346-[StringEntry(aI, i), IntegerEntry(aM, 0), ScriptTransfer(aU, aR, unit)]
344+ let aK = R(S)
345+ let aO = W(S)
346+ let aS = D(y)
347+ let G = ai(S)
348+ let aT = aj(S)
349+ let aU = (ad(u) - aT)
350+ let aV = (ar(y) - 1)
351+ let aW = addressFromStringValue(G)
352+[StringEntry(aK, i), IntegerEntry(aO, 0), ScriptTransfer(aW, aT, unit)]
347353 }
348354 }
349355
350356
351357
352-@Callable(ay)
353-func acceptPurchase (R,aa) = {
354- let aO = toBase58String(ay.caller.bytes)
355- let aP = ae(R)
356- let u = ag(R)
357- let y = af(R)
358- let aB = ao(y)
359- let aD = (y == a)
360- if (aD)
361- then throw(("Purchase not found " + R))
358+@Callable(aA)
359+func acceptPurchase (S,ab) = {
360+ let aQ = toBase58String(aA.caller.bytes)
361+ let aR = af(S)
362+ let u = ah(S)
363+ let y = ag(S)
364+ let aD = ap(y)
365+ let aF = (y == a)
366+ if (aF)
367+ then throw(("Purchase not found " + S))
362368 else if (if ((u == a))
363369 then true
364- else (aO != u))
370+ else (aQ != u))
365371 then throw("Your are not the owner of this item")
366- else if ((aP != h))
372+ else if ((aR != h))
367373 then throw("You cannot reject this purchased")
368- else if (if ((aB > 0))
369- then (lastBlock.timestamp >= aB)
374+ else if (if ((aD > 0))
375+ then (lastBlock.timestamp >= aD)
370376 else false)
371377 then throw("Coupon expired")
372378 else {
373- let aI = Q(R)
374- let aV = X(R)
375- let aW = M(u)
376- let aQ = D(y)
377- let aX = Z(aa)
378- let aY = ab(aa)
379- let aR = ai(R)
380- let aZ = (ac(u) + aR)
381- let aT = (aq(y) + 1)
382- let G = ah(R)
383- let aU = addressFromStringValue(G)
384-[StringEntry(aI, j), StringEntry(aX, R), StringEntry(aY, y), StringEntry(aV, aa), IntegerEntry(aW, aZ), IntegerEntry(aQ, aT)]
379+ let aK = R(S)
380+ let aX = Y(S)
381+ let aY = N(u)
382+ let aS = D(y)
383+ let aZ = aa(ab)
384+ let ba = ac(ab)
385+ let aT = aj(S)
386+ let bb = (ad(u) + aT)
387+ let aV = (ar(y) + 1)
388+ let G = ai(S)
389+ let aW = addressFromStringValue(G)
390+[StringEntry(aK, j), StringEntry(aZ, S), StringEntry(ba, y), StringEntry(aX, ab), IntegerEntry(aY, bb), IntegerEntry(aS, aV)]
385391 }
386392 }
387393
388394
389395
390-@Callable(ay)
396+@Callable(aA)
391397 func burn () = {
392- let aO = toBase58String(ay.caller.bytes)
393- let aF = if ((size(ay.payments) == 1))
394- then ay.payments[0]
398+ let aQ = toBase58String(aA.caller.bytes)
399+ let aH = if ((size(aA.payments) == 1))
400+ then aA.payments[0]
395401 else throw("An attached coupon is required as payment[0]")
396- if ((isDefined(aF.assetId) == false))
402+ if ((isDefined(aH.assetId) == false))
397403 then throw("Need a coupon to burn")
398404 else {
399- let ba = {
400- let m = aF.assetId
405+ let bc = {
406+ let m = aH.assetId
401407 if ($isInstanceOf(m, "ByteVector"))
402408 then {
403- let bb = m
404- bb
409+ let bd = m
410+ bd
405411 }
406412 else throw("Need a coupon to burn")
407413 }
408- let aa = toBase58String(ba)
409- let R = as(aa)
410- let u = ag(R)
411- let bc = al(R)
412- if ((aO != u))
414+ let ab = toBase58String(bc)
415+ let S = at(ab)
416+ let u = ah(S)
417+ let be = am(S)
418+ if ((aQ != u))
413419 then throw("Your are not the supplier for this coupon")
414- else if (bc)
415- then [Burn(ba, 1)]
420+ else if (be)
421+ then [Burn(bc, 1)]
416422 else {
417- let bd = ac(u)
418- let aR = ai(R)
419- let be = if ((0 >= (bd - aR)))
420- then bd
421- else aR
422- let aZ = (bd - be)
423- if ((0 > aZ))
423+ let bf = ad(u)
424+ let aT = aj(S)
425+ let bg = if ((0 >= (bf - aT)))
426+ then bf
427+ else aT
428+ let bb = (bf - bg)
429+ if ((0 > bb))
424430 then throw("Not enough funds to withdraw")
425431 else {
426- let aW = M(u)
427- let bf = Y(R)
428-[Burn(ba, 1), BooleanEntry(bf, true), IntegerEntry(aW, aZ), ScriptTransfer(ay.caller, be, unit)]
432+ let aY = N(u)
433+ let bh = Z(S)
434+[Burn(bc, 1), BooleanEntry(bh, true), IntegerEntry(aY, bb), ScriptTransfer(aA.caller, bg, unit)]
429435 }
430436 }
431437 }
432438 }
433439
434440
435441
436-@Callable(ay)
437-func withdraw (aa) = {
438- let aO = toBase58String(ay.caller.bytes)
439- let r = s(aO)
442+@Callable(aA)
443+func withdraw (ab) = {
444+ let aQ = toBase58String(aA.caller.bytes)
445+ let r = s(aQ)
440446 if ((r == a))
441447 then throw("You are not registred as supplier")
442448 else {
443- let R = as(aa)
444- let u = ag(R)
445- let bc = al(R)
446- if ((aO != u))
449+ let S = at(ab)
450+ let u = ah(S)
451+ let be = am(S)
452+ if ((aQ != u))
447453 then throw("Your are not the supplier for this coupon")
448- else if (bc)
454+ else if (be)
449455 then throw("Fund has already been paid")
450456 else {
451- let y = af(R)
452- let aB = ao(y)
453- let bg = {
454- let m = assetInfo(fromBase58String(aa))
457+ let y = ag(S)
458+ let aD = ap(y)
459+ let bi = {
460+ let m = assetInfo(fromBase58String(ab))
455461 if ($isInstanceOf(m, "Asset"))
456462 then {
457463 let n = m
458464 n
459465 }
460466 else throw("Cannot find asset info")
461467 }
462- let bh = if (if ((aB > 0))
463- then (lastBlock.timestamp >= aB)
468+ let bj = if (if ((aD > 0))
469+ then (lastBlock.timestamp >= aD)
464470 else false)
465471 then true
466- else if ((bg.quantity == 0))
472+ else if ((bi.quantity == 0))
467473 then true
468474 else false
469- if (!(bh))
475+ if (!(bj))
470476 then throw("This coupon cannot be funded")
471477 else {
472- let bd = ac(u)
473- let aR = ai(R)
474- let be = if ((0 >= (bd - aR)))
475- then bd
476- else aR
477- let aZ = (bd - be)
478- if ((0 > aZ))
478+ let bf = ad(u)
479+ let aT = aj(S)
480+ let bg = if ((0 >= (bf - aT)))
481+ then bf
482+ else aT
483+ let bb = (bf - bg)
484+ if ((0 > bb))
479485 then throw("Not enough funds to withdraw")
480486 else {
481- let aW = M(u)
482- let bf = Y(R)
483-[BooleanEntry(bf, true), IntegerEntry(aW, aZ), ScriptTransfer(ay.caller, be, unit)]
487+ let aY = N(u)
488+ let bh = Z(S)
489+[BooleanEntry(bh, true), IntegerEntry(aY, bb), ScriptTransfer(aA.caller, bg, unit)]
484490 }
485491 }
486492 }
487493 }
488494 }
489495
490496
491497
492-@Callable(ay)
493-func voteCommit (y,bi) = {
494- let G = toBase58String(ay.caller.bytes)
495- let bj = au(y)
496- let aP = aw(y)
497- if ((bj >= b))
498+@Callable(aA)
499+func voteCommit (y,bk) = {
500+ let G = toBase58String(aA.caller.bytes)
501+ let bl = av(y)
502+ let aR = ax(y)
503+ if ((bl >= b))
498504 then throw("Reached max number of voters")
499- else if ((at(y, G) != a))
505+ else if ((au(y, G) != a))
500506 then throw("You voted already")
501507 else if ((x(y) == a))
502508 then throw("Item does not exists")
503- else if (if ((aP != a))
504- then (aP != f)
509+ else if (if ((aR != a))
510+ then (aR != f)
505511 else false)
506512 then throw("Voting is not active for this item now")
507513 else {
508- let bk = if ((bj == b))
514+ let bm = if ((bl == b))
509515 then g
510516 else f
511-[StringEntry(F(y, G), bi), IntegerEntry(H(y), (bj + 1)), StringEntry(J(y), bk)]
517+[StringEntry(F(y, G), bk), IntegerEntry(H(y), (bl + 1)), StringEntry(J(y), bm)]
512518 }
513519 }
514520
515521
516522
517-@Callable(ay)
518-func voteReveal (y,L,bl) = {
519- let G = toBase58String(ay.caller.bytes)
520- let aP = aw(y)
521- let bm = (ax(y, L) + 1)
522- let bn = toBase58String(sha256(toBytes(((y + L) + bl))))
523- if ((bn != at(y, G)))
523+@Callable(aA)
524+func voteReveal (y,M,bn) = {
525+ let G = toBase58String(aA.caller.bytes)
526+ let aR = ax(y)
527+ let bo = (az(y, M) + 1)
528+ let bp = toBase58String(sha256(toBytes(((y + M) + bn))))
529+ if ((bp != au(y, G)))
524530 then throw("Reveal data is not valid")
525- else if ((b > au(y)))
531+ else if ((b > av(y)))
526532 then throw("Max number of voters not reached")
527- else if ((av(y, G) != a))
533+ else if ((aw(y, G) != a))
528534 then throw("You voted already")
529- else if (if ((aP != f))
530- then (aP != g)
535+ else if (if ((aR != f))
536+ then (aR != g)
531537 else false)
532538 then throw("Voting is not active for this item now")
533- else if (if ((L != d))
534- then (L != e)
539+ else if (if ((M != d))
540+ then (M != e)
535541 else false)
536542 then throw("Provided voting option is incorrect")
537- else {
538- let bk = if ((bm >= c))
539- then L
540- else g
541-[StringEntry(I(y, G), L), IntegerEntry(K(y, G), bm), StringEntry(J(y), bk)]
542- }
543+ else if ((bo >= c))
544+ then {
545+ let bq = if ((M == d))
546+ then true
547+ else false
548+[StringEntry(I(y, G), M), IntegerEntry(L(y, M), bo), BooleanEntry(K(y), bq), DeleteEntry(J(y))]
549+ }
550+ else [StringEntry(I(y, G), M), IntegerEntry(L(y, M), bo), StringEntry(J(y), g)]
543551 }
544552
545553
546-@Verifier(bo)
547-func bp () = {
548- let m = bo
554+@Verifier(br)
555+func bs () = {
556+ let m = br
549557 if ($isInstanceOf(m, "SetScriptTransaction"))
550558 then {
551- let bq = m
552- sigVerify(bo.bodyBytes, bo.proofs[0], bo.senderPublicKey)
559+ let bt = m
560+ sigVerify(br.bodyBytes, br.proofs[0], br.senderPublicKey)
553561 }
554562 else if ($isInstanceOf(m, "IssueTransaction"))
555563 then {
556- let bq = m
557- sigVerify(bo.bodyBytes, bo.proofs[0], bo.senderPublicKey)
564+ let bt = m
565+ sigVerify(br.bodyBytes, br.proofs[0], br.senderPublicKey)
558566 }
559567 else if ($isInstanceOf(m, "TransferTransaction"))
560568 then {
561- let bq = m
562- sigVerify(bo.bodyBytes, bo.proofs[0], bo.senderPublicKey)
569+ let bt = m
570+ sigVerify(br.bodyBytes, br.proofs[0], br.senderPublicKey)
563571 }
564572 else false
565573 }
566574

github/deemru/w8io/873ac7e 
197.08 ms