tx · 9uKQMLdnuAgCjd1htTsbM3MMfrSNSo1RemvaDkhAVtwU

3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3:  -0.01400000 Waves

2020.11.20 17:13 [1273809] smart account 3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3 > SELF 0.00000000 Waves

{ "type": 13, "id": "9uKQMLdnuAgCjd1htTsbM3MMfrSNSo1RemvaDkhAVtwU", "fee": 1400000, "feeAssetId": null, "timestamp": 1605881659796, "version": 2, "chainId": 84, "sender": "3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3", "senderPublicKey": "24o2mnMP6y64dijDFoZKhDpV73e1gCFKxQcZ6X9q3z1B", "proofs": [ "34q5hE8LWGnerWipFpFapW6KsYepLyKuffuUUBRVbNiutiq7FXHshMNrNPZqc4x1d96SKSqDgsWUedFUKCcCq1dE" ], "script": "base64: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", "height": 1273809, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 5RyV7rb3i2oC27HBC9Zwh8vCFeLLQb85bpyJ2UgXuJvr Full:
OldNewDifferences
1-# no script
1+{-# STDLIB_VERSION 4 #-}
2+{-# SCRIPT_TYPE ACCOUNT #-}
3+{-# CONTENT_TYPE DAPP #-}
4+let account1PublicKey = base58'HfLpRhXtnuCabRyNT6z7soaXcbUpwLUhjyBCVQ4szwzd'
5+
6+let account2PublicKey = base58'2qjcWuL7QitmuhkSTM7CnNxurCYXuqJ9ubswLBGmXfDv'
7+
8+let otherPublicKey = base58'GaQkBG6yLLAarb8wvPrEKnQhFqWomD2ZGT1T4vVx24qw'
9+
10+let NONE = "none"
11+
12+func getNumberByKey (key) = {
13+ let num = match getInteger(this, key) {
14+ case a: Int =>
15+ a
16+ case _ =>
17+ 0
18+ }
19+ num
20+ }
21+
22+
23+func getStrByKey (key) = {
24+ let str = match getString(this, key) {
25+ case a: String =>
26+ a
27+ case _ =>
28+ NONE
29+ }
30+ str
31+ }
32+
33+
34+func getKeyItemPrice (item) = (item + "_price")
35+
36+
37+func getValueItemPrice (item) = getNumberByKey(getKeyItemPrice(item))
38+
39+
40+func getKeyUserItemCounter (user,item) = (((item + "_") + user) + "_cnt")
41+
42+
43+func getValueUserItemCounter (user,item) = getNumberByKey(getKeyUserItemCounter(user, item))
44+
45+
46+func getKeyItem (supplier,title) = ("item_" + toBase58String(sha256(toBytes((supplier + title)))))
47+
48+
49+func getKeyItemData (item) = (item + "_data")
50+
51+
52+func getKeyItemSupplier (item) = (item + "_owner")
53+
54+
55+func getValueItemSupplier (item) = getStrByKey(getKeyItemSupplier(item))
56+
57+
58+func getKeyBalanceSupplier (account) = (account + "_balance")
59+
60+
61+func getValueBalanceSupplier (account) = getNumberByKey(getKeyBalanceSupplier(account))
62+
63+
64+@Callable(i)
65+func purchase (coupon) = {
66+ let pmt = value(i.payments)
67+ if (isDefined(pmt[0].assetId))
68+ then throw("only wws")
69+ else {
70+ let customerAddress = toBase58String(i.caller.bytes)
71+ let price = match getInteger(this, (coupon + "_coupon_price")) {
72+ case a: Int =>
73+ a
74+ case _ =>
75+ 0
76+ }
77+ if ((price == 0))
78+ then throw("coupon not found")
79+ else if ((price > pmt[0].amount))
80+ then throw("moar moeny")
81+ else if ((pmt[0].amount > price))
82+ then throw(toString(price))
83+ else if ((size(pmt) > 1))
84+ then throw("single item only")
85+ else [StringEntry(((("status:purchase_" + coupon) + "_customer_") + customerAddress), "confirmed"), IntegerEntry(((("price:purchase_" + coupon) + "_customer_") + customerAddress), price)]
86+ }
87+ }
88+
89+
90+
91+@Callable(i)
92+func addItem (title,price,data) = {
93+ let supplierAddress = toBase58String(i.caller.bytes)
94+ let item = getKeyItem(supplierAddress, title)
95+ if ((0 >= price))
96+ then throw("purchase amount cannot be less than item price")
97+ else if ((getValueItemSupplier(item) != NONE))
98+ then throw("an item already exist")
99+ else [StringEntry(getKeyItemSupplier(item), supplierAddress), IntegerEntry(getKeyItemPrice(item), price), StringEntry(getKeyItemData(item), data)]
100+ }
101+
102+
103+@Verifier(tx)
104+func verify () = true
105+

github/deemru/w8io/873ac7e 
27.53 ms