tx · 83qcwtXjotgRgHs5xMdqxBo3vgBeJ6AEunHhxGhD1Bi9

3MtA8ddCQT44GtMfUj9XgzPeZvzY52kofKK:  -0.01400000 Waves

2021.08.16 06:04 [1660346] smart account 3MtA8ddCQT44GtMfUj9XgzPeZvzY52kofKK > SELF 0.00000000 Waves

{ "type": 13, "id": "83qcwtXjotgRgHs5xMdqxBo3vgBeJ6AEunHhxGhD1Bi9", "fee": 1400000, "feeAssetId": null, "timestamp": 1629083128200, "version": 2, "chainId": 84, "sender": "3MtA8ddCQT44GtMfUj9XgzPeZvzY52kofKK", "senderPublicKey": "FHpHpSeEJhz3pVGgYuLDVj7fesP8NNRAMtG9Kh8EQevE", "proofs": [ "4y8JKjNNQ5XL4AhY92aXomHSHhAYHEBqTvN3YufzWLmCNcrFsDLv4RMsykA5YJuxZKAZ8LfgyXXAFQamVcQv52yi" ], "script": "base64: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AAACBQAAAAR1c2VyAgAAAAFfBQAAAARpdGVtAgAAAAhfY291bnRlcgEAAAAVZ2V0S2V5U3VwcGxpZXJCYWxhbmNlAAAAAQAAAAhzdXBwbGllcgkAASwAAAACBQAAAAhzdXBwbGllcgIAAAAIX2JhbGFuY2UBAAAADmdlblB1cmNoYXNlS2V5AAAABAAAAAhzdXBwbGllcgAAAARpdGVtAAAABHVzZXIAAAAHY291bnRlcgkAASwAAAACAgAAAAlwdXJjaGFzZV8JAAJYAAAAAQkAAfcAAAABCQABmwAAAAEJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgkAASwAAAACCQABLAAAAAIFAAAACHN1cHBsaWVyAgAAAAFfBQAAAARpdGVtAgAAAAFfBQAAAAR1c2VyAgAAAAFfCQABpAAAAAEFAAAAB2NvdW50ZXIBAAAAFGdldEtleVB1cmNoYXNlU3RhdHVzAAAAAQAAAAhwdXJjaGFzZQkAASwAAAACBQAAAAhwdXJjaGFzZQIAAAAHX3N0YXR1cwEAAAASZ2V0S2V5UHVyY2hhc2VJdGVtAAAAAQAAAAhwdXJjaGFzZQkAASwAAAACBQAAAAhwdXJjaGFzZQIAAAAFX2l0ZW0BAAAAFmdldEtleVB1cmNoYXNlU3VwcGxpZXIAAAABAAAACHB1cmNoYXNlCQABLAAAAAIFAAAACHB1cmNoYXNlAgAAAAlfc3VwcGxpZXIBAAAAEmdldEtleVB1cmNoYXNlVXNlcgAAAAEAAAAIcHVyY2hhc2UJAAEsAAAAAgUAAAAIcHVyY2hhc2UCAAAABV91c2VyAQAAABRnZXRLZXlQdXJjaGFzZUFtb3VudAAAAAEAAAAIcHVyY2hhc2UJAAEsAAAAAgUAAAAIcHVyY2hhc2UCAAAAB19hbW91bnQBAAAAF2dldEtleVB1cmNoYXNlVGltZXN0YW1wAAAAAQAAAAhwdXJjaGFzZQkAASwAAAACBQAAAAhwdXJjaGFzZQIAAAAKX3RpbWVzdGFtcAEAAAAVZ2V0S2V5UHVyY2hhc2VBc3NldElkAAAAAQAAAAhwdXJjaGFzZQkAASwAAAACBQAAAAhwdXJjaGFzZQIAAAAIX2Fzc2V0SWQBAAAAFmdldEtleVB1cmNoYXNlRnVuZFBhaWQAAAABAAAACHB1cmNoYXNlCQABLAAAAAIFAAAACHB1cmNoYXNlAgAAAAlfZnVuZHBhaWQBAAAAFGdldEtleUNvdXBvblB1cmNoYXNlAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAHY291cG9uXwUAAAAHYXNzZXRJZAIAAAAJX3B1cmNoYXNlAQAAABBnZXRLZXlDb3Vwb25JdGVtAAAAAQAAAAdhc3NldElkCQABLAAAAAIJAAEsAAAAAgIAAAAHY291cG9uXwUAAAAHYXNzZXRJZAIAAAAFX2l0ZW0BAAAACmdldEtleVZvdGUAAAACAAAABGl0ZW0AAAAFcm91bmQJAAEsAAAAAgkAASwAAAACCQABLAAAAAIJAAEsAAAAAgIAAAAEdm90ZQUAAAAEaXRlbQIAAAABWwkAAaQAAAABBQAAAAVyb3VuZAIAAAABXQEAAAAWZ2V0S2V5Vm90ZUNvbW1pdHNDb3VudAAAAAEAAAAHa2V5Vm90ZQkAASwAAAACBQAAAAdrZXlWb3RlAgAAAAdfY210Y250AQAAABBnZXRLZXlWb3RlU3RhdHVzAAAAAQAAAAdrZXlWb3RlCQABLAAAAAIFAAAAB2tleVZvdGUCAAAAB19zdGF0dXMBAAAAEGdldEtleVZvdGVzQ291bnQAAAACAAAAB2tleVZvdGUAAAAEdm90ZQkAASwAAAACCQABLAAAAAIFAAAAB2tleVZvdGUCAAAABV9yZXM6BQAAAAR2b3RlAQAAABRnZXRLZXlVc2VyVm90ZUNvbW1pdAAAAAIAAAAHa2V5Vm90ZQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdrZXlWb3RlAgAAAAFfBQAAAAR1c2VyAgAAAAdfY29tbWl0AQAAABRnZXRLZXlVc2VyVm90ZVJldmVhbAAAAAIAAAAHa2V5Vm90ZQAAAAR1c2VyCQABLAAAAAIJAAEsAAAAAgkAASwAAAACBQAAAAdrZXlWb3RlAgAAAAFfBQAAAAR1c2VyAgAAAAdfcmV2ZWFsAQAAABdnZXRWYWx1ZVN1cHBsaWVyQmFsYW5jZQAAAAEAAAAIc3VwcGxpZXIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAVZ2V0S2V5U3VwcGxpZXJCYWxhbmNlAAAAAQUAAAAIc3VwcGxpZXIBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0JAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAZZ2V0VmFsdWVVc2VyUHVyY2hhc2VkSXRlbQAAAAIAAAAEdXNlcgAAAARpdGVtCQEAAAAPZ2V0Qm9vbGVhbkJ5S2V5AAAAAQkBAAAAF2dldEtleVVzZXJQdXJjaGFzZWRJdGVtAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFmdldFZhbHVlSXRlbUV4cGlyZVRpbWUAAAABAAAABGl0ZW0JAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAUZ2V0S2V5SXRlbUV4cGlyZURhdGUAAAABBQAAAARpdGVtAQAAABFnZXRWYWx1ZUl0ZW1UaXRsZQAAAAEAAAAEaXRlbQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1UaXRsZQAAAAEFAAAABGl0ZW0BAAAAF2dldFZhbHVlSXRlbVNvbGRDb3VudGVyAAAAAQAAAARpdGVtCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAFWdldEtleUl0ZW1Tb2xkQ291bnRlcgAAAAEFAAAABGl0ZW0BAAAAE2dldFZhbHVlSXRlbVJlbW92ZWQAAAABAAAABGl0ZW0JAQAAAA9nZXRCb29sZWFuQnlLZXkAAAABCQEAAAARZ2V0S2V5SXRlbVJlbW92ZWQAAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1GZWF0dXJlZAAAAAEAAAAEaXRlbQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAABJnZXRLZXlJdGVtRmVhdHVyZWQAAAABBQAAAARpdGVtAQAAABZnZXRWYWx1ZVB1cmNoYXNlU3RhdHVzAAAAAQAAAAhwdXJjaGFzZQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAFGdldEtleVB1cmNoYXNlU3RhdHVzAAAAAQUAAAAIcHVyY2hhc2UBAAAAFGdldFZhbHVlUHVyY2hhc2VJdGVtAAAAAQAAAAhwdXJjaGFzZQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAAEmdldEtleVB1cmNoYXNlSXRlbQAAAAEFAAAACHB1cmNoYXNlAQAAABhnZXRWYWx1ZVB1cmNoYXNlU3VwcGxpZXIAAAABAAAACHB1cmNoYXNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQEAAAAWZ2V0S2V5UHVyY2hhc2VTdXBwbGllcgAAAAEFAAAACHB1cmNoYXNlAQAAABRnZXRWYWx1ZVB1cmNoYXNlVXNlcgAAAAEAAAAIcHVyY2hhc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAQAAABJnZXRLZXlQdXJjaGFzZVVzZXIAAAABBQAAAAhwdXJjaGFzZQEAAAAWZ2V0VmFsdWVQdXJjaGFzZUFtb3VudAAAAAEAAAAIcHVyY2hhc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAABRnZXRLZXlQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlAQAAABlnZXRWYWx1ZVB1cmNoYXNlVGltZXN0YW1wAAAAAQAAAAhwdXJjaGFzZQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABdnZXRLZXlQdXJjaGFzZVRpbWVzdGFtcAAAAAEFAAAACHB1cmNoYXNlAQAAABdnZXRWYWx1ZVB1cmNoYXNlQXNzZXRJZAAAAAEAAAAIcHVyY2hhc2UJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABVnZXRLZXlQdXJjaGFzZUFzc2V0SWQAAAABBQAAAAhwdXJjaGFzZQEAAAAYZ2V0VmFsdWVQdXJjaGFzZUZ1bmRQYWlkAAAAAQAAAAhwdXJjaGFzZQkBAAAAD2dldEJvb2xlYW5CeUtleQAAAAEJAQAAABZnZXRLZXlQdXJjaGFzZUZ1bmRQYWlkAAAAAQUAAAAIcHVyY2hhc2UBAAAAFmdldFZhbHVlQ291cG9uUHVyY2hhc2UAAAABAAAAB2Fzc2V0SWQJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABRnZXRLZXlDb3Vwb25QdXJjaGFzZQAAAAEFAAAAB2Fzc2V0SWQBAAAAEWdldFZhbHVlVm90ZVJvdW5kAAAAAQAAAARpdGVtCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAE2dldEtleUl0ZW1Wb3RlUm91bmQAAAABBQAAAARpdGVtAQAAABJnZXRWYWx1ZVZvdGVTdGF0dXMAAAABAAAAB2tleVZvdGUJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABBnZXRLZXlWb3RlU3RhdHVzAAAAAQUAAAAHa2V5Vm90ZQEAAAASZ2V0VmFsdWVWb3Rlc0NvdW50AAAAAgAAAAdrZXlWb3RlAAAABHZvdGUJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAQZ2V0S2V5Vm90ZXNDb3VudAAAAAIFAAAAB2tleVZvdGUFAAAABHZvdGUBAAAAGGdldFZhbHVlVm90ZUNvbW1pdHNDb3VudAAAAAEAAAAHa2V5Vm90ZQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABZnZXRLZXlWb3RlQ29tbWl0c0NvdW50AAAAAQUAAAAHa2V5Vm90ZQEAAAAWZ2V0VmFsdWVVc2VyVm90ZUNvbW1pdAAAAAIAAAAHa2V5Vm90ZQAAAAR1c2VyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAUZ2V0S2V5VXNlclZvdGVDb21taXQAAAACBQAAAAdrZXlWb3RlBQAAAAR1c2VyAQAAABZnZXRWYWx1ZVVzZXJWb3RlUmV2ZWFsAAAAAgAAAAdrZXlWb3RlAAAABHVzZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABRnZXRLZXlVc2VyVm90ZVJldmVhbAAAAAIFAAAAB2tleVZvdGUFAAAABHVzZXIAAAALAAAAAWkBAAAAEHJlZ2lzdGVyU3Vw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c2V0SWQJAAACAAAAAQIAAAApWW91IGNhbiBidXkgdG9rZW5zIG9ubHkgd2l0aCBXYXZlcyB0b2tlbnMEAAAABHVzZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAFcHJpY2UJAQAAABFnZXRWYWx1ZUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0EAAAACHN1cHBsaWVyCQEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtBAAAAAZleHBpcmUJAQAAABZnZXRWYWx1ZUl0ZW1FeHBpcmVUaW1lAAAAAQUAAAAEaXRlbQMDCQAAZgAAAAIFAAAABmV4cGlyZQAAAAAAAAAAAAkAAGcAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAGZXhwaXJlBwkAAAIAAAABAgAAAA5Db3Vwb24gZXhwaXJlZAMJAABmAAAAAgUAAAAFcHJpY2UIBQAAAANwbXQAAAAGYW1vdW50CQAAAgAAAAECAAAALlB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgbGVzcyB0aGFuIGl0ZW0gcHJpY2UDCQAAZgAAAAIIBQAAAANwbXQAAAAGYW1vdW50BQAAAAVwcmljZQkAAAIAAAABAgAAADBQdXJjaGFzZSBhbW91bnQgY2Fubm90IGJlIGhpZ2hlciB0aGFuIGl0ZW0gcHJpY2UDCQAAAAAAAAIFAAAACHN1cHBsaWVyBQAAAAROT05FCQAAAgAAAAECAAAAGFN1cHBsaWVyIGRvZXMgbm90IGV4aXN0cwQAAAASa2V5VXNlckl0ZW1Db3VudGVyCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQQAAAAPdXNlckl0ZW1Db3VudGVyCQAAZAAAAAIJAQAAABdnZXRWYWx1ZVVzZXJJdGVtQ291bnRlcgAAAAIFAAAABHVzZXIFAAAABGl0ZW0AAAAAAAAAAAEEAAAACHB1cmNoYXNlCQEAAAAOZ2VuUHVyY2hhc2VLZXkAAAAEBQAAAAhzdXBwbGllcgUAAAAEaXRlbQUAAAAEdXNlcgUAAAAPdXNlckl0ZW1Db3VudGVyBAAAABFrZXlQdXJjaGFzZVN0YXR1cwkBAAAAFGdldEtleVB1cmNoYXNlU3RhdHVzAAAAAQUAAAAIcHVyY2hhc2UEAAAAD2tleVB1cmNoYXNlSXRlbQkBAAAAEmdldEtleVB1cmNoYXNlSXRlbQAAAAEFAAAACHB1cmNoYXNlBAAAABNrZXlQdXJjaGFzZVN1cHBsaWVyCQEAAAAWZ2V0S2V5UHVyY2hhc2VTdXBwbGllcgAAAAEFAAAACHB1cmNoYXNlBAAAAA9rZXlQdXJjaGFzZVVzZXIJAQAAABJnZXRLZXlQdXJjaGFzZVVzZXIAAAABBQAAAAhwdXJjaGFzZQQAAAARa2V5UHVyY2hhc2VBbW91bnQJAQAAABRnZXRLZXlQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlBAAAABRrZXlQdXJjaGFzZVRpbWVzdGFtcAkBAAAAF2dldEtleVB1cmNoYXNlVGltZXN0YW1wAAAAAQUAAAAIcHVyY2hhc2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVVzZXJJdGVtQ291bnRlcgUAAAAPdXNlckl0ZW1Db3VudGVyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtleVB1cmNoYXNlU3RhdHVzBQAAAAhBUFBST1ZBTAkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlQdXJjaGFzZUl0ZW0FAAAABGl0ZW0JAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAATa2V5UHVyY2hhc2VTdXBwbGllcgUAAAAIc3VwcGxpZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAAPa2V5UHVyY2hhc2VVc2VyBQAAAAR1c2VyCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABFrZXlQdXJjaGFzZUFtb3VudAgFAAAAA3BtdAAAAAZhbW91bnQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAFGtleVB1cmNoYXNlVGltZXN0YW1wCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAADbmlsAAAAAWkBAAAADnJlamVjdFB1cmNoYXNlAAAAAQAAAAhwdXJjaGFzZQQAAAAGY2FsbGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAABnN0YXR1cwkBAAAAFmdldFZhbHVlUHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAAIc3VwcGxpZXIJAQAAABhnZXRWYWx1ZVB1cmNoYXNlU3VwcGxpZXIAAAABBQAAAAhwdXJjaGFzZQQAAAAEaXRlbQkBAAAAFGdldFZhbHVlUHVyY2hhc2VJdGVtAAAAAQUAAAAIcHVyY2hhc2UEAAAACG5vdEZvdW5kCQAAAAAAAAIFAAAABGl0ZW0FAAAABE5PTkUDBQAAAAhub3RGb3VuZAkAAAIAAAABCQABLAAAAAICAAAAE1B1cmNoYXNlIG5vdCBmb3VuZCAFAAAACHB1cmNoYXNlAwMJAAAAAAAAAgUAAAAIc3VwcGxpZXIFAAAABE5PTkUGCQEAAAACIT0AAAACBQAAAAZjYWxsZXIFAAAACHN1cHBsaWVyCQAAAgAAAAECAAAAI1lvdXIgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBpdGVtAwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAhBUFBST1ZBTAkAAAIAAAABAgAAACBZb3UgY2Fubm90IHJlamVjdCB0aGlzIHB1cmNoYXNlZAQAAAARa2V5UHVyY2hhc2VTdGF0dXMJAQAAABRnZXRLZXlQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlBAAAABFrZXlQdXJjaGFzZUFtb3VudAkBAAAAFGdldEtleVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UEAAAAEmtleUl0ZW1Tb2xkQ291bnRlcgkBAAAAFWdldEtleUl0ZW1Tb2xkQ291bnRlcgAAAAEFAAAABGl0ZW0EAAAABHVzZXIJAQAAABRnZXRWYWx1ZVB1cmNoYXNlVXNlcgAAAAEFAAAACHB1cmNoYXNlBAAAAAZhbW91bnQJAQAAABZnZXRWYWx1ZVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UEAAAAD3N1cHBsaWVyQmFsYW5jZQkAAGUAAAACCQEAAAAXZ2V0VmFsdWVTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgUAAAAGYW1vdW50BAAAAA9pdGVtU29sZENvdW50ZXIJAABlAAAAAgkBAAAAF2dldFZhbHVlSXRlbVNvbGRDb3VudGVyAAAAAQUAAAAEaXRlbQAAAAAAAAAAAQQAAAAHYWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAEdXNlcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABFrZXlQdXJjaGFzZVN0YXR1cwUAAAAIUkVKRUNURUQJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleVB1cmNoYXNlQW1vdW50AAAAAAAAAAAACQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAB2FkZHJlc3MFAAAABmFtb3VudAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAADmFjY2VwdFB1cmNoYXNlAAAAAgAAAAhwdXJjaGFzZQAAAAdhc3NldElkBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAGc3RhdHVzCQEAAAAWZ2V0VmFsdWVQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlBAAAAAhzdXBwbGllcgkBAAAAGGdldFZhbHVlUHVyY2hhc2VTdXBwbGllcgAAAAEFAAAACHB1cmNoYXNlBAAAAARpdGVtCQEAAAAUZ2V0VmFsdWVQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQQAAAAGZXhwaXJlCQEAAAAWZ2V0VmFsdWVJdGVtRXhwaXJlVGltZQAAAAEFAAAABGl0ZW0EAAAACG5vdEZvdW5kCQAAAAAAAAIFAAAABGl0ZW0FAAAABE5PTkUDBQAAAAhub3RGb3VuZAkAAAIAAAABCQABLAAAAAICAAAAE1B1cmNoYXNlIG5vdCBmb3VuZCAFAAAACHB1cmNoYXNlAwMJAAAAAAAAAgUAAAAIc3VwcGxpZXIFAAAABE5PTkUGCQEAAAACIT0AAAACBQAAAAZjYWxsZXIFAAAACHN1cHBsaWVyCQAAAgAAAAECAAAAI1lvdXIgYXJlIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBpdGVtAwkBAAAAAiE9AAAAAgUAAAAGc3RhdHVzBQAAAAhBUFBST1ZBTAkAAAIAAAABAgAAACBZb3UgY2Fubm90IHJlamVjdCB0aGlzIHB1cmNoYXNlZAMDCQAAZgAAAAIFAAAABmV4cGlyZQAAAAAAAAAAAAkAAGcAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAGZXhwaXJlBwkAAAIAAAABAgAAAA5Db3Vwb24gZXhwaXJlZAQAAAARa2V5UHVyY2hhc2VTdGF0dXMJAQAAABRnZXRLZXlQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlBAAAABJrZXlQdXJjaGFzZUFzc2V0SWQJAQAAABVnZXRLZXlQdXJjaGFzZUFzc2V0SWQAAAABBQAAAAhwdXJjaGFzZQQAAAASa2V5U3VwcGxpZXJCYWxhbmNlCQEAAAAVZ2V0S2V5U3VwcGxpZXJCYWxhbmNlAAAAAQUAAAAIc3VwcGxpZXIEAAAAEmtleUl0ZW1Tb2xkQ291bnRlcgkBAAAAFWdldEtleUl0ZW1Tb2xkQ291bnRlcgAAAAEFAAAABGl0ZW0EAAAAEWtleUNvdXBvblB1cmNoYXNlCQEAAAAUZ2V0S2V5Q291cG9uUHVyY2hhc2UAAAABBQAAAAdhc3NldElkBAAAAA1rZXlDb3Vwb25JdGVtCQEAAAAQZ2V0S2V5Q291cG9uSXRlbQAAAAEFAAAAB2Fzc2V0SWQEAAAABmFtb3VudAkBAAAAFmdldFZhbHVlUHVyY2hhc2VBbW91bnQAAAABBQAAAAhwdXJjaGFzZQQAAAAKbmV3QmFsYW5jZQkAAGQAAAACCQEAAAAXZ2V0VmFsdWVTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgUAAAAGYW1vdW50BAAAAA9pdGVtU29sZENvdW50ZXIJAABkAAAAAgkBAAAAF2dldFZhbHVlSXRlbVNvbGRDb3VudGVyAAAAAQUAAAAEaXRlbQAAAAAAAAAAAQQAAAAEdXNlcgkBAAAAFGdldFZhbHVlUHVyY2hhc2VVc2VyAAAAAQUAAAAIcHVyY2hhc2UEAAAAB2FkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABHVzZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARa2V5UHVyY2hhc2VTdGF0dXMFAAAACEFDQ0VQVEVECQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtleUNvdXBvblB1cmNoYXNlBQAAAAhwdXJjaGFzZQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA1rZXlDb3Vwb25JdGVtBQAAAARpdGVtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEmtleVB1cmNoYXNlQXNzZXRJZAUAAAAHYXNzZXRJZAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5U3VwcGxpZXJCYWxhbmNlBQAAAApuZXdCYWxhbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlJdGVtU29sZENvdW50ZXIFAAAAD2l0ZW1Tb2xkQ291bnRlcgkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgkBAAAAF2dldEtleVVzZXJQdXJjaGFzZWRJdGVtAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQYFAAAAA25pbAAAAAFpAQAAAARidXJuAAAAAAQAAAAGY2FsbGVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAA3BtdAMJAAAAAAAAAgkAAZAAAAABCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAQkAAZEAAAACCAUAAAABaQAAAAhwYXltZW50cwAAAAAAAAAAAAkAAAIAAAABAgAAACxBbiBhdHRhY2hlZCBjb3Vwb24gaXMgcmVxdWlyZWQgYXMgcGF5bWVudFswXQMJAAAAAAAAAgkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAcJAAACAAAAAQIAAAAVTmVlZCBhIGNvdXBvbiB0byBidXJuBAAAAAVhc3NldAQAAAAHJG1hdGNoMAgFAAAAA3BtdAAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAApCeXRlVmVjdG9yBAAAAAFlBQAAAAckbWF0Y2gwBQAAAAFlCQAAAgAAAAECAAAAFU5lZWQgYSBjb3Vwb24gdG8gYnVybgQAAAAHYXNzZXRJZAkAAlgAAAABBQAAAAVhc3NldAQAAAAIcHVyY2hhc2UJAQAAABZnZXRWYWx1ZUNvdXBvblB1cmNoYXNlAAAAAQUAAAAHYXNzZXRJZAQAAAAIc3VwcGxpZXIJAQAAABhnZXRWYWx1ZVB1cmNoYXNlU3VwcGxpZXIAAAABBQAAAAhwdXJjaGFzZQQAAAAKaXNmdW5kUGFpZAkBAAAAGGdldFZhbHVlUHVyY2hhc2VGdW5kUGFpZAAAAAEFAAAACHB1cmNoYXNlAwkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAhzdXBwbGllcgkAAAIAAAABAgAAAClZb3VyIGFyZSBub3QgdGhlIHN1cHBsaWVyIGZvciB0aGlzIGNvdXBvbgMFAAAACmlzZnVuZFBhaWQJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAVhc3NldAAAAAAAAAAAAQUAAAADbmlsBAAAAAdiYWxhbmNlCQEAAAAXZ2V0VmFsdWVTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgQAAAAGYW1vdW50CQEAAAAWZ2V0VmFsdWVQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlBAAAAAt3aXRoZHJhd0FtdAMJAABnAAAAAgAAAAAAAAAAAAkAAGUAAAACBQAAAAdiYWxhbmNlBQAAAAZhbW91bnQFAAAAB2JhbGFuY2UFAAAABmFtb3VudAQAAAAKbmV3QmFsYW5jZQkAAGUAAAACBQAAAAdiYWxhbmNlBQAAAAt3aXRoZHJhd0FtdAMJAABmAAAAAgAAAAAAAAAAAAUAAAAKbmV3QmFsYW5jZQkAAAIAAAABAgAAABxOb3QgZW5vdWdoIGZ1bmRzIHRvIHdpdGhkcmF3BAAAABJrZXlTdXBwbGllckJhbGFuY2UJAQAAABVnZXRLZXlTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgQAAAARa2V5Q291cG9uRnVuZFBhaWQJAQAAABZnZXRLZXlQdXJjaGFzZUZ1bmRQYWlkAAAAAQUAAAAIcHVyY2hhc2UJAARMAAAAAgkBAAAABEJ1cm4AAAACBQAAAAVhc3NldAAAAAAAAAAAAQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAARa2V5Q291cG9uRnVuZFBhaWQGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlTdXBwbGllckJhbGFuY2UFAAAACm5ld0JhbGFuY2UJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAt3aXRoZHJhd0FtdAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACHdpdGhkcmF3AAAAAQAAAAdhc3NldElkBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHYWNjb3VudAkBAAAAEmdldFN1cHBsaWVyQWNjb3VudAAAAAEFAAAABmNhbGxlcgMJAAAAAAAAAgUAAAAHYWNjb3VudAUAAAAETk9ORQkAAAIAAAABAgAAACFZb3UgYXJlIG5vdCByZWdpc3RyZWQgYXMgc3VwcGxpZXIEAAAACHB1cmNoYXNlCQEAAAAWZ2V0VmFsdWVDb3Vwb25QdXJjaGFzZQAAAAEFAAAAB2Fzc2V0SWQEAAAACHN1cHBsaWVyCQEAAAAYZ2V0VmFsdWVQdXJjaGFzZVN1cHBsaWVyAAAAAQUAAAAIcHVyY2hhc2UEAAAACmlzZnVuZFBhaWQJAQAAABhnZXRWYWx1ZVB1cmNoYXNlRnVuZFBhaWQAAAABBQAAAAhwdXJjaGFzZQMJAQAAAAIhPQAAAAIFAAAABmNhbGxlcgUAAAAIc3VwcGxpZXIJAAACAAAAAQIAAAApWW91ciBhcmUgbm90IHRoZSBzdXBwbGllciBmb3IgdGhpcyBjb3Vwb24DBQAAAAppc2Z1bmRQYWlkCQAAAgAAAAECAAAAGkZ1bmQgaGFzIGFscmVhZHkgYmVlbiBwYWlkBAAAAARpdGVtCQEAAAAUZ2V0VmFsdWVQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQQAAAAGZXhwaXJlCQEAAAAWZ2V0VmFsdWVJdGVtRXhwaXJlVGltZQAAAAEFAAAABGl0ZW0EAAAABGluZm8EAAAAByRtYXRjaDAJAAPsAAAAAQkAAlkAAAABBQAAAAdhc3NldElkAwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAAAVBc3NldAQAAAABYQUAAAAHJG1hdGNoMAUAAAABYQkAAAIAAAABAgAAABZDYW5ub3QgZmluZCBhc3NldCBpbmZvBAAAAAtjYW5XaXRoZHJhdwMDCQAAZgAAAAIFAAAABmV4cGlyZQAAAAAAAAAAAAkAAGcAAAACCAUAAAAJbGFzdEJsb2NrAAAACXRpbWVzdGFtcAUAAAAGZXhwaXJlBwYDCQAAAAAAAAIIBQAAAARpbmZvAAAACHF1YW50aXR5AAAAAAAAAAAABgcDCQEAAAABIQAAAAEFAAAAC2NhbldpdGhkcmF3CQAAAgAAAAECAAAAHFRoaXMgY291cG9uIGNhbm5vdCBiZSBmdW5kZWQEAAAAB2JhbGFuY2UJAQAAABdnZXRWYWx1ZVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBAAAAAZhbW91bnQJAQAAABZnZXRWYWx1ZVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UEAAAAC3dpdGhkcmF3QW10AwkAAGcAAAACAAAAAAAAAAAACQAAZQAAAAIFAAAAB2JhbGFuY2UFAAAABmFtb3VudAUAAAAHYmFsYW5jZQUAAAAGYW1vdW50BAAAAApuZXdCYWxhbmNlCQAAZQAAAAIFAAAAB2JhbGFuY2UFAAAAC3dpdGhkcmF3QW10AwkAAGYAAAACAAAAAAAAAAAABQAAAApuZXdCYWxhbmNlCQAAAgAAAAECAAAAHE5vdCBlbm91Z2ggZnVuZHMgdG8gd2l0aGRyYXcEAAAAEmtleVN1cHBsaWVyQmFsYW5jZQkBAAAAFWdldEtleVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBAAAABFrZXlDb3Vwb25GdW5kUGFpZAkBAAAAFmdldEtleVB1cmNoYXNlRnVuZFBhaWQAAAABBQAAAAhwdXJjaGFzZQkABEwAAAACCQEAAAAMQm9vbGVhbkVudHJ5AAAAAgUAAAARa2V5Q291cG9uRnVuZFBhaWQGCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlTdXBwbGllckJhbGFuY2UFAAAACm5ld0JhbGFuY2UJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwgFAAAAAWkAAAAGY2FsbGVyBQAAAAt3aXRoZHJhd0FtdAUAAAAEdW5pdAUAAAADbmlsAAAAAWkBAAAACnZvdGVDb21taXQAAAACAAAABGl0ZW0AAAAEaGFzaAQA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", "height": 1660346, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: GnLgYtBkEsz6N5C8CHEZcMQ9SwKFRdoufwhFtn6GjpBT Next: none Diff:
OldNewDifferences
9595 func H (z) = (z + "_voteround")
9696
9797
98-func I (J,z) = (((J + "_") + z) + "_counter")
98+func I (J,z) = (((J + "_") + z) + "_purchased")
9999
100100
101-func K (v) = (v + "_balance")
101+func K (J,z) = (((J + "_") + z) + "_counter")
102102
103103
104-func L (v,z,J,M) = ("purchase_" + toBase58String(sha256(toBytes(((((((v + "_") + z) + "_") + J) + "_") + toString(M))))))
104+func L (v) = (v + "_balance")
105105
106106
107-func N (O) = (O + "_status")
107+func M (v,z,J,N) = ("purchase_" + toBase58String(sha256(toBytes(((((((v + "_") + z) + "_") + J) + "_") + toString(N))))))
108108
109109
110-func P (O) = (O + "_item")
110+func O (P) = (P + "_status")
111111
112112
113-func Q (O) = (O + "_supplier")
113+func Q (P) = (P + "_item")
114114
115115
116-func R (O) = (O + "_user")
116+func R (P) = (P + "_supplier")
117117
118118
119-func S (O) = (O + "_amount")
119+func S (P) = (P + "_user")
120120
121121
122-func T (O) = (O + "_timestamp")
122+func T (P) = (P + "_amount")
123123
124124
125-func U (O) = (O + "_assetId")
125+func U (P) = (P + "_timestamp")
126126
127127
128-func V (O) = (O + "_fundpaid")
128+func V (P) = (P + "_assetId")
129129
130130
131-func W (X) = (("coupon_" + X) + "_purchase")
131+func W (P) = (P + "_fundpaid")
132132
133133
134-func Y (X) = (("coupon_" + X) + "_item")
134+func X (Y) = (("coupon_" + Y) + "_purchase")
135135
136136
137-func Z (z,aa) = (((("vote" + z) + "[") + toString(aa)) + "]")
137+func Z (Y) = (("coupon_" + Y) + "_item")
138138
139139
140-func ab (ac) = (ac + "_cmtcnt")
140+func aa (z,ab) = (((("vote" + z) + "[") + toString(ab)) + "]")
141141
142142
143-func ad (ac) = (ac + "_status")
143+func ac (ad) = (ad + "_cmtcnt")
144144
145145
146-func ae (ac,af) = ((ac + "_res:") + af)
146+func ae (ad) = (ad + "_status")
147147
148148
149-func ag (ac,J) = (((ac + "_") + J) + "_commit")
149+func af (ad,ag) = ((ad + "_res:") + ag)
150150
151151
152-func ah (ac,J) = (((ac + "_") + J) + "_reveal")
152+func ah (ad,J) = (((ad + "_") + J) + "_commit")
153153
154154
155-func ai (v) = p(K(v))
155+func ai (ad,J) = (((ad + "_") + J) + "_reveal")
156156
157157
158-func aj (J,z) = p(I(J, z))
158+func aj (v) = p(L(v))
159159
160160
161-func ak (z) = getIntegerValue(this, B(z))
161+func ak (J,z) = p(K(J, z))
162162
163163
164-func al (z) = l(y(z))
164+func al (J,z) = q(I(J, z))
165165
166166
167-func am (z) = p(D(z))
167+func am (z) = getIntegerValue(this, B(z))
168168
169169
170-func an (z) = l(A(z))
170+func an (z) = l(y(z))
171171
172172
173-func ao (z) = p(E(z))
173+func ao (z) = p(D(z))
174174
175175
176-func ap (z) = q(F(z))
176+func ap (z) = l(A(z))
177177
178178
179-func aq (z) = q(G(z))
179+func aq (z) = p(E(z))
180180
181181
182-func ar (O) = l(N(O))
182+func ar (z) = q(F(z))
183183
184184
185-func as (O) = getStringValue(this, P(O))
185+func as (z) = q(G(z))
186186
187187
188-func at (O) = getStringValue(this, Q(O))
188+func at (P) = l(O(P))
189189
190190
191-func au (O) = getStringValue(this, R(O))
191+func au (P) = getStringValue(this, Q(P))
192192
193193
194-func av (O) = getIntegerValue(this, S(O))
194+func av (P) = getStringValue(this, R(P))
195195
196196
197-func aw (O) = p(T(O))
197+func aw (P) = getStringValue(this, S(P))
198198
199199
200-func ax (O) = l(U(O))
200+func ax (P) = getIntegerValue(this, T(P))
201201
202202
203-func ay (O) = q(V(O))
203+func ay (P) = p(U(P))
204204
205205
206-func az (X) = l(W(X))
206+func az (P) = l(V(P))
207207
208208
209-func aA (z) = p(H(z))
209+func aA (P) = q(W(P))
210210
211211
212-func aB (ac) = l(ad(ac))
212+func aB (Y) = l(X(Y))
213213
214214
215-func aC (ac,af) = p(ae(ac, af))
215+func aC (z) = p(H(z))
216216
217217
218-func aD (ac) = p(ab(ac))
218+func aD (ad) = l(ae(ad))
219219
220220
221-func aE (ac,J) = l(ag(ac, J))
221+func aE (ad,ag) = p(af(ad, ag))
222222
223223
224-func aF (ac,J) = l(ah(ac, J))
224+func aF (ad) = p(ac(ad))
225225
226226
227-@Callable(aG)
228-func registerSupplier (aH) = {
229- let v = toBase58String(aG.caller.bytes)
227+func aG (ad,J) = l(ah(ad, J))
228+
229+
230+func aH (ad,J) = l(ai(ad, J))
231+
232+
233+@Callable(aI)
234+func registerSupplier (aJ) = {
235+ let v = toBase58String(aI.caller.bytes)
230236 let s = t(v)
231237 if ((s != a))
232238 then throw("This address has already registred as supplier")
233- else [StringEntry(r(v), aH)]
239+ else [StringEntry(r(v), aJ)]
234240 }
235241
236242
237243
238-@Callable(aG)
239-func addItem (w,aI,aH,aJ) = {
240- let v = toBase58String(aG.caller.bytes)
244+@Callable(aI)
245+func addItem (w,aK,aJ,aL) = {
246+ let v = toBase58String(aI.caller.bytes)
241247 let s = t(v)
242248 let z = u(v, w)
243249 if ((s == a))
244250 then throw("You should register as supplier to add an item")
245- else if ((0 >= aI))
251+ else if ((0 >= aK))
246252 then throw("Purchase amount cannot be less than item price")
247- else if ((al(z) != a))
253+ else if ((an(z) != a))
248254 then throw("An item already exists")
249- else [StringEntry(y(z), v), StringEntry(A(z), w), IntegerEntry(B(z), aI), StringEntry(C(z), aH), IntegerEntry(D(z), aJ), BooleanEntry(G(z), true)]
255+ else [StringEntry(y(z), v), StringEntry(A(z), w), IntegerEntry(B(z), aK), StringEntry(C(z), aJ), IntegerEntry(D(z), aL), BooleanEntry(G(z), true)]
250256 }
251257
252258
253259
254-@Callable(aG)
255-func updateItem (z,w,aI,aH,aJ) = {
256- let v = toBase58String(aG.caller.bytes)
260+@Callable(aI)
261+func updateItem (z,w,aK,aJ,aL) = {
262+ let v = toBase58String(aI.caller.bytes)
257263 let s = t(v)
258- let aK = al(z)
259- let aL = if ((an(z) == a))
264+ let aM = an(z)
265+ let aN = if ((ap(z) == a))
260266 then true
261- else (ap(z) == true)
267+ else (ar(z) == true)
262268 if ((s == a))
263269 then throw("You should register as supplier to remove an item")
264- else if (aL)
270+ else if (aN)
265271 then throw(("Item does not exists or has been removed " + z))
266- else if ((v != aK))
272+ else if ((v != aM))
267273 then throw(("You don't owned item " + z))
268- else [StringEntry(A(z), w), IntegerEntry(B(z), aI), StringEntry(C(z), aH), IntegerEntry(D(z), aJ)]
274+ else [StringEntry(A(z), w), IntegerEntry(B(z), aK), StringEntry(C(z), aJ), IntegerEntry(D(z), aL)]
269275 }
270276
271277
272278
273-@Callable(aG)
279+@Callable(aI)
274280 func removeItem (z) = {
275- let v = toBase58String(aG.caller.bytes)
281+ let v = toBase58String(aI.caller.bytes)
276282 let s = t(v)
277- let aK = al(z)
278- let aL = if ((an(z) == a))
283+ let aM = an(z)
284+ let aN = if ((ap(z) == a))
279285 then true
280- else (ap(z) == true)
286+ else (ar(z) == true)
281287 if ((s == a))
282288 then throw("You should register as supplier to remove an item")
283- else if (aL)
289+ else if (aN)
284290 then throw(("Item does not exists or has been removed " + z))
285- else if ((v != aK))
291+ else if ((v != aM))
286292 then throw(("You don't owned item " + z))
287293 else {
288- let aM = ao(z)
289- if ((aM == 0))
294+ let aO = aq(z)
295+ if ((aO == 0))
290296 then [DeleteEntry(y(z)), DeleteEntry(A(z)), DeleteEntry(B(z)), DeleteEntry(C(z)), DeleteEntry(D(z)), DeleteEntry(G(z))]
291297 else [BooleanEntry(F(z), true)]
292298 }
294300
295301
296302
297-@Callable(aG)
303+@Callable(aI)
298304 func purchase (z) = {
299- let aN = aG.payments[0]
300- let aL = if ((an(z) == a))
305+ let aP = aI.payments[0]
306+ let aN = if ((ap(z) == a))
301307 then true
302- else (ap(z) == true)
303- if (aL)
308+ else (ar(z) == true)
309+ if (aN)
304310 then throw(("Item does not exists or has been removed " + z))
305- else if (isDefined(aN.assetId))
311+ else if (isDefined(aP.assetId))
306312 then throw("You can buy tokens only with Waves tokens")
307313 else {
308- let J = toBase58String(aG.caller.bytes)
309- let aI = ak(z)
310- let v = al(z)
311- let aJ = am(z)
312- if (if ((aJ > 0))
313- then (lastBlock.timestamp >= aJ)
314+ let J = toBase58String(aI.caller.bytes)
315+ let aK = am(z)
316+ let v = an(z)
317+ let aL = ao(z)
318+ if (if ((aL > 0))
319+ then (lastBlock.timestamp >= aL)
314320 else false)
315321 then throw("Coupon expired")
316- else if ((aI > aN.amount))
322+ else if ((aK > aP.amount))
317323 then throw("Purchase amount cannot be less than item price")
318- else if ((aN.amount > aI))
324+ else if ((aP.amount > aK))
319325 then throw("Purchase amount cannot be higher than item price")
320326 else if ((v == a))
321327 then throw("Supplier does not exists")
322328 else {
323- let aO = I(J, z)
324- let aP = (aj(J, z) + 1)
325- let O = L(v, z, J, aP)
326- let aQ = N(O)
327- let aR = P(O)
328- let aS = Q(O)
329- let aT = R(O)
330- let aU = S(O)
331- let aV = T(O)
332-[IntegerEntry(aO, aP), StringEntry(aQ, i), StringEntry(aR, z), StringEntry(aS, v), StringEntry(aT, J), IntegerEntry(aU, aN.amount), IntegerEntry(aV, lastBlock.timestamp)]
329+ let aQ = K(J, z)
330+ let aR = (ak(J, z) + 1)
331+ let P = M(v, z, J, aR)
332+ let aS = O(P)
333+ let aT = Q(P)
334+ let aU = R(P)
335+ let aV = S(P)
336+ let aW = T(P)
337+ let aX = U(P)
338+[IntegerEntry(aQ, aR), StringEntry(aS, i), StringEntry(aT, z), StringEntry(aU, v), StringEntry(aV, J), IntegerEntry(aW, aP.amount), IntegerEntry(aX, lastBlock.timestamp)]
333339 }
334340 }
335341 }
336342
337343
338344
339-@Callable(aG)
340-func rejectPurchase (O) = {
341- let aW = toBase58String(aG.caller.bytes)
342- let aX = ar(O)
343- let v = at(O)
344- let z = as(O)
345- let aL = (z == a)
346- if (aL)
347- then throw(("Purchase not found " + O))
345+@Callable(aI)
346+func rejectPurchase (P) = {
347+ let aY = toBase58String(aI.caller.bytes)
348+ let aZ = at(P)
349+ let v = av(P)
350+ let z = au(P)
351+ let aN = (z == a)
352+ if (aN)
353+ then throw(("Purchase not found " + P))
348354 else if (if ((v == a))
349355 then true
350- else (aW != v))
356+ else (aY != v))
351357 then throw("Your are not the owner of this item")
352- else if ((aX != i))
358+ else if ((aZ != i))
353359 then throw("You cannot reject this purchased")
354360 else {
355- let aQ = N(O)
356- let aU = S(O)
357- let aY = E(z)
358- let J = au(O)
359- let aZ = av(O)
360- let ba = (ai(v) - aZ)
361- let bb = (ao(z) - 1)
362- let bc = addressFromStringValue(J)
363-[StringEntry(aQ, j), IntegerEntry(aU, 0), ScriptTransfer(bc, aZ, unit)]
361+ let aS = O(P)
362+ let aW = T(P)
363+ let ba = E(z)
364+ let J = aw(P)
365+ let bb = ax(P)
366+ let bc = (aj(v) - bb)
367+ let bd = (aq(z) - 1)
368+ let be = addressFromStringValue(J)
369+[StringEntry(aS, j), IntegerEntry(aW, 0), ScriptTransfer(be, bb, unit)]
364370 }
365371 }
366372
367373
368374
369-@Callable(aG)
370-func acceptPurchase (O,X) = {
371- let aW = toBase58String(aG.caller.bytes)
372- let aX = ar(O)
373- let v = at(O)
374- let z = as(O)
375- let aJ = am(z)
376- let aL = (z == a)
377- if (aL)
378- then throw(("Purchase not found " + O))
375+@Callable(aI)
376+func acceptPurchase (P,Y) = {
377+ let aY = toBase58String(aI.caller.bytes)
378+ let aZ = at(P)
379+ let v = av(P)
380+ let z = au(P)
381+ let aL = ao(z)
382+ let aN = (z == a)
383+ if (aN)
384+ then throw(("Purchase not found " + P))
379385 else if (if ((v == a))
380386 then true
381- else (aW != v))
387+ else (aY != v))
382388 then throw("Your are not the owner of this item")
383- else if ((aX != i))
389+ else if ((aZ != i))
384390 then throw("You cannot reject this purchased")
385- else if (if ((aJ > 0))
386- then (lastBlock.timestamp >= aJ)
391+ else if (if ((aL > 0))
392+ then (lastBlock.timestamp >= aL)
387393 else false)
388394 then throw("Coupon expired")
389395 else {
390- let aQ = N(O)
391- let bd = U(O)
392- let be = K(v)
393- let aY = E(z)
394- let bf = W(X)
395- let bg = Y(X)
396- let aZ = av(O)
397- let bh = (ai(v) + aZ)
398- let bb = (ao(z) + 1)
399- let J = au(O)
400- let bc = addressFromStringValue(J)
401-[StringEntry(aQ, k), StringEntry(bf, O), StringEntry(bg, z), StringEntry(bd, X), IntegerEntry(be, bh), IntegerEntry(aY, bb)]
396+ let aS = O(P)
397+ let bf = V(P)
398+ let bg = L(v)
399+ let ba = E(z)
400+ let bh = X(Y)
401+ let bi = Z(Y)
402+ let bb = ax(P)
403+ let bj = (aj(v) + bb)
404+ let bd = (aq(z) + 1)
405+ let J = aw(P)
406+ let be = addressFromStringValue(J)
407+[StringEntry(aS, k), StringEntry(bh, P), StringEntry(bi, z), StringEntry(bf, Y), IntegerEntry(bg, bj), IntegerEntry(ba, bd), BooleanEntry(I(J, z), true)]
402408 }
403409 }
404410
405411
406412
407-@Callable(aG)
413+@Callable(aI)
408414 func burn () = {
409- let aW = toBase58String(aG.caller.bytes)
410- let aN = if ((size(aG.payments) == 1))
411- then aG.payments[0]
415+ let aY = toBase58String(aI.caller.bytes)
416+ let aP = if ((size(aI.payments) == 1))
417+ then aI.payments[0]
412418 else throw("An attached coupon is required as payment[0]")
413- if ((isDefined(aN.assetId) == false))
419+ if ((isDefined(aP.assetId) == false))
414420 then throw("Need a coupon to burn")
415421 else {
416- let bi = {
417- let n = aN.assetId
422+ let bk = {
423+ let n = aP.assetId
418424 if ($isInstanceOf(n, "ByteVector"))
419425 then {
420- let bj = n
421- bj
426+ let bl = n
427+ bl
422428 }
423429 else throw("Need a coupon to burn")
424430 }
425- let X = toBase58String(bi)
426- let O = az(X)
427- let v = at(O)
428- let bk = ay(O)
429- if ((aW != v))
431+ let Y = toBase58String(bk)
432+ let P = aB(Y)
433+ let v = av(P)
434+ let bm = aA(P)
435+ if ((aY != v))
430436 then throw("Your are not the supplier for this coupon")
431- else if (bk)
432- then [Burn(bi, 1)]
437+ else if (bm)
438+ then [Burn(bk, 1)]
433439 else {
434- let bl = ai(v)
435- let aZ = av(O)
436- let bm = if ((0 >= (bl - aZ)))
437- then bl
438- else aZ
439- let bh = (bl - bm)
440- if ((0 > bh))
440+ let bn = aj(v)
441+ let bb = ax(P)
442+ let bo = if ((0 >= (bn - bb)))
443+ then bn
444+ else bb
445+ let bj = (bn - bo)
446+ if ((0 > bj))
441447 then throw("Not enough funds to withdraw")
442448 else {
443- let be = K(v)
444- let bn = V(O)
445-[Burn(bi, 1), BooleanEntry(bn, true), IntegerEntry(be, bh), ScriptTransfer(aG.caller, bm, unit)]
449+ let bg = L(v)
450+ let bp = W(P)
451+[Burn(bk, 1), BooleanEntry(bp, true), IntegerEntry(bg, bj), ScriptTransfer(aI.caller, bo, unit)]
446452 }
447453 }
448454 }
450456
451457
452458
453-@Callable(aG)
454-func withdraw (X) = {
455- let aW = toBase58String(aG.caller.bytes)
456- let s = t(aW)
459+@Callable(aI)
460+func withdraw (Y) = {
461+ let aY = toBase58String(aI.caller.bytes)
462+ let s = t(aY)
457463 if ((s == a))
458464 then throw("You are not registred as supplier")
459465 else {
460- let O = az(X)
461- let v = at(O)
462- let bk = ay(O)
463- if ((aW != v))
466+ let P = aB(Y)
467+ let v = av(P)
468+ let bm = aA(P)
469+ if ((aY != v))
464470 then throw("Your are not the supplier for this coupon")
465- else if (bk)
471+ else if (bm)
466472 then throw("Fund has already been paid")
467473 else {
468- let z = as(O)
469- let aJ = am(z)
470- let bo = {
471- let n = assetInfo(fromBase58String(X))
474+ let z = au(P)
475+ let aL = ao(z)
476+ let bq = {
477+ let n = assetInfo(fromBase58String(Y))
472478 if ($isInstanceOf(n, "Asset"))
473479 then {
474480 let o = n
476482 }
477483 else throw("Cannot find asset info")
478484 }
479- let bp = if (if ((aJ > 0))
480- then (lastBlock.timestamp >= aJ)
485+ let br = if (if ((aL > 0))
486+ then (lastBlock.timestamp >= aL)
481487 else false)
482488 then true
483- else if ((bo.quantity == 0))
489+ else if ((bq.quantity == 0))
484490 then true
485491 else false
486- if (!(bp))
492+ if (!(br))
487493 then throw("This coupon cannot be funded")
488494 else {
489- let bl = ai(v)
490- let aZ = av(O)
491- let bm = if ((0 >= (bl - aZ)))
492- then bl
493- else aZ
494- let bh = (bl - bm)
495- if ((0 > bh))
495+ let bn = aj(v)
496+ let bb = ax(P)
497+ let bo = if ((0 >= (bn - bb)))
498+ then bn
499+ else bb
500+ let bj = (bn - bo)
501+ if ((0 > bj))
496502 then throw("Not enough funds to withdraw")
497503 else {
498- let be = K(v)
499- let bn = V(O)
500-[BooleanEntry(bn, true), IntegerEntry(be, bh), ScriptTransfer(aG.caller, bm, unit)]
504+ let bg = L(v)
505+ let bp = W(P)
506+[BooleanEntry(bp, true), IntegerEntry(bg, bj), ScriptTransfer(aI.caller, bo, unit)]
501507 }
502508 }
503509 }
506512
507513
508514
509-@Callable(aG)
510-func voteCommit (z,bq) = {
511- let J = toBase58String(aG.caller.bytes)
512- let aa = aA(z)
513- let ac = Z(z, aa)
514- let aX = aB(ac)
515- let br = aD(ac)
515+@Callable(aI)
516+func voteCommit (z,bs) = {
517+ let J = toBase58String(aI.caller.bytes)
518+ let ab = aC(z)
519+ let ad = aa(z, ab)
520+ let aZ = aD(ad)
521+ let bt = aF(ad)
516522 if ((y(z) == a))
517523 then throw("Item does not exists")
518- else if (if ((aX != a))
519- then (aX != f)
524+ else if (if ((aZ != a))
525+ then (aZ != f)
520526 else false)
521527 then throw("Voting is not active for this item now")
522- else if ((aE(ac, J) != a))
528+ else if ((aG(ad, J) != a))
523529 then throw("You voted already")
524- else if ((br >= b))
530+ else if ((bt >= b))
525531 then throw("Reached max number of voters")
526532 else {
527- let bs = (br + 1)
528- let bt = if ((bs == b))
533+ let bu = (bt + 1)
534+ let bv = if ((bu == b))
529535 then g
530536 else f
531-[StringEntry(ag(ac, J), bq), IntegerEntry(ab(ac), bs), StringEntry(ad(ac), bt)]
537+[StringEntry(ah(ad, J), bs), IntegerEntry(ac(ad), bu), StringEntry(ae(ad), bv)]
532538 }
533539 }
534540
535541
536542
537-@Callable(aG)
538-func voteReveal (z,af,bu) = {
539- let J = toBase58String(aG.caller.bytes)
540- let aa = aA(z)
541- let ac = Z(z, aa)
542- let aX = aB(ac)
543- let bv = (aC(ac, af) + 1)
544- let bw = toBase58String(sha256(toBytes(((z + af) + bu))))
545- if ((bw != aE(ac, J)))
543+@Callable(aI)
544+func voteReveal (z,ag,bw) = {
545+ let J = toBase58String(aI.caller.bytes)
546+ let ab = aC(z)
547+ let ad = aa(z, ab)
548+ let aZ = aD(ad)
549+ let bx = (aE(ad, ag) + 1)
550+ let by = toBase58String(sha256(toBytes(((z + ag) + bw))))
551+ if ((by != aG(ad, J)))
546552 then throw("Reveal data is not valid")
547- else if ((b > aD(ac)))
553+ else if ((b > aF(ad)))
548554 then throw("Max number of voters not reached")
549- else if ((aF(ac, J) != a))
555+ else if ((aH(ad, J) != a))
550556 then throw("You voted already")
551- else if (if ((aX != f))
552- then (aX != g)
557+ else if (if ((aZ != f))
558+ then (aZ != g)
553559 else false)
554560 then throw("Voting is not active for this item now")
555- else if (if ((af != d))
556- then (af != e)
561+ else if (if ((ag != d))
562+ then (ag != e)
557563 else false)
558564 then throw("Provided voting option is incorrect")
559- else if ((bv >= c))
565+ else if ((bx >= c))
560566 then {
561- let bx = if ((af == d))
567+ let bz = if ((ag == d))
562568 then true
563569 else false
564-[StringEntry(ah(ac, J), af), IntegerEntry(ae(ac, af), bv), IntegerEntry(H(z), (aa + 1)), StringEntry(ad(ac), af), BooleanEntry(G(z), bx)]
570+[StringEntry(ai(ad, J), ag), IntegerEntry(af(ad, ag), bx), IntegerEntry(H(z), (ab + 1)), StringEntry(ae(ad), ag), BooleanEntry(G(z), bz)]
565571 }
566- else [StringEntry(ah(ac, J), af), IntegerEntry(ae(ac, af), bv), StringEntry(ad(ac), g)]
572+ else [StringEntry(ai(ad, J), ag), IntegerEntry(af(ad, ag), bx), StringEntry(ae(ad), g)]
567573 }
568574
569575
570-@Verifier(by)
571-func bz () = {
572- let n = by
576+@Verifier(bA)
577+func bB () = {
578+ let n = bA
573579 if ($isInstanceOf(n, "SetScriptTransaction"))
574580 then {
575- let bA = n
576- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
581+ let bC = n
582+ sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
577583 }
578584 else if ($isInstanceOf(n, "IssueTransaction"))
579585 then {
580- let bA = n
581- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
586+ let bC = n
587+ sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
582588 }
583589 else if ($isInstanceOf(n, "TransferTransaction"))
584590 then {
585- let bA = n
586- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
591+ let bC = n
592+ sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
587593 }
588594 else if ($isInstanceOf(n, "DataTransaction"))
589595 then {
590- let bA = n
591- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
596+ let bC = n
597+ false
592598 }
593599 else false
594600 }
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 = "ended"
1919
2020 let i = "approval"
2121
2222 let j = "rejected"
2323
2424 let k = "accepted"
2525
2626 func l (m) = {
2727 let n = getString(this, m)
2828 if ($isInstanceOf(n, "String"))
2929 then {
3030 let o = n
3131 o
3232 }
3333 else a
3434 }
3535
3636
3737 func p (m) = {
3838 let n = getInteger(this, m)
3939 if ($isInstanceOf(n, "Int"))
4040 then {
4141 let o = n
4242 o
4343 }
4444 else 0
4545 }
4646
4747
4848 func q (m) = {
4949 let n = getBoolean(this, m)
5050 if ($isInstanceOf(n, "Boolean"))
5151 then {
5252 let o = n
5353 o
5454 }
5555 else false
5656 }
5757
5858
5959 func r (s) = (s + "_account")
6060
6161
6262 func t (s) = l(r(s))
6363
6464
6565 func u (v,w) = {
6666 let x = (v + w)
6767 ("item_" + toBase58String(sha256(toBytes(x))))
6868 }
6969
7070
7171 func y (z) = (z + "_owner")
7272
7373
7474 func A (z) = (z + "_title")
7575
7676
7777 func B (z) = (z + "_price")
7878
7979
8080 func C (z) = (z + "_data")
8181
8282
8383 func D (z) = (z + "_expiredate")
8484
8585
8686 func E (z) = (z + "_sold")
8787
8888
8989 func F (z) = (z + "_removed")
9090
9191
9292 func G (z) = (z + "_featured")
9393
9494
9595 func H (z) = (z + "_voteround")
9696
9797
98-func I (J,z) = (((J + "_") + z) + "_counter")
98+func I (J,z) = (((J + "_") + z) + "_purchased")
9999
100100
101-func K (v) = (v + "_balance")
101+func K (J,z) = (((J + "_") + z) + "_counter")
102102
103103
104-func L (v,z,J,M) = ("purchase_" + toBase58String(sha256(toBytes(((((((v + "_") + z) + "_") + J) + "_") + toString(M))))))
104+func L (v) = (v + "_balance")
105105
106106
107-func N (O) = (O + "_status")
107+func M (v,z,J,N) = ("purchase_" + toBase58String(sha256(toBytes(((((((v + "_") + z) + "_") + J) + "_") + toString(N))))))
108108
109109
110-func P (O) = (O + "_item")
110+func O (P) = (P + "_status")
111111
112112
113-func Q (O) = (O + "_supplier")
113+func Q (P) = (P + "_item")
114114
115115
116-func R (O) = (O + "_user")
116+func R (P) = (P + "_supplier")
117117
118118
119-func S (O) = (O + "_amount")
119+func S (P) = (P + "_user")
120120
121121
122-func T (O) = (O + "_timestamp")
122+func T (P) = (P + "_amount")
123123
124124
125-func U (O) = (O + "_assetId")
125+func U (P) = (P + "_timestamp")
126126
127127
128-func V (O) = (O + "_fundpaid")
128+func V (P) = (P + "_assetId")
129129
130130
131-func W (X) = (("coupon_" + X) + "_purchase")
131+func W (P) = (P + "_fundpaid")
132132
133133
134-func Y (X) = (("coupon_" + X) + "_item")
134+func X (Y) = (("coupon_" + Y) + "_purchase")
135135
136136
137-func Z (z,aa) = (((("vote" + z) + "[") + toString(aa)) + "]")
137+func Z (Y) = (("coupon_" + Y) + "_item")
138138
139139
140-func ab (ac) = (ac + "_cmtcnt")
140+func aa (z,ab) = (((("vote" + z) + "[") + toString(ab)) + "]")
141141
142142
143-func ad (ac) = (ac + "_status")
143+func ac (ad) = (ad + "_cmtcnt")
144144
145145
146-func ae (ac,af) = ((ac + "_res:") + af)
146+func ae (ad) = (ad + "_status")
147147
148148
149-func ag (ac,J) = (((ac + "_") + J) + "_commit")
149+func af (ad,ag) = ((ad + "_res:") + ag)
150150
151151
152-func ah (ac,J) = (((ac + "_") + J) + "_reveal")
152+func ah (ad,J) = (((ad + "_") + J) + "_commit")
153153
154154
155-func ai (v) = p(K(v))
155+func ai (ad,J) = (((ad + "_") + J) + "_reveal")
156156
157157
158-func aj (J,z) = p(I(J, z))
158+func aj (v) = p(L(v))
159159
160160
161-func ak (z) = getIntegerValue(this, B(z))
161+func ak (J,z) = p(K(J, z))
162162
163163
164-func al (z) = l(y(z))
164+func al (J,z) = q(I(J, z))
165165
166166
167-func am (z) = p(D(z))
167+func am (z) = getIntegerValue(this, B(z))
168168
169169
170-func an (z) = l(A(z))
170+func an (z) = l(y(z))
171171
172172
173-func ao (z) = p(E(z))
173+func ao (z) = p(D(z))
174174
175175
176-func ap (z) = q(F(z))
176+func ap (z) = l(A(z))
177177
178178
179-func aq (z) = q(G(z))
179+func aq (z) = p(E(z))
180180
181181
182-func ar (O) = l(N(O))
182+func ar (z) = q(F(z))
183183
184184
185-func as (O) = getStringValue(this, P(O))
185+func as (z) = q(G(z))
186186
187187
188-func at (O) = getStringValue(this, Q(O))
188+func at (P) = l(O(P))
189189
190190
191-func au (O) = getStringValue(this, R(O))
191+func au (P) = getStringValue(this, Q(P))
192192
193193
194-func av (O) = getIntegerValue(this, S(O))
194+func av (P) = getStringValue(this, R(P))
195195
196196
197-func aw (O) = p(T(O))
197+func aw (P) = getStringValue(this, S(P))
198198
199199
200-func ax (O) = l(U(O))
200+func ax (P) = getIntegerValue(this, T(P))
201201
202202
203-func ay (O) = q(V(O))
203+func ay (P) = p(U(P))
204204
205205
206-func az (X) = l(W(X))
206+func az (P) = l(V(P))
207207
208208
209-func aA (z) = p(H(z))
209+func aA (P) = q(W(P))
210210
211211
212-func aB (ac) = l(ad(ac))
212+func aB (Y) = l(X(Y))
213213
214214
215-func aC (ac,af) = p(ae(ac, af))
215+func aC (z) = p(H(z))
216216
217217
218-func aD (ac) = p(ab(ac))
218+func aD (ad) = l(ae(ad))
219219
220220
221-func aE (ac,J) = l(ag(ac, J))
221+func aE (ad,ag) = p(af(ad, ag))
222222
223223
224-func aF (ac,J) = l(ah(ac, J))
224+func aF (ad) = p(ac(ad))
225225
226226
227-@Callable(aG)
228-func registerSupplier (aH) = {
229- let v = toBase58String(aG.caller.bytes)
227+func aG (ad,J) = l(ah(ad, J))
228+
229+
230+func aH (ad,J) = l(ai(ad, J))
231+
232+
233+@Callable(aI)
234+func registerSupplier (aJ) = {
235+ let v = toBase58String(aI.caller.bytes)
230236 let s = t(v)
231237 if ((s != a))
232238 then throw("This address has already registred as supplier")
233- else [StringEntry(r(v), aH)]
239+ else [StringEntry(r(v), aJ)]
234240 }
235241
236242
237243
238-@Callable(aG)
239-func addItem (w,aI,aH,aJ) = {
240- let v = toBase58String(aG.caller.bytes)
244+@Callable(aI)
245+func addItem (w,aK,aJ,aL) = {
246+ let v = toBase58String(aI.caller.bytes)
241247 let s = t(v)
242248 let z = u(v, w)
243249 if ((s == a))
244250 then throw("You should register as supplier to add an item")
245- else if ((0 >= aI))
251+ else if ((0 >= aK))
246252 then throw("Purchase amount cannot be less than item price")
247- else if ((al(z) != a))
253+ else if ((an(z) != a))
248254 then throw("An item already exists")
249- else [StringEntry(y(z), v), StringEntry(A(z), w), IntegerEntry(B(z), aI), StringEntry(C(z), aH), IntegerEntry(D(z), aJ), BooleanEntry(G(z), true)]
255+ else [StringEntry(y(z), v), StringEntry(A(z), w), IntegerEntry(B(z), aK), StringEntry(C(z), aJ), IntegerEntry(D(z), aL), BooleanEntry(G(z), true)]
250256 }
251257
252258
253259
254-@Callable(aG)
255-func updateItem (z,w,aI,aH,aJ) = {
256- let v = toBase58String(aG.caller.bytes)
260+@Callable(aI)
261+func updateItem (z,w,aK,aJ,aL) = {
262+ let v = toBase58String(aI.caller.bytes)
257263 let s = t(v)
258- let aK = al(z)
259- let aL = if ((an(z) == a))
264+ let aM = an(z)
265+ let aN = if ((ap(z) == a))
260266 then true
261- else (ap(z) == true)
267+ else (ar(z) == true)
262268 if ((s == a))
263269 then throw("You should register as supplier to remove an item")
264- else if (aL)
270+ else if (aN)
265271 then throw(("Item does not exists or has been removed " + z))
266- else if ((v != aK))
272+ else if ((v != aM))
267273 then throw(("You don't owned item " + z))
268- else [StringEntry(A(z), w), IntegerEntry(B(z), aI), StringEntry(C(z), aH), IntegerEntry(D(z), aJ)]
274+ else [StringEntry(A(z), w), IntegerEntry(B(z), aK), StringEntry(C(z), aJ), IntegerEntry(D(z), aL)]
269275 }
270276
271277
272278
273-@Callable(aG)
279+@Callable(aI)
274280 func removeItem (z) = {
275- let v = toBase58String(aG.caller.bytes)
281+ let v = toBase58String(aI.caller.bytes)
276282 let s = t(v)
277- let aK = al(z)
278- let aL = if ((an(z) == a))
283+ let aM = an(z)
284+ let aN = if ((ap(z) == a))
279285 then true
280- else (ap(z) == true)
286+ else (ar(z) == true)
281287 if ((s == a))
282288 then throw("You should register as supplier to remove an item")
283- else if (aL)
289+ else if (aN)
284290 then throw(("Item does not exists or has been removed " + z))
285- else if ((v != aK))
291+ else if ((v != aM))
286292 then throw(("You don't owned item " + z))
287293 else {
288- let aM = ao(z)
289- if ((aM == 0))
294+ let aO = aq(z)
295+ if ((aO == 0))
290296 then [DeleteEntry(y(z)), DeleteEntry(A(z)), DeleteEntry(B(z)), DeleteEntry(C(z)), DeleteEntry(D(z)), DeleteEntry(G(z))]
291297 else [BooleanEntry(F(z), true)]
292298 }
293299 }
294300
295301
296302
297-@Callable(aG)
303+@Callable(aI)
298304 func purchase (z) = {
299- let aN = aG.payments[0]
300- let aL = if ((an(z) == a))
305+ let aP = aI.payments[0]
306+ let aN = if ((ap(z) == a))
301307 then true
302- else (ap(z) == true)
303- if (aL)
308+ else (ar(z) == true)
309+ if (aN)
304310 then throw(("Item does not exists or has been removed " + z))
305- else if (isDefined(aN.assetId))
311+ else if (isDefined(aP.assetId))
306312 then throw("You can buy tokens only with Waves tokens")
307313 else {
308- let J = toBase58String(aG.caller.bytes)
309- let aI = ak(z)
310- let v = al(z)
311- let aJ = am(z)
312- if (if ((aJ > 0))
313- then (lastBlock.timestamp >= aJ)
314+ let J = toBase58String(aI.caller.bytes)
315+ let aK = am(z)
316+ let v = an(z)
317+ let aL = ao(z)
318+ if (if ((aL > 0))
319+ then (lastBlock.timestamp >= aL)
314320 else false)
315321 then throw("Coupon expired")
316- else if ((aI > aN.amount))
322+ else if ((aK > aP.amount))
317323 then throw("Purchase amount cannot be less than item price")
318- else if ((aN.amount > aI))
324+ else if ((aP.amount > aK))
319325 then throw("Purchase amount cannot be higher than item price")
320326 else if ((v == a))
321327 then throw("Supplier does not exists")
322328 else {
323- let aO = I(J, z)
324- let aP = (aj(J, z) + 1)
325- let O = L(v, z, J, aP)
326- let aQ = N(O)
327- let aR = P(O)
328- let aS = Q(O)
329- let aT = R(O)
330- let aU = S(O)
331- let aV = T(O)
332-[IntegerEntry(aO, aP), StringEntry(aQ, i), StringEntry(aR, z), StringEntry(aS, v), StringEntry(aT, J), IntegerEntry(aU, aN.amount), IntegerEntry(aV, lastBlock.timestamp)]
329+ let aQ = K(J, z)
330+ let aR = (ak(J, z) + 1)
331+ let P = M(v, z, J, aR)
332+ let aS = O(P)
333+ let aT = Q(P)
334+ let aU = R(P)
335+ let aV = S(P)
336+ let aW = T(P)
337+ let aX = U(P)
338+[IntegerEntry(aQ, aR), StringEntry(aS, i), StringEntry(aT, z), StringEntry(aU, v), StringEntry(aV, J), IntegerEntry(aW, aP.amount), IntegerEntry(aX, lastBlock.timestamp)]
333339 }
334340 }
335341 }
336342
337343
338344
339-@Callable(aG)
340-func rejectPurchase (O) = {
341- let aW = toBase58String(aG.caller.bytes)
342- let aX = ar(O)
343- let v = at(O)
344- let z = as(O)
345- let aL = (z == a)
346- if (aL)
347- then throw(("Purchase not found " + O))
345+@Callable(aI)
346+func rejectPurchase (P) = {
347+ let aY = toBase58String(aI.caller.bytes)
348+ let aZ = at(P)
349+ let v = av(P)
350+ let z = au(P)
351+ let aN = (z == a)
352+ if (aN)
353+ then throw(("Purchase not found " + P))
348354 else if (if ((v == a))
349355 then true
350- else (aW != v))
356+ else (aY != v))
351357 then throw("Your are not the owner of this item")
352- else if ((aX != i))
358+ else if ((aZ != i))
353359 then throw("You cannot reject this purchased")
354360 else {
355- let aQ = N(O)
356- let aU = S(O)
357- let aY = E(z)
358- let J = au(O)
359- let aZ = av(O)
360- let ba = (ai(v) - aZ)
361- let bb = (ao(z) - 1)
362- let bc = addressFromStringValue(J)
363-[StringEntry(aQ, j), IntegerEntry(aU, 0), ScriptTransfer(bc, aZ, unit)]
361+ let aS = O(P)
362+ let aW = T(P)
363+ let ba = E(z)
364+ let J = aw(P)
365+ let bb = ax(P)
366+ let bc = (aj(v) - bb)
367+ let bd = (aq(z) - 1)
368+ let be = addressFromStringValue(J)
369+[StringEntry(aS, j), IntegerEntry(aW, 0), ScriptTransfer(be, bb, unit)]
364370 }
365371 }
366372
367373
368374
369-@Callable(aG)
370-func acceptPurchase (O,X) = {
371- let aW = toBase58String(aG.caller.bytes)
372- let aX = ar(O)
373- let v = at(O)
374- let z = as(O)
375- let aJ = am(z)
376- let aL = (z == a)
377- if (aL)
378- then throw(("Purchase not found " + O))
375+@Callable(aI)
376+func acceptPurchase (P,Y) = {
377+ let aY = toBase58String(aI.caller.bytes)
378+ let aZ = at(P)
379+ let v = av(P)
380+ let z = au(P)
381+ let aL = ao(z)
382+ let aN = (z == a)
383+ if (aN)
384+ then throw(("Purchase not found " + P))
379385 else if (if ((v == a))
380386 then true
381- else (aW != v))
387+ else (aY != v))
382388 then throw("Your are not the owner of this item")
383- else if ((aX != i))
389+ else if ((aZ != i))
384390 then throw("You cannot reject this purchased")
385- else if (if ((aJ > 0))
386- then (lastBlock.timestamp >= aJ)
391+ else if (if ((aL > 0))
392+ then (lastBlock.timestamp >= aL)
387393 else false)
388394 then throw("Coupon expired")
389395 else {
390- let aQ = N(O)
391- let bd = U(O)
392- let be = K(v)
393- let aY = E(z)
394- let bf = W(X)
395- let bg = Y(X)
396- let aZ = av(O)
397- let bh = (ai(v) + aZ)
398- let bb = (ao(z) + 1)
399- let J = au(O)
400- let bc = addressFromStringValue(J)
401-[StringEntry(aQ, k), StringEntry(bf, O), StringEntry(bg, z), StringEntry(bd, X), IntegerEntry(be, bh), IntegerEntry(aY, bb)]
396+ let aS = O(P)
397+ let bf = V(P)
398+ let bg = L(v)
399+ let ba = E(z)
400+ let bh = X(Y)
401+ let bi = Z(Y)
402+ let bb = ax(P)
403+ let bj = (aj(v) + bb)
404+ let bd = (aq(z) + 1)
405+ let J = aw(P)
406+ let be = addressFromStringValue(J)
407+[StringEntry(aS, k), StringEntry(bh, P), StringEntry(bi, z), StringEntry(bf, Y), IntegerEntry(bg, bj), IntegerEntry(ba, bd), BooleanEntry(I(J, z), true)]
402408 }
403409 }
404410
405411
406412
407-@Callable(aG)
413+@Callable(aI)
408414 func burn () = {
409- let aW = toBase58String(aG.caller.bytes)
410- let aN = if ((size(aG.payments) == 1))
411- then aG.payments[0]
415+ let aY = toBase58String(aI.caller.bytes)
416+ let aP = if ((size(aI.payments) == 1))
417+ then aI.payments[0]
412418 else throw("An attached coupon is required as payment[0]")
413- if ((isDefined(aN.assetId) == false))
419+ if ((isDefined(aP.assetId) == false))
414420 then throw("Need a coupon to burn")
415421 else {
416- let bi = {
417- let n = aN.assetId
422+ let bk = {
423+ let n = aP.assetId
418424 if ($isInstanceOf(n, "ByteVector"))
419425 then {
420- let bj = n
421- bj
426+ let bl = n
427+ bl
422428 }
423429 else throw("Need a coupon to burn")
424430 }
425- let X = toBase58String(bi)
426- let O = az(X)
427- let v = at(O)
428- let bk = ay(O)
429- if ((aW != v))
431+ let Y = toBase58String(bk)
432+ let P = aB(Y)
433+ let v = av(P)
434+ let bm = aA(P)
435+ if ((aY != v))
430436 then throw("Your are not the supplier for this coupon")
431- else if (bk)
432- then [Burn(bi, 1)]
437+ else if (bm)
438+ then [Burn(bk, 1)]
433439 else {
434- let bl = ai(v)
435- let aZ = av(O)
436- let bm = if ((0 >= (bl - aZ)))
437- then bl
438- else aZ
439- let bh = (bl - bm)
440- if ((0 > bh))
440+ let bn = aj(v)
441+ let bb = ax(P)
442+ let bo = if ((0 >= (bn - bb)))
443+ then bn
444+ else bb
445+ let bj = (bn - bo)
446+ if ((0 > bj))
441447 then throw("Not enough funds to withdraw")
442448 else {
443- let be = K(v)
444- let bn = V(O)
445-[Burn(bi, 1), BooleanEntry(bn, true), IntegerEntry(be, bh), ScriptTransfer(aG.caller, bm, unit)]
449+ let bg = L(v)
450+ let bp = W(P)
451+[Burn(bk, 1), BooleanEntry(bp, true), IntegerEntry(bg, bj), ScriptTransfer(aI.caller, bo, unit)]
446452 }
447453 }
448454 }
449455 }
450456
451457
452458
453-@Callable(aG)
454-func withdraw (X) = {
455- let aW = toBase58String(aG.caller.bytes)
456- let s = t(aW)
459+@Callable(aI)
460+func withdraw (Y) = {
461+ let aY = toBase58String(aI.caller.bytes)
462+ let s = t(aY)
457463 if ((s == a))
458464 then throw("You are not registred as supplier")
459465 else {
460- let O = az(X)
461- let v = at(O)
462- let bk = ay(O)
463- if ((aW != v))
466+ let P = aB(Y)
467+ let v = av(P)
468+ let bm = aA(P)
469+ if ((aY != v))
464470 then throw("Your are not the supplier for this coupon")
465- else if (bk)
471+ else if (bm)
466472 then throw("Fund has already been paid")
467473 else {
468- let z = as(O)
469- let aJ = am(z)
470- let bo = {
471- let n = assetInfo(fromBase58String(X))
474+ let z = au(P)
475+ let aL = ao(z)
476+ let bq = {
477+ let n = assetInfo(fromBase58String(Y))
472478 if ($isInstanceOf(n, "Asset"))
473479 then {
474480 let o = n
475481 o
476482 }
477483 else throw("Cannot find asset info")
478484 }
479- let bp = if (if ((aJ > 0))
480- then (lastBlock.timestamp >= aJ)
485+ let br = if (if ((aL > 0))
486+ then (lastBlock.timestamp >= aL)
481487 else false)
482488 then true
483- else if ((bo.quantity == 0))
489+ else if ((bq.quantity == 0))
484490 then true
485491 else false
486- if (!(bp))
492+ if (!(br))
487493 then throw("This coupon cannot be funded")
488494 else {
489- let bl = ai(v)
490- let aZ = av(O)
491- let bm = if ((0 >= (bl - aZ)))
492- then bl
493- else aZ
494- let bh = (bl - bm)
495- if ((0 > bh))
495+ let bn = aj(v)
496+ let bb = ax(P)
497+ let bo = if ((0 >= (bn - bb)))
498+ then bn
499+ else bb
500+ let bj = (bn - bo)
501+ if ((0 > bj))
496502 then throw("Not enough funds to withdraw")
497503 else {
498- let be = K(v)
499- let bn = V(O)
500-[BooleanEntry(bn, true), IntegerEntry(be, bh), ScriptTransfer(aG.caller, bm, unit)]
504+ let bg = L(v)
505+ let bp = W(P)
506+[BooleanEntry(bp, true), IntegerEntry(bg, bj), ScriptTransfer(aI.caller, bo, unit)]
501507 }
502508 }
503509 }
504510 }
505511 }
506512
507513
508514
509-@Callable(aG)
510-func voteCommit (z,bq) = {
511- let J = toBase58String(aG.caller.bytes)
512- let aa = aA(z)
513- let ac = Z(z, aa)
514- let aX = aB(ac)
515- let br = aD(ac)
515+@Callable(aI)
516+func voteCommit (z,bs) = {
517+ let J = toBase58String(aI.caller.bytes)
518+ let ab = aC(z)
519+ let ad = aa(z, ab)
520+ let aZ = aD(ad)
521+ let bt = aF(ad)
516522 if ((y(z) == a))
517523 then throw("Item does not exists")
518- else if (if ((aX != a))
519- then (aX != f)
524+ else if (if ((aZ != a))
525+ then (aZ != f)
520526 else false)
521527 then throw("Voting is not active for this item now")
522- else if ((aE(ac, J) != a))
528+ else if ((aG(ad, J) != a))
523529 then throw("You voted already")
524- else if ((br >= b))
530+ else if ((bt >= b))
525531 then throw("Reached max number of voters")
526532 else {
527- let bs = (br + 1)
528- let bt = if ((bs == b))
533+ let bu = (bt + 1)
534+ let bv = if ((bu == b))
529535 then g
530536 else f
531-[StringEntry(ag(ac, J), bq), IntegerEntry(ab(ac), bs), StringEntry(ad(ac), bt)]
537+[StringEntry(ah(ad, J), bs), IntegerEntry(ac(ad), bu), StringEntry(ae(ad), bv)]
532538 }
533539 }
534540
535541
536542
537-@Callable(aG)
538-func voteReveal (z,af,bu) = {
539- let J = toBase58String(aG.caller.bytes)
540- let aa = aA(z)
541- let ac = Z(z, aa)
542- let aX = aB(ac)
543- let bv = (aC(ac, af) + 1)
544- let bw = toBase58String(sha256(toBytes(((z + af) + bu))))
545- if ((bw != aE(ac, J)))
543+@Callable(aI)
544+func voteReveal (z,ag,bw) = {
545+ let J = toBase58String(aI.caller.bytes)
546+ let ab = aC(z)
547+ let ad = aa(z, ab)
548+ let aZ = aD(ad)
549+ let bx = (aE(ad, ag) + 1)
550+ let by = toBase58String(sha256(toBytes(((z + ag) + bw))))
551+ if ((by != aG(ad, J)))
546552 then throw("Reveal data is not valid")
547- else if ((b > aD(ac)))
553+ else if ((b > aF(ad)))
548554 then throw("Max number of voters not reached")
549- else if ((aF(ac, J) != a))
555+ else if ((aH(ad, J) != a))
550556 then throw("You voted already")
551- else if (if ((aX != f))
552- then (aX != g)
557+ else if (if ((aZ != f))
558+ then (aZ != g)
553559 else false)
554560 then throw("Voting is not active for this item now")
555- else if (if ((af != d))
556- then (af != e)
561+ else if (if ((ag != d))
562+ then (ag != e)
557563 else false)
558564 then throw("Provided voting option is incorrect")
559- else if ((bv >= c))
565+ else if ((bx >= c))
560566 then {
561- let bx = if ((af == d))
567+ let bz = if ((ag == d))
562568 then true
563569 else false
564-[StringEntry(ah(ac, J), af), IntegerEntry(ae(ac, af), bv), IntegerEntry(H(z), (aa + 1)), StringEntry(ad(ac), af), BooleanEntry(G(z), bx)]
570+[StringEntry(ai(ad, J), ag), IntegerEntry(af(ad, ag), bx), IntegerEntry(H(z), (ab + 1)), StringEntry(ae(ad), ag), BooleanEntry(G(z), bz)]
565571 }
566- else [StringEntry(ah(ac, J), af), IntegerEntry(ae(ac, af), bv), StringEntry(ad(ac), g)]
572+ else [StringEntry(ai(ad, J), ag), IntegerEntry(af(ad, ag), bx), StringEntry(ae(ad), g)]
567573 }
568574
569575
570-@Verifier(by)
571-func bz () = {
572- let n = by
576+@Verifier(bA)
577+func bB () = {
578+ let n = bA
573579 if ($isInstanceOf(n, "SetScriptTransaction"))
574580 then {
575- let bA = n
576- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
581+ let bC = n
582+ sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
577583 }
578584 else if ($isInstanceOf(n, "IssueTransaction"))
579585 then {
580- let bA = n
581- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
586+ let bC = n
587+ sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
582588 }
583589 else if ($isInstanceOf(n, "TransferTransaction"))
584590 then {
585- let bA = n
586- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
591+ let bC = n
592+ sigVerify(bA.bodyBytes, bA.proofs[0], bA.senderPublicKey)
587593 }
588594 else if ($isInstanceOf(n, "DataTransaction"))
589595 then {
590- let bA = n
591- sigVerify(by.bodyBytes, by.proofs[0], by.senderPublicKey)
596+ let bC = n
597+ false
592598 }
593599 else false
594600 }
595601

github/deemru/w8io/873ac7e 
211.76 ms