tx · 5q7WMnPQNVy6wNTAZQzTuUdATLE3DQfCGBpHqEKbxsx6

3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7:  -0.01400000 Waves

2021.08.02 16:50 [1640799] smart account 3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7 > SELF 0.00000000 Waves

{ "type": 13, "id": "5q7WMnPQNVy6wNTAZQzTuUdATLE3DQfCGBpHqEKbxsx6", "fee": 1400000, "feeAssetId": null, "timestamp": 1627912362700, "version": 2, "chainId": 84, "sender": "3MovmZoJtqutkf49oGXHzABSMUQ7HU5Dcg7", "senderPublicKey": "3tp5fNYyPi4jMnkf6s1k4kBqvJ7nm57SxzvLyi8RkxT2", "proofs": [ "4RpyWZZg2N5YGdYVkutgH14aqyrVFEXgQFwvrUmPrdsT59G564vFcCpVB2Dgx3hHNamvbfiUHZCW9LFGwJnG1eJg" ], "script": "base64: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ZXIJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAVZ2V0S2V5U3VwcGxpZXJCYWxhbmNlAAAAAQUAAAAIc3VwcGxpZXIBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgAAAAR1c2VyAAAABGl0ZW0JAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAVZ2V0S2V5VXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQEAAAAWZ2V0VmFsdWVQdXJjaGFzZVN0YXR1cwAAAAEAAAAIcHVyY2hhc2UJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAABRnZXRLZXlQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlAQAAABRnZXRWYWx1ZVB1cmNoYXNlSXRlbQAAAAEAAAAIcHVyY2hhc2UJAQAAABFAZXh0ck5hdGl2ZSgxMDUzKQAAAAIFAAAABHRoaXMJAQAAABJnZXRLZXlQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQEAAAAYZ2V0VmFsdWVQdXJjaGFzZVN1cHBsaWVyAAAAAQAAAAhwdXJjaGFzZQkBAAAAEUBleHRyTmF0aXZlKDEwNTMpAAAAAgUAAAAEdGhpcwkBAAAAFmdldEtleVB1cmNoYXNlU3VwcGxpZXIAAAABBQAAAAhwdXJjaGFzZQEAAAAUZ2V0VmFsdWVQdXJjaGFzZVVzZXIAAAABAAAACHB1cmNoYXNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MykAAAACBQAAAAR0aGlzCQEAAAASZ2V0S2V5UHVyY2hhc2VVc2VyAAAAAQUAAAAIcHVyY2hhc2UBAAAAFmdldFZhbHVlUHVyY2hhc2VBbW91bnQAAAABAAAACHB1cmNoYXNlCQEAAAARQGV4dHJOYXRpdmUoMTA1MCkAAAACBQAAAAR0aGlzCQEAAAAUZ2V0S2V5UHVyY2hhc2VBbW91bnQAAAABBQAAAAhwdXJjaGFzZQEAAAAZZ2V0VmFsdWVQdXJjaGFzZVRpbWVzdGFtcAAAAAEAAAAIcHVyY2hhc2UJAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAXZ2V0S2V5UHVyY2hhc2VUaW1lc3RhbXAAAAABBQAAAAhwdXJjaGFzZQEAAAARZ2V0VmFsdWVJdGVtUHJpY2UAAAABAAAABGl0ZW0JAQAAABFAZXh0ck5hdGl2ZSgxMDUwKQAAAAIFAAAABHRoaXMJAQAAAA9nZXRLZXlJdGVtUHJpY2UAAAABBQAAAARpdGVtAQAAABRnZXRWYWx1ZUl0ZW1TdXBwbGllcgAAAAEAAAAEaXRlbQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAEmdldEtleUl0ZW1TdXBwbGllcgAAAAEFAAAABGl0ZW0BAAAAFmdldFZhbHVlSXRlbUV4cGlyZVRpbWUAAAABAAAABGl0ZW0JAQAAAA9nZXRJbnRlZ2VyQnlLZXkAAAABCQEAAAAUZ2V0S2V5SXRlbUV4cGlyZURhdGUAAAABBQAAAARpdGVtAQAAABFnZXRWYWx1ZUl0ZW1UaXRsZQAAAAEAAAAEaXRlbQkBAAAADmdldFN0cmluZ0J5S2V5AAAAAQkBAAAAD2dldEtleUl0ZW1UaXRsZQAAAAEFAAAABGl0ZW0BAAAAF2dldFZhbHVlSXRlbVNvbGRDb3VudGVyAAAAAQAAAARpdGVtCQEAAAAPZ2V0SW50ZWdlckJ5S2V5AAAAAQkBAAAAFWdldEtleUl0ZW1Tb2xkQ291bnRlcgAAAAEFAAAABGl0ZW0BAAAADmdldFZhbHVlQ29tbWl0AAAAAgAAAARpdGVtAAAABHVzZXIJAQAAAA5nZXRTdHJpbmdCeUtleQAAAAEJAQAAAAxnZXRLZXlDb21taXQAAAACBQAAAARpdGVtBQAAAAR1c2VyAQAAABRnZXRWYWx1ZUNvbW1pdHNDb3VudAAAAAEAAAAEaXRlbQkBAAAAD2dldEludGVnZXJCeUtleQAAAAEJAQAAABJnZXRLZXlDb21taXRzQ291bnQAAAABBQAAAARpdGVtAQAAAA5nZXRWYWx1ZVJldmVhbAAAAAIAAAAEaXRlbQAAAAR1c2VyCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAMZ2V0S2V5UmV2ZWFsAAAAAgUAAAAEaXRlbQUAAAAEdXNlcgEAAAASZ2V0VmFsdWVJdGVtU3RhdHVzAAAAAQAAAARpdGVtCQEAAAAOZ2V0U3RyaW5nQnlLZXkAAAABCQEAAAAQZ2V0S2V5SXRlbVN0YXR1cwAAAAEFAAAA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SXRlbUNvdW50ZXIJAABkAAAAAgkBAAAAF2dldFZhbHVlVXNlckl0ZW1Db3VudGVyAAAAAgUAAAAEdXNlcgUAAAAEaXRlbQAAAAAAAAAAAQQAAAAIcHVyY2hhc2UJAQAAAA5nZW5QdXJjaGFzZUtleQAAAAQFAAAACHN1cHBsaWVyBQAAAARpdGVtBQAAAAR1c2VyBQAAAA91c2VySXRlbUNvdW50ZXIEAAAAEWtleVB1cmNoYXNlU3RhdHVzCQEAAAAUZ2V0S2V5UHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAAPa2V5UHVyY2hhc2VJdGVtCQEAAAASZ2V0S2V5UHVyY2hhc2VJdGVtAAAAAQUAAAAIcHVyY2hhc2UEAAAAE2tleVB1cmNoYXNlU3VwcGxpZXIJAQAAABZnZXRLZXlQdXJjaGFzZVN1cHBsaWVyAAAAAQUAAAAIcHVyY2hhc2UEAAAAD2tleVB1cmNoYXNlVXNlcgkBAAAAEmdldEtleVB1cmNoYXNlVXNlcgAAAAEFAAAACHB1cmNoYXNlBAAAABFrZXlQdXJjaGFzZUFtb3VudAkBAAAAFGdldEtleVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UEAAAAFGtleVB1cmNoYXNlVGltZXN0YW1wCQEAAAAXZ2V0S2V5UHVyY2hhc2VUaW1lc3RhbXAAAAABBQAAAAhwdXJjaGFzZQkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAASa2V5VXNlckl0ZW1Db3VudGVyBQAAAA91c2VySXRlbUNvdW50ZXIJAARMAAAAAgkBAAAAC1N0cmluZ0VudHJ5AAAAAgUAAAARa2V5UHVyY2hhc2VTdGF0dXMFAAAACEFQUFJPVkFMCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAD2tleVB1cmNoYXNlSXRlbQUAAAAEaXRlbQkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAABNrZXlQdXJjaGFzZVN1cHBsaWVyBQAAAAhzdXBwbGllcgkABEwAAAACCQEAAAALU3RyaW5nRW50cnkAAAACBQAAAA9rZXlQdXJjaGFzZVVzZXIFAAAABHVzZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEWtleVB1cmNoYXNlQW1vdW50CAUAAAADcG10AAAABmFtb3VudAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAAUa2V5UHVyY2hhc2VUaW1lc3RhbXAIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAANuaWwAAAABaQEAAAAOcmVqZWN0UHVyY2hhc2UAAAABAAAACHB1cmNoYXNlBAAAAAZjYWxsZXIJAAJYAAAAAQgIBQAAAAFpAAAABmNhbGxlcgAAAAVieXRlcwQAAAAGc3RhdHVzCQEAAAAWZ2V0VmFsdWVQdXJjaGFzZVN0YXR1cwAAAAEFAAAACHB1cmNoYXNlBAAAAAhzdXBwbGllcgkBAAAAGGdldFZhbHVlUHVyY2hhc2VTdXBwbGllcgAAAAEFAAAACHB1cmNoYXNlBAAAAARpdGVtCQEAAAAUZ2V0VmFsdWVQdXJjaGFzZUl0ZW0AAAABBQAAAAhwdXJjaGFzZQMDCQAAAAAAAAIFAAAACHN1cHBsaWVyBQAAAAROT05FBgkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAhzdXBwbGllcgkAAAIAAAABAgAAACNZb3VyIGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgaXRlbQMJAQAAAAIhPQAAAAIFAAAABnN0YXR1cwUAAAAIQVBQUk9WQUwJAAACAAAAAQIAAAAgWW91IGNhbm5vdCByZWplY3QgdGhpcyBwdXJjaGFzZWQEAAAAEWtleVB1cmNoYXNlU3RhdHVzCQEAAAAUZ2V0S2V5UHVyY2hhc2VTdGF0dXMAAAABBQAAAAhwdXJjaGFzZQQAAAARa2V5UHVyY2hhc2VBbW91bnQJAQAAABRnZXRLZXlQdXJjaGFzZUFtb3VudAAAAAEFAAAACHB1cmNoYXNlBAAAABJrZXlTdXBwbGllckJhbGFuY2UJAQAAABVnZXRLZXlTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgQAAAASa2V5SXRlbVNvbGRDb3VudGVyCQEAAAAVZ2V0S2V5SXRlbVNvbGRDb3VudGVyAAAAAQUAAAAEaXRlbQQAAAAEdXNlcgkBAAAAFGdldFZhbHVlUHVyY2hhc2VVc2VyAAAAAQUAAAAIcHVyY2hhc2UEAAAABmFtb3VudAkBAAAAFmdldFZhbHVlUHVyY2hhc2VBbW91bnQAAAABBQAAAAhwdXJjaGFzZQQAAAAPc3VwcGxpZXJCYWxhbmNlCQAAZQAAAAIJAQAAABdnZXRWYWx1ZVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBQAAAAZhbW91bnQEAAAAD2l0ZW1Tb2xkQ291bnRlcgkAAGUAAAACCQEAAAAXZ2V0VmFsdWVJdGVtU29sZENvdW50ZXIAAAABBQAAAARpdGVtAAAAAAAAAAABBAAAAAdhZGRyZXNzCQEAAAARQGV4dHJOYXRpdmUoMTA2MikAAAABBQAAAAR1c2VyCQAETAAAAAIJAQAAAAtTdHJpbmdFbnRyeQAAAAIFAAAAEWtleVB1cmNoYXNlU3RhdHVzBQAAAAhSRUpFQ1RFRAkABEwAAAACCQEAAAAMSW50ZWdlckVudHJ5AAAAAgUAAAARa2V5UHVyY2hhc2VBbW91bnQAAAAAAAAAAAAJAARMAAAAAgkBAAAADlNjcmlwdFRyYW5zZmVyAAAAAwUAAAAHYWRkcmVzcwUAAAAGYW1vdW50BQAAAAR1bml0BQAAAANuaWwAAAABaQEAAAAOYWNjZXB0UHVyY2hhc2UAAAACAAAACHB1cmNoYXNlAAAADWNvdXBvbkFzc2V0SWQEAAAABmNhbGxlcgkAAlgAAAABCAgFAAAAAWkAAAAGY2FsbGVyAAAABWJ5dGVzBAAAAAZzdGF0dXMJAQAAABZnZXRWYWx1ZVB1cmNoYXNlU3RhdHVzAAAAAQUAAAAIcHVyY2hhc2UEAAAACHN1cHBsaWVyCQEAAAAYZ2V0VmFsdWVQdXJjaGFzZVN1cHBsaWVyAAAAAQUAAAAIcHVyY2hhc2UEAAAABGl0ZW0JAQAAABRnZXRWYWx1ZVB1cmNoYXNlSXRlbQAAAAEFAAAACHB1cmNoYXNlBAAAAAZleHBpcmUJAQAAABZnZXRWYWx1ZUl0ZW1FeHBpcmVUaW1lAAAAAQUAAAAEaXRlbQMDCQAAAAAAAAIFAAAACHN1cHBsaWVyBQAAAAROT05FBgkBAAAAAiE9AAAAAgUAAAAGY2FsbGVyBQAAAAhzdXBwbGllcgkAAAIAAAABAgAAACNZb3VyIGFyZSBub3QgdGhlIG93bmVyIG9mIHRoaXMgaXRlbQMJAAAAAAAAAgAAAAAAAAAAAQAAAAAAAAAAAQkAAAIAAAABCQABLAAAAAICAAAAB0FBQUFBOiAFAAAADWNvdXBvbkFzc2V0SWQDCQEAAAACIT0AAAACBQAAAAZzdGF0dXMFAAAACEFQUFJPVkFMCQAAAgAAAAECAAAAIFlvdSBjYW5ub3QgcmVqZWN0IHRoaXMgcHVyY2hhc2VkAwMJAABmAAAAAgUAAAAGZXhwaXJlAAAAAAAAAAAACQAAZwAAAAIIBQAAAAlsYXN0QmxvY2sAAAAJdGltZXN0YW1wBQAAAAZleHBpcmUHCQAAAgAAAAECAAAADkNvdXBvbiBleHBpcmVkBAAAABFrZXlQdXJjaGFzZVN0YXR1cwkBAAAAFGdldEtleVB1cmNoYXNlU3RhdHVzAAAAAQUAAAAIcHVyY2hhc2UEAAAAEmtleVN1cHBsaWVyQmFsYW5jZQkBAAAAFWdldEtleVN1cHBsaWVyQmFsYW5jZQAAAAEFAAAACHN1cHBsaWVyBAAAABJrZXlJdGVtU29sZENvdW50ZXIJAQAAABVnZXRLZXlJdGVtU29sZENvdW50ZXIAAAABBQAAAARpdGVtBAAAAAZhbW91bnQJAQAAABZnZXRWYWx1ZVB1cmNoYXNlQW1vdW50AAAAAQUAAAAIcHVyY2hhc2UEAAAAD3N1cHBsaWVyQmFsYW5jZQkAAGQAAAACCQEAAAAXZ2V0VmFsdWVTdXBwbGllckJhbGFuY2UAAAABBQAAAAhzdXBwbGllcgUAAAAGYW1vdW50BAAAAA9pdGVtU29sZENvdW50ZXIJAABkAAAAAgkBAAAAF2dldFZhbHVlSXRlbVNvbGRDb3VudGVyAAAAAQUAAAAEaXRlbQAAAAAAAAAAAQQAAAAEdXNlcgkBAAAAFGdldFZhbHVlUHVyY2hhc2VVc2VyAAAAAQUAAAAIcHVyY2hhc2UEAAAAB2FkZHJlc3MJAQAAABFAZXh0ck5hdGl2ZSgxMDYyKQAAAAEFAAAABHVzZXIJAARMAAAAAgkBAAAADEludGVnZXJFbnRyeQAAAAIFAAAAEmtleVN1cHBsaWVyQmFsYW5jZQUAAAAPc3VwcGxpZXJCYWxhbmNlCQAETAAAAAIJAQAAAAxJbnRlZ2VyRW50cnkAAAACBQAAABJrZXlJdGVt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", "height": 1640799, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 5n9u3MMwMgLhRkpGoPjB2Hh9W8WnqnxTCDiPSPx3STwc Next: 7D7FdnNhqE7tLfxXZX3ZJHoMrVt7UdHCeTRTBSn7aTWb Diff:
OldNewDifferences
304304 then true
305305 else (caller != supplier))
306306 then throw("Your are not the owner of this item")
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)
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)
322324 [IntegerEntry(keySupplierBalance, supplierBalance), IntegerEntry(keyItemSoldCounter, itemSoldCounter), ScriptTransfer(address, 1, fromBase58String(couponAssetId))]
323- }
325+ }
324326 }
325327
326328
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 ((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)
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)
322324 [IntegerEntry(keySupplierBalance, supplierBalance), IntegerEntry(keyItemSoldCounter, itemSoldCounter), ScriptTransfer(address, 1, fromBase58String(couponAssetId))]
323- }
325+ }
324326 }
325327
326328
327329
328330 @Callable(i)
329331 func voteCommit (item,hash) = {
330332 let user = toBase58String(i.caller.bytes)
331333 let commitsCount = getValueCommitsCount(item)
332334 let status = getValueItemStatus(item)
333335 if ((commitsCount >= VOTERS))
334336 then throw("Reached max number of voters")
335337 else if ((getValueCommit(item, user) != NONE))
336338 then throw("You voted already")
337339 else if ((getKeyItemSupplier(item) == NONE))
338340 then throw("Item does not exists")
339341 else if (if ((status != NONE))
340342 then (status != VOTING)
341343 else false)
342344 then throw("Voting is not active for this item now")
343345 else {
344346 let newStatus = if ((commitsCount == VOTERS))
345347 then REVEAL
346348 else VOTING
347349 [StringEntry(getKeyCommit(item, user), hash), IntegerEntry(getKeyCommitsCount(item), (commitsCount + 1)), StringEntry(getKeyItemStatus(item), newStatus)]
348350 }
349351 }
350352
351353
352354
353355 @Callable(i)
354356 func voteReveal (item,vote,salt) = {
355357 let user = toBase58String(i.caller.bytes)
356358 let status = getValueItemStatus(item)
357359 let newVotesCount = (getValueVotesCount(item, vote) + 1)
358360 let saltedVote = toBase58String(sha256(toBytes(((item + vote) + salt))))
359361 if ((saltedVote != getValueCommit(item, user)))
360362 then throw("Reveal data is not valid")
361363 else if ((VOTERS > getValueCommitsCount(item)))
362364 then throw("Max number of voters not reached")
363365 else if ((getValueReveal(item, user) != NONE))
364366 then throw("You voted already")
365367 else if (if ((status != VOTING))
366368 then (status != REVEAL)
367369 else false)
368370 then throw("Voting is not active for this item now")
369371 else if (if ((vote != FEATURED))
370372 then (vote != DELISTED)
371373 else false)
372374 then throw("Provided voting option is incorrect")
373375 else {
374376 let newStatus = if ((newVotesCount >= QUORUM))
375377 then vote
376378 else REVEAL
377379 [StringEntry(getKeyReveal(item, user), vote), IntegerEntry(getKeyVotesCount(item, user), newVotesCount), StringEntry(getKeyItemStatus(item), newStatus)]
378380 }
379381 }
380382
381383
382384 @Verifier(tx)
383385 func verify () = match tx {
384386 case t: SetScriptTransaction =>
385387 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
386388 case t: IssueTransaction =>
387389 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
388390 case t: TransferTransaction =>
389391 sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey)
390392 case _ =>
391393 false
392394 }
393395

github/deemru/w8io/026f985 
42.94 ms