tx · DFYHaEJBitYpWA5xzEsX8CanzEACaw2t63Xp1fMLCBtg 3MpniGh4Ab64nzX6AXtoL5tzeC5EwSyHuaq: -0.01400000 Waves 2022.01.11 02:08 [1873482] smart account 3MpniGh4Ab64nzX6AXtoL5tzeC5EwSyHuaq > SELF 0.00000000 Waves
{ "type": 13, "id": "DFYHaEJBitYpWA5xzEsX8CanzEACaw2t63Xp1fMLCBtg", "fee": 1400000, "feeAssetId": null, "timestamp": 1641856128256, "version": 2, "chainId": 84, "sender": "3MpniGh4Ab64nzX6AXtoL5tzeC5EwSyHuaq", "senderPublicKey": "HxF3FdYr3sD3ju9Y1wL4d5kmRtKJGhgSSYQkCyo78xGn", "proofs": [ "37KBWMC6xPD1tmej9Uh3ghXHFYyZYq9TuQaKdRHr37Nd2KjfL1N9STYwmRBZ3vLKkvuGzfeQrzYtutnD1cH5xaN5" ], "script": "base64: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", "height": 1873482, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: FBqnYqzcxC2mDudFec3gJsqkbRatDSPat3S3EjNoDiTz Next: none Diff:
Old | New | Differences | |
---|---|---|---|
4 | 4 | let accountPubKey = base58'HxF3FdYr3sD3ju9Y1wL4d5kmRtKJGhgSSYQkCyo78xGn' | |
5 | 5 | ||
6 | 6 | @Callable(i) | |
7 | - | func purchase (name) = { | |
8 | - | let payment = i.payments[0] | |
9 | - | if (isDefined(name)) | |
10 | - | then if (isDefined(payment.assetId)) | |
11 | - | then throw("Only should pay in waves") | |
12 | - | else { | |
13 | - | let customerAddr = toBase58String(i.caller.bytes) | |
14 | - | let price = match getInteger(this, (("item_" + name) + "_coupon_price")) { | |
15 | - | case t: Int => | |
16 | - | t | |
17 | - | case _ => | |
18 | - | 0 | |
19 | - | } | |
20 | - | if ((price != 0)) | |
21 | - | then if ((payment.amount > price)) | |
22 | - | then throw(("payment cant be higher than price" + toString(price))) | |
23 | - | else if ((price > payment.amount)) | |
24 | - | then throw(("payment cant be less than price: " + toString(price))) | |
25 | - | else [StringEntry(((("status:purchase_item_" + name) + "_customer_") + customerAddr), "confirmed"), IntegerEntry(((("price:purchase_item_" + name) + "_customer_") + customerAddr), price)] | |
26 | - | else throw("Please enter valid coupon name: A or B") | |
27 | - | } | |
28 | - | else throw("Coupon name should be present") | |
29 | - | } | |
7 | + | func purchase (name) = if ((size(i.payments) > 0)) | |
8 | + | then { | |
9 | + | let payment = i.payments[0] | |
10 | + | if (isDefined(name)) | |
11 | + | then if (isDefined(payment.assetId)) | |
12 | + | then throw("Only should pay in waves") | |
13 | + | else { | |
14 | + | let customerAddr = toBase58String(i.caller.bytes) | |
15 | + | let price = match getInteger(this, (("item_" + name) + "_coupon_price")) { | |
16 | + | case t: Int => | |
17 | + | t | |
18 | + | case _ => | |
19 | + | 0 | |
20 | + | } | |
21 | + | if ((price != 0)) | |
22 | + | then if ((payment.amount > price)) | |
23 | + | then throw(("payment cant be higher than price" + toString(price))) | |
24 | + | else if ((price > payment.amount)) | |
25 | + | then throw(("payment cant be less than price: " + toString(price))) | |
26 | + | else [StringEntry(((("status:purchase_item_" + name) + "_customer_") + customerAddr), "confirmed"), IntegerEntry(((("price:purchase_item_" + name) + "_customer_") + customerAddr), price)] | |
27 | + | else throw("Please enter valid coupon name: A or B") | |
28 | + | } | |
29 | + | else throw("Coupon name should be present") | |
30 | + | } | |
31 | + | else throw("Please attach payment") | |
30 | 32 | ||
31 | 33 | ||
32 | 34 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let accountPubKey = base58'HxF3FdYr3sD3ju9Y1wL4d5kmRtKJGhgSSYQkCyo78xGn' | |
5 | 5 | ||
6 | 6 | @Callable(i) | |
7 | - | func purchase (name) = { | |
8 | - | let payment = i.payments[0] | |
9 | - | if (isDefined(name)) | |
10 | - | then if (isDefined(payment.assetId)) | |
11 | - | then throw("Only should pay in waves") | |
12 | - | else { | |
13 | - | let customerAddr = toBase58String(i.caller.bytes) | |
14 | - | let price = match getInteger(this, (("item_" + name) + "_coupon_price")) { | |
15 | - | case t: Int => | |
16 | - | t | |
17 | - | case _ => | |
18 | - | 0 | |
19 | - | } | |
20 | - | if ((price != 0)) | |
21 | - | then if ((payment.amount > price)) | |
22 | - | then throw(("payment cant be higher than price" + toString(price))) | |
23 | - | else if ((price > payment.amount)) | |
24 | - | then throw(("payment cant be less than price: " + toString(price))) | |
25 | - | else [StringEntry(((("status:purchase_item_" + name) + "_customer_") + customerAddr), "confirmed"), IntegerEntry(((("price:purchase_item_" + name) + "_customer_") + customerAddr), price)] | |
26 | - | else throw("Please enter valid coupon name: A or B") | |
27 | - | } | |
28 | - | else throw("Coupon name should be present") | |
29 | - | } | |
7 | + | func purchase (name) = if ((size(i.payments) > 0)) | |
8 | + | then { | |
9 | + | let payment = i.payments[0] | |
10 | + | if (isDefined(name)) | |
11 | + | then if (isDefined(payment.assetId)) | |
12 | + | then throw("Only should pay in waves") | |
13 | + | else { | |
14 | + | let customerAddr = toBase58String(i.caller.bytes) | |
15 | + | let price = match getInteger(this, (("item_" + name) + "_coupon_price")) { | |
16 | + | case t: Int => | |
17 | + | t | |
18 | + | case _ => | |
19 | + | 0 | |
20 | + | } | |
21 | + | if ((price != 0)) | |
22 | + | then if ((payment.amount > price)) | |
23 | + | then throw(("payment cant be higher than price" + toString(price))) | |
24 | + | else if ((price > payment.amount)) | |
25 | + | then throw(("payment cant be less than price: " + toString(price))) | |
26 | + | else [StringEntry(((("status:purchase_item_" + name) + "_customer_") + customerAddr), "confirmed"), IntegerEntry(((("price:purchase_item_" + name) + "_customer_") + customerAddr), price)] | |
27 | + | else throw("Please enter valid coupon name: A or B") | |
28 | + | } | |
29 | + | else throw("Coupon name should be present") | |
30 | + | } | |
31 | + | else throw("Please attach payment") | |
30 | 32 | ||
31 | 33 | ||
32 | 34 | ||
33 | 35 | @Callable(i) | |
34 | 36 | func setPrices () = if ((i.callerPublicKey == accountPubKey)) | |
35 | 37 | then [IntegerEntry("item_A_coupon_price", 30000000), IntegerEntry("item_B_coupon_price", 40000000)] | |
36 | 38 | else throw("Only owner can set prices") | |
37 | 39 | ||
38 | 40 | ||
39 | 41 | ||
40 | 42 | @Callable(i) | |
41 | 43 | func deleteEntry (key) = if ((i.callerPublicKey == accountPubKey)) | |
42 | 44 | then [DeleteEntry(key)] | |
43 | 45 | else throw("Only owner can delete entries") | |
44 | 46 | ||
45 | 47 | ||
46 | 48 | @Verifier(tx) | |
47 | 49 | func verify () = sigVerify(tx.bodyBytes, tx.proofs[0], tx.senderPublicKey) | |
48 | 50 |
github/deemru/w8io/169f3d6 24.24 ms ◑![]()