tx · 7D7FdnNhqE7tLfxXZX3ZJHoMrVt7UdHCeTRTBSn7aTWb

3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7:  -0.01400000 Waves

2021.08.02 17:04 [1640810] smart account 3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7 > SELF 0.00000000 Waves

{ "type": 13, "id": "7D7FdnNhqE7tLfxXZX3ZJHoMrVt7UdHCeTRTBSn7aTWb", "fee": 1400000, "feeAssetId": null, "timestamp": 1627913045600, "version": 2, "chainId": 84, "sender": "3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7", "senderPublicKey": "3tp5fNYyPi4jMnkf6s1k4kBqvJ7nm57SxzvLyi8RkxT2", "proofs": [ "3K34evzMGcZQHyGBRT34mHAwPnXjNmVAiKybN2wuouv4qbr7LMABEBTkdVdTp6RVgETMtNdp1CxWcTTrUw58NFFo" ], "script": "base64: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ZXIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAVZ2V0S2V5U3VwcGxpZXJCYWxhbmNlAAAAAQUAAAAIc3VwcGxpZXIBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0JAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAWZ2V0VmFsdWVQdXJjaGFzZVN0YXR1cwAAAAEAAAAIcHVyY2hhc2UJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABRnZXRLZXlQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlAQAAABRnZXRWYWx1ZVB1cmNoYXNlSXRlbQAAAAEAAAAIcHVyY2hhc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAQAAABJnZXRLZXlQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQEAAAAYZ2V0VmFsdWVQdXJjaGFzZVN1cHBsaWVyAAAAAQAAAAhwdXJjaGFzZQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAAFmdldEtleVB1cmNoYXNlU3VwcGxpZXIAAAABBQAAAAhwdXJjaGFzZQEAAAAUZ2V0VmFsdWVQdXJjaGFzZVVzZXIAAAABAAAACHB1cmNoYXNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQEAAAASZ2V0S2V5UHVyY2hhc2VVc2VyAAAAAQUAAAAIcHVyY2hhc2UBAAAAFmdldFZhbHVlUHVyY2hhc2VBbW91bnQAAAABAAAACHB1cmNoYXNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAAUZ2V0S2V5UHVyY2hhc2VBbW91bnQAAAABBQAAAAhwdXJjaGFzZQEAAAAZZ2V0VmFsdWVQdXJjaGFzZVRpbWVzdGFtcAAAAAEAAAAIcHVyY2hhc2UJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAXZ2V0S2V5UHVyY2hhc2VUaW1lc3RhbXAAAAABBQAAAAhwdXJjaGFzZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFmdldFZhbHVlSXRlbUV4cGlyZVRpbWUAAAABAAAABGl0ZW0JAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAUZ2V0S2V5SXRlbUV4cGlyZURhdGUAAAABBQAAAARpdGVtAQAAABFnZXRWYWx1ZUl0ZW1UaXRsZQAAAAEAAAAEaXRlbQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1UaXRsZQAAAAEFAAAABGl0ZW0BAAAAF2dldFZhbHVlSXRlbVNvbGRDb3VudGVyAAAAAQAAAARpdGVtCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAFWdldEtleUl0ZW1Tb2xkQ291bnRlcgAAAAEFAAAABGl0ZW0BAAAADmdldFZhbHVlQ29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABRnZXRWYWx1ZUNvbW1pdHNDb3VudAAAAAEAAAAEaXRlbQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABBQAAAARpdGVtAQAAAA5nZXRWYWx1ZVJldmVhbAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAABGl0ZW0BAAAAEmdldFZhbHVlVm90ZXNDb3VudAAAAAIAAAAEaXRlbQAAAAR2b3RlCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAEGdldEtleVZvdGVzQ291bnQAAAACBQAAAARpdGVtBQAAAAR2b3RlAAAACQAAAAFpAQAAABByZWdpc3RlclN1cHBsaWVyAAAAAQAAAARkYXRhBAAAAAhzdXBwbGllcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAdhY2NvdW50CQEAAAASZ2V0U3VwcGxpZXJBY2NvdW50AAAAAQUAAAAIc3VwcGxpZXIDCQEAAAACIT0AAAACBQAAAAdhY2NvdW50BQAAAAROT05FCQAAAgAAAAECAAAALlRoaXMgYWRkcmVzcyBoYXMgYWxyZWFkeSByZWdpc3RyZWQgYXMgc3VwcGxpZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAFWdldEtleVN1cHBsaWVyQWNjb3VudAAAAAEFAAAACHN1cHBsaWVyBQAAAARkYXRhBQAAAANuaWwAAAABaQEAAAAHYWRkSXRlbQAAAAQAAAAFdGl0bGUAAAAFcHJpY2UAAAAEZGF0YQAAAAZleHBpcmUEAAAACHN1cHBsaWVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2FjY291bnQJAQAAABJnZXRTdXBwbGllckFjY291bnQAAAABBQAAAAhzdXBwbGllcgQAAAAEaXRlbQkBAAAACmdldEtleUl0ZW0AAAACBQAAAAhzdXBwbGllcgUAAAAFdGl0bGUDCQAAAAAAAAIFAAAAB2FjY291bnQFAAAABE5PTkUJAAACAAAAAQIAAAAuWW91IHNob3VsZCByZWdpc3RlciBhcyBzdXBwbGllciB0byBhZGQgYW4gaXRlbQMJAABnAAAAAgAAAAAAAAAAAAUAAAAFcHJpY2UJAAACAAAAAQIAAAAuUHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAQAAAAIhPQAAAAIJAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0FAAAABE5PTkUJAAACAAAAAQIAAAAWQW4gaXRlbSBhbHJlYWR5IGV4aXN0cwkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQUAAAAIc3VwcGxpZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAAD2dldEtleUl0ZW1UaXRsZQAAAAEFAAAABGl0ZW0FAAAABXRpdGxlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACCQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQUAAAAEaXRlbQUAAAAFcHJpY2UJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgkBAAAADmdldEtleUl0ZW1EYXRhAAAAAQUAAAAEaXRlbQUAAAAEZGF0YQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAFGdldEtleUl0ZW1FeHBpcmVEYXRlAAAAAQUAAAAEaXRlbQUAAAAGZXhwaXJlBQAAAANuaWwAAAABaQEAAAAKdXBkYXRlSXRlbQAAAAUAAAAEaXRlbQAAAAV0aXRsZQAAAAVwcmljZQAAAARkYXRhAAAABmV4cGlyZQQAAAAIc3VwcGxpZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAHYWNjb3VudAkBAAAAEmdldFN1cHBsaWVyQWNjb3VudAAAAAEFAAAACHN1cHBsaWVyBAAAAAxpdGVtU3VwcGxpZXIJAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0DCQAAAAAAAAIFAAAAB2FjY291bnQFAAAABE5PTkUJAAACAAAAAQIAAAAxWW91IHNob3VsZCByZWdpc3RlciBhcyBzdXBwbGllciB0byByZW1vdmUgYW4gaXRlbQMDCQAAAAAAAAIFAAAABGl0ZW0FAAAABE5PTkUGCQEAAAACIT0AAAACBQAAAAhzdXBwbGllcgUAAAAMaXRlbVN1cHBsaWVyCQAAAgAAAAEJAAEsAAAAAgIAAAAVWW91IGRvbid0IG93bmVkIGl0ZW0gBQAAAARpdGVtCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA9nZXRLZXlJdGVtVGl0bGUAAAABBQAAAARpdGVtBQAAAAV0aXRsZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgkBAAAAD2dldEtleUl0ZW1QcmljZQAAAAEFAAAABGl0ZW0FAAAABXByaWNlCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIJAQAAAA5nZXRLZXlJdGVtRGF0YQAAAAEFAAAABGl0ZW0FAAAABGRhdGEJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIJAQAAABRnZXRLZXlJdGVtRXhwaXJlRGF0ZQAAAAEFAAAABGl0ZW0FAAAABmV4cGlyZQUAAAADbmlsAAAAAWkBAAAACnJlbW92ZUl0ZW0AAAABAAAABGl0ZW0EAAAACHN1cHBsaWVyCQACWAAAAAEICAUAAAABaQAAAAZjYWxsZXIAAAAFYnl0ZXMEAAAAB2FjY291bnQJAQAAABJnZXRTdXBwbGllckFjY291bnQAAAABBQAAAAhzdXBwbGllcgQAAAAMaXRlbVN1cHBsaWVyCQEAAAAUZ2V0VmFsdWVJdGVtU3VwcGxpZXIAAAABBQAAAARpdGVtAwkAAAAAAAACBQAAAAdhY2NvdW50BQAAAAROT05FCQAAAgAAAAECAAAAMVlvdSBzaG91bGQgcmVnaXN0ZXIgYXMgc3VwcGxpZXIgdG8gcmVtb3ZlIGFuIGl0ZW0DAwkAAAAAAAACBQAAAARpdGVtBQAAAAROT05FBgkBAAAAAiE9AAAAAgUAAAAIc3VwcGxpZXIFAAAADGl0ZW1TdXBwbGllcgkAAAIAAAABCQABLAAAAAICAAAAFVlvdSBkb24ndCBvd25lZCBpdGVtIAUAAAAEaXRlbQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAASZ2V0S2V5SXRlbVN1cHBsaWVyAAAAAQUAAAAEaXRlbQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAPZ2V0S2V5SXRlbVRpdGxlAAAAAQUAAAAEaXRlbQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAPZ2V0S2V5SXRlbVByaWNlAAAAAQUAAAAEaXRlbQkABEwAAAACCQEAAAALRGVsZXRlRW50cnkAAAABCQEAAAAOZ2V0S2V5SXRlbURhdGEAAAABBQAAAARpdGVtCQAETAAAAAIJAQAAAAtEZWxldGVFbnRyeQAAAAEJAQAAABRnZXRLZXlJdGVtRXhwaXJlRGF0ZQAAAAEFAAAABGl0ZW0FAAAAA25pbAAAAAFpAQAAAAhwdXJjaGFzZQAAAAEAAAAEaXRlbQQAAAADcG10CQABkQAAAAIIBQAAAAFpAAAACHBheW1lbnRzAAAAAAAAAAAAAwkBAAAACWlzRGVmaW5lZAAAAAEIBQAAAANwbXQAAAAHYXNzZXRJZAkAAAIAAAABAgAAAClZb3UgY2FuIGJ1eSB0b2tlbnMgb25seSB3aXRoIFdhdmVzIHRva2VucwQAAAAEdXNlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAVwcmljZQkBAAAAEWdldFZhbHVlSXRlbVByaWNlAAAAAQUAAAAEaXRlbQQAAAAIc3VwcGxpZXIJAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0EAAAABmV4cGlyZQkBAAAAFmdldFZhbHVlSXRlbUV4cGlyZVRpbWUAAAABBQAAAARpdGVtAwMJAABmAAAAAgUAAAAGZXhwaXJlAAAAAAAAAAAACQAAZwAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAZleHBpcmUHCQAAAgAAAAECAAAADkNvdXBvbiBleHBpcmVkAwkAAGYAAAACBQAAAAVwcmljZQgFAAAAA3BtdAAAAAZhbW91bnQJAAACAAAAAQIAAAAuUHVyY2hhc2UgYW1vdW50IGNhbm5vdCBiZSBsZXNzIHRoYW4gaXRlbSBwcmljZQMJAABmAAAAAggFAAAAA3BtdAAAAAZhbW91bnQFAAAABXByaWNlCQAAAgAAAAECAAAAMFB1cmNoYXNlIGFtb3VudCBjYW5ub3QgYmUgaGlnaGVyIHRoYW4gaXRlbSBwcmljZQMJAAAAAAAAAgUAAAAIc3VwcGxpZXIFAAAABE5PTkUJAAACAAAAAQIAAAAYU3VwcGxpZXIgZG9lcyBub3QgZXhpc3RzBAAAABJrZXlVc2VySXRlbUNvdW50ZXIJAQAAABVnZXRLZXlVc2VySXRlbUNvdW50ZXIAAAACBQAAAAR1c2VyBQAAAARpdGVtBAAAAA91c2VySXRlbUNvdW50ZXIJAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQAAAAAAAAAAAQQAAAAIcHVyY2hhc2UJAQAAAA5nZW5QdXJjaGFzZUtleQAAAAQFAAAACHN1cHBsaWVyBQAAAARpdGVtBQAAAAR1c2VyBQAAAA91c2VySXRlbUNvdW50ZXIEAAAAEWtleVB1cmNoYXNlU3RhdHVzCQEAAAAUZ2V0S2V5UHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAAPa2V5UHVyY2hhc2VJdGVtCQEAAAASZ2V0S2V5UHVyY2hhc2VJdGVtAAAAAQUAAAAIcHVyY2hhc2UEAAAAE2tleVB1cmNoYXNlU3VwcGxpZXIJAQAAABZnZXRLZXlQdXJjaGFzZVN1cHBsaWVyAAAAAQUAAAAIcHVyY2hhc2UEAAAAD2tleVB1cmNoYXNlVXNlcgkBAAAAEmdldEtleVB1cmNoYXNlVXNlcgAAAAEFAAAACHB1cmNoYXNlBAAAABFrZXlQdXJjaGFzZUFtb3VudAkBAAAAFGdldEtleVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UEAAAAFGtleVB1cmNoYXNlVGltZXN0YW1wCQEAAAAXZ2V0S2V5UHVyY2hhc2VUaW1lc3RhbXAAAAABBQAAAAhwdXJjaGFzZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VXNlckl0ZW1Db3VudGVyBQAAAA91c2VySXRlbUNvdW50ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARa2V5UHVyY2hhc2VTdGF0dXMFAAAACEFQUFJPVkFMCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2tleVB1cmNoYXNlSXRlbQUAAAAEaXRlbQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABNrZXlQdXJjaGFzZVN1cHBsaWVyBQAAAAhzdXBwbGllcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlQdXJjaGFzZVVzZXIFAAAABHVzZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleVB1cmNoYXNlQW1vdW50CAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUa2V5UHVyY2hhc2VUaW1lc3RhbXAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAANuaWwAAAABaQEAAAAOcmVqZWN0UHVyY2hhc2UAAAABAAAACHB1cmNoYXNlBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAGc3RhdHVzCQEAAAAWZ2V0VmFsdWVQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlBAAAAAhzdXBwbGllcgkBAAAAGGdldFZhbHVlUHVyY2hhc2VTdXBwbGllcgAAAAEFAAAACHB1cmNoYXNlBAAAAARpdGVtCQEAAAAUZ2V0VmFsdWVQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQMDCQAAAAAAAAIFAAAACHN1cHBsaWVyBQAAAAROT05FBgkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAhzdXBwbGllcgkAAAIAAAABAgAAACNZb3VyIGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgaXRlbQMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAIQVBQUk9WQUwJAAACAAAAAQIAAAAgWW91IGNhbm5vdCByZWplY3QgdGhpcyBwdXJjaGFzZWQEAAAAEWtleVB1cmNoYXNlU3RhdHVzCQEAAAAUZ2V0S2V5UHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAARa2V5UHVyY2hhc2VBbW91bnQJAQAAABRnZXRLZXlQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlBAAAABJrZXlTdXBwbGllckJhbGFuY2UJAQAAABVnZXRLZXlTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgQAAAASa2V5SXRlbVNvbGRDb3VudGVyCQEAAAAVZ2V0S2V5SXRlbVNvbGRDb3VudGVyAAAAAQUAAAAEaXRlbQQAAAAEdXNlcgkBAAAAFGdldFZhbHVlUHVyY2hhc2VVc2VyAAAAAQUAAAAIcHVyY2hhc2UEAAAABmFtb3VudAkBAAAAFmdldFZhbHVlUHVyY2hhc2VBbW91bnQAAAABBQAAAAhwdXJjaGFzZQQAAAAPc3VwcGxpZXJCYWxhbmNlCQAAZQAAAAIJAQAAABdnZXRWYWx1ZVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBQAAAAZhbW91bnQEAAAAD2l0ZW1Tb2xkQ291bnRlcgkAAGUAAAACCQEAAAAXZ2V0VmFsdWVJdGVtU29sZENvdW50ZXIAAAABBQAAAARpdGVtAAAAAAAAAAABBAAAAAdhZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAR1c2VyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtleVB1cmNoYXNlU3RhdHVzBQAAAAhSRUpFQ1RFRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa2V5UHVyY2hhc2VBbW91bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAHYWRkcmVzcwUAAAAGYW1vdW50BQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAOYWNjZXB0UHVyY2hhc2UAAAACAAAACHB1cmNoYXNlAAAADWNvdXBvbkFzc2V0SWQEAAAABmNhbGxlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAZzdGF0dXMJAQAAABZnZXRWYWx1ZVB1cmNoYXNlU3RhdHVzAAAAAQUAAAAIcHVyY2hhc2UEAAAACHN1cHBsaWVyCQEAAAAYZ2V0VmFsdWVQdXJjaGFzZVN1cHBsaWVyAAAAAQUAAAAIcHVyY2hhc2UEAAAABGl0ZW0JAQAAABRnZXRWYWx1ZVB1cmNoYXNlSXRlbQAAAAEFAAAACHB1cmNoYXNlBAAAAAZleHBpcmUJAQAAABZnZXRWYWx1ZUl0ZW1FeHBpcmVUaW1lAAAAAQUAAAAEaXRlbQMDCQAAAAAAAAIFAAAACHN1cHBsaWVyBQAAAAROT05FBgkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAhzdXBwbGllcgkAAAIAAAABAgAAACNZb3VyIGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgaXRlbQMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAIQVBQUk9WQUwJAAACAAAAAQIAAAAgWW91IGNhbm5vdCByZWplY3QgdGhpcyBwdXJjaGFzZWQDAwkAAGYAAAACBQAAAAZleHBpcmUAAAAAAAAAAAAJAABnAAAAAggFAAAACWxhc3RCbG9jawAAAAl0aW1lc3RhbXAFAAAABmV4cGlyZQcJAAACAAAAAQIAAAAOQ291cG9uIGV4cGlyZWQEAAAAEWtleVB1cmNoYXNlU3RhdHVzCQEAAAAUZ2V0S2V5UHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAASa2V5U3VwcGxpZXJCYWxhbmNlCQEAAAAVZ2V0S2V5U3VwcGxpZXJCYWxhbmNlAAAAAQUAAAAIc3VwcGxpZXIEAAAAEmtleUl0ZW1Tb2xkQ291bnRlcgkBAAAAFWdldEtleUl0ZW1Tb2xkQ291bnRlcgAAAAEFAAAABGl0ZW0EAAAABmFtb3VudAkBAAAAFmdldFZhbHVlUHVyY2hhc2VBbW91bnQAAAABBQAAAAhwdXJjaGFzZQQAAAAPc3VwcGxpZXJCYWxhbmNlCQAAZAAAAAIJAQAAABdnZXRWYWx1ZVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBQAAAAZhbW91bnQEAAAAD2l0ZW1Tb2xkQ291bnRlcgkAAGQAAAACCQEAAAAXZ2V0VmFsdWVJdGVtU29sZENvdW50ZXIAAAABBQAAAARpdGVtAAAAAAAAAAABBAAAAAR1c2VyCQEAAAAUZ2V0VmFsdWVQdXJjaGFzZVVzZXIAAAABBQAAAAhwdXJjaGFzZQQAAAAHYWRkcmVzcwkBAAAAEUBleHRyTmF0aXZlKDEwNjIpAAAAAQUAAAAEdXNlcgkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5U3VwcGxpZXJCYWxhbmNlBQAAAA9zdXBwbGllckJhbGFuY2UJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleUl0ZW1Tb2xkQ291bnRlcgUAAAAPaXRlbVNvbGRDb3VudGVyCQAETAAAAAIJAQAAAA5TY3JpcHRUcmFuc2ZlcgAAAAMFAAAAB2FkZHJl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", "height": 1640810, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5q7WMnPQNVy6wNTAZQzTuUdATLE3DQfCGBpHqEKbxsx6 Next: ErLZKPsS2yFuuFFBBLKyibzhrzBoPbCigYLrABfrnhr9 Diff:
OldNewDifferences
304304 then true
305305 else (caller != supplier))
306306 then throw("Your are not the owner of this item")
307- else if ((1 == 1))
308- then throw(("AAAAA: " + couponAssetId))
309- else if ((status != APPROVAL))
310- then throw("You cannot reject this purchased")
311- else if (if ((expire > 0))
312- then (lastBlock.timestamp >= expire)
313- else false)
314- then throw("Coupon expired")
315- else {
316- let keyPurchaseStatus = getKeyPurchaseStatus(purchase)
317- let keySupplierBalance = getKeySupplierBalance(supplier)
318- let keyItemSoldCounter = getKeyItemSoldCounter(item)
319- let amount = getValuePurchaseAmount(purchase)
320- let supplierBalance = (getValueSupplierBalance(supplier) + amount)
321- let itemSoldCounter = (getValueItemSoldCounter(item) + 1)
322- let user = getValuePurchaseUser(purchase)
323- let address = addressFromStringValue(user)
307+ else if ((status != APPROVAL))
308+ then throw("You cannot reject this purchased")
309+ else if (if ((expire > 0))
310+ then (lastBlock.timestamp >= expire)
311+ else false)
312+ then throw("Coupon expired")
313+ else {
314+ let keyPurchaseStatus = getKeyPurchaseStatus(purchase)
315+ let keySupplierBalance = getKeySupplierBalance(supplier)
316+ let keyItemSoldCounter = getKeyItemSoldCounter(item)
317+ let amount = getValuePurchaseAmount(purchase)
318+ let supplierBalance = (getValueSupplierBalance(supplier) + amount)
319+ let itemSoldCounter = (getValueItemSoldCounter(item) + 1)
320+ let user = getValuePurchaseUser(purchase)
321+ let address = addressFromStringValue(user)
324322 [IntegerEntry(keySupplierBalance, supplierBalance), IntegerEntry(keyItemSoldCounter, itemSoldCounter), ScriptTransfer(address, 1, fromBase58String(couponAssetId))]
325- }
323+ }
326324 }
327325
328326
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let NONE = "NONE"
55
66 let VOTERS = 3
77
88 let QUORUM = 2
99
1010 let FEATURED = "featured"
1111
1212 let DELISTED = "delisted"
1313
1414 let VOTING = "voting"
1515
1616 let REVEAL = "reveal"
1717
1818 let APPROVAL = "approval"
1919
2020 let REJECTED = "rejected"
2121
2222 let ACCEPTED = "accepted"
2323
2424 func getStringByKey (key) = match getString(this, key) {
2525 case a: String =>
2626 a
2727 case _ =>
2828 NONE
2929 }
3030
3131
3232 func getIntegerByKey (key) = match getInteger(this, key) {
3333 case a: Int =>
3434 a
3535 case _ =>
3636 0
3737 }
3838
3939
4040 func getKeySupplierAccount (account) = (account + "_account")
4141
4242
4343 func getSupplierAccount (account) = getStringByKey(getKeySupplierAccount(account))
4444
4545
4646 func getKeyItem (supplier,title) = {
4747 let supplierTitle = (supplier + title)
4848 ("item_" + toBase58String(sha256(toBytes(supplierTitle))))
4949 }
5050
5151
5252 func getKeyItemSupplier (item) = (item + "_owner")
5353
5454
5555 func getKeyItemTitle (item) = (item + "_title")
5656
5757
5858 func getKeyItemPrice (item) = (item + "_price")
5959
6060
6161 func getKeyItemData (item) = (item + "_data")
6262
6363
6464 func getKeyItemExpireDate (item) = (item + "_expiredate")
6565
6666
6767 func getKeyItemSoldCounter (item) = (item + "_sold")
6868
6969
7070 func getKeyCommit (item,user) = (((item + "_") + user) + "_commit")
7171
7272
7373 func getKeyCommitsCount (item) = (item + "_cmtcnt")
7474
7575
7676 func getKeyReveal (item,user) = (((item + "_") + user) + "_reveal")
7777
7878
7979 func getKeyItemStatus (item) = (item + "_status")
8080
8181
8282 func getKeyVotesCount (item,vote) = ((item + "_res:") + vote)
8383
8484
8585 func getKeySupplierBalance (supplier) = (supplier + "_balance")
8686
8787
8888 func getKeyUserItemCounter (user,item) = (((user + "_") + item) + "_counter")
8989
9090
9191 func genPurchaseKey (supplier,item,user,counter) = ("purchase_" + toBase58String(sha256(toBytes(((((((supplier + "_") + item) + "_") + user) + "_") + toString(counter))))))
9292
9393
9494 func getKeyPurchaseStatus (purchase) = (purchase + "_status")
9595
9696
9797 func getKeyPurchaseItem (purchase) = (purchase + "_item")
9898
9999
100100 func getKeyPurchaseSupplier (purchase) = (purchase + "_supplier")
101101
102102
103103 func getKeyPurchaseUser (purchase) = (purchase + "_user")
104104
105105
106106 func getKeyPurchaseAmount (purchase) = (purchase + "_amount")
107107
108108
109109 func getKeyPurchaseTimestamp (purchase) = (purchase + "_timestamp")
110110
111111
112112 func getKeyCoupon (assetId) = ("coupon_" + assetId)
113113
114114
115115 func getKeyCouponItem (coupon) = (coupon + "_item")
116116
117117
118118 func getValueSupplierBalance (supplier) = getIntegerByKey(getKeySupplierBalance(supplier))
119119
120120
121121 func getValueUserItemCounter (user,item) = getIntegerByKey(getKeyUserItemCounter(user, item))
122122
123123
124124 func getValuePurchaseStatus (purchase) = getStringByKey(getKeyPurchaseStatus(purchase))
125125
126126
127127 func getValuePurchaseItem (purchase) = getStringValue(this, getKeyPurchaseItem(purchase))
128128
129129
130130 func getValuePurchaseSupplier (purchase) = getStringValue(this, getKeyPurchaseSupplier(purchase))
131131
132132
133133 func getValuePurchaseUser (purchase) = getStringValue(this, getKeyPurchaseUser(purchase))
134134
135135
136136 func getValuePurchaseAmount (purchase) = getIntegerValue(this, getKeyPurchaseAmount(purchase))
137137
138138
139139 func getValuePurchaseTimestamp (purchase) = getIntegerByKey(getKeyPurchaseTimestamp(purchase))
140140
141141
142142 func getValueItemPrice (item) = getIntegerValue(this, getKeyItemPrice(item))
143143
144144
145145 func getValueItemSupplier (item) = getStringByKey(getKeyItemSupplier(item))
146146
147147
148148 func getValueItemExpireTime (item) = getIntegerByKey(getKeyItemExpireDate(item))
149149
150150
151151 func getValueItemTitle (item) = getStringByKey(getKeyItemTitle(item))
152152
153153
154154 func getValueItemSoldCounter (item) = getIntegerByKey(getKeyItemSoldCounter(item))
155155
156156
157157 func getValueCommit (item,user) = getStringByKey(getKeyCommit(item, user))
158158
159159
160160 func getValueCommitsCount (item) = getIntegerByKey(getKeyCommitsCount(item))
161161
162162
163163 func getValueReveal (item,user) = getStringByKey(getKeyReveal(item, user))
164164
165165
166166 func getValueItemStatus (item) = getStringByKey(getKeyItemStatus(item))
167167
168168
169169 func getValueVotesCount (item,vote) = getIntegerByKey(getKeyVotesCount(item, vote))
170170
171171
172172 @Callable(i)
173173 func registerSupplier (data) = {
174174 let supplier = toBase58String(i.caller.bytes)
175175 let account = getSupplierAccount(supplier)
176176 if ((account != NONE))
177177 then throw("This address has already registred as supplier")
178178 else [StringEntry(getKeySupplierAccount(supplier), data)]
179179 }
180180
181181
182182
183183 @Callable(i)
184184 func addItem (title,price,data,expire) = {
185185 let supplier = toBase58String(i.caller.bytes)
186186 let account = getSupplierAccount(supplier)
187187 let item = getKeyItem(supplier, title)
188188 if ((account == NONE))
189189 then throw("You should register as supplier to add an item")
190190 else if ((0 >= price))
191191 then throw("Purchase amount cannot be less than item price")
192192 else if ((getValueItemSupplier(item) != NONE))
193193 then throw("An item already exists")
194194 else [StringEntry(getKeyItemSupplier(item), supplier), StringEntry(getKeyItemTitle(item), title), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data), IntegerEntry(getKeyItemExpireDate(item), expire)]
195195 }
196196
197197
198198
199199 @Callable(i)
200200 func updateItem (item,title,price,data,expire) = {
201201 let supplier = toBase58String(i.caller.bytes)
202202 let account = getSupplierAccount(supplier)
203203 let itemSupplier = getValueItemSupplier(item)
204204 if ((account == NONE))
205205 then throw("You should register as supplier to remove an item")
206206 else if (if ((item == NONE))
207207 then true
208208 else (supplier != itemSupplier))
209209 then throw(("You don't owned item " + item))
210210 else [StringEntry(getKeyItemTitle(item), title), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data), IntegerEntry(getKeyItemExpireDate(item), expire)]
211211 }
212212
213213
214214
215215 @Callable(i)
216216 func removeItem (item) = {
217217 let supplier = toBase58String(i.caller.bytes)
218218 let account = getSupplierAccount(supplier)
219219 let itemSupplier = getValueItemSupplier(item)
220220 if ((account == NONE))
221221 then throw("You should register as supplier to remove an item")
222222 else if (if ((item == NONE))
223223 then true
224224 else (supplier != itemSupplier))
225225 then throw(("You don't owned item " + item))
226226 else [DeleteEntry(getKeyItemSupplier(item)), DeleteEntry(getKeyItemTitle(item)), DeleteEntry(getKeyItemPrice(item)), DeleteEntry(getKeyItemData(item)), DeleteEntry(getKeyItemExpireDate(item))]
227227 }
228228
229229
230230
231231 @Callable(i)
232232 func purchase (item) = {
233233 let pmt = i.payments[0]
234234 if (isDefined(pmt.assetId))
235235 then throw("You can buy tokens only with Waves tokens")
236236 else {
237237 let user = toBase58String(i.caller.bytes)
238238 let price = getValueItemPrice(item)
239239 let supplier = getValueItemSupplier(item)
240240 let expire = getValueItemExpireTime(item)
241241 if (if ((expire > 0))
242242 then (lastBlock.timestamp >= expire)
243243 else false)
244244 then throw("Coupon expired")
245245 else if ((price > pmt.amount))
246246 then throw("Purchase amount cannot be less than item price")
247247 else if ((pmt.amount > price))
248248 then throw("Purchase amount cannot be higher than item price")
249249 else if ((supplier == NONE))
250250 then throw("Supplier does not exists")
251251 else {
252252 let keyUserItemCounter = getKeyUserItemCounter(user, item)
253253 let userItemCounter = (getValueUserItemCounter(user, item) + 1)
254254 let purchase = genPurchaseKey(supplier, item, user, userItemCounter)
255255 let keyPurchaseStatus = getKeyPurchaseStatus(purchase)
256256 let keyPurchaseItem = getKeyPurchaseItem(purchase)
257257 let keyPurchaseSupplier = getKeyPurchaseSupplier(purchase)
258258 let keyPurchaseUser = getKeyPurchaseUser(purchase)
259259 let keyPurchaseAmount = getKeyPurchaseAmount(purchase)
260260 let keyPurchaseTimestamp = getKeyPurchaseTimestamp(purchase)
261261 [IntegerEntry(keyUserItemCounter, userItemCounter), StringEntry(keyPurchaseStatus, APPROVAL), StringEntry(keyPurchaseItem, item), StringEntry(keyPurchaseSupplier, supplier), StringEntry(keyPurchaseUser, user), IntegerEntry(keyPurchaseAmount, pmt.amount), IntegerEntry(keyPurchaseTimestamp, lastBlock.timestamp)]
262262 }
263263 }
264264 }
265265
266266
267267
268268 @Callable(i)
269269 func rejectPurchase (purchase) = {
270270 let caller = toBase58String(i.caller.bytes)
271271 let status = getValuePurchaseStatus(purchase)
272272 let supplier = getValuePurchaseSupplier(purchase)
273273 let item = getValuePurchaseItem(purchase)
274274 if (if ((supplier == NONE))
275275 then true
276276 else (caller != supplier))
277277 then throw("Your are not the owner of this item")
278278 else if ((status != APPROVAL))
279279 then throw("You cannot reject this purchased")
280280 else {
281281 let keyPurchaseStatus = getKeyPurchaseStatus(purchase)
282282 let keyPurchaseAmount = getKeyPurchaseAmount(purchase)
283283 let keySupplierBalance = getKeySupplierBalance(supplier)
284284 let keyItemSoldCounter = getKeyItemSoldCounter(item)
285285 let user = getValuePurchaseUser(purchase)
286286 let amount = getValuePurchaseAmount(purchase)
287287 let supplierBalance = (getValueSupplierBalance(supplier) - amount)
288288 let itemSoldCounter = (getValueItemSoldCounter(item) - 1)
289289 let address = addressFromStringValue(user)
290290 [StringEntry(keyPurchaseStatus, REJECTED), IntegerEntry(keyPurchaseAmount, 0), ScriptTransfer(address, amount, unit)]
291291 }
292292 }
293293
294294
295295
296296 @Callable(i)
297297 func acceptPurchase (purchase,couponAssetId) = {
298298 let caller = toBase58String(i.caller.bytes)
299299 let status = getValuePurchaseStatus(purchase)
300300 let supplier = getValuePurchaseSupplier(purchase)
301301 let item = getValuePurchaseItem(purchase)
302302 let expire = getValueItemExpireTime(item)
303303 if (if ((supplier == NONE))
304304 then true
305305 else (caller != supplier))
306306 then throw("Your are not the owner of this item")
307- else if ((1 == 1))
308- then throw(("AAAAA: " + couponAssetId))
309- else if ((status != APPROVAL))
310- then throw("You cannot reject this purchased")
311- else if (if ((expire > 0))
312- then (lastBlock.timestamp >= expire)
313- else false)
314- then throw("Coupon expired")
315- else {
316- let keyPurchaseStatus = getKeyPurchaseStatus(purchase)
317- let keySupplierBalance = getKeySupplierBalance(supplier)
318- let keyItemSoldCounter = getKeyItemSoldCounter(item)
319- let amount = getValuePurchaseAmount(purchase)
320- let supplierBalance = (getValueSupplierBalance(supplier) + amount)
321- let itemSoldCounter = (getValueItemSoldCounter(item) + 1)
322- let user = getValuePurchaseUser(purchase)
323- let address = addressFromStringValue(user)
307+ else if ((status != APPROVAL))
308+ then throw("You cannot reject this purchased")
309+ else if (if ((expire > 0))
310+ then (lastBlock.timestamp >= expire)
311+ else false)
312+ then throw("Coupon expired")
313+ else {
314+ let keyPurchaseStatus = getKeyPurchaseStatus(purchase)
315+ let keySupplierBalance = getKeySupplierBalance(supplier)
316+ let keyItemSoldCounter = getKeyItemSoldCounter(item)
317+ let amount = getValuePurchaseAmount(purchase)
318+ let supplierBalance = (getValueSupplierBalance(supplier) + amount)
319+ let itemSoldCounter = (getValueItemSoldCounter(item) + 1)
320+ let user = getValuePurchaseUser(purchase)
321+ let address = addressFromStringValue(user)
324322 [IntegerEntry(keySupplierBalance, supplierBalance), IntegerEntry(keyItemSoldCounter, itemSoldCounter), ScriptTransfer(address, 1, fromBase58String(couponAssetId))]
325- }
323+ }
326324 }
327325
328326
329327
330328 @Callable(i)
331329 func voteCommit (item,hash) = {
332330 let user = toBase58String(i.caller.bytes)
333331 let commitsCount = getValueCommitsCount(item)
334332 let status = getValueItemStatus(item)
335333 if ((commitsCount >= VOTERS))
336334 then throw("Reached max number of voters")
337335 else if ((getValueCommit(item, user) != NONE))
338336 then throw("You voted already")
339337 else if ((getKeyItemSupplier(item) == NONE))
340338 then throw("Item does not exists")
341339 else if (if ((status != NONE))
342340 then (status != VOTING)
343341 else false)
344342 then throw("Voting is not active for this item now")
345343 else {
346344 let newStatus = if ((commitsCount == VOTERS))
347345 then REVEAL
348346 else VOTING
349347 [StringEntry(getKeyCommit(item, user), hash), IntegerEntry(getKeyCommitsCount(item), (commitsCount + 1)), StringEntry(getKeyItemStatus(item), newStatus)]
350348 }
351349 }
352350
353351
354352
355353 @Callable(i)
356354 func voteReveal (item,vote,salt) = {
357355 let user = toBase58String(i.caller.bytes)
358356 let status = getValueItemStatus(item)
359357 let newVotesCount = (getValueVotesCount(item, vote) + 1)
360358 let saltedVote = toBase58String(sha256(toBytes(((item + vote) + salt))))
361359 if ((saltedVote != getValueCommit(item, user)))
362360 then throw("Reveal data is not valid")
363361 else if ((VOTERS > getValueCommitsCount(item)))
364362 then throw("Max number of voters not reached")
365363 else if ((getValueReveal(item, user) != NONE))
366364 then throw("You voted already")
367365 else if (if ((status != VOTING))
368366 then (status != REVEAL)
369367 else false)
370368 then throw("Voting is not active for this item now")
371369 else if (if ((vote != FEATURED))
372370 then (vote != DELISTED)
373371 else false)
374372 then throw("Provided voting option is incorrect")
375373 else {
376374 let newStatus = if ((newVotesCount >= QUORUM))
377375 then vote
378376 else REVEAL
379377 [StringEntry(getKeyReveal(item, user), vote), IntegerEntry(getKeyVotesCount(item, user), newVotesCount), StringEntry(getKeyItemStatus(item), newStatus)]
380378 }
381379 }
382380
383381
384382 @Verifier(tx)
385383 func verify () = match tx {
386384 case t: SetScriptTransaction =>
387385 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
388386 case t: IssueTransaction =>
389387 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
390388 case t: TransferTransaction =>
391389 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
392390 case _ =>
393391 false
394392 }
395393

github/deemru/w8io/026f985 
45.17 ms