tx · 8PkN6BuduVRnrCLbyonx3B8Qq5ZB3nTnCTkwvQpv8Qer 3MyXnDWMtqpfkuFJtyBHaUWoWxtGoD8SpBQ: -0.01400000 Waves 2020.11.20 14:11 [1273625] smart account 3MyXnDWMtqpfkuFJtyBHaUWoWxtGoD8SpBQ > SELF 0.00000000 Waves
{ "type": 13, "id": "8PkN6BuduVRnrCLbyonx3B8Qq5ZB3nTnCTkwvQpv8Qer", "fee": 1400000, "feeAssetId": null, "timestamp": 1605870713155, "version": 2, "chainId": 84, "sender": "3MyXnDWMtqpfkuFJtyBHaUWoWxtGoD8SpBQ", "senderPublicKey": "FYobWqooJHEVQFRHr8NU7ewYZ2AJdMzuDBm8WR9PiAx1", "proofs": [ "h3r5GiBn5Fn6pARHuKgevkxvJF3upkhHDWkz4ZZKf3w8TPu4uPuVmSRD4D7ohQSHmrWcWuq75ZQQR5Qs1eiGYcq" ], "script": "base64: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AAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAQUAAAAOb3RoZXJQdWJsaWNLZXkGCQAB9AAAAAMIBQAAAAJ0eAAAAAlib2R5Qnl0ZXMJAAGRAAAAAggFAAAAAnR4AAAABnByb29mcwAAAAAAAAAAAgUAAAAOb3RoZXJQdWJsaWNLZXkEAAAAEGFjY291bnQxYWNjb3VudDIDBQAAAAhhY2NvdW50MQUAAAAIYWNjb3VudDIHBAAAAA1hY2NvdW50MW90aGVyAwUAAAAIYWNjb3VudDEFAAAABW90aGVyBwQAAAANYWNjb3VudDJvdGhlcgMFAAAABW90aGVyBQAAAAhhY2NvdW50MgcEAAAAByRtYXRjaDAFAAAAAnR4AwkAAAEAAAACBQAAAAckbWF0Y2gwAgAAABRTZXRTY3JpcHRUcmFuc2FjdGlvbgQAAAABZAUAAAAHJG1hdGNoMAYDCQAAAQAAAAIFAAAAByRtYXRjaDACAAAAD0RhdGFUcmFuc2FjdGlvbgQAAAABZAUAAAAHJG1hdGNoMAYDAwUAAAAQYWNjb3VudDFhY2NvdW50MgYFAAAADWFjY291bnQxb3RoZXIGBQAAAA1hY2NvdW50Mm90aGVy8g6peg==", "height": 1273625, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: none Next: 2F9oh357sBXUQrcGcuHJkdKmmKHSCsihzHQQupNU3JhW Full:
Old | New | Differences | |
---|---|---|---|
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 | + | @Callable(i) | |
11 | + | func purchase (coupon) = { | |
12 | + | let pmt = value(i.payments) | |
13 | + | if (isDefined(pmt[0].assetId)) | |
14 | + | then throw("only wws") | |
15 | + | else { | |
16 | + | let customerAddress = toBase58String(i.caller.bytes) | |
17 | + | let price = match getInteger(this, (coupon + "_coupon_price")) { | |
18 | + | case a: Int => | |
19 | + | a | |
20 | + | case _ => | |
21 | + | 0 | |
22 | + | } | |
23 | + | if ((price == 0)) | |
24 | + | then throw("coupon not found") | |
25 | + | else if ((price > pmt[0].amount)) | |
26 | + | then throw("moar moeny") | |
27 | + | else if ((pmt[0].amount > price)) | |
28 | + | then throw(toString(price)) | |
29 | + | else if ((size(pmt) > 1)) | |
30 | + | then throw("single item only") | |
31 | + | else [StringEntry(((("status:purchase_" + coupon) + "_customer_") + customerAddress), "confirmed"), IntegerEntry(((("price:purchase_" + coupon) + "_customer_") + customerAddress), price)] | |
32 | + | } | |
33 | + | } | |
34 | + | ||
35 | + | ||
36 | + | @Verifier(tx) | |
37 | + | func verify () = { | |
38 | + | let account1 = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], account1PublicKey)) | |
39 | + | then true | |
40 | + | else sigVerify(tx.bodyBytes, tx.proofs[1], account1PublicKey)) | |
41 | + | then true | |
42 | + | else sigVerify(tx.bodyBytes, tx.proofs[2], account1PublicKey) | |
43 | + | let account2 = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], account2PublicKey)) | |
44 | + | then true | |
45 | + | else sigVerify(tx.bodyBytes, tx.proofs[1], account2PublicKey)) | |
46 | + | then true | |
47 | + | else sigVerify(tx.bodyBytes, tx.proofs[2], account2PublicKey) | |
48 | + | let other = if (if (sigVerify(tx.bodyBytes, tx.proofs[0], otherPublicKey)) | |
49 | + | then true | |
50 | + | else sigVerify(tx.bodyBytes, tx.proofs[1], otherPublicKey)) | |
51 | + | then true | |
52 | + | else sigVerify(tx.bodyBytes, tx.proofs[2], otherPublicKey) | |
53 | + | let account1account2 = if (account1) | |
54 | + | then account2 | |
55 | + | else false | |
56 | + | let account1other = if (account1) | |
57 | + | then other | |
58 | + | else false | |
59 | + | let account2other = if (other) | |
60 | + | then account2 | |
61 | + | else false | |
62 | + | match tx { | |
63 | + | case d: SetScriptTransaction => | |
64 | + | true | |
65 | + | case d: DataTransaction => | |
66 | + | true | |
67 | + | case _ => | |
68 | + | if (if (account1account2) | |
69 | + | then true | |
70 | + | else account1other) | |
71 | + | then true | |
72 | + | else account2other | |
73 | + | } | |
74 | + | } | |
75 | + |
github/deemru/w8io/169f3d6 15.60 ms ◑![]()