tx · 5RyV7rb3i2oC27HBC9Zwh8vCFeLLQb85bpyJ2UgXuJvr

3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3:  -0.01400000 Waves

2020.11.20 17:48 [1273844] smart account 3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3 > SELF 0.00000000 Waves

{ "type": 13, "id": "5RyV7rb3i2oC27HBC9Zwh8vCFeLLQb85bpyJ2UgXuJvr", "fee": 1400000, "feeAssetId": null, "timestamp": 1605883763183, "version": 2, "chainId": 84, "sender": "3MtTheYx7F8GojnQXdBq5njwKSWwWDR8Yx3", "senderPublicKey": "24o2mnMP6y64dijDFoZKhDpV73e1gCFKxQcZ6X9q3z1B", "proofs": [ "41RSr3PatEQKHzWWNDHJj93ZSDUeMuihnJ7hxt53q6gejUmzjMRFd1VxVUAaaazgDfXrjshoJPjrVVWRs7JPZkiv" ], "script": "base64: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", "height": 1273844, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: 9uKQMLdnuAgCjd1htTsbM3MMfrSNSo1RemvaDkhAVtwU Next: 55hNEsKebyqGS8vCw8oeiuQCqf4PRUB5yBvh7WwQxZQG Diff:
OldNewDifferences
6868
6969
7070 @Callable(A)
71-func purchase (B) = {
72- let C = value(A.payments)
73- if (isDefined(C[0].assetId))
74- then throw("only wws")
71+func purchase (m) = {
72+ let B = value(A.payments)
73+ if (isDefined(B[0].assetId))
74+ then throw("WAVES tokens only")
7575 else {
76- let D = toBase58String(A.caller.bytes)
77- let E = {
78- let h = getInteger(this, (B + "_coupon_price"))
79- if ($isInstanceOf(h, "Int"))
80- then {
81- let i = h
82- i
83- }
84- else 0
85- }
86- if ((E == 0))
87- then throw("coupon not found")
88- else if ((E > C[0].amount))
89- then throw("moar moeny")
90- else if ((C[0].amount > E))
91- then throw(toString(E))
92- else if ((size(C) > 1))
93- then throw("single item only")
94- else [StringEntry(((("status:purchase_" + B) + "_customer_") + D), "confirmed"), IntegerEntry(((("price:purchase_" + B) + "_customer_") + D), E)]
76+ let C = toBase58String(A.caller.bytes)
77+ let D = n(m)
78+ let E = w(m)
79+ if ((D > B[0].amount))
80+ then throw("purchase less than item price")
81+ else if ((B[0].amount > D))
82+ then throw("purchase amount higher than item price")
83+ else if ((size(B) > 1))
84+ then throw("single item only")
85+ else if ((E == d))
86+ then throw("supplier doesn't exist")
87+ else [IntegerEntry(o(C, m), (q(C, m) + 1)), IntegerEntry(x(E), (z(E) + B[0].amount))]
9588 }
9689 }
9790
9891
9992
10093 @Callable(A)
101-func addItem (t,E,F) = {
102- let G = toBase58String(A.caller.bytes)
103- let m = r(G, t)
104- if ((0 >= E))
94+func addItem (t,D,F) = {
95+ let E = toBase58String(A.caller.bytes)
96+ let m = r(E, t)
97+ if ((0 >= D))
10598 then throw("purchase amount cannot be less than item price")
10699 else if ((w(m) != d))
107100 then throw("an item already exist")
108- else [StringEntry(v(m), G), IntegerEntry(l(m), E), StringEntry(u(m), F)]
101+ else [StringEntry(v(m), E), IntegerEntry(l(m), D), StringEntry(u(m), F)]
109102 }
110103
111104
112-@Verifier(H)
113-func I () = true
105+@Verifier(G)
106+func H () = true
114107
Full:
OldNewDifferences
11 {-# STDLIB_VERSION 4 #-}
22 {-# SCRIPT_TYPE ACCOUNT #-}
33 {-# CONTENT_TYPE DAPP #-}
44 let a = base58'HfLpRhXtnuCabRyNT6z7soaXcbUpwLUhjyBCVQ4szwzd'
55
66 let b = base58'2qjcWuL7QitmuhkSTM7CnNxurCYXuqJ9ubswLBGmXfDv'
77
88 let c = base58'GaQkBG6yLLAarb8wvPrEKnQhFqWomD2ZGT1T4vVx24qw'
99
1010 let d = "none"
1111
1212 func e (f) = {
1313 let g = {
1414 let h = getInteger(this, f)
1515 if ($isInstanceOf(h, "Int"))
1616 then {
1717 let i = h
1818 i
1919 }
2020 else 0
2121 }
2222 g
2323 }
2424
2525
2626 func j (f) = {
2727 let k = {
2828 let h = getString(this, f)
2929 if ($isInstanceOf(h, "String"))
3030 then {
3131 let i = h
3232 i
3333 }
3434 else d
3535 }
3636 k
3737 }
3838
3939
4040 func l (m) = (m + "_price")
4141
4242
4343 func n (m) = e(l(m))
4444
4545
4646 func o (p,m) = (((m + "_") + p) + "_cnt")
4747
4848
4949 func q (p,m) = e(o(p, m))
5050
5151
5252 func r (s,t) = ("item_" + toBase58String(sha256(toBytes((s + t)))))
5353
5454
5555 func u (m) = (m + "_data")
5656
5757
5858 func v (m) = (m + "_owner")
5959
6060
6161 func w (m) = j(v(m))
6262
6363
6464 func x (y) = (y + "_balance")
6565
6666
6767 func z (y) = e(x(y))
6868
6969
7070 @Callable(A)
71-func purchase (B) = {
72- let C = value(A.payments)
73- if (isDefined(C[0].assetId))
74- then throw("only wws")
71+func purchase (m) = {
72+ let B = value(A.payments)
73+ if (isDefined(B[0].assetId))
74+ then throw("WAVES tokens only")
7575 else {
76- let D = toBase58String(A.caller.bytes)
77- let E = {
78- let h = getInteger(this, (B + "_coupon_price"))
79- if ($isInstanceOf(h, "Int"))
80- then {
81- let i = h
82- i
83- }
84- else 0
85- }
86- if ((E == 0))
87- then throw("coupon not found")
88- else if ((E > C[0].amount))
89- then throw("moar moeny")
90- else if ((C[0].amount > E))
91- then throw(toString(E))
92- else if ((size(C) > 1))
93- then throw("single item only")
94- else [StringEntry(((("status:purchase_" + B) + "_customer_") + D), "confirmed"), IntegerEntry(((("price:purchase_" + B) + "_customer_") + D), E)]
76+ let C = toBase58String(A.caller.bytes)
77+ let D = n(m)
78+ let E = w(m)
79+ if ((D > B[0].amount))
80+ then throw("purchase less than item price")
81+ else if ((B[0].amount > D))
82+ then throw("purchase amount higher than item price")
83+ else if ((size(B) > 1))
84+ then throw("single item only")
85+ else if ((E == d))
86+ then throw("supplier doesn't exist")
87+ else [IntegerEntry(o(C, m), (q(C, m) + 1)), IntegerEntry(x(E), (z(E) + B[0].amount))]
9588 }
9689 }
9790
9891
9992
10093 @Callable(A)
101-func addItem (t,E,F) = {
102- let G = toBase58String(A.caller.bytes)
103- let m = r(G, t)
104- if ((0 >= E))
94+func addItem (t,D,F) = {
95+ let E = toBase58String(A.caller.bytes)
96+ let m = r(E, t)
97+ if ((0 >= D))
10598 then throw("purchase amount cannot be less than item price")
10699 else if ((w(m) != d))
107100 then throw("an item already exist")
108- else [StringEntry(v(m), G), IntegerEntry(l(m), E), StringEntry(u(m), F)]
101+ else [StringEntry(v(m), E), IntegerEntry(l(m), D), StringEntry(u(m), F)]
109102 }
110103
111104
112-@Verifier(H)
113-func I () = true
105+@Verifier(G)
106+func H () = true
114107

github/deemru/w8io/169f3d6 
30.68 ms