tx · HwiVxUQE12goMX9e7xzzSmivhRvFA2MXHPmnNjb9ZqTg 3P8heySToZiW7XMrpqVXNaELDaQUXxdibkw: -0.01000000 Waves 2022.11.28 14:59 [3402401] smart account 3P8heySToZiW7XMrpqVXNaELDaQUXxdibkw > SELF 0.00000000 Waves
{ "type": 13, "id": "HwiVxUQE12goMX9e7xzzSmivhRvFA2MXHPmnNjb9ZqTg", "fee": 1000000, "feeAssetId": null, "timestamp": 1669636876884, "version": 2, "chainId": 87, "sender": "3P8heySToZiW7XMrpqVXNaELDaQUXxdibkw", "senderPublicKey": "NodB62UhtfcYkiMJ9wNq69muahpfZhdnnX3NLQAXPqh", "proofs": [ "5Qq1zM9ewUH7xgzUUfTLgarJQDx7FRBTV5x2qZq96io6fBFVpkLyVdfvaKm1EvUFPW8YRV92NRNjJ4HaP7DQ2vGQ" ], "script": "base64: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", "height": 3402401, "applicationStatus": "succeeded", "spentComplexity": 0 } View: original | compacted Prev: G7PRoq7PQcYh1auf5GbGT9URz4Wkj9eJus7h9c6SHcu8 Next: none Diff:
Old | New | Differences | |
---|---|---|---|
5 | 5 | ||
6 | 6 | let lastVoteBlock = 3423941 | |
7 | 7 | ||
8 | - | let admPub = base58' | |
8 | + | let admPub = base58'NodB62UhtfcYkiMJ9wNq69muahpfZhdnnX3NLQAXPqh' | |
9 | 9 | ||
10 | 10 | let teams = ["argentina", "australia", "belgium", "brazil", "cameroon", "canada", "costarica", "crotia", "denmark", "ecuador", "england", "france", "germany", "ghana", "iran", "japan", "mexico", "morocco", "netherlands", "poland", "portugal", "qatar", "saudiarabia", "senegal", "serbia", "southkorea", "spain", "switzerland", "tunisia", "uruguay", "usa", "wales"] | |
11 | 11 |
Old | New | Differences | |
---|---|---|---|
1 | 1 | {-# STDLIB_VERSION 5 #-} | |
2 | 2 | {-# SCRIPT_TYPE ACCOUNT #-} | |
3 | 3 | {-# CONTENT_TYPE DAPP #-} | |
4 | 4 | let PAYMENT_ASSET = base58'7LMV3s1J4dKpMQZqge5sKYoFkZRLojnnU49aerqos4yg' | |
5 | 5 | ||
6 | 6 | let lastVoteBlock = 3423941 | |
7 | 7 | ||
8 | - | let admPub = base58' | |
8 | + | let admPub = base58'NodB62UhtfcYkiMJ9wNq69muahpfZhdnnX3NLQAXPqh' | |
9 | 9 | ||
10 | 10 | let teams = ["argentina", "australia", "belgium", "brazil", "cameroon", "canada", "costarica", "crotia", "denmark", "ecuador", "england", "france", "germany", "ghana", "iran", "japan", "mexico", "morocco", "netherlands", "poland", "portugal", "qatar", "saudiarabia", "senegal", "serbia", "southkorea", "spain", "switzerland", "tunisia", "uruguay", "usa", "wales"] | |
11 | 11 | ||
12 | 12 | func isPaymentOk (i) = { | |
13 | 13 | let acceptableAssetId = PAYMENT_ASSET | |
14 | 14 | if ((size(i.payments) == 0)) | |
15 | 15 | then throw("Payment not attached") | |
16 | 16 | else { | |
17 | 17 | let p = i.payments[0] | |
18 | 18 | match p.assetId { | |
19 | 19 | case assetId: ByteVector => | |
20 | 20 | if ((assetId == acceptableAssetId)) | |
21 | 21 | then (p.amount > 0) | |
22 | 22 | else false | |
23 | 23 | case _ => | |
24 | 24 | throw("Wrong payment asset") | |
25 | 25 | } | |
26 | 26 | } | |
27 | 27 | } | |
28 | 28 | ||
29 | 29 | ||
30 | 30 | @Callable(i) | |
31 | 31 | func winner (team) = if ((i.callerPublicKey == admPub)) | |
32 | 32 | then [StringEntry("winner", team)] | |
33 | 33 | else throw("you are not allowed") | |
34 | 34 | ||
35 | 35 | ||
36 | 36 | ||
37 | 37 | @Callable(i) | |
38 | 38 | func guessTheChampion (team) = { | |
39 | 39 | let isExists = containsElement(teams, team) | |
40 | 40 | let currentKey = toBase58String(i.caller.bytes) | |
41 | 41 | let p = i.payments[0] | |
42 | 42 | let paymentAmount = p.amount | |
43 | 43 | let totalPaymentAmount = valueOrElse(getInteger(this, "totalPaymentAmount"), 0) | |
44 | 44 | let voteTeam = valueOrElse(getInteger(this, ((team + "_") + currentKey)), 0) | |
45 | 45 | let winner = valueOrElse(getString(this, "winner"), "null") | |
46 | 46 | if (!(isExists)) | |
47 | 47 | then throw("team name invalid") | |
48 | 48 | else if (!(isPaymentOk(i))) | |
49 | 49 | then throw("you have to pay to bet") | |
50 | 50 | else if ((height > lastVoteBlock)) | |
51 | 51 | then throw("bet duration is over") | |
52 | 52 | else if ((winner != "null")) | |
53 | 53 | then throw("bet is over") | |
54 | 54 | else [IntegerEntry("totalPaymentAmount", (totalPaymentAmount + paymentAmount)), IntegerEntry(((team + "_") + currentKey), (voteTeam + p.amount))] | |
55 | 55 | } | |
56 | 56 | ||
57 | 57 | ||
58 | 58 | ||
59 | 59 | @Callable(i) | |
60 | 60 | func claimPrize () = { | |
61 | 61 | let currentKey = toBase58String(i.caller.bytes) | |
62 | 62 | let winner = valueOrElse(getString(this, "winner"), "null") | |
63 | 63 | if (if ((lastVoteBlock > height)) | |
64 | 64 | then (winner == "null") | |
65 | 65 | else false) | |
66 | 66 | then throw("betting is still active") | |
67 | 67 | else { | |
68 | 68 | let voteTeam = valueOrElse(getInteger(this, ((winner + "_") + currentKey)), 0) | |
69 | 69 | if ((voteTeam > 0)) | |
70 | 70 | then { | |
71 | 71 | let totalPaymentAmount = valueOrElse(getInteger(this, "totalPaymentAmount"), 0) | |
72 | 72 | let share = fraction(voteTeam, 10000000000, totalPaymentAmount) | |
73 | 73 | let deserved = (totalPaymentAmount / 10000000000) | |
74 | 74 | let lastCalc = (deserved * share) | |
75 | 75 | let isClaimed = valueOrElse(getBoolean(this, (currentKey + "_claim")), true) | |
76 | 76 | if (!(isClaimed)) | |
77 | 77 | then [BooleanEntry((currentKey + "_claim"), true), ScriptTransfer(i.caller, lastCalc, PAYMENT_ASSET)] | |
78 | 78 | else throw("you already claimed") | |
79 | 79 | } | |
80 | 80 | else throw("you are not eligible") | |
81 | 81 | } | |
82 | 82 | } | |
83 | 83 | ||
84 | 84 |
github/deemru/w8io/6500d08 31.80 ms ◑